ThinkPHP 5日志文件包含trick


0x00 前言
本文源於實戰場景,以下所有測試均基於Fastadmin前台模版getshell漏洞環境
環境:
Win10 
Phpstudy 2018  
PHP-7.0.12 NTS+Apache
Fastadmin V1.2.0.20210125_full 
ThinkPHP 5.0.24
Fastadmin默認配置 (不開啟app_debug和app_trace)
 
0x01 正文
我們知道在Thinkphp 5沒有開啟app_debug的時候,能夠寫入日志文件的信息很少

而且只有觸發報錯的時候才會寫入部分日志信息,如下:

而直接用url傳入php代碼,空格會被urlencode

 

觀察日志信息,與及分析代碼,可控有藍色框的請求IP地址,紅色圓圈的請求方法,與及后面的host和請求uri 

對應代碼:

一個個分析一下:
ip可以用X-Forwarded-For等,但最后都過濾了

 

 

method:

 

host:

 

uri:

 

可以發現可用的選擇還挺多的:

method可以用X-HTTP-METHOD-OVERRIDE頭,host可以用:X-REAL-HOST,uri 可以用:X-REWRITE-URL

X-REAL-HOST: <?php phpinfo();?>
X-REWRITE-URL: <?php phpinfo();?>
X-HTTP-METHOD-OVERRIDE: <?php phpinfo();?>

一一對應:

 

 

 

 有一點需要注意(看上圖),用method頭會換成大寫,PHP馬寫進去之后解析可能會出問題,所以建議還是用host和url的兩個頭

 實戰場景:Fastadmin 普通用戶可以登陸,有模版渲染漏洞,沒有開app_debug,無法修改頭像,用模版渲染日志文件getshell

 

 

 

0x02 總結
遇到類似的場景時,基於tp5 的文件包含、模板渲染寫入PHP代碼時可嘗試用上述的請求頭


免責聲明!

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



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