反向代理在Web滲透測試中的運用

在 一次Web滲透測試中,目標是M國的一個Win+Apache+PHP+MYSQL的網站,獨立服務器,對外僅開80端口,網站前端的業務系統比較簡單, 經過幾天的測試也沒有找到漏洞,甚至連XSS都沒有發現,也未找到網站后臺,在收集信息的時候已經排除了C段入侵的可行性(選擇C段入侵的時候,需要對目 標、網絡、路由和國家區域進行分析和判斷,如果不經思考和判斷地去入侵C段服務器,當你費盡心思拿到某臺服務器權限時,往往發現毫無半點用處,特別又是在 國外,ARP基本上都沒什么希望,當然內網滲透中又是另一回事。)

也許在滲透測試遇到這種情況時大多會選擇放棄,在絕望的時候,我將目標臨時轉移到該網站域名注冊商,因為擁有域名注冊商網站權限,至少可以修改目標網站 的域名解析。一般情況入侵域名注冊網站難度比較大,但并不是沒有希望,在09年的時候,國內很多域名注冊商的網站都存在漏洞。滲透那個域名注冊商網站,過 程比較繁雜,也沒有新的技術點,靠的就是細心和耐心,但最終還是獲取到目標網站域名的管理賬號和密碼,那么此時我們已知和已有的條件如下:

目標域名: www.szcgpp.com (當然不是真的)
網站IP:1.1.1.1

環境:Win+Apache+PHP+MYSQL

已有權限:域名解析權限,可以將 www.szcgpp.com 解析到任何一個IP上

特別說明下,目標網站使用的服務器,并不是在域名注冊商租用的,而是放置在公司機房中,所以通過域名注冊商網站,是不能管理到Web源碼的,只能進行域名解析。

當擁有域名解析權限后,如何才獲取目標網站的權限呢?

A:構造一個和目標非常相似的網站?然后將域名解析到構造的網站?

B:使用iis重定向?

這些方法都非常容易被發現,并且也無法獲取到權限,所以遇到這種場景的時候我們可以使用反向代理,也是本文的重點。了解反向代理之前,我做一個關于HTTP 代理的簡單介紹, 代理常用的是普通代理和反向代理:

普通代理: 為用戶(客戶端)提供代理,需要在客戶端設置,比如在客戶端瀏覽器中設置代理服務器IP和端口,完成配置后,用戶可以通過代理服務器訪問互聯網,代理服務 器相當于中間人的作用。根據代理服務器配置不同,又可以將普通代理分為,幾種不同安全級別的代理,代理軟件比較多,不同的廠商有不同的稱謂和分級,一般情 況都包括以下三個級別,透明代理、普通匿名代理和高匿名代理。

透明代理:

REMOTE_ADDR = 代理服務器 IP
HTTP_VIA = 代理服務器 IP
HTTP_X_FORWARDED_FOR = 真實 IP

說明:使用透明代理,可以進行信息交互,但不能隱藏自己真實IP,安全性越差,所以黑客一般不會使用此類代理。

普通匿名代理:

REMOTE_ADDR = 代理服務器 IP
HTTP_VIA = 代理服務器 IP
HTTP_X_FORWARDED_FOR = 代理服務器 IP

說明:隱藏了真實的IP,但通過HTTP_VIA可以判斷出你使用了代理。

高匿名代理:

REMOTE_ADDR = 代理服務器 IP
HTTP_VIA = 沒數值

HTTP_X_FORWARDED_FOR = 沒數值

說明:可以隱藏真實IP,同時不會泄露你是否使用了代理,這類代理黑客往往比較喜歡。

用戶通過普通代理訪問Web,實際上用戶并沒有直接訪問Web服務器,而是通過代理服務器作為中轉,的示意圖如下:

反向代理:是 為服務器提供代理和緩存,不需要在客戶端。用戶訪問網站,實際上并不是直接訪問Web服務器,而是首先訪問反向代理服務器,如果請求的是html/htm /gif/jpg等這些靜態文件時,反向代理服務器直接返回結果,如果用戶請求是腳本如asp/php/jsp等內容時,反向代理服務器會將請求轉發給 Web服務器處理,再把結果返回給用戶,從而通過緩存實現加速的效果。示意圖如下:

Squid和Nginx是非常優秀的反向代理軟件,本文主要介紹Squid,它支持Windows和Linux,由于目標網站環境是win,我這里使用Win下的squid(使用Linux也可以),配置方法如下:

復制并改名為:

2.用文本編輯器打開squid.conf,需要修改的地方:

查找http_port 3128在后面增加一行

查找#cache_peer sib2.foo.net sibling 3128 3130 [proxy-only]在后面增加一行

1.1.1.1為目標網站真實IP,80為端口

查找# TAG: visible_hostname在后面增加一行

查找http_access deny all 在其前面加#將這一行注釋掉,然后增加一行

3.使用squid/sbin/squid.exe執行以下命令

測試squid是否正常:

訪問http://squid服務器ip

實際指向http://web服務器IP

完成測試后,將目標域名解析到squid服務器IP,網站以及功能完全正常,唯一差別就是ping返回的IP是squid服務器的IP,并不是真正的Web服務器IP,只要網站正常訪問,管理員也不會時時去ping。

經過幾個小時等待后,目標網站管理員登陸后臺,在日志squid\var\logs\access.log就可以找到后臺地址,后臺目錄文件名非常地長, 同時收獲了很多敏感的URL,準備研究如何截取Cookie或者后臺賬號密碼時,后臺xx_adduser.php存在本地驗證漏洞,直接添加管理員成 功,管理員和后臺地址都有了,登陸后順利拿到WebShell。

當然,如果后臺不存在這個漏洞,應該還是有辦法可以弄到權限的,畢竟用戶/管理員訪問的數據包都會經過這臺squid服務器,只不過會麻煩許多……

91ri.org:很多人拿到了域名權限后更喜歡直接掛黑頁,本文作者并沒有這么做,而是深入研究,做了一個反向代理并通過此來繼續了他的滲透之路。本文思路挺贊的,這種通過反向代理來拿權限的文章還是比較少見的。文中講的是后臺的添加管理員的文件存在本地驗證漏洞,通過此漏洞拿到了管理員權限。

其實我個人之前也有像研究過如何截取cookie或賬號密碼,不過沒研究出來,在這篇文章中也沒有看到,還是有點失望啊:( 不過還是很感謝作者為大家提供了這么一個挺好的思路,雖然這種方法的利用情況并不多(因為域名權限不是那么好拿的,特別是國外的域名權限),不過還是可以作為一個思路mark一下的:)

參考:http://www.007hack.com/?p=770

http://lcx.cc/?i=3443

本文由網絡安全攻防研究室(www.szcgpp.com)信息安全小組收集整理,轉載請注明出處。