巧用Proxyman Scripting 進行資料分類檢測

安全頻道發表於2022-03-02

題外話

《中華人民共和國資料安全法》已於2021年9月1號正式實行,企業在資料的採集、傳輸、儲存、使用和銷燬等環節變得更加重視。眾多企業下一步的重點工作將是資料的分類分級和資料生命週期管理,尤其和“個保法”緊密關切的個人敏感資訊內容。在滲透測試過程中,加強敏感資料“脫敏”鑑別已然成為了我們工作的重點,敏感資料種類那麼多,而全人工介入工作量巨大,能否實現半自動化來減輕工作量呢?

Proxyman的Scripting 簡單介紹

Proxyman Scripting 提供了透過JS自定義編寫指令碼的功能,開發人員可以靈活的操作請求/響應。之前筆者使用它編寫了RSA加解密的庫,見 《Proxyman 從0開始編寫RSA Addons》

Scripting  特點:

1.透過JS程式碼實現Map Local / Map Remote / Breakpoint

2.更改請求內容,包括Domain、Host、Scheme、Port、Path、HTTP Method、HTTP Headers、Query、Body(Encoded-Form、JSON、純文字)

3.更改響應內容,包括 HTTP 狀態程式碼、HTTP 標頭、正文(JSON、編碼格式、純文字、二進位制...)

4.為常見任務提供大量內建外掛和庫,例如雜湊、編碼/解碼、JSON-文字轉換器、美化...

5.能夠編寫自己的 JS 外掛或庫

6.旨在取代 Charles Proxy 的重寫 GUI 工具

7.使用 ShareState 或環境變數在每個指令碼或當前會話之間分配和接收共享狀態

37c430ec.png

(以上圖片來自:)

檢測指令碼介紹

之前使用了一款BurpSuite 的外掛—Unexpected_information(),能夠提取一些有用的資訊,也挺好用。但是筆者覺得Proxyman 的搜尋功能強大,用的比較順手,索性自己用Proxyman Scripting 實現類似的功能。

資訊提取步驟

一、編寫規則

筆者所在公司前端應用都是用Webpack 打包的,因此介面提取和收集自然水到渠成,提取規則也很容易編寫出來。 其它資訊—例如手機號、郵箱等提取方式一樣。


let path_reg = /("|')(\/[0-9a-zA-Z.]).*?("|')|(["|'](\/v[1-9].*?)")|(["|'](\/api.*?)")/g;

這裡提取了雙引號或者單引號包裹的 /開頭的字母數字,例如”/path/xx”,同時也考慮了一些開發經常寫的介面——”v1/path/xx” 和諸如”/api/path/xx” 提取到這些介面後,可以寫入到檔案中進行後續自動化掃描,也可以加顏色顯示或者將介面資訊寫入到Comment 中(備註:Proxyman沒有像Burpsuite那樣增加tab的功能,但是我們可以使用Comment 功能,將感興趣的內容寫入到Comment中,也算是一種辦法吧)

二、介面去重

由於介面提取後會存在重複的介面,最好能夠去重後再展示,可以使用Set進行去重。

var interface_no_duplicate = [...new Set(interface)];

三、突出展示/寫檔案

透過 response.color = “yellow”; 將匹配到的請求標記為黃色,目前Proxyman 支援red, blue, yellow, purple, gray, green 共6種顏色。 也可以將提取的內容寫到檔案裡。

writeToFile(interface_no_duplicate.toString().replaceAll(",", "\r\n"), "~/Desktop/sample/" + context.flow.id + ".txt");

四、效果展示

使用Comment 將介面列表展示出來

整體效果

實現檢測響應報文中是否存在敏感資訊。

來自 “ Freebuf ”, 原文作者:testivy;原文連結:https://www.freebuf.com/articles/database/322536.html,如有侵權,請聯絡管理員刪除。

相關文章