作者:lyc \
起源:https://www.freebuf.com/vuls/358037.html
明天给大家伙分享一个网络安全的案例,程序员和网安同学都能够看看,
前言:本文中波及到的相干破绽已报送厂商并失去修复,本文仅限技术钻研与探讨,严禁用于非法用处,否则产生的所有结果自行承当
破绽成因
事件的起因是这样的,在某一天我用谷歌做信息收集的时候:inurl:xxx.edu.cn pdf
,忽然查找到这样一份 pdf 文件,看残缺集体都笑出了花,有位同学转业余,被学校调剂错了,而后被公示进去,学号和 sfz 都泄露了。
接着我就善意的找了一下他们学校的对立登陆的中央,发现初始登陆的明码是 sfz 的后六位。
间接登陆胜利了,真是我的好兄弟啊。
举荐一个开源收费的 Spring Boot 实战我的项目:
https://github.com/javastacks/spring-boot-best-practice
破绽发现
进入之后发现,只有日常事务这一个模块能登陆进去,先进去看看的。
进入之后测了很多中央,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)。
破绽深挖
尽管说挖到这样一个破绽,然而毫无作用啊,感觉到有些挫败的时候,忽然想到,这个信息泄露必定是整个零碎的问题,找一个学生信息多的中央,拼接 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,做一个违法公民。
破绽总结
1、必定还是要做好信息收集,有的时候取得了账号比没有账号好出破绽。
2、挖破绽的时候肯定要保持住,这套零碎我来回测了好几遍才进去这个破绽,有的时候保持也很重要。
3、看到有 api 的时候,就尝试去拼接一下,很多时候就会呈现一些其余性能点,或者信息的泄露。
近期热文举荐:
1.1,000+ 道 Java 面试题及答案整顿(2022 最新版)
2. 劲爆!Java 协程要来了。。。
3.Spring Boot 2.x 教程,太全了!
4. 别再写满屏的爆爆爆炸类了,试试装璜器模式,这才是优雅的形式!!
5.《Java 开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞 + 转发哦!