jwt偽造身份組組組合拳艱難通關

蚁景网安实验室發表於2024-08-08

前言

現在的攻防演練不再像以往那樣一個漏洞直搗黃龍,而是需要各種組合拳才能信手拈來,但是有時候使盡渾身解數也不能稱心如意。

前期資訊收集

首先是拿到靶標的清單

image-20240713174727680

訪問系統的介面,沒有什麼能利用的功能點

image-20240713175618935

首先進行目錄掃描,掃描發現存在xxx.zip的檔案放置在web目錄上

一般zip檔案大部分情況都是開發運維人員做系統維護時留下的備份檔案,在系統上線後並沒有將其刪除,於是底褲(即原始碼)都直接給到了攻擊者

來到這一步都以為是一路高歌,輕鬆拿下,沒想象到是跌宕起伏伏伏伏伏......

先使用wget下載zip檔案,檔案總共200+mb,很有機率是原始碼的打包

image-20240713180248221

從檔案內容可判斷,該系統是使用的.net開發,可透過dnspy進行審計

image-20240713180925791

檔案上傳漏洞審計

拿到原始碼後的第一個思路是尋找檔案上傳漏洞

果不其然在原始碼中找到uploadimg介面,發現未對上傳的檔案格式進行過濾

image-20240713190953131

實際訪問介面發現,怎麼改變檔案格式、檔案內容、Content-Type、還是各種變種傳輸都無濟於事。

【----幫助網安學習,以下所有學習資料免費領!加vx:dctintin,備註 “部落格園” 獲取!】

 ① 網安學習成長路徑思維導圖
 ② 60+網安經典常用工具包
 ③ 100+SRC漏洞分析報告
 ④ 150+網安攻防實戰技術電子書
 ⑤ 最權威CISSP 認證考試指南+題庫
 ⑥ 超1800頁CTF實戰技巧手冊
 ⑦ 最新網安大廠面試題合集(含答案)
 ⑧ APP客戶端安全檢測指南(安卓+IOS)

返回包永遠是{"Status":1,"Data""null}

運維實在是壞呀~

image-20240713192151353

Sql注入漏洞審計

第二個思路就是找注入

但是程式碼中定義了一個SqlChecker全域性的類,強制處理所有使用者傳參,找注入這個方向有有點難啃了

image-20240713231705777

系統使用者資訊遍歷

找到/api/user/getusers介面

image-20240714124940252

介面沒有做鑑權,構造請求包傳送,返回包返回系統所有使用者資訊

其中使用者資訊包括姓名、出生日期、微信賬號、手機號碼、郵箱、密碼等等

image-20240714111059711

偽造jwt_token獲取系統管理員-拿下靶標

原始碼獲取到jwt_token的secret

image-20240714111521463

但是該secret不是可讀性文字,估計是隨機生成的byte位元組序列,因此不能自行使用cyberchief或者其他工具將token直接生成

這裡有個坑點:開始是使用gpt生成的指令碼進行secret的讀取和token的生成,發現gpt在處理位元組上面有點問題,生成的jwt_token不能使用,於是自行編寫了個py指令碼進行jwt_token的構造,首先我們將位元組序列做16進位制的轉化,為了python能夠使用bytes.fromhex()函式讀取16進位制化的secret,然後根據上面讀出的使用者資訊,偽裝admin賬號身份,並設定一個較長的ExpireTime

image-20240714112945210

拿到jwt_token之後,要如何使用才能拿到後臺呢,這裡首先要明白該系統的登入鑑權機制

由於他存在註冊功能,我們便可在自行註冊一個賬號,然後進行登入,檢視認證處理流程

從資料包裡面得知,登入成功後會返回jwt_token和一些與使用者相關的一些資訊,前端會根據返回的身份資訊,跳轉到對應的頁面,並且功能介面都會帶上jwt_token進行請求以便獲取系統資料

image-20240714113814520

瞭解清楚後,就開始進行身份偽造,首先去後臺登入系統

image-20240714114400235

將登入返回包的內容替換為管理員賬號的token(從python指令碼中生成)和管理員使用者的身份資訊

image-20240714114752568

透過鑑權後,終於成功獲取管理員後臺,靶標5000分到手,哈哈

image-20240714121818513

總結

本次滲透從驚喜到懷疑到失落,總的來說就是“山窮水盡疑無路,柳暗花明又一村”。

如果只是死磕檔案上傳、SQL隱碼攻擊這些能夠快速獲取許可權的洞,反而有時會錯過一些有用的資訊,畢竟比賽中分數才是最要緊的,如何高效快速拿下靶標才是第一要領。

同時,程式碼審計的過程中要結合系統功能來多方面評估,本次挖洞也是先認真理解了系統的登入認證機制,才知道有jwt鑑權這種方式,從而萌生在程式碼中找jwt secret的想法,也才能把快到手的分數牢牢抓在自己手中。

更多網安技能的線上實操練習,請點選這裡>>

相關文章