今天給大家伙分享一個網絡安全的案例,程序員和網安同學都可以看看,作者lyc,點擊文末「閱讀原文」可以看原貼。

前言:本文中涉及到的相關漏洞已報送廠商并得到修復,本文僅限技術研究與討論,嚴禁用于非法用途,否則產生的一切后果自行承擔

0x00 漏洞成因

事情的起因是這樣的,在某一天我用谷歌做信息收集的時候:inurl:xxx.edu.cn pdf,突然查找到這樣一份pdf文件,看完整個人都笑出了花,有位同學轉專業,被學校調劑錯了,然后被公示出來,學號和sfz都泄露了。

接著我就好心的找了一下他們學校的統一登陸的地方,發現初始登陸的密碼是sfz的后六位。

直接登陸成功了,真是我的好兄弟啊。

0x01 漏洞發現

進入之后發現,只有日常事務這一個模塊能登陸進去,先進去看看的。

進入之后測了很多地方,sql注入,文件上傳之類的漏洞是統統沒有啊,還有很多應用居然沒有權限,但是她提醒我沒有權限這一點,讓我想到,會不會有未授權,但是抓包測試半天都沒有成功。

但是好在天無絕人之路,我突然看到一個功能點,反饋這個功能點。

輸入了一些內容之后,抓取數據包看了一下。

POST /api/apps/feedback HTTP/1.1
Host: xxx.xxx.xxx:80
Content-Length: 79
Accept: application/json, text/plain, */*
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.41
Content-Type: application/json;charset=UTF-8
Origin: http://xxx.xxx.xxx:80
Referer: http://xxx.xxx.xxx:80/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,ko;q=0.5,zh-TW;q=0.4
Cookie: sid=7e670c0c-9529-4a1b-87b6-6c6aec4edbc1
Connection: close

{"jybh":"d997E5ee-17B6-6C9A-13c1-83EAFE09F831","bt":"1","yddh":"11","jynr":"1"}

是這樣一個數據包,也沒有注入點之類的,感覺沒啥東西啊,想著就把/api/apps/feedback這個直接拼接到url上看看,因為看到api就會讓人想到信息泄露之類的。拼接上去之后,告訴我缺少pageNum這個參數,我把這個參數拼接上去。

結果又告訴我缺少pageSize這個參數。

全部拼接上去之后發現,是一條學生的信息。

改變這個pageNum和pageSize后面數字的大小可以看到更多信息,但是只有幾個學生有反饋問題,得到的信息泄露少之又少,就只要這么一點點,夠誰吃啊,再來一罐,一人一罐(劉德華bushi)。

0x02 漏洞深挖

雖然說挖到這樣一個漏洞,但是毫無作用啊,感覺到有些挫敗的時候,突然想到,這個信息泄露肯定是整個系統的問題,找一個學生信息多的地方,拼接url,看看能不能泄露的更多。

直接找到個人信息這一塊,編輯然后抓包看一下。

觀察一下我抓到的這個數據包,首先我想到上面拼接語句的時候,是直接url發送數據的,所以請求方法應該是GET,并且我之前請求的時候是沒有body這個部分的,所以body也要刪除,然后拼接上pageNum和pageSize這兩個參數。

Content-Length: 748
Accept: application/json, text/plain, */*
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.41
Content-Type: application/json;charset=UTF-8
Origin: http://xxx.xxx.xxx:80
Referer: http://xxx.xxx.xxx:80/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,ko;q=0.5,zh-TW;q=0.4
Cookie: sid=7e670c0c-9529-4a1b-87b6-6c6aec4edbc1
Connection: close

{"yhbh":"xxxxxxxxxxxx","xm":"xxx","nc":"1","zt":"0","pxh":0,"yddh":"189xxxxxxx","dzyx":"xxxxxxxxxxxx","qq":null,"wechatUnion":null,"wechatOpenid":null,"salt":"test","xbm":"1","yhlx":"0","tx":"xxxxxxxxxxxx_avatar","pf":"defaultSkin","bmmc":"19xx1","bmbh":"xxxxxxxxxxxx","jzbmbh":[],"yhjs":["XS"],"positionIds":null,"userLog":{"bh":"7d83f326-7cee-4ad4-b242-17faef9fdc90","yhbh":"xxxxxxxxxxxx","dlsj":"2023-02-12 23:12:40","tcsj":"2023-02-13 11:22:25","khdczxt":"Windows","khdllq":"Chrome-110.0.0.0","khdipdz":"117.92.247.178","khdlx":"PC"},"gwbh":[],"gwmc":[],"sfzjh":null,"personalSkin":null,"personalSkinThum":null,"value":null,"id":"xxxxxxxxxxxx","nickname":"1","phone":"18xxxxxx","email":"20xxxxxxxxxxxx4@xxx.edu.cn"}

但是我修改后發現請求失敗了,告訴我沒有權限。

感覺好像還是有地方差點意思,發現直接語句的后面只拼接了三個目錄,那我嘗試也只拼接三個目錄試試呢。

終于這一次出現了別的學生信息,這里的話可能是五層目錄沒有權限,但是三層目錄有權限,導致了信息泄露。

然后我修改pageNum和pageSize這兩個參數的大小,結果測試后pageNum=1,2,3,4,5和pageSize=1000的時候,分別泄露不同的一千個人的信息,pageNum后面的數字超過5之后,就沒有信息了(這個學校的學生可能就這么多了)。并且pageSize后面的數值太大會造成超時。

所以我成功獲取了全校四千多名學生的姓名、班級、學號、郵箱、sfz等信息(厚碼碼死謝謝)

最后提交edusrc,做一個守法公民。

0x03 漏洞總結

1、肯定還是要做好信息收集,有的時候獲得了賬號比沒有賬號好出漏洞。

2、挖漏洞的時候一定要堅持住,這套系統我來回測了好幾遍才出來這個漏洞,有的時候堅持也很重要。

3、看到有api的時候,就嘗試去拼接一下,很多時候就會出現一些其他功能點,或者信息的泄露。