【由淺入深_打牢基礎】HOST頭攻擊

2022-06-20 21:00:38

image-20220608134349633

 

【由淺入深_打牢基礎】HOST頭攻擊

前幾天一直準備別的事情,然後用了2/3天時間去挖了補天某廠的SRC,還是太菜了,最後提交了一個低危(還沒出結果,還有點敏感資訊洩露,感覺略雞肋也沒交),不過偶然發現之前提的一個公益SRC被收了(當時快半個月都沒人處理)不過沒money,等過幾天有時間再看吧,還是得虛心學技術,慢慢的進步。

1. HOST頭的作用

微信公眾號:小惜滲透,歡迎大佬一起交流進步

1.1 文字原理講解

首先我們需要了解一個概念叫虛擬主機,也就是一臺伺服器上存在多個網站。你會想這還不簡單,每個站點分一個埠即可,但是我說的是一個埠。

既然如此,那麼我們不管它是怎麼實現的,我們要關注的是為什麼如此,為什麼我們存取這些網站均是正常的呢?這就是HOST頭的作用了,當我們去存取一個url的時候,這個域名只會被DNS解析為IP,但是因為這些虛擬主機的IP是同一個,所以會看我們的HOST頭,它的值是誰,那麼伺服器就去交給那個站去響應。(如下圖)

image-20220608134349633image-20220608134349633

1.2 實際演示

我這裡用小皮面板再來演示一下它的奇妙之處,首先我先建立兩個站點,分別是pikachu和dvwa,設定如下圖。

image-20220608135012232 image-20220608135012232 image-20220608135031215image-20220608135031215

可以看到,這時候我給它們不同的域名,而且埠均為本機的80,好,接下來我去存取。

image-20220608135147488 image-20220608135147488 image-20220608135153094image-20220608135153094

兩個站點沒有任何問題,緊接著我重新存取dvwa並抓包

image-20220608144116741image-20220608144116741

再來看一下頁面

image-20220608144151455image-20220608144151455

OK相信到這裡就瞭解了,HOST頭的作用了,接下來,圍繞著Burp Suite官方實驗室,演示下會發生的安全問題


2. 漏洞利用

2.1 基本密碼重置中毒

要求如下:

image-20220608145041353image-20220608145041353

我們需要登入到Carlos才可以完成,登入時點選忘記密碼

image-20220608145206659image-20220608145206659

可以看到是根據我們的賬戶名或郵箱地址,發一封重置密碼的郵件給我們

image-20220608145241705image-20220608145241705

我們先用自己的賬戶,也就是wiener來試試,ok,點選後去漏洞利用伺服器試試

image-20220608145617649image-20220608145617649

往下翻有個Email client,點進去檢視剛剛的郵件內容

image-20220608145609138image-20220608145609138

看到有個修改密碼連線,ok,我們開啟它,並隨便修改成123

image-20220619163246817 image-20220619163246817 image-20220608145900506image-20220608145900506

接下來我們去Burp看下剛剛的封包,如下,可以看到裡面存在一個temp-forgot-password-token值,所以我們現在需要搞到它。

POST /forgot-password?temp-forgot-password-token=F7vqHnRQVDFVZwEfG8CjqPOx4gwgMGr2 HTTP/1.1
Host: ac3d1fxxxxxx060.web-security-academy.net
Cookie: _lab=46%7cMasdCwCFAiRGPkiVdxxxNhS8mYDOMvkk3CWJakAhR0wUzpasdGqNbbKzMESDTwqnN4%2bmfnDv415Yp1OeYCQWOHaYTqDhOeWLYsbDczuZvkT8kfY2yqQxeqN9CdAsyGMC7FUxTGUuUMjnXEJlyJaZ1ArCyi5xbmznovOWg2psOzMjkzQnGNekasdzgthyY%3d; session=jcqZVUOp3gtGaRpFeBD7r577ERV38AkV7
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 135
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Te: trailers
Connection: close

csrf=KmpFXtDQMQuzxEkE0t8LRYxfT698ibN1&temp-forgot-password-token=F7vqHnRQVDFVZwEfG8CjqPOx4gwgMGr2&new-password-1=123&new-password-2=123

接下來我的猜想就來了,既然我們知道漏洞肯定跟HOST頭注入有關,那麼我猜我們剛剛點選忘記密碼,發包的時候肯定是抓不到這個token的,而是網站後端伺服器傳送到我們的郵箱,但是這個時候如果我們將HOST頭改成我們自己利用伺服器,那麼流量會不會就會到我們這裡,然後根據這個token值構造重置密碼連結,ok,說幹就幹。

image-20220619163138663image-20220619163138663

緊接著去我們漏洞利用伺服器查一下token

image-20220608151427869image-20220608151427869

構造重置密碼連結,直接將我們重置密碼的包裡面的csrf (值在上上個圖中)和temp-forgot-password-token值改成對應的,然後成功了

image-20220608152531500image-20220608152531500

2.2 主機檔頭身份驗證繞過

要求如下:

image-20220608161747546image-20220608161747546

既然要進入管理面板,那麼首先我們應該找到路徑,隨手加一個admin,演示僅對本地使用者可用

image-20220619163056154image-20220619163056154

一般我們搭建靶場用的最多的就是localhost,同理這裡將HOST頭改為localhost

image-20220608162732093image-20220608162732093

直接刪除,同樣還得抓包改HOST

image-20220608162912147image-20220608162912147

2.3 通過模糊請求導致 Web 快取中毒

要求如下:

image-20220619163031177image-20220619163031177

利用過程:

這個我盲猜可能就就是web快取投毒並且非快取建是HOST,相信看到我之前那篇文章的兄弟一下就懂了,就是web快取投毒,投到HOST鍵上

首先重新整理一下觀察歷史包,發現載入了兩個js

image-20220619163858150image-20220619163858150

存在快取機制

image-20220619163938866image-20220619163938866

那我現在漏洞利用伺服器構造一下js檔案

image-20220619164331866image-20220619164331866

ok,改一下HOST,投毒吧

image-20220619165421749image-20220619165421749

改了發現不可以,那麼也就不能在原來基礎上修改,那就嘗試在原來基礎上增加,雙寫HOST

image-20220619165540252image-20220619165540252

可以看到載入我們利用伺服器的js了,這個時候正常如何存取就會中毒了

image-20220619173820386image-20220619173820386

2.4 基於路由的 SSRF

要求如下:

image-20220619173951042image-20220619173951042

利用過程:

首先這裡提示了,必須使用Burp Collaborator來進行測試,如果不知道它是什麼,可以百度,我暫時沒找到好文章,後續打算就其使用寫個貼文,這裡先簡單理解成dnslog就好了,資料由Burp->靶機,靶機響應到Burp Collaborator再到Burp,也就是說它的內網靶機不會出網,除非是Burp自帶Burp Collaborator地址,所以我們需要設定一下

點選Burp->Burp Collaborator client出現下圖介面,點選Copy to clipboard來獲取一個隨機地址

image-20220619215636812image-20220619215636812

然後可以在Project options裡面檢視一下,我們這裡使用預設的Collaborator的server就好

image-20220619221018445image-20220619221018445

嘗試SSRF漏洞,將存取實驗室主頁的包的HOST頭改成我們的Collaborator server地址,然後發包,然後就可以看到Collaborator server存在流量,然後就可以關掉Collaborator了

image-20220619221233374image-20220619221233374

證明存在SSRF漏洞,可通過HOST值存取內部敏感系統,但是不知道IP,所以直接爆破,如下圖設定

image-20220619174730976image-20220619174730976

別忘了關掉自動更新Header功能

image-20220619221528007image-20220619221528007

Payload設定如下

image-20220619174835235image-20220619174835235

這裡因為沒特殊字元,所以paylaod Encoding勾不勾沒關係,直接爆破,130被爆破成功

image-20220619221621267image-20220619221621267

然後我們存取主頁並抓包將HOST改成192.168.0.130然後放出去,同樣的刪除使用者的這個POST包也需要將HOST改為192.168.0.130

image-20220619221949746image-20220619221949746

成功了

image-20220619222022811image-20220619222022811

2.5 SSRF 通過有缺陷的請求解析

要求:

image-20220619222536993image-20220619222536993

利用過程:

這題拿到手很懵圈,感覺跟上一個一樣,於是按照上一個的做法將HOST先改成Collaborator Server的地址,發現返回403,並且Collaborator Server無解析

image-20220619222925187image-20220619222925187

既然如此,再看一下要求,基於路由的這幾個大字出現在眼前的時候,就應該意識到是路由地址的問題,於是嘗試將GET / 改成絕對的

image-20220619223244507image-20220619223244507

非常nice,然後就跟上邊一樣了,爆破,251

image-20220619223436312image-20220619223436312

刪除使用者,像下邊這樣改包(請求admin目錄的和刪除使用者的都類似)

image-20220619224113256image-20220619224113256

成功

image-20220619224124325 image-20220619224124325