安全研究 | Nginx反向代理釣魚
什么是反向代理
這里我找了一段比較官方的解釋。
反向代理(Reverse Proxy)是指以代理服務器來接受 Internet 上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給 Internet 上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。我自己的理解 代理服務器就是充當了一個“中間人”。如果理解的不恰當還請師傅們指出來哈。
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 / {
- #如果后端的服務器返回 502、504、執行超時等錯誤,自動將請求轉發到 upstream 負載均衡池中的
- 另一臺服務器,實現故障轉移。
- 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 服務器發起請求時添加指定的 Header頭信息。
當后端 Web 服務器上有多個基于域名的虛擬主機時,要通過添加 Header 頭信息 Host,用于指定請求的域名,這樣后端 Web 服務器才能識別該反向代理訪問請求由哪一個虛擬主機來處理。(39.xxx.xxx.9是我的vps地址。www.xxx.com是要反向代理的目標)

最后我們還需要制定以下 訪問日志需要獲取的內容 也是在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對應不然日志不會起作用。
重點是$request_body(獲取post數據),$http_cookie(獲取cookie數據)這就是我們釣魚的核心了。當有人訪問并登陸我們反向代理的網站以后 我們點開日志就可以看到他的cookie和post提交的用戶名和密碼了。
反向代理釣魚實例
這里我用我們學校的一個測試系統舉例子 按照上面步驟反向代理學校的測試系統

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

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

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