【渗透日记】某高校招生系统的一处逻辑漏洞获取超管权限

Mangofang 发布于 2025-05-19 243 次阅读


使用的软件:

  1. BurpSuite

前言

实际上也是两个月前的洞了,一直没有修复就存着没发。接下来我会还原我的视角来带大家半沉浸式的还原这个漏洞的挖掘过程。涉及安全性问题,厚马谅解

文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!


1、开局一个登录框

通过信息搜集找到的一个站点,这里不过多赘述这个过程。

开局一个登录框,首先上来还是先dirsearch一下看看有没有什么子路径,挂在后台跑,看能不能跑出什么。在这段时间内可以尝试一下搜集用户名,然后进行爆破,看看有没有弱口令啥的

爆破开始前,先看一下此处人机验证是否有效(如果是验证码也是同样的先检查验证码相关的逻辑问题,例如验证码复用、验证码回显、验证码失效等问题)如果验证可以顺利绕过,那么就可以尝试进行爆破

我们先完成验证然后抓包试试,首先可以看到请求头和请求体参数里并未包含任何的验证信息。

其次我们可以来重放一次这个登录请求,查看是否返回结果与第一次尝试一致,如果一致,那么这里的验证大概率就是一个前端验证,可以直接发包绕过进行爆破。这里也是不出意外的是一个前端人机验证,可以看到不管重复多少次发包,其结果都是一样的,并不存在诸如验证码失效的提示。

那么这里除了暴露出它的人机验证无效外,还存在一个用户名爆破的问题,那这个咱们可以先放一下,能不爆破就不爆破,可以先进行一些学号的搜集,然后挨个尝试看看是否存在用户名。

这个信息搜集咱们在之前的文章有提到过,参考那篇文章的内容即可。【渗透日记】半沉浸式用案例详解EDU的漏洞挖掘过程和技巧(1) – Wind

随便拉个学号过来看看,可以看到提示已经不是“该用户名不存在”接下来对密码进行一个爆破,同时发现存在admin账号,也一起爆破一下,有条件可以对多个学号挨个爆破。刚想尝试发现对登录频率有限制QAQ,这真是太bad了,爆破这边就走不通了。

dirsearch扫了一圈也没发现有什么价值的东西,接下来按照常规思路就应该对js下手了,看看js中有没有什么有用的信息。

在js里面看到几个其他地址的链接,感觉可以拼接进去看看。(也可以通过findsomethink寻找到这些链接)

这边可以看到右上角还有个登录按钮,点点看

这一处的登录框提供了一个“点击注册”的页面,既然这样,尝试注册一个账号进去看看

注册一个张三账号,回到刚刚我们登录的位置登录,也是成功登录进来了

2、尝试提权

虽然是成功登录了,但是index页面好像啥功能也没有

页面提供的功能点不多,只有“修改密码”、“修改个人信息”、“切换用户”和“退出账号”,四个功能点。

尝试对修改密码和修改个人信息位置进行常见的越权测试无果,就在还以为又要开始翻链接和接口的时候发现这个“切换账号”位置似乎有点不对劲。

正常情况下点击“切换账号”,这个位置只会显示我们自己的账号,或者其他有权限管理的账号,这里我是一个非管理员账号,所以只会显示当前账号。

我们抓个包看看,观察到该处的一个发包如下,存在一个参数userUnique,通过参数名应该可以判断出,应该是我们账号的唯一编号

看看返回包呢,如下

不出意外的,返回包返回了当前的用户的信息

其实这里有一个比较常规的测试思路,简单说一下。类似下面这种数据包,有一定可能性我们可以通过修改不同的参数来进行数据检索举个例子,我们这里请求包中的参数是userUnique,对应的检索目标就是返回包中的userUnique,或者说是数据库中的userUnique。如下图

我们可以尝试一下,通过判断可以确定identityNumber位置是身份证。我们就发一个这个参数,值为1看看。

可以看到检索到了别的identityNumber存在1的账号信息,且包含password、身份证、用户名等重要数据

事实上如果此处我们将参数置空,可以输出所有账号的数据信息

根据后续判断,position参数大概率是确定权限的一个参数,如果position参数为0,则是管理员用户,我们直接通过刚刚的api检索position为0的用户。然后解密登录完成提权

也是拿到了数十万的学生个人信息数据和管理员权限,接下来我们可以通过系统自带的“代码生成”来尝试通过sql提服务器权限,此处就不继续测试了,点到为止。

此作者没有提供个人介绍。
最后更新于 2025-05-19