安全研究 | Nginx反向代理釣魚
什么是反向代理
這里我找了一段比較官方的解釋。
反向代理(Reverse Proxy)是指以代理服務(wù)器來接受 Internet 上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給 Internet 上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個服務(wù)器。我自己的理解 代理服務(wù)器就是充當(dāng)了一個“中間人”。如果理解的不恰當(dāng)還請師傅們指出來哈。
Nginx反向代理實例
這里拿我的一臺vps做演示 ip:39.xxx.xxx.x。因為vps上裝了寶塔 而且 又在寶塔里裝了Nginx。
首先找到Nginx的目錄。在我的vps上 目錄是/www/server/nginx/
找到/www/server/nginx/config/nginx.conf文件
反向代理 https://www.xxx.com/
- location / {
- #如果后端的服務(wù)器返回 502、504、執(zhí)行超時等錯誤,自動將請求轉(zhuǎn)發(fā)到 upstream 負載均衡池中的
- 另一臺服務(wù)器,實現(xiàn)故障轉(zhuǎn)移。
- proxy_next_upstream http_502 http_504 error timeout invalid_header;
- proxy_pass https://www.xxx.com/;
- proxy_set_header Host 39.xxx.xxx.9;
- proxy_set_header X-Forwarded-For $remote_addr;
- }
proxy_set_header 指令用于在向反向代理的后端 Web 服務(wù)器發(fā)起請求時添加指定的 Header頭信息。
當(dāng)后端 Web 服務(wù)器上有多個基于域名的虛擬主機時,要通過添加 Header 頭信息 Host,用于指定請求的域名,這樣后端 Web 服務(wù)器才能識別該反向代理訪問請求由哪一個虛擬主機來處理。(39.xxx.xxx.9是我的vps地址。www.xxx.com是要反向代理的目標(biāo))

最后我們還需要制定以下 訪問日志需要獲取的內(nèi)容 也是在nginx.conf里修改.在http下
- log_format TestLog escape=json '$request_filename $http_x_forwarded_for $fastcgi_script_name $document_root $request_body' $http_cookie;

TestLog 要和上面的access_log對應(yīng)不然日志不會起作用。
重點是$request_body(獲取post數(shù)據(jù)),$http_cookie(獲取cookie數(shù)據(jù))這就是我們釣魚的核心了。當(dāng)有人訪問并登陸我們反向代理的網(wǎng)站以后 我們點開日志就可以看到他的cookie和post提交的用戶名和密碼了。
反向代理釣魚實例
這里我用我們學(xué)校的一個測試系統(tǒng)舉例子 按照上面步驟反向代理學(xué)校的測試系統(tǒng)

之后看到一個一模一樣的界面。為了怕學(xué)校領(lǐng)導(dǎo)找上門來我把css都撤了 哈哈哈。
這時候叫上萬能的舍友來登陸一波康康。

根據(jù)Nginx.conf確定日志路徑在/www/wwwlogs/access.log。講道理舍友登陸了以后應(yīng)該記錄了 他登陸時提交的post 里面應(yīng)該包含賬號密碼。和登錄后的cookie信息。

訪問日志后看到登陸時的賬號密碼。目標(biāo)站為https 不過問題不大JSESSIONID后面的是獲取到舍友登陸后的cookie。直接替換cookie即可登陸舍友的賬號。
burp進行正則匹配cookie后進行替換。最后成功登陸。
寫在最后
本文更多的是根據(jù)自己的理解去寫的,如果哪里理解或是操作有問題 ,麻煩各位大佬指出來。感謝感謝。最后如果有對Nginx不太了解的,可以去看一下《實戰(zhàn)Nginx:取代Apache的高性能Web服務(wù)器》這本書,當(dāng)時也是國光大佬推薦我的,很不錯。