渗透测试|记某985高校单站获6本证书过程(二)

admin 2025-12-22 03:46:01 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 这篇文章记录了对某985高校网站的渗透测试过程,通过发现隐藏的微信登录接口获取管理员权限,进而发现SQL注入漏洞获取用户数据,并利用越权漏洞提升普通用户权限,最终获得6本安全证书。文章展示了实际渗透测试中的技术思路和方法,包括接口分析、加密解密、权限绕过等技术点。 综合评分: 87 文章分类: 渗透测试,WEB安全,漏洞分析,实战经验


cover_image

渗透测试 | 记某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本证书过程(二)》

评论:0   参与:  3