文章总结: 这篇文章记录了对某985高校网站的渗透测试过程,通过发现隐藏的微信登录接口获取管理员权限,进而发现SQL注入漏洞获取用户数据,并利用越权漏洞提升普通用户权限,最终获得6本安全证书。文章展示了实际渗透测试中的技术思路和方法,包括接口分析、加密解密、权限绕过等技术点。 综合评分: 87 文章分类: 渗透测试,WEB安全,漏洞分析,实战经验
渗透测试 | 记某985高校单站获6本证书过程(二)
原创
俺不是鸡哥
渗透结束-非常安全
2025年10月13日 15:03 北京
前言
这里简单记录一下某985高校单站获取6本证书挖掘过程,内容已厚码,如有写的不正确的地方欢迎各位师傅指正。
年初和朋友们在直播间一起吹牛皮时,其中有个朋友发了个证书站的接口,表示该接口输入用户名会返回账号和密文密码,由于密文使用非对称加密的方式解不开,直接抓包通过登录接口传过去也无法登录,于是和朋友们一起掏出电脑开始查看。
测试
打开apifox请求接口后,返回一大串json格式的数据
接口:/api/xxxx/xxxLogin/wxOAuth
端口:8x端口
格式化json后,搜索password字段
访问根路径跳转到登录
前端路由:/login
直接请求登录
可以看到密码字段和返回的密文密码加密格式不同,所以直接传是不行的
由于该接口是fuzz模糊测试出的,在8x端口中的js也找不到,打开资产测绘平台,搜索该证书站发现开放2个web端口
8x端口:后台管理端
808x端口:学生app端
成功在808x端口的某js文件中发现该接口,猜测是开发是想做微信登录,但是并未完成前端的功能被隐藏起来了,但是该有的逻辑都有
简单查看登录成功后会5个值存储到前端的localStorage中,其中uni.getStorageSync是对localStorage的封装,本质和localStorage无疑
返回查看那串json数据是否存在这5个值
Ok老铁存在的,由于功能被隐藏了,简单构造一下代码,放到前端控制台执行即可,成功以管理员的身份登录808x端口的平台
uni.request({ url: '/api/xxxx/xxxx/wxOAuth?xxxxToken=admin', method: 'POST', dataType: 'json', success: function(res) { console.log('请求成功'); try { uni.setStorageSync('token', res.data.data.accessToken); uni.setStorageSync('xxxroles', res.data.data.xxxxx.xxxRoles); uni.setStorageSync('xxxuser', res.data.data.xxxxContext); uni.setStorageSync('xxx', res.data.data.xxxx.xxxxOrgs); console.log('数据存储成功'); uni.navigateTo({ url: "/xxx/xxx/index" }); } catch (e) { console.error('存储失败:', e); } }, fail: function(err) { console.error('请求失败:', err); }, complete: function() { console.log('请求完成'); }});
登录后发现功能比较少,即使是管理员身份也没多少功能,提取接口也没有多少,于是返回8x端口的平台,由于8x端口的平台没有wxOAuth这个接口,翻看下账号密码登录接口的前端逻辑。
翻看n这个函数,其实还是存储到前端的localStorage中,每个传入n函数的第一个参数都有对应的值,比如:SET_TOKEN对应到localStorage的key值是token
按个查看后发现wxOAuth接口返回的json中的字段都有对应,之前写的代码不能在8x端口平台上登录,因为两个站使用的前端框架不一样,其中8x端口使用vue框架,而808x端口采用的是uniapp框架。
这里懒得改了,于是直接输入错误的账密,修改返回包,将wxOAuth接口返回的json值全部放到返回包进去。
成功登录
登录后,在后台进行测试
结果
SQL注入1
SQL注入2
登录教师账号
步骤比较多点:
第一个数据包:用来新增执行语句,参数有加密,参考下面
第二个数据包:用来查看新增成功后的id值
第三个数据包:修改id值即可执行语句
首先请求第一个数据包,新增执行语句(查看user表内的用户和密码)其中两个值比较重要principalSql参数就是要执行的sql语句
公私钥位置:
principalSql参数解密位置:
尝试解密,解密成功
加密就不展示了,步骤相同,而headerList则是要输出的表头内容,这里只输出username和password字段,请求成功后
发送完第一个数据包后,发送第二个数据包查看是否添加成功(看到添加成功)然后拿到id值后续会用到(这里可以看到新增的是7)
请求第三个数据包将Id值修改为第二个数据包获取的id值,即可成功获取前50个用户的账号和密码信息
越权
利用超管权限获取低权限用户的账密,登录低权限的账号,并在修改信息位置发现权限是由roleid来判定的
再退出登录,该低权限用户就变成超管
最后
漏洞较多就不一一展示了,最后也是成功薅到了6本证书。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:渗透结束-非常安全 俺不是鸡哥《渗透测试 | 记某985高校单站获6本证书过程(二)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论