天天看點

進階滲透測試對公司網站漏洞檢測詳情

天氣逐漸變涼,但滲透測試的熱情溫度感覺不到涼,因為有我們的存在公開分享滲透實戰經驗過程,才會讓這個秋冬變得不再冷,近期有反映在各個環境下的目錄解析漏洞的檢測方法,那麼本節由我們進階滲透架構師來詳細的講解平常用到的web環境檢測點和網站漏洞防護辦法。

進階滲透測試對公司網站漏洞檢測詳情

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

在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開啟

3.14.2.3. CVE-2013-4547

"a.jpgx20x00.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://域名 配置了反向代理。對于那些包含使用者個人資訊的頁面,如

http://

域名/home.php ,由于每個使用者傳回的内容有所不同,是以這類頁面通常是動态生成,并不會在緩存伺服器中進行緩存。通常緩存的主要是可公開通路的靜态檔案,如css檔案、js檔案、txt檔案、圖檔等等。此外,很多最佳實踐類的文章也建議,對于那些能公開通路的靜态檔案進行緩存,并且忽略HTTP緩存頭。

Web cache攻擊類似于RPO相對路徑重寫攻擊,都依賴于浏覽器與伺服器對URL的解析方式。當通路不存在的URL時,如

域名/home.php/non-existent.css ,浏覽器發送get請求,依賴于使用的技術與配置,伺服器傳回了頁面

域名/home.php 的内容,同時URL位址仍然是

域名/home.php/non-existent.css,http頭的内容也與直接通路

域名/home.php 相同,cacheing header、content-type(此處為text/html)也相同。

3.15.2. 漏洞成因

當代理伺服器設定為緩存靜态檔案并忽略這類檔案的caching header時,通路

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

浏覽器請求

域名/home.php/no-existent.css ;

伺服器傳回

域名/home.php 的内容(通常來說不會緩存該頁面);

響應經過代理伺服器;

代理識别該檔案有css字尾;

在緩存目錄下,代理伺服器建立目錄 home.php ,将傳回的内容作為 non-existent.css 儲存。

3.15.3. 漏洞利用

攻擊者欺騙使用者通路

域名/home.php/logo.png? ,導緻含有使用者個人資訊的頁面被緩存,進而能被公開通路到。更嚴重的情況下,如果傳回的内容包含session辨別、安全問題的答案,或者csrf token。這樣攻擊者能接着獲得這些資訊,因為通常而言大部分網站靜态資源都是公開可通路的。

3.15.4. 漏洞存在的條件

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

web cache功能根據擴充進行儲存,并忽略caching header;

當通路如

域名/home.php/non-existent.css 不存在的頁面,會傳回 home.php 的内容。

3.15.5. 漏洞防禦

進階滲透測試對公司網站漏洞檢測詳情

防禦措施主要包括3點:

設定緩存機制,僅僅緩存http caching header允許的檔案,這能從根本上杜絕該問題;

如果緩存元件提供選項,設定為根據content-type進行緩存;

通路

域名/home.php/non-existent.css 這類不存在頁面,不傳回 home.php 的内容,而傳回404或者302。

對圖檔上傳目錄進行腳本權限限制,對上傳擴充這裡做過濾判斷。

對get url的位址進行waf的安全過濾,如果對這些安全防護部署以及滲透測試不熟悉的話,建議可以像專業的網站安全公司來處了解決。

繼續閱讀