CTF_WriteUp_HTTP基本認證(Basic access authentication)
- 2020 年 3 月 29 日
- 筆記
HTTP基本認證
在HTTP中,基本認證(英語:Basic access authentication)是允許http用戶代理(如:網頁瀏覽器)在請求時,提供用戶名和密碼 的一種方式。HTTP基本認證 。
題目描述
點擊鏈接後,題目出現了讓你輸入用戶名和密碼的彈窗。而通過提示資訊,我們知道用戶名大概率是admin。而加之題目附件給出了字典。那麼密碼一定在給出的字典中。我們可以通過burp來進行爆破。
解題過程
抓包
首先設置火狐的代理,讓火狐的走burpsuit的代理127.0.0.1:8080
要想方便的話,還是要用火狐的插件,方便切換代理。
同時在Burp端設置好截斷,監聽127.0.0.1:8080
然後攔截我們輸入密碼的那一次請求
確定之後,我們會在burp的代理頁面看到HTTP報文
我們注意到最後一行,Authorization :Basic
後面應該是一行base64編碼。
解碼之後我們就可以發現,我們剛剛輸入的帳號名的密碼通過Base64 編碼加密了。
爆破
在代理的介面右鍵轉發到測試器。
攻擊位置,我們選擇剛剛我們測試的base64。
然後我們設置payload
我們設置為自定義的迭代器
位置1
位置2
對我們的payload進行base64編碼處理
之後我們就可以開始進行爆破了。
篩選出來唯一一條正確響應的那條記錄
查看響應包。
獲取flag。
相關知識
HTTP基本認證
HTTP基本認證 是一種十分簡單的技術,使用的是 HTTP頭部欄位 強制用戶訪問網路資源,而不是通過必要的cookie、會話ID、登錄頁面等(非獲取訪問控制的)手段。
在進行基本認證的過程里,請求的HTTP頭欄位會包含Authorization欄位,形式如下: Authorization: Basic <憑證>
,該憑證是用戶和密碼的組和的base64編碼。
過程
首先請求一個需要身份認證的網頁,會有彈窗提示讓你輸入密碼。如果沒有提供用戶名和密碼,服務端會響應一個401應答碼,並提供一個認證域(Access Authentication):頭部欄位為:WWW-Authenticate
,該欄位為要求客戶端提供適配的認證資訊。
GET /private/index.html HTTP/1.0 Host: localhost
HTTP/1.0 401 Authorization Required Server: HTTPd/1.0 WWW-Authenticate: Basic realm="Secure Area" Content-Type: text/html Content-Length: 311 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"> <HTML> <HEAD> <TITLE>Error</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"> </HEAD> <BODY><H1>401 Unauthorized.</H1></BODY> </HTML>
注意上面的WWW-Authenticate: Basic realm="Secure Area"
的這一欄位。Basic
為驗證的模式,realm="Secure Area"
為保護域,用於與其他請求URI作區別。
接到應答後,客戶端顯示該認證域(輸入用戶名和密碼的框框)。給用戶並提示輸入用戶名和密碼。此時用戶可以選擇確定或取消。
用戶輸入了用戶名和密碼後,客戶端軟體將對其進行處理,並在原先的請求上增加認證消息頭(Authorization)然後重新發送再次嘗試。過程如下:
- 將用戶名和密碼拼接為
用戶:密碼
形式的字元串。 - 如果伺服器WWW-Authenticate欄位有指定編碼,則將字元串編譯成對應的編碼(如:UTF-8)。
- 將字元串編碼為base64。
- 拼接
Basic
,放入Authorization頭欄位
,就像這樣:Authorization :Basic 字元串
。- 這裡注意Base64編碼並非加密演算法,其無法保證安全與隱私,僅用於將用戶名和密碼中的不兼容的字元轉換為均與HTTP協議兼容的字符集。
GET /private/index.html HTTP/1.0 Host: localhost Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
服務端會進行基本認證,如果認證通過,則返回正確的頁面。否則還是401 unauthorized
HTTP/1.0 200 OK Server: HTTPd/1.0 Date: Sat, 27 Nov 2004 10:19:07 GMT Content-Type: text/html Content-Length: 10476
優點
-
簡單,應用範圍廣
- HTTP基本認證是一種十分簡單的技術,使用的是HTTP頭部欄位強制用戶訪問網路資源,而不是通過必要的cookie、會話ID、登錄頁面等(非獲取訪問控制的)手段
-
在可信網路環境中使用基本認證。
- 內部網路,或者對安全要求不是很高的網路。會結合HTTPS一起使用的,https保證網路的安全性,然後基本認證來做客戶端身份識別。
缺點
- 基本認證 並沒有為傳送憑證(transmitted credentials)提供任何機密性的保護,僅僅使用 Base64 編碼並傳輸,而沒有使用任何加密演算法。因此,基本認證常常和HTTPS 一起使用,以提供機密性。
參考資料
[1]. HTTP基本認證
[2]. 秒懂HTTP基本認證(Basic Authentication)