從偶然出發
在做測試的時候發現了這樣一個漏洞,原請求報文如下:
GET / HTTP/1.1
Host: attack_website
[... HEADER ...]
...
當時最初目的是想測SSRF的,但是經過測試沒發現存在漏洞後來想起之前看過的一些漏洞案例,將請求報文中的URI部分替換成了網址:
http://gh0st.cn
就變成了如下的請求:
GET http://gh0st.cn HTTP/1.1
Host: attack_website
[... HEADER ...]
...
在BurpSuite里進行重放測試發現返回的響應正文就是 http://gh0st.cn 的,也就是說這裡的attack_website可以被作為HTTP代理,於是進入下一步的測試能否使用非http/https協議進行請求?例如file:///,測試後發現確實沒辦法這樣玩,看來是這裡代理伺服器不支持。
在這裡替換URI部分為內網的地址,可以直接漫遊內網的系統,進行深入的滲透測試了,後續的事情就不在這多說了,那麼來研究看看為什麼會有這樣的問題呢?
從被動偶然到主動發現
了解原理
查閱了一番資料和詢問了一下朋友,都說具體的不太清楚,後來看見這樣一篇文章:
https://www.secpulse.com/archives/74676.html
其中所說原理大致是因為Nginx反向代理配置不當導致可以被作為正向代理,導致能被外部作為HTTP代理伺服器。
正向代理 and 反向代理
正向代理
- 瀏覽器(/全局)設置代理伺服器IP和對應埠
- 瀏覽器輸入目標地址->代理伺服器->目標伺服器
簡而言之,正向代理類似我們經常用到的跳板機,利用代理去訪問外部的資源。