题目链接:命令注入执行分析
背景介绍:某单位IT运维人员,在服务器上留了一个页面用来ping内部服务器连通情况。安全工程师"墨者"检查发现这一文件存在漏洞,要求运维人员立刻下线。
(●'◡'●)点开以后链接以后,是一个乌漆嘛黑的网页~
习惯性ctrl+u查看源代码~
这些就是已知的内容~
工具:Burpsuite(非必要)
1 查看源代码
01-18行以上是网页的样式规定与js库的加载,所以这里重点注释19行~32行的内容~
Super Ping On Line
以上内容大概是检查输入内容:输入的IP是数字,且为小于256的正数,用“.”连接;不满足格式要求则会弹出警告窗,保证输入花哨的东西会被挡住~
不过有一个比较致命的问题:它是在前端过滤的,这种情况通常可以用BurpSuite抓包绕过,还是比较不安全的~
2 Burpsuite
例如我们输入127.0.0.1,会正确返回信息~
127.0.0.1 意思是访问本地的IP,用这个满足前端的检查~
如果输入127.0.0.1|ls,大概就会被弹窗:IP格式不正确~
| linux的管道符,前面的查询结果可以作为后面的输入,可参考:linux管道符 知乎~
ls 意思是查看文件夹,试探能不能看到系统的文件~
不过根据源码分析,是在前端设置用javascript代码过滤,那我们重新输入127.0.0.1,用burp抓包绕过前端检查试一试,下面是抓包的界面~
右键请求包发送到Repeater,最后一行改为127.0.0.1|ls~
点击Send,根据下图,发现网页没有弹窗,且成功执行了语句,可以看到系统存有三个文件:index.php、key_11459179938500.php、static~
下一步是查看(对应linux命令为cat)key.txt文件中的内容,最后一行改为127.0.0.1|cat%20key_11459179938500.php,点击send~
cat 意思是查看文件~
%20 这是空格的url转码,在某些题可以作为空格键的绕过(不过在这道题里无论是直接输入空格,还是输入%20,结果都是一样的失败)~
嗯...一片空白,没有看到文件中的内容,好像是因为空格被过滤了;参考评论区大佬的WP,有在用“<”代替空格绕过检查的~
也就是把数据包的最后一行替换为如下内容,这次网页正确回显了结果~
iipp=127.0.0.1|cat
key:mozhec1348caf838dd17aad8b7846b72
3 禁用javascript
嗯,因为检查输入内容的语句是用javascript写成的,因此有一些暴力的大佬不是在用burpsuite绕过javascript,而是在 浏览器-设置 中直接禁用了javascript的运行,如下图所示~
禁用步骤参考:Chrome中如何禁止指定网站js的执行
上面的图片以chrome为例,不允许使用 JavaScript中,增加了我们的目标网站~
解题思路同上,最后一步在输入框中填写:127.0.0.1|cat
key:mozhec1348caf838dd17aad8b7846b72
愿本文有所帮助~欢迎留言沟通与讨论~(●'◡'●)