前言
apache有一個cgi子產品,該子產品可以設定指定檔案類型以cgi方式讓伺服器運作,例如一個不存在的afaafa字尾檔案,通過設定,就可以當作cgi運作,因為是直接伺服器運作的,是以可以繞過php的disable_functions限制。
環境搭建
說是環境需要是linux、apache+php、apache開啟cgi和rewrite、web目錄有allowoverride權限、目前目錄可寫,看着感覺很難搭建,是以這裡就直接使用蟻劍的docker環境進行測試。
位址:
https://github.com/AntSwordProject/AntSword-Labs/tree/master/bypass_disable_functions/3
相關指令如下:
git clone https://github.com/AntSwordProject/AntSword-Labs.gitcd到3檔案夾下docker-compose up -d
手動測試(失敗)
這裡以afaafa字尾為例,這裡最好使用一個未知的字尾,如果使用已知的,apache解析可能會碰到問題,導緻無法當作cgi執行。
afa.afaafa檔案中寫入相關shell,示例如下。
#!/bin/shecho&id
然後再建一個.htaccess檔案,内容如下,意思是把afaafa檔案當作cgi執行。
OPtions +ExecCGIAddHandler cgi-script .afaafa
建立好後,将這兩個檔案傳到伺服器。
這時通路afa.afaafa檔案會提示伺服器内部錯誤。
原因是該檔案沒有執行權限,可以看到權限是0644,需要改成0777,修改方法有兩種,一種是直接通過類似蟻劍的軟體直接右鍵修改權限,另一種可以通過php的chmod修改,如下圖。
然後再通路還是報内部錯誤。後來用蟻劍插件測試,插件運作後會自動彈一個指令視窗出來,如果不在這個視窗執行下指令,則通路也是内部錯誤。
蟻劍測試
蟻劍測試選擇apache_mod_cgi模式,運作後會彈出一個指令行,如下圖。
這時如果不運作指令,直接通路shell.ant,重新整理了很多遍,一直是錯誤頁。
如果去指令行随便輸入一個指令,再次通路shell.ant檔案才會正常。
總結
無。