事情的起因是这样的,在某一天我用谷歌做信息收集的时候:inurl:xxx.edu.cn pdf,突然查找到这样一份pdf文件,看完整个人都笑出了花,有位同学转专业,被学校调剂错了,然后被公示出来,学号和sfz都泄露了。
进入之后发现,只有日常事务这一个模块能登陆进去,先进去看看的。
但是好在天无绝人之路,我突然看到一个功能点,反馈这个功能点。
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.36Edg/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-6c6aec4edbc1Connection: close {"jybh":"d997E5ee-17B6-6C9A-13c1-83EAFE09F831","bt":"1","yddh":"11","jynr":"1"}
拼接上去之后,告诉我缺少pageNum这个参数,我把这个参数拼接上去。
结果又告诉我缺少pageSize这个参数。
全部拼接上去之后发现,是一条学生的信息。
虽然说挖到这样一个漏洞,但是毫无作用啊,感觉到有些挫败的时候,突然想到,这个信息泄露肯定是整个系统的问题,找一个学生信息多的地方,拼接url,看看能不能泄露的更多。
观察一下我抓到的这个数据包,首先我想到上面拼接语句的时候,是直接url发送数据的,所以请求方法应该是GET,并且我之前请求的时候是没有body这个部分的,所以body也要删除,然后拼接上pageNum和pageSize这两个参数。
POST /api/base/user/basic/update HTTP/1.1 Host: xxx.xxx.xxx:80 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":"[email protected]"}
但是我修改后发现请求失败了,告诉我没有权限。
感觉好像还是有地方差点意思,发现直接语句的后面只拼接了三个目录,那我尝试也只拼接三个目录试试呢。
终于这一次出现了别的学生信息,这里的话可能是五层目录没有权限,但是三层目录有权限,导致了信息泄露。
然后我修改pageNum和pageSize这两个参数的大小,结果测试后pageNum=1,2,3,4,5和pageSize=1000的时候,分别泄露不同的一千个人的信息,pageNum后面的数字超过5之后,就没有信息了(这个学校的学生可能就这么多了)。并且pageSize后面的数值太大会造成超时。
所以我成功获取了全校四千多名学生的姓名、班级、学号、邮箱、sfz等信息(厚码码死谢谢)
最后提交edusrc,做一个守法公民。
1. 肯定还是要做好信息收集,有的时候获得了账号比没有账号好出漏洞。
3. 看到有api的时候,就尝试去拼接一下,很多时候就会出现一些其他功能点,或者信息的泄露。
本文作者:潇湘信安
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/198003.html