記一次挖洞經歷
- 2020 年 3 月 8 日
- 筆記
文章來自【位元組脈搏社區】 作者-purplet
0x01 背景
我們學校用的查成績一直使用的是某公司的app,但是由於查詢量和手機版本等等原因,經常抽風,導致查詢不了成績,最要命的是只能在學校查詢成績,導致我這種在及格線上瘋狂試探的沒法過一個愉快的暑假暑假,於是在一個夜黑風高的夜晚,我決定看看app到底是怎麼寫的。
0x02 抓包,復現,漏洞
在上查詢後利用夜神模擬器,下載需要測試的該軟體,調好代理
設置代理進行抓包的過程:
第一步:需要查看自己電腦上的ip,以及在bp上設置代理


接下來是在模擬器上進行wifi的代理設置。在模擬器的wifi設置中,把滑鼠移到連接的WIFI上,長按左鍵,進入修改網路介面

進入高級選項,設置ip和埠

保存好以後,在模擬器中使用瀏覽器訪問個網頁,可在bp上抓到包

雖然可以抓到包,但是頁面一直報證書有問題(在實際手機上是抓不到https包的,因為需要證書)

下載完證書在「設置」 →「安全」 最下面 →「從SD卡安裝」 → 找到證書文件 點擊即可

這裡發現是平行越權漏洞
越權漏洞是一種很常見的邏輯安全漏洞,根據維度進行分類,可分為:平行越權、垂直越權、交叉越權
而平行越權又是指許可權類型不變,許可權ID改變;如:同是普通用戶,其中一個用戶可查看其它用戶資訊。常見的就是通過修改某一個ID參數來查看其他用戶的資訊,比如你查看自己的資訊時,發現URL連接中,或者http請求頭中有一個userID的參數,然後你修改這個參數就可以查看那個人資訊了!
接下來就可以正常抓包了,然後我就對該app其各部分抓包
在成績查詢部分抓包這裡顯示了部分內容


發包過去也沒個正常響應,嘗試抓了其他的包,也得不到什麼敏感資訊(就是在這裡被瘋狂diss)後來還是將這個包的參數部分更改成Cjcx(成績查詢的縮寫,第一個C大寫根據那個X模仿的),為什麼會這樣呢,可能是app開發時設置的小手段
發包過去得到響應,這回看到自己的各科成績

然後看了下之前抓取的包,發現沒有密碼的位置,只是根據學號就能知道分數了,然後猜測是否有平行越權漏洞(這樣即使別人更改密碼我也能看到他的成績)
嘗試了下,真的成功了

這個是我,然後

修改成別人的學號,發包,拿到其成績(成功)

這樣即使別人修改了密碼對我來說也無所謂
至此漏洞復現成功
然後發現之前抓到的包中是

協議,這就很nice了,意味著可以從網頁上進行請求
於是憑著搞事情的想法,我就想自己寫一個查成績的小工具,擺脫此類都無法正常打開的噩夢,而且不需要密碼,就可以查到別人的成績
0x03 POST請求

嘗試後得到響應

到這就很nice了,可以寫腳本,獲取多人的成績,比一個一個看不方便多了
然後寫了一個腳本(腳本垃圾,勿噴)
主要調用requests庫和re庫,利用requests庫對該網頁內容發起一個post請求,發現得到的結果,一個人的各科成績全都擠在一起,然後利用re庫的sub函數對擠在一起的部分進行替換分割,最後將其內容自動生成一個文本保存到如圖地方

至此只要修改學號範圍,就能拿到所有人的成績

然後考慮到若是給新手使用,沒有python環境會沒辦法使用,則想到利用python的一個pyinstaller模組,對python文件進行轉換,轉成exe文件
首先在cmd命令行中 pip install pyinstaller
在cmd命令行中 pyinstaller -F 需要轉換的python文件(帶上絕對路徑的,這裡我是在桌面有這個文件)

建議在一個切換到一個獨立的文件夾中使用該命令,因為他會生成幾個w文件,

exe文件在dist文件中

運行即可在桌面生成一個成績的文本,記錄全班成績
最後提交漏洞,這裡現在漏洞已經修復
0x04 尾話
至此該漏洞復現完成,這裡同時也感謝我師傅的幫助

