Web攻防--JS算法逆向--斷點(diǎn)調(diào)試--反調(diào)試&&代碼混淆繞過
JS算法逆向
在進(jìn)行滲透測(cè)試過程中,在一些功能點(diǎn)進(jìn)行參數(shù)注入或者枚舉爆破等過程中,會(huì)出現(xiàn)參數(shù)進(jìn)行加密的情況,但是我們輸入?yún)?shù)并不是加密狀態(tài),即便測(cè)試點(diǎn)存在漏洞也不可能測(cè)試成功,這時(shí)候便需要將所提交參數(shù)進(jìn)行加密后在進(jìn)行注入,針對(duì)JS應(yīng)用我們可以采用JS斷點(diǎn)調(diào)試的方法將加密算法逆向出來,再使用插件將加密后的參數(shù)進(jìn)行注入
- 代碼全局搜索
即將參數(shù)提交的網(wǎng)址、目錄等關(guān)鍵字在開發(fā)者工具中進(jìn)行搜索,再對(duì)JS源碼進(jìn)行分析,找出加密算法 - 文件流程斷點(diǎn)
即查看登錄數(shù)據(jù)包中所調(diào)用執(zhí)行堆棧,文件執(zhí)行流程為從下往上執(zhí)行,選用其中可能存在加密過程的文件處進(jìn)行斷點(diǎn)調(diào)試
添加斷點(diǎn)后再繼續(xù)提交參數(shù),觀察作用域處的參數(shù)加密狀況進(jìn)行判斷參數(shù)是否已經(jīng)加密,如果未加密則查看堆棧上方文件中作用域的情況,直到作用域中的參數(shù)加密之后,分析代碼中是否存在加密函數(shù),找到加密函數(shù)后追蹤加密文件即可成功獲取加密算法。
- 代碼標(biāo)簽斷點(diǎn)
右鍵審查功能點(diǎn),在html代碼中將標(biāo)簽進(jìn)行子樹修改和屬性修改,再次運(yùn)行功能點(diǎn)即可斷點(diǎn)。其他步驟參考文件流程斷點(diǎn)。 - XHR提交斷點(diǎn)
選擇數(shù)據(jù)包中關(guān)鍵url路徑
在源碼的頂層文件夾中添加XHR斷點(diǎn)關(guān)鍵url,再次運(yùn)行功能點(diǎn)即可斷點(diǎn),其他步驟參考文件流程斷點(diǎn)。
加密算法載入
將加密算法以及加密邏輯找出之后,將加密算法文件另存為。使用brupsuite插件JSEncrypt即可將參數(shù)運(yùn)用在枚舉過程中。
載入過程:
- 下載phantomjs并設(shè)置環(huán)境變量
phantomjs下載地址 - brupsuite加載jsEncrypter插件
jsEncrypter下載地址
brupsuite出現(xiàn)此欄目即插件加載成功
將加密算法文件拷貝至插件所在jar包同級(jí)目錄
修改phantomjs_server.js文件中的內(nèi)容,將加密算法文件名稱添加,以及編寫算法運(yùn)行邏輯
在該目錄下使用已經(jīng)設(shè)置了環(huán)境變量的phantomjs.exe文件運(yùn)行phantomjs_server.js文件
查看brupsuite中插件連接是否成功,并進(jìn)行測(cè)試
將加密算法加載至枚舉爆破過程中,使得枚舉的參數(shù)在加密后再進(jìn)行爆破。
username字段成功加載算法進(jìn)行枚舉
JS反調(diào)試?yán)@過
JS反調(diào)試,即禁用開發(fā)者工具,防止用戶查看JS源碼,保護(hù)敏感數(shù)據(jù),防止分析代碼。
- 常見反調(diào)試方法
鍵盤監(jiān)聽(F12)
檢測(cè)瀏覽器的高度插值
檢測(cè)開發(fā)者人員工具變量是否為true
利用console.log調(diào)用次數(shù)
利用代碼運(yùn)行的時(shí)間差
利用toString
檢測(cè)非瀏覽器 - 繞過方法
- 禁用斷點(diǎn)法
該方法指將開發(fā)者工具上的禁用斷點(diǎn)開關(guān)打開,禁用一切斷點(diǎn),這樣自己也就不能斷點(diǎn)調(diào)試了,不過可以看到源代碼 - 條件斷點(diǎn)法
即將代碼中產(chǎn)生斷點(diǎn)的語句添加前置條件。 - 此處暫停法
- 置空函數(shù)法
即將產(chǎn)生debug的函數(shù)跟蹤找到,在控制臺(tái)處重新定義,使得函數(shù)不起作用。 - 本地覆蓋法
這種方法與在文件上傳前端檢測(cè)繞過類似,即將網(wǎng)頁所加載關(guān)鍵文件保存在本地,啟用本地覆蓋,這樣瀏覽器在加載網(wǎng)頁時(shí)會(huì)根據(jù)本地覆蓋文件進(jìn)行加載,將反調(diào)試函數(shù)所在文件以及相關(guān)引用文件找出,使用本地覆蓋的方法將反調(diào)試函數(shù)及相關(guān)作用代碼進(jìn)行注釋修改,即可繞過反調(diào)試功能
在使用這種方法時(shí)要將斷點(diǎn)功能禁用,否則瀏覽器加載網(wǎng)頁文件將顯示不全
- 禁用斷點(diǎn)法
JS代碼混淆
JS文件在網(wǎng)頁中可以被查看到,為了防止源碼被調(diào)試,或者關(guān)鍵信息泄露,會(huì)對(duì)JS代碼文件進(jìn)行加密混淆。
常見的JS加密種類有:JJEncode AAEncode JSFuck,Sojson v4,Sojson v5,JSjiami v6 等
破解工具鏈接JSDec
ak/sk敏感信息泄露
在JS源碼中,會(huì)泄露url、API信息,從而增加攻擊面,如果部署了云服務(wù),接口等服務(wù),可能存在access key等關(guān)鍵信息,通過Pentestkit FindSomething Wappalyzer等瀏覽器插件可以收集JS代碼中的信息,如password,key等,之后可以利用云利用工具上線云服務(wù)等文章來源:http://www.zghlxwxcb.cn/news/detail-685514.html
以上內(nèi)容僅作學(xué)習(xí),如有錯(cuò)誤或瑕疵,歡迎批評(píng)指正,感謝閱讀。文章來源地址http://www.zghlxwxcb.cn/news/detail-685514.html
到了這里,關(guān)于Web攻防--JS算法逆向--斷點(diǎn)調(diào)試--反調(diào)試&&代碼混淆繞過的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!