墨者学院-命令注入执行分析
命令执行漏洞
1、命令执行(Command Execution)漏洞即黑客可以直接在Web应用中执行系统命令,从而获取敏感信息或者拿下shell权限。
2、命令执行漏洞可能造成的原因是Web服务器对用户输入命令安全检测不足,导致恶意代码被执行。
3、更常见的命令执行漏洞是发生在各种Web组件,包括Web容器、Web框架、CMS软件、安全组件等。
通常就是在正常命令后加上 & 或者 | 来达到执行恶意代码的目的,因为计算机在执行完成一条命令之后遇到管道符会继续执行下一条命令,这就导致了漏洞的可利用性。
靶场操作
靶场地址:https://www.mozhe.cn/bug/detail/RWpnQUllbmNaQUVndTFDWGxaL0JjUT09bW96aGUmozhe
背景介绍
打开靶场环境,是一个ping的命令
先尝试ping一下本地,发现是可以ping通的
即可以执行shell命令,尝试使用管道符执行 ls 命令
无法执行,但会弹窗,判断应该是前段js验证,把js禁用试试
果然是这样,成功回显了,试试看key
127.0.0.1|cat key_30702215758394.php
结果什么都没有,所以就是是这一步出问题的,目前我们输入这句命令大概有几个问题点
1.cat过滤
2.空格过滤
3.php过滤
我都试了一遍,折腾了很久,最后发现是过滤的空格。
空格被过滤的话,大致可以用这几种方法绕过
< > %20 %09 %IFS < ${IFS} $IFS$9
此时构造payload
127.0.0.1|cat<key_30702215758394.php
成功获得key
心得
命令执行主要是考虑过滤,每种可能性都会有,都需要考虑,在不知道源码的情况下,测试过滤就会变得复杂,了解各类绕过方法才是解决问题的关键。