前言:
傳統的介面在傳輸的過程中,是非常容易被抓包進行篡改,從而進行中間人攻擊。
這時候我們可以透過對引數進行簽名驗證,如果引數與簽名值不匹配,則請求不透過,直接返回錯誤資訊,從而防止駭客攻擊或者大大增加了駭客攻擊的成本。
白帽子在挖洞的時候也經常會遇到這種情況,大多數不會逆向的白帽子則會放棄這些有著攻擊成本的介面。大多數也會有這樣子的想法,這些個介面都加了防護了,說明廠商對這個介面挺重視的,肯定做了安全檢測,自然是不可能有洞可撿了。反過來想,廠商正是因為加了防護從而對程式碼疏忽了,所以這些地方恰好就是挖邏輯漏洞的突破口。
平臺:aHR0cHM6Ly93d3cudnVsYm94LmNvbS8=
廠商:某企業src
正文:
開局一個搜尋框
輸入值抓包,介面攜帶了一個sign引數。
技巧
此處有兩種方法逆向找出對應的加密點
第一種是笨方法,直接搜尋對應的sign值去找到其加密的關鍵位置。
第二種是找到發包的地方,一直跟棧到明文加密的地方。
搜尋sign,網站裡面出現了很多sign關鍵詞,不利於我們進行逆向分析
從檢視請求發起的相關程序(指令碼)去進行發包跟棧
進入發包的地方打斷點。
回溯跟棧,找找有沒有比較顯眼的關鍵詞。
【----幫助網安學習,以下所有學習資料免費領!加vx:dctintin,備註 “部落格園” 獲取!】
① 網安學習成長路徑思維導圖
② 60+網安經典常用工具包
③ 100+SRC漏洞分析報告
④ 150+網安攻防實戰技術電子書
⑤ 最權威CISSP 認證考試指南+題庫
⑥ 超1800頁CTF實戰技巧手冊
⑦ 最新網安大廠面試題合集(含答案)
⑧ APP客戶端安全檢測指南(安卓+IOS)
大概跟了幾個棧找到了sign關鍵詞,但是並不確定這個地方的sign引數是不是我們發包的那個sign引數,打下斷點盲測一下。
再次發包的時候,斷點斷住了。這個sign引數是一個f物件的一個函式,並不是一個sign引數值。而我們想要找到的是sign引數值,經過猜測,這個斷點能夠在攜帶sign引數的那個發包時斷住,就肯定與sign引數有關。直接進入函式內部檢視。
映入眼簾的是一個f函式,將斷點斷到返回值的地方,檢視一下返回值是什麼呢。
在控制檯列印一下返回值。很眼熟,很像我們發包的時候攜帶的引數
分析一下f函式,看看sign引數在哪裡生成的。
sign是在5790行被賦值的。
可以看出sign引數是appSignKey,keyword,noncestr,serverTimestamp,source,timestamp拼接之後傳進了s函式生成的。除了appSignKey是程式碼生成的,其餘都是發包裡面攜帶的明文。
appSignKey引數
從f函式里面程式碼可以分析出,appSignKey是由n賦值的,n又是由c經過一段三元表示式生成的。c是一段字串,直接上手扣程式碼。
生成n的三元表示式用到了arguments,直接到瀏覽器複製arguments
var c = "10f6cf80184377cd5487b4746a8a67da17540449fa40b408f13ccdd3d3059cb394c0e1569043eed2"
arguments = {
"0": {
"keyword": "A型胸腺瘤",
"source": 1,
"serverTimestamp": 1706072080923
},
"1": "4bTogwpz7RzNO2VTFtW7zcfRkAE97ox6ZSgcQi7FgYdqrHqKB7aGqEZ4o7yssa2aEXoV3bQwh12FFgVNlpyYk2Yjm9d2EZGeGu3"
}
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : c
console.log("appSignKey--->"+n)ole.log(n)
sign引數
有了appSignKey引數,就可以與發包引數拼接傳進s函式。
appSignKey=4bTogwpz7RzNO2VTFtW7zcfRkAE97ox6ZSgcQi7FgYdqrHqKB7aGqEZ4o7yssa2aEXoV3bQwh12FFgVNlpyYk2Yjm9d2EZGeGu3&keyword=A型胸腺瘤&noncestr=20565646&serverTimestamp=1706072080923&source=1×tamp=1706081268690
看一眼就知道是md5加密,完結撒花。
結尾:
部分資料程式碼已做脫敏處理。
更多網安技能的線上實操練習,請點選這裡>>