紅隊攻防之解析漏洞總結
0x00 服務器解析漏洞
服務器解析漏洞一般是服務器自身或擴展組件帶來的漏洞,配合文件上傳等漏洞就會產生很大的危害。
我們這里整理常見的服務器apache、IIS、nginx的解析漏洞。
0x01 apache
一、不可識別解析
apache解析文件的規則是從右到左開始判斷解析,如果后綴名為不可識別文件解析,就再往左判斷。
比如 test.php.owf.rar “.owf”和”.rar” 這兩種后綴是apache不可識別解析,apache就會把wooyun.php.owf.rar解析成php。
apache版本在以下范圍內
Apache 2.0.x <= 2.0.59 Apache 2.2.x <= 2.2.17 Apache 2.2.2 <= 2.2.8 都可以通過上傳xxx.php.rar或xxx.php+任意無法解析后綴解析為php。
二、配置問題
1.如果在 Apache 的 conf 里有這樣一行配置 AddHandler php5-script .php 這時只要文件名里包含.php 即使文件名是 test2.php.jpg 也會以 php 來執行。
2.如果在 Apache 的 conf 里有這樣一行配置 AddType application/x-httpd-php .jpg 即使擴展名是 jpg,一樣能以 php 方式執行。
三、罕見后綴
Apache配置文件中會有.+.ph(p[345]?|t|tml)此類的正則表達式,被當php程序執行的文件名要符合正則表達式。也就是說php3,php4,php5,pht,phtml等文件后綴也是可以被當作php文件進行解析的。
四、后綴包含換行符\x0A
CVE-2017-15715:Apache 2.4.0-2.4.29中,上傳一個后綴末尾包含換行符的文件,來繞過FilesMatch。繞過FilesMatch不一定能被PHP解析。
0x02 IIS
一、目錄解析
在IIS-6.0的版本,在.asp或.asa文件夾下的所有類型后綴文件全部解析為.asp文件。
存在數據庫備份功能的系統并且備份路徑可控的話經常會出現這個問題。
二、文件解析
在IIS-6.0的版本,服務器默認不解析;后面的內容,所以xxx.asp;.jpg會被解析成xxx.asp。
三、其他解析類型
在IIS6.0的版本,如下幾種文件類型也會被執行。
xxx.asa xxx.cer xxx.cdx
四、php-cgi漏洞
在IIS-7.0和IIS-7.5的版本,在php配置文件中,開啟cgi.fix_pathinfo,然后上傳一個1.jpg的一句話木馬文件。然后用菜刀訪問1.jpg/.php即可連接一句話木馬。
0x03 nginx
一、低版本nginx
空字節代碼執行漏洞:nginx 0.5.x、nginx 0.6.x、Nginx 0.7-0.7.65、Nginx 0.8-0.8.37中可以通過在任意文件名后面增加%00.php解析為php,如1.jpg%00.php
二、php-cgi漏洞
和IIS的第四點相同,在php配置文件中,開啟了cgi.fix_pathinfo,導致圖片馬1.jpg可以通過訪問1.jpg/.php、1.jpg%00.php解析成php文件
0x04 windows解析漏洞
Windows操作系統中,文件名不能以空格或.開頭,也不能以空格或.結尾。
當把一個文件命名為以空格或.開頭或結尾時,會自動地去掉開頭和結尾處的空格和.。利用此特性,也可能造成文件解析漏洞
0x05 應對
1.對于php-cgi漏洞,可以修改php.ini文件,將cgi.fix_pathinfo的值設置為0
2.使用白名單匹配文件后綴名
3.可以對上傳后的文件固定后綴,并對之前的所有字符進行重命名