close
作者:粉紅飛天pig,轉載於國科漏斗社區。

0x01

關於微信小程序滲透可能很多小夥伴們還停留在聽過但沒實操過的階段,那麼以測試人員的視角出發究竟到底什麼是微信小程序呢? 通過查閱微信小程序的開發文檔在《起步》章節中有介紹到:小程序主要的開發語言是JavaScript且同普通的網頁開發相比有很大的相似性。這麼來看微信小程序的測試大體同web端測試應該沒什麼區別。具體該怎麼做呢,首先讓我們一起來回顧一遍小學二年級學過的web系統測試流程,大體就是瀏覽功能,瀏覽前端源碼,然後抓包改包構造包。那麼這些測試方法該怎麼對應到小程序中去呢?

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項目目錄。

依次執行以下命令。

npminstall安裝依賴npminstallesprimanpminstallcss-treenpminstallcssbeautifynpminstallvm2npminstalluglify-esnpm install js-beautify

接着我們開始解包,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計算得出具體命令如下:

openssl x509 -inform DER -subject_hash_old -in <Certificate_File>

然後開始製作證書

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 列出可用設備。

當存在可用設備後就可以將證書文件傳輸到模擬器中了,命令如下

adb push <Certificate_File_path> /sdcatd/

通過adbshell進入手機

進入後記得使用su切換為root權限,否者會因為權限問題無法進行某些操作(出現#即代表當前權限為root,因為我之前執行過所以進來之後就是root權限了)

掛載 /system目錄為可讀寫。

移動剛拷貝進來的證書到系統證書目錄下。

最後修改權限重啟。

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

打開小程序成功抓到包。

0x05

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

加個好友進技術交流群

請備註:進群

推薦閱讀

歡迎在看丨留言丨分享至朋友圈三連

好文推薦

全網最全的Cobalt Strike使用教程系列-基礎篇

內網橫向移動常用方法總結(附工具)

常用內網反彈shell方法一覽

實戰|記一次攻防演練實戰總結

三款windows下圖形化應急響應工具 (附下載地址)

AppScan10.0.8(附下載地址)

BurpSuite_pro_v2022.8(附下載地址)

覺得不錯點個「贊」、「在看」,支持下小編


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()