CTF_WriteUp_HTTP基本認證(Basic access authentication)


HTTP基本認證

在HTTP中,基本認證(英語:Basic access authentication)是允許http用戶代理(如:網頁瀏覽器)在請求時,提供用戶名和密碼 的一種方式。HTTP基本認證

題目描述

點擊鏈接后,題目出現了讓你輸入用戶名和密碼的彈窗。而通過提示信息,我們知道用戶名大概率是admin。而加之題目附件給出了字典。那么密碼一定在給出的字典中。我們可以通過burp來進行爆破。

解題過程

抓包

首先設置火狐的代理,讓火狐的走burpsuit的代理127.0.0.1:8080

要想方便的話,還是要用火狐的插件,方便切換代理。

image-20200326095304104

同時在Burp端設置好截斷,監聽127.0.0.1:8080

image-20200326095611014

然后攔截我們輸入密碼的那一次請求

確定之后,我們會在burp的代理頁面看到HTTP報文

我們注意到最后一行,Authorization :Basic 后面應該是一行base64編碼。

解碼之后我們就可以發現,我們剛剛輸入的賬號名的密碼通過Base64 編碼加密了。

爆破

在代理的界面右鍵轉發到測試器。

攻擊位置,我們選擇剛剛我們測試的base64

然后我們設置payload

我們設置為自定義的迭代器

image-20200326101044649

位置1

image-20200326101228911

位置2

image-20200326101347350

對我們的payload進行base64編碼處理

image-20200326101533956

之后我們就可以開始進行爆破了。

篩選出來唯一一條正確響應的那條記錄

查看響應包。

獲取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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM