網站安全維護對公司網站滲透測試剖析

網站安全發表於2019-10-21

天氣逐漸變涼,但滲透測試的熱情溫度感覺不到涼,因為有我們的存在公開分享滲透實戰經驗過程,才會讓這個秋冬變得不再冷,近期有反映在各個環境下的目錄解析漏洞的檢測方法,那麼本節由我們Sine安全的高階滲透架構師來詳細的講解平常用到的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開啟

在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://域名 配置了反向代理。對於那些包含使用者個人資訊的頁面,如 http://域名/home.php ,由於每個使用者返回的內容有所不同,因此這類頁面通常是動態生成,並不會在快取伺服器中進行快取。通常快取的主要是可公開訪問的靜態檔案,如css檔案、js檔案、txt檔案、圖片等等。此外,很多最佳實踐類的文章也建議,對於那些能公開訪問的靜態檔案進行快取,並且忽略HTTP快取頭。

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

3.15.2. 漏洞成因

當代理伺服器設定為快取靜態檔案並忽略這類檔案的caching header時,訪問

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

  • 瀏覽器請求 http://域名/home.php/no-existent.css ;
  • 伺服器返回 http://域名/home.php 的內容(通常來說不會快取該頁面);
  • 響應經過代理伺服器;
  • 代理識別該檔案有css字尾;
  • 在快取目錄下,代理伺服器建立目錄 home.php ,將返回的內容作為 non-existent.css 儲存。

3.15.3. 漏洞利用

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

3.15.4. 漏洞存在的條件

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

  • web cache功能根據擴充套件進行儲存,並忽略caching header;
  • 當訪問如 http://域名/home.php/non-existent.css 不存在的頁面,會返回 home.php 的內容。

3.15.5. 漏洞防禦

網站安全維護對公司網站滲透測試剖析

防禦措施主要包括3點:

  • 設定快取機制,僅僅快取http caching header允許的檔案,這能從根本上杜絕該問題;
  • 如果快取元件提供選項,設定為根據content-type進行快取;
  • 訪問 http://域名/home.php/non-existent.css 這類不存在頁面,不返回 home.php 的內容,而返回404或者302。
  • 對圖片上傳目錄進行指令碼許可權限制,對上傳擴充套件這裡做過濾判斷。
  • 如果快取元件提供選項,設定為根據content-type進行快取;
  • 對get url的地址進行waf的安全過濾,如果對這些安全防護部署以及滲透測試不熟悉的話,建議可以像專業的網站安全公司來處理解決,國內做的比較好的推薦Sinesafe,啟明星辰,綠盟,等等專業的。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31542418/viewspace-2660791/,如需轉載,請註明出處,否則將追究法律責任。

相關文章