WEB安全滲透測試基礎知識(十一)

3.14. 中間件漏洞

3.14.1. IIS

3.14.1.1. IIS 6.0

  • 後綴解析 /xx.asp;.jpg
  • 目錄解析 /xx.asp/xx.jpg (xx.asp目錄下任意解析)
  • 默認解析 xx.asa xx.cer xx.cdx
  • PROPFIND 棧溢出漏洞
  • PUT漏洞 WebDAV任意文件上傳

3.14.1.2. IIS 7.0-7.5 / Nginx <= 0.8.37

WEB安全滲透測試基礎知識(十一)

在Fast-CGI開啟狀態下,在文件路徑後加上 /xx.php ,則 xx.jpg/xx.php 會被解析為php文件

3.14.1.3. 其他

在支持NTFS 8.3文件格式時,可利用短文件名猜解目錄文件

3.14.2. Nginx

3.14.2.1. Fast-CGI關閉

在Fast-CGI關閉的情況下, Nginx 仍然存在解析漏洞:在文件路徑(xx.jpg)後面加上 %00.php , 即 xx.jpg%00.php 會被當做 php 文件來解析

3.14.2.2. Fast-CGI開啟

在Fast-CGI開啟狀態下,在文件路徑後加上 /xx.php ,則 xx.jpg/xx.php 會被解析為php文件

3.14.2.3. CVE-2013-4547

"a.jpg\x20\x00.php"

3.14.3. Apache

3.14.3.1. 後綴解析

test.php.x1.x2.x3 ( x1,x2,x3 為沒有在 mime.types 文件中定義的文件類型)。Apache 將從右往左開始判斷後綴, 若x3為非可識別後綴,則判斷x2,直到找到可識別後綴為止,然後對可識別後綴進行解析

3.14.3.2. .htaccess

當AllowOverride被啟用時,上傳啟用解析規則的.htaccess

3.14.3.3. CVE-2017-15715

%0A繞過上傳黑名單

3.14.4. lighttpd

xx.jpg/xx.php

3.14.5. Windows

Windows不允許空格和點以及一些特殊字符作為結尾,創建這樣的文件會自動取出,所以可以使用 xx.php[空格] , xx.php., xx.php/, xx.php::$DATA 可以上傳腳本文件

3.15. Web Cache欺騙攻擊

3.15.1. 簡介

網站通常都會通過如CDN、負載均衡器、或者反向代理來實現Web緩存功能。通過緩存頻繁訪問的文件,降低服務器響應延遲。

例如,網站 htttp://www.example.com 配置了反向代理。對於那些包含用戶個人信息的頁面,如
http://www.example.com/home.php ,由於每個用戶返回的內容有所不同,因此這類頁面通常是動態生成,並不會在緩存服務器中進行緩存。通常緩存的主要是可公開訪問的靜態文件,如css文件、js文件、txt文件、圖片等等。此外,很多最佳實踐類的文章也建議,對於那些能公開訪問的靜態文件進行緩存,並且忽略HTTP緩存頭。

Web cache攻擊類似於RPO相對路徑重寫攻擊,都依賴於瀏覽器與服務器對URL的解析方式。當訪問不存在的URL時,如
http://www.example.com/home.php/non-existent.css ,瀏覽器發送get請求,依賴於使用的技術與配置,服務器返回了頁面
http://www.example.com/home.php 的內容,同時URL地址仍然是
http://www.example.com/home.php/non-existent.css,http頭的內容也與直接訪問
http://www.example.com/home.php 相同,cacheing header、content-type(此處為text/html)也相同。

3.15.2. 漏洞成因

當代理服務器設置為緩存靜態文件並忽略這類文件的caching header時,訪問


http://www.example.com/home.php/no-existent.css 時,會發生什麼呢?整個響應流程如下:

  • 瀏覽器請求 http://www.example.com/home.php/no-existent.css ;
  • 服務器返回 http://www.example.com/home.php 的內容(通常來說不會緩存該頁面);
  • 響應經過代理服務器;
  • 代理識別該文件有css後綴;
  • 在緩存目錄下,代理服務器創建目錄 home.php ,將返回的內容作為 non-existent.css 保存。

3.15.3. 漏洞利用

攻擊者欺騙用戶訪問
http://www.example.com/home.php/logo.png?www.myhack58.com ,導致含有用戶個人信息的頁面被緩存,從而能被公開訪問到。更嚴重的情況下,如果返回的內容包含session標識、安全問題的答案,或者csrf token。這樣攻擊者能接著獲得這些信息,因為通常而言大部分網站靜態資源都是公開可訪問的。

3.15.4. 漏洞存在的條件

漏洞要存在,至少需要滿足下面兩個條件:

  • web cache功能根據擴展進行保存,並忽略caching header;
  • 當訪問如 http://www.example.com/home.php/non-existent.css 不存在的頁面,會返回 home.php 的內容。

3.15.5. 漏洞防禦

防禦措施主要包括3點:

  • 設置緩存機制,僅僅緩存http caching header允許的文件,這能從根本上杜絕該問題;
  • 如果緩存組件提供選項,設置為根據content-type進行緩存;
  • 訪問 http://www.example.com/home.php/non-existent.css 這類不存在頁面,不返回 home.php 的內容,而返回404或者302。

3.15.6. Web Cache欺騙攻擊實例

3.15.6.1. Paypal

Paypal在未修復之前,通過該攻擊,可以獲取的信息包括:用戶姓名、賬戶金額、信用卡的最後4位數、交易數據、emaill地址等信息。受該攻擊的部分頁面包括:

  • https://www.paypal.com/myaccount/home/attack.css
  • https://www.paypal.com/myaccount/settings/notifications/attack.css
  • https://history.paypal.com/cgi-bin/webscr/attack.css?cmd=_history-details


分享到:


相關文章: