解析漏洞的(de)原理:
發表時(shí)間:2020-10-19
發布人(rén):融晨科技
浏覽次數:64
解析漏洞的(de)原理:
解析漏洞是(shì)指web服務器因對http請求處理不(bù)當導緻将非可執行
的(de)腳本,文件等當做可執行的(de)腳本,文件等執行。該漏洞—般配
合服務器的(de)文件上(shàng)傳功能使用,以(yǐ)獲取服務器的(de)權限。
常見的(de)解析漏洞
(一)IIS5.x-6.x解析漏洞
使用iis5.x-6.x版本的(de)服務器,大(dà)多爲(wéi / wèi)windows server 2003,網站比較古老,開發語句一般爲(wéi / wèi)asp;該解析漏洞也(yě)隻能解析asp文件,而(ér)不(bù)能解析aspx文件。
1)目錄解析(6.0)
形式:www.xxx.com/xx.asp/xx.jpg
原理: 服務器默認會把.asp,.asp目錄下的(de)文件都解析成asp文件。
2)文件解析
形式:www.xxx.com/xx.asp;.jpg
原理:服務器默認不(bù)解析;号後面的(de)内容,因此xx.asp;.jpg便被解析成asp文件了(le/liǎo)。
3)解析文件類型
IIS6.0 默認的(de)可執行文件除了(le/liǎo)asp還包含這(zhè)三種 :
/test.asa
/test.cer
/test.cdx
(二)IIS7.5解析漏洞
IIS7.5的(de)漏洞與nginx的(de)類似,都是(shì)由于(yú)php配置文件中,開啓了(le/liǎo)cgi.fix_pathinfo,而(ér)這(zhè)并不(bù)是(shì)nginx或者iis7.5本身的(de)漏洞。
(三)apache解析漏洞
漏洞原理
Apache 解析文件的(de)規則是(shì)從右到(dào)左開始判斷解析,如果後綴名爲(wéi / wèi)不(bù)可識别文件解析,就(jiù)再往左判斷。比如test.php.qwe.asd “.qwe”和(hé / huò)”.asd” 這(zhè)兩種後綴是(shì)apache不(bù)可識别解析,apache就(jiù)會把wooyun.php.qwe.asd解析成php。
漏洞形式
www.xxxx.xxx.com/test.php.php123
其餘配置問題導緻漏洞
(1)如果在(zài) Apache 的(de) conf 裏有這(zhè)樣一行配置 AddHandler php5-script .php 這(zhè)時(shí)隻要(yào / yāo)文件名裏包含.php 即使文件名是(shì) test2.php.jpg 也(yě)會以(yǐ) php 來(lái)執行。
(2)如果在(zài) Apache 的(de) conf 裏有這(zhè)樣一行配置 AddType application/x-httpd-php .jpg 即使擴展名是(shì) jpg,一樣能以(yǐ)php 方式執行。
修複方案
1.apache配置文件,禁止.php.這(zhè)樣的(de)文件執行,配置文件裏面加入
2.用僞靜态能解決這(zhè)個(gè)問題,重寫類似.php.*這(zhè)類文件,打開apache的(de)httpd.conf找到(dào)LoadModule rewrite_module modules/mod_rewrite.so
把#号去掉,重啓apache,在(zài)網站根目錄下建立.htaccess文件
(四)Nginx解析漏洞
漏洞原理
Nginx默認是(shì)以(yǐ)CGI的(de)方式支持PHP解析的(de),普遍的(de)做法是(shì)在(zài)Nginx配置文件中通過正則匹配設置SCRIPT_FILENAME。當訪問www.xx.com/phpinfo.jpg/1.php這(zhè)個(gè)URL時(shí),$fastcgi_script_name會被設置爲(wéi / wèi)“phpinfo.jpg/1.php”,然後構造成SCRIPT_FILENAME傳遞給PHP CGI,但是(shì)PHP爲(wéi / wèi)什麽會接受這(zhè)樣的(de)參數,并将phpinfo.jpg作爲(wéi / wèi)PHP文件解析呢?這(zhè)就(jiù)要(yào / yāo)說(shuō)到(dào)fix_pathinfo這(zhè)個(gè)選項了(le/liǎo)。 如果開啓了(le/liǎo)這(zhè)個(gè)選項,那麽就(jiù)會觸發在(zài)PHP中的(de)如下邏輯:
PHP會認爲(wéi / wèi)SCRIPT_FILENAME是(shì)phpinfo.jpg,而(ér)1.php是(shì)PATH_INFO,所以(yǐ)就(jiù)會将phpinfo.jpg作爲(wéi / wèi)PHP文件來(lái)解析了(le/liǎo)
漏洞形式
www.xxxx.com/UploadFiles/image/1.jpg/1.php
www.xxxx.com/UploadFiles/image/1.jpg%00.php
www.xxxx.com/UploadFiles/image/1.jpg/%20\0.php
另外一種手法:上(shàng)傳一個(gè)名字爲(wéi / wèi)test.jpg,然後訪問test.jpg/.php,在(zài)這(zhè)個(gè)目錄下就(jiù)會生成一句話木馬shell.php。
NGINX與APACHE解析url文件的(de)不(bù)通
nginx:對url是(shì)從左往右讀取,并先讀取文件名一直讀到(dào)最後一個(gè)文件後綴才是(shì)該文件的(de)後綴
apache:對url是(shì)從右往左讀取,并先讀取文件後綴讀取第一個(gè),默認前面都是(shì)文件名