1.使用未被禁用的其他函數
exec,shell_exec,system,popen,proc_open,passthru (python_eval?perl_system ? weevely3 wiki中存在這兩個函數)
要求:看看哪個函數沒在禁用列表里的
2.pcntl_exec
使用pcntl_exec函數可命令執行
要求:linux系統特有模塊,需編譯選項中存在--enable-pcntl
3.windows com組件繞過
通過生成的com對象調用wscript.shell或shell.application以執行命令
要求:windows系統,com_dotnet模塊開啟
4.使用ld_preload劫持環境變量
利用ld_preload劫持動態鏈接庫的優先加載路徑,通過會調用系統程序的php函數,來觸發對我們偽造的標准庫函數的調用,從而執行惡意代碼
要求:linux系統,putenv函數未被禁用,可以上傳so文件
5.php7.4+ ffi特性
php7.4加入的新特性,利用ffi可以執行c代碼
要求:php版本7.4+,ffi模塊開啟,ffi.enable 狀態為enable(這個有三個狀態,一定要是enable才可以)
6.構造數據包直接與php-fpm模塊通信
跳過中間件分配請求的過程,直接構造特定的數據包與php-fpm模塊通信
要求:目標使用了php-fpm模塊,php-fpm的進程端口暴露在外網(一般為9000端口),知道一個php腳本的絕對路徑和名稱
7.通過.htaccess使其他后綴文件被mod_cig模塊處理
主要思路和6思路差不多
要求:使用mod_cig模塊,可以上傳文件,.htaccess模塊被開啟(蟻劍有個bypass disable function的模塊存在此方法)
8.imap_open()
cve-2018-19518,通過構造exp,在調用rsh的時候插入可執行命令的-oProxyCommand參數執行系統命令
要求:開啟了imap擴展,enable_insecure_rsh選項打開,imap_open未被禁用,漏洞未被修復
9.破殼漏洞
cve-2014-6271
要求:php<5.6.2,linux系統
10.imagemagick組件命令執行
利用的是imagemagic本身的命令執行漏洞,有2個,利用的exp也不相同
要求:開啟了imagemagic模塊且漏洞未被修復
11.其他
還有一些其他的方法,要結合具體情況使用,例如現權限是否可以讀取寶塔的session.db,redis的利用等等,這個需要平時對漏洞的積累。
更新:
Json Serializer UAF && PHP7 GC with Certain Destructors UAF
php7-gc-bypass漏洞利用PHP garbage collector程序中的堆溢出觸發進而執行命令
影響范圍是linux,php7.0-7.3
https://github.com/mm0r1/exploits/blob/master/php7-gc-bypass/exploit.php
php-json-bypass
漏洞利用json序列化程序中的堆溢出觸發,以繞過disable_functions並執行系統命令
影響范圍是linux,php 7.1-7.3
https://github.com/mm0r1/exploits/blob/master/php-json-bypass/exploit.php
想要深入了解上列具體原理的推薦看這位大佬的文章
https://github.com/mi1k7ea/Mi1k7ea.github.io/blob/master/index.html
以上內容如有不妥之處,敬請斧正