0x1 前言
下面给师傅们分享的案例呢是前段时间实战的一个站点,也是我朋友前段时间让我测的一个站点。整体的测试流程也还算ok,然后里面有些细节要是对师傅们有帮助可以收藏下,后面主要是利用FUZZ打了一个sql注入漏洞上去。
0x2 fuzz和sql结合的简介
fuzz简介
fuzz
其实就是一种对请求参数的模糊测试,简单来说就是对一个接口的某个参数或多个参数用自定义的内容进行批量提交,根据接口返回内容来判断自定义内容参数对接口的影响。
常见的sql注入绕过waf
有两种方式,一种是利用waf可能存在的http协议解析缺陷来绕过waf,另外一种是利用各种方式来包装sql注入语句进行混淆来绕过waf的规则库。
fuzz方法分类
-
黑盒模糊测试:黑盒测试又称为功能测试,主要检测软件的每一个功能是否能够正常使用。在测试过程中,将程序看成不能打开的黑盒不考虑程序内部结构和特性的基础上通过程序接口进行测试,检查程序功能是否按照设计需求以及说明书的规定能够正常打开使用。
-
白盒模糊测试:白盒测试也称为结构测试,主要应用于单元测试阶段,检测软件编码过程中的错误。程序员的编程经验、对编程软件的掌握程度、工作状态等因素都会影响到编程质量,导致代码错误。
-
灰盒模糊测试:是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。
浅谈
首先来说说造轮子的原理,fuzz
是对某个接口的一个参数或多个参数进行自定义参数批量请求的模糊测试,sql注入
的漏洞成因是某个接口中后端没有对某个参数或多个参数的内容进行过滤并将参数内容直接合并到sql语句中进行查询,waf的防御原理是解析http请求
,对里面每个参数的内容根据规则库进行匹配,那么通过fuzz结合sql注入对waf进行绕过的原理也就显而易见了。
0x3 fuzz使用工具Arjun
Arjun
是一款可以找到URL端点查询参数的工具。Web应用程序使用参数(或查询)来接受用户输入,此工具可以帮助渗透测试人员方便查找隐藏的参数。
https://github.com/s0md3v/Arjun
下载github项目,使用python安装,安装完成以后,—help显示下面的界面就可以了
python3 setup.py installarjun --help
0x4 信息收集+资产收集
浅谈
首先这次渗透测试是我朋友叫我帮他对该网站进行一个测试(已授权,未授权禁止测试),是一个科技园公司的一个网站,首先也是对该网站进行一个信息收集,然后对该网站的域名进行一个资产收集,直接对这个网站的主域名进行测试比较难,那么我们就可以去看看利用FOFA或者鹰图之类的空间引擎包括爱企查等进行一个边缘资产的收集。
这里直接上FOFA,然后匹配到了一些网站,然后我访问了几个
发现访问了好几个站点都是下面的页面,没什么信息收集的价值
在FOFA上收集到的资产太少了,换个鹰图试试
然后找到了几个该公司域名下面的几个子网站,都是些功能点很少的网站,
然后我就对这几个网站简单的测试,暂时没有测出什么漏洞
Arjun工具FUZZ 一下
可以看到这个网站存在能够解析php后缀的,那么我们就可以尝试使用Arjun工具来测试php后面的一些参数,比如常见的about.php?id=xxx或者about.php?file=xxx等参加的sql注入的一个参数测试,拿这个工具帮我们自动化跑一下
可以看到下面的结果显示了一个found:id
看到这个就说明工具fuzz出来了后缀参数就是id
arjun -u "ip/about.php"--passive 参数用于指示 Arjun 执行被动扫描。被动扫描不会直接向目标发起请求,而是根据目标页面的响应来推测可能的参数。这种扫描方法对目标站点的影响较小,也不容易被检测到。
那我们目前已经测试出来了这个id是参数变量,那么我们就可以去手动或者直接使用bp抓包去遍历下id后面的参数呢
通过bp里面1-1000参数进行爆破,发现确实存在sql注入,里面bp字段爆红是因为使用的HAE插件,我里面添加了sql注入一些常见的敏感参数
师傅们可以看到下面的?id=15页面报错了,很显然存在sql注入漏洞了
0x5 FUZZ到sql注入
时间盲注
因为上面这个网站存在sql注入漏洞,那么我这里就直接简单的利用下sleep函数打一个时间盲注看看能不能行,时间延迟5秒
下面的几个sleep时间盲注的闭合语句,师傅们可以看着来进行一个匹配测试
判断注入 15' and if(15,sleep(5),3)--+ 15" and if(15,sleep(5),3)--+ 15) and if(15,sleep(5),3)--+ 15 and if(15,sleep(5),3)--+
后来我是使用/about.php?id=15 and if(15,sleep(5),3)--+
这个闭合来打了一个时间盲注,并且成功延迟了5秒
sqlmap一把梭
这里判断出来了闭合点,那么也就可以直接丢sqlmap里面跑下,但是里面有些绕字段什么的比较慢,但是后面也是跑出来了这个站点的数据库名
python sqlmap.py -u ip?id=15 --batch --random-agent --dbs
像这样的站点,其实你在一个功能点发现存在sql注入,其实在别的功能点也能找到相关的漏洞,就拿那个sql注入来举例,其实后面的这几个功能点都存在sql注入漏洞
因为都是能够解析php文件,然后后面都是可以匹配 ?id
参数,所有都是可以去测试下,然后打包下这个网站的所有漏洞,这不一下就扩大了危害了嘛
可以看到别的php功能点也是都存在的,可以看到上面的页面图标在延迟跳转5秒
0x6 总结
上面就是对这次渗透测试项目的一个复盘了,总的来说还是有收获的,利用工具fuzz然后打到sql注入漏洞,这一套渗透测试流程希望对师傅们有些帮助哈!
更多网络安全优质免费学习资料与干货教程加v
送渗透工具、技术文档、书籍,面试题、视频(基础到进阶。环境搭建,HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等)、应急响应笔记、学习路线。
申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,
所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。