某大学新版学工系统SQL注入与WAF绕过

本文最后更新于:2022年4月13日 下午

声明:本文所做所有操作已得到学校官方授权,漏洞已经报送并确认修复,认出来的同学请勿将本文用于非法用途

在挖掘校内SRC时发现核心系统之一学工系统存在SQL注入,遂有此文

前期的信息收集

①大学的学生工作管理系统,在校期间几乎所有学生的业务办理都会经过这个系统。是非常敏感的业务点

②系统对外网开放,需要经过学校的cas系统进行认证才能进入(但对于校内学生来说问题不大)

③该系统上了某知名安全的商业waf,在之后的渗透中很大一部分时间是在尝试着对waf进行绕过

肾透

网站打开是这样的:

在这里插入图片描述

一般来说这种系统涉及到的信息比较多而敏感,交互也比较复杂,很容易出现水平越权,信息泄露之类的问题。之前也挖到过,但不是本文的重点。

为了测试效率我们使用xray配合rad对网站整体进行一些扫描

在这里插入图片描述

扫描完毕查看报告,可以看到几个疑似SQL注入的漏洞,但是否是假阳性需要手工进行进一步的确认。

在这里插入图片描述

通过报错及xray提供的信息我们知道该系统使用的是Oracle数据库,且出现的可能是报错注入

在这里插入图片描述

这个时候自然想的是SQLMAP等自动化的脚本来帮我们取数据了,但由于有waf的存在我们需要先找到绕过waf的方式

尝试失败的截图我就不放出来了,最后我找的成功的方式是使用增加垃圾数据包的方法让waf直接放行从而绕过。

参考的主要是这个师傅的文章

https://xz.aliyun.com/t/7578?page=34

按照师傅的方法,我们需要生成一些垃圾数据,这里直接照搬脚本:

1
2
3
4
5
6
7
8
9
import random

ls = [chr(i) for i in range(33,125)]
ls.remove("#") # 防止url被注释
ls.remove("*") # 方便使用sqlmap报数据
s = ""
for i in range(10000):
s = s+random.choice(ls)
print(s)

生成效果如下:

在这里插入图片描述

填充垃圾数据前后响应对比:

在这里插入图片描述

在这里插入图片描述

waf绕过之后我们就能进行利用了,将抓到的包放进sqlmap中跑即可,记得用*号设置注入点。

SQLMAP能成功探测出一样的注入

在这里插入图片描述

但在利用时除了些许的问题,SQLMAP取不回数据:

在这里插入图片描述

开启 -v 并将等级调到最高,看返回的结果。最终发现网站会自动对传入的括号用单引号括起来:

在这里插入图片描述

在这里插入图片描述

这样其实相当于逗号不能用了。不过问题不大,通过一些等价的表述我们依旧能够拿到数据,而且对于SRC的挖掘而言我们的目的已经达到了。

我们可以看一哈系统中有哪些表,简单验证一下这个漏洞:

在这里插入图片描述

以及最后的一个为了自动化拿数据写的脚本(敏感信息就不放源码了):

在这里插入图片描述
在这里插入图片描述

总结

①存储大量信息且频繁和用户进行交互的系统是非常容易出问题的点,是SRC挖掘需要重点关注的对象

②Bypass waf是非常考验技术和耐心的一个点,这次是运气好成功绕过,以后还要加深学习

③即使绕过了waf由于网站本身的复杂性,自动化的工具可能需要自行改造或者重新编写,一个好的编程能力对于一个白帽子来说是不可或缺的。


某大学新版学工系统SQL注入与WAF绕过
https://m0ck1ng-b1rd.github.io/2020/08/04/实战/某大学新版学工系统SQL注入与WAF绕过/
作者
何语灵
发布于
2020年8月4日
许可协议