
0x01

0x02

0x03
眾所周知在web系統測試中經常會碰到一些隱藏接口或者是敏感的注釋信息,往往我們可以通過瀏覽器自帶的調試功能或者View Page Source來瀏覽源碼,進行相關信息的查找工作。那麼並非運行在瀏覽器上的微信小程序該怎麼F12查看源碼呢?
首先讓我們先簡單認識一下 .wxapkg 它是微信小程序的包後綴,此類文件是一個二進制文件,且文件結構如下圖(該圖引用至lrdcq 2017年發表的微信小程序閱讀筆記註:未對該筆記中技術點做驗證可能某些技術點可能已過時僅提供參考)。

因為篇幅限制(能力有限)解包的技術細節不做深入探究。有興趣的同學可自行了解,或者期待我們未來某一期的文章。以下文章內容只是對工具的使用以及一些踩坑點做說明;
在開始前先貼上我的環境
模擬器:逍遙模擬器(安卓版本為7.1)
nodeJs:v14.15.3
wxappUnpacker:https://github.com/xuedingmiaojun/wxappUnpacker
微信開發者工具:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
那讓我們開始,通過模擬器獲取wsapkg文件。該文件的存儲路徑位於/data/data/com.tencent.mm/MicroMsg/{32位的16進制字符串文件夾}}/appbrand/pkg/
如下圖所示:

由於文件的命名毫無規則可循所以只能通過下載時間來判斷哪個是最新的包,然後通過adb將其傳輸到本地備用。

簡單配置npm讓其使用淘寶鏡像,加速依賴包的安裝
命令:npm config set registry https://registry.npm.taobao.org
驗證配置是否生效:
命令:npm conf get registry
返回如下:

然後切換至wxappUnpacker項目目錄。
依次執行以下命令。
接着我們開始解包,windows系統使用bingo.bat, linux系統使用bingo.sh。
注意部分小程序可能存在分包即不僅僅只有一個主包,該情況可以使用-s參數來指定主包的源碼路徑即可自動將子包的wxss,wxml,js解析到主包對應位置下。
解包的命令如下:
解主包:./bingo.bat testpkg/master-xxx.wxapkg
該命令會將主包解出的源碼存放在testpkg目錄下的master-xxx目錄中
解子包:./bingo.bat testpkg/sub-1-xxx.wxapkg -s=../master-xxx
該命令會將子包解出的源碼存放在testpkg目錄下的sub-1-xxx目錄中,並自動將wxss,wxml,js解析到testpkg/master-xxx目錄中(解分包時不推薦使用相對路徑,碰到報錯請使用絕對路徑或切換到linux平台)
目錄示意圖如下:

將解包完的源碼導入微信開發者工具,並在詳情->本地設置中勾選不校驗合法域名。

在設置->代理設置中設置burp監聽地址。

測試抓包。


0x04
什麼以上方法無效碰上了反編譯失敗或反編譯後的小程序無法在本地開發環境中跑起來,遇到這種疑難雜症咋辦呢。是否可以直接通過設置模擬器或者測試機的系統代理直接抓包呢。答案是可以的!但是由於Android 7.0及之後系統默認的網絡安全性配置變高導致系統默認不在信任用戶添加的CA證書,只信任每個應用自己定義的CA證書集以及系統預裝的CA證書。那麼只需要把burp或者其他抓包軟件的證書添加到/system/etc/security/cacerts/中即可。

首先讓我們從burp中導出證書。

安卓系統中的證書命名規則為<Certificate_Hash>.<Number>:Certificate_Hash表示證書文件的hash值,Number是為了防止證書文件的hash值一致而增加的後綴。證書的hash值是可以由openssl計算得出具體命令如下:

然後開始製作證書
type 1.der > 9a5ba575.0
openssl x509 -inform DER -text -in 1.der -out 1 (獲取證書信息)
type 1 >> 9a5ba575.0 (將證書信息追加的9a5ba575.0中)
接下來通過adb或其它方式將證書傳輸到手機,若使用adb傳輸需要打開開發者模式中的usb調試功能。

通過adb devices 列出可用設備。
當存在可用設備後就可以將證書文件傳輸到模擬器中了,命令如下
通過adbshell進入手機
進入後記得使用su切換為root權限,否者會因為權限問題無法進行某些操作(出現#即代表當前權限為root,因為我之前執行過所以進來之後就是root權限了)
掛載 /system目錄為可讀寫。
移動剛拷貝進來的證書到系統證書目錄下。
最後修改權限重啟。

設置系統代理為burp監聽地址後打開小程序查看抓包結果。

打開小程序成功抓到包。


0x05
看完是不是感覺被坑了,說好的微信小程序滲透測試呢?還不是標題黨騙我流量。手動狗頭233。

加個好友進技術交流群
請備註:進群
推薦閱讀
好文推薦
全網最全的Cobalt Strike使用教程系列-基礎篇
內網橫向移動常用方法總結(附工具)
常用內網反彈shell方法一覽
實戰|記一次攻防演練實戰總結
三款windows下圖形化應急響應工具 (附下載地址)
AppScan10.0.8(附下載地址)
BurpSuite_pro_v2022.8(附下載地址)
覺得不錯點個「贊」、「在看」,支持下小編