Web渗透_命令注入漏洞




命令注入漏洞

Command Injection:通过Web应用在服务器上拼接系统命令


1. 命令指的是操作系统的命令





输入 112.74.201.11 尝试,猜测可能调用了系统的 ping 命令:

happysneaker.com


进一步猜测是否能够拼接命令,windows 下常用 && 来连接两条系统命令:

happysneaker.com


成功了:

happysneaker.com


以上就是Low等级的命令注入漏洞,来看medium等级的,可分析得到 && 连接符被过滤了,那么还有什么方法可以连接两条命令呢?

happysneaker.com



其实一个 & 肯定也是可以的啦,试一下成功了。再看High等级, &  和 && 都无法连接两条命令,都被屏蔽了,其实还有一个管道符号   |  也是可以利用的,只不过最终输出是管道符 |  后面的命令所执行的结果。

happysneaker.com


再比如:

happysneaker.com



impossible模式直接限制了输入的IP地址格式,因此无法进行命令注入。这也得到了修复命令注入漏洞的思路:使用白名单的方式,限制输入的数据格式。






扩展:




如下四个命令拼接符号区别,谨记:

happysneaker.com



命令注入的一般流程:

happysneaker.com




实际环境中的奇技淫巧:

过滤了敏感命令怎么办?比如说whoami命令被过滤了,Windows下可以用""双引号来进行插入防止过滤,Linux下甚至可以用'单引号进行过滤,Linux下的 hostname 就等同于 Windows下的whoami :

happysneaker.com





之前看到的都是有回显的命令注入,如果系统不显示输出结果怎么办?这时候就得盲注!可以考虑之前的SQL盲注的手法,有一种延迟型注入(当然手法函数命令是有很多的):

happysneaker.com




文章参考https://www.kanxue.com/book-6-320.htm







命令注入的防御措施:

1、采用白名单,或使用正则表达式进行过滤。

2、不要让用户可以直接控制 eval()、system、exec、shell_exec 等函数的参数。

3、在进入执行命令函数和方法前,对用户输入的变量进行过滤,对敏感字符进行转义。





Web安全技术分享
请先登录后发表评论
  • 最新评论
  • 总共0条评论