小迪安全v2023学习笔记(七十六讲)—— Fuzz模糊测试口令爆破目录爆破参数爆破Payload爆破
文章目录
- 前记
- WEB攻防——第七十六天
- Fuzz模糊测试篇&JS算法口令&隐藏参数&盲Payload&未知文件目录
- Fuzz知识
- 含义
- Fuzz的核心思想
- Fuzz应用场景
- Fuzz应用
- Fuzz字典项目
- Fuzz技术 - 用户口令-常规&模块&JS插件
- 常规
- 模块
- JS插件
- JsEncrypter
- BurpCrypto
- Fuzz技术 - 目录文件-目录探针&文件探针
- Fuzz技术 - 未知参数名-文件参数&隐藏参数
- Fuzz技术 - 构造参数值-漏洞攻击恶意Payload
- Fuzz技术 - SRC泄露未授权案例分享
- Fuzz手机加验证码突破绕过
- Fuzz访问URL挖未授权访问
- Fuzz密码组合规则信息泄露
前记
- 今天是学习小迪安全的第七十六天,本节课是关于
Fuzz
模糊测试篇章的内容,主要围绕弱口令、文件目录、参数名、参数值爆破展开 - 本节课以理解思想为主,当然也需要了解BP爆破模块的详细使用
WEB攻防——第七十六天
Fuzz模糊测试篇&JS算法口令&隐藏参数&盲Payload&未知文件目录
Fuzz知识
含义
- 是一种基于黑盒的自动化软件模糊测试技术,简单的说一种懒惰且暴力的技术融合了常见的以及精心构建的数据文本进行网站、软件安全性测试。
Fuzz的核心思想
- 口令
Fuzz
(弱口令) - 目录
Fuzz
(漏洞点) - 参数
Fuzz
(利用参数) PayloadFuzz
(Bypass
)
Fuzz应用场景
- 爆破用户口令
- 爆破敏感目录
- 爆破文件地址
- 爆破未知参数名
Payload
测漏洞(绕过等也可以用)
Fuzz应用
- 在实战黑盒中,目标有很多没有显示或其他工具扫描不到的文件或目录等,我们就可以通过大量的字典
Fuzz
找到的隐藏的文件进行测试 - 其实就是先使用工具扫描,如果没有结果,再尝试
Fuzz
测试
Fuzz字典项目
- fuzzdb:
FuzzDB
的创建是为了增加通过动态应用程序安全测试发现应用程序安全漏洞的可能性。它是第一个也是最全面的开放字典,其中包含故障注入模式、可预测的资源位置和用于匹配服务器响应的正则表达式。 - fuzzDicts:
Web Pentesting Fuzz
字典,一个就够了。 - SecLists:
SecLists
是安全测试人员的伴侣。它是安全评估期间使用的多种类型列表的集合,收集在一个位置。列表类型包括用户名、密码、URL
、敏感数据模式、模糊测试负载、Web shell
等等。目标是使安全测试人员能够将此存储库拉到新的测试框中,并可以访问可能需要的每种类型的列表。
Fuzz技术 - 用户口令-常规&模块&JS插件
常规
-
这里用之前的
niushop
来作为演示案例,进入他的后台,我们尝试登录几次,看看有没有验证码或者其他限制,这里没有限制,那我们就可以尝试去爆破口令了
-
打开BP抓包,然后转到
Intruder
模块:
-
然后导入我们的弱口令字典,开始爆破:
-
然后我们可以根据返回的长度或者状态码来看哪个密码是正确的,这里就是和其他明显不同的就是正确的密码
-
当然,爆破的时候最好还是挂个代理池
模块
-
这里针对的其实就是网站对账号或密码做了一些加密处理,但是这个加密都是模块化的加密或编码(
md5
、url
、base64
) -
那么此时采用BP爆破的时候就需要对传入的参数也进行同样的加密/编码处理,以
zblog
网站为例(之前搭过):
-
我们尝试登录,然后很明显的看到这里有个
md5
加密,那我们直接抓包转到Inturder
设置爆破参数,并设置Payload
处理模块,选择md5
处理:
-
然后开始爆破,同样还是看长度和响应码判断密码是否正确:
JS插件
-
这里针对的是网站采用JS前端加密的形式,之前在第六十三天的时候已经讲过了该怎么对传入的参数进行处理,这里就再次演示一遍,并且介绍一个新的插件
-
我们处理所用的两个插件为:
- JsEncrypter:本插件使用
phantomjs
启动前端加密函数对数据进行加密,方便对加密数据输入点进行fuzz,比如可以使用于前端加密传输爆破等场景。 - BurpCrypto:Burpcrypto 是 burpsuite 加密插件的集合,支持 AES/RSA/DES/ExecJs(在 burpsuite 中执行 JS 加密代码)。
- JsEncrypter:本插件使用
-
然后案例依旧是之前的交我算平台,我们随便输入一个账号密码尝试登录,
f12
可以看到数据包中的密码是加密的:
-
查看发起程序,然后找到这个地方:
-
很明显这就是他的一个加密逻辑,我们将鼠标放到这个
encrypt()
函数上可以看到它的加密js
文件为JSEncrypt.js
:
-
此时我们可以点进去把他复制下来,然后再把这里的主要加密逻辑复制下来,丢到在线网站上看看能否成功加密:
-
确实能够成功执行,那么现在我们就使用上面介绍的两个插件分别对
Payload
进行处理然后传参
JsEncrypter
-
首先将网站中的
js
加密代码下载到本地,然后打开phantom_server.js
文件,导入该js
加密文件:
-
然后在下面写一个新的函数,将网站中的加密代码写入:
-
保存文件,运行
phantom.exe
:
.\phantomjs.exe .\phantomjs_server.js
-
最后登录然后BP抓包,转到
Inturder
模块,设置参数,并设置Payload
处理逻辑:
-
然后进行爆破,可以看到
payload
正常被加密:
BurpCrypto
-
如果不想像上面这个插件一样复杂,可以直接使用
BurpCrypto
这个插件,选择Exec Js
模块,填入网站的JS
加密代码 -
跟着小迪上面的来即可,
Js Method Name
那里填入方法名,然后选中HtmlUnit
,最后添加进程
-
然后还是来到刚才的地方,这里我们添加创建的
BurpCrypto
进程:
-
同样开始爆破,可以看到也是能够成功加密的:
Fuzz技术 - 目录文件-目录探针&文件探针
-
其实还是通过爆破的方式去猜网站存在哪些隐藏的目录,很多目录扫描的工具就是这个原理
-
比如这里我们找自己本地随便搭的一个网站模拟演示:
-
BP抓包转到
Inturder
模块,然后这里一般是先看根目录,然后逐层爆破:
-
然后开始爆破,看状态码:
-
可以看到找到了很多隐藏的
php
文件,增加了我们的攻击面
Fuzz技术 - 未知参数名-文件参数&隐藏参数
- 其实这个还是通过BP字典去爆破出某个文件可能存在的参数,比如还是这个网站,我们比如爆破出了
test.php
文件,那就可以爆破看看它存不存在传参 - 假设这个文件的代码如下:
<?php
$cmd = $_GET['do'];
if(!isset($cmd)) { echo "<h1>请输入参数</h1>";
} else { system($cmd);
}
-
直接通过刚刚抓到的包,然后在后面随便写一个参数以及参数值:
-
然后直接通过字典爆破:
-
通过回显的长度可以成功爆破到该参数为
do
,然后我们就知道了存在这个参数 -
但是这种爆破方式只适合输入正确参数和错误参数回显页面有差异的情况,否则就不能用这种方法
Fuzz技术 - 构造参数值-漏洞攻击恶意Payload
-
在上面爆破出参数名的基础上,我们可以继续尝试去爆破
Payload
,比如Sql
注入、XSS
、RCE
等等 -
这里就是
RCE
的Payload
,实战中需要全部尝试的:
-
当然,这里如果是
POST
或者其他的提交方式,也可以尝试爆破,反正任何地方都可以去尝试
Fuzz技术 - SRC泄露未授权案例分享
Fuzz手机加验证码突破绕过
-
找到一个登录站点:
-
随便输入一个手机号提示,必须提供已经绑定过账号的手机号才能成功发送验证码:
-
这里就可以尝试
Fuzz
电话号码,BP抓包可以看到有提示:
-
然后转发到
Intruder
模块,设置Fuzz
参数值为数字:
-
然后通过爆破我们就成功爆破出了一个可用的手机号:
-
然后就可以结合前几节课绕过验证码的方式去尝试绕过手机验证码,登录到后台
Fuzz访问URL挖未授权访问
-
在对某系统测试时发现后台地址为
https://xxx/?m=index
,然后我们就可以通过Fuzz
去进一步地测试有没有其他的目录:
-
这里就找到了一个
view
目录,然后尝试访问,成功获取到一些敏感信息:
Fuzz密码组合规则信息泄露
-
比如我们知道了密码的一个组合规则,就可以尝试去进行
Fuzz
对应账号的密码:
-
这里知道了它的密码组合为 “xxx#身份证后六位”,那么就可以抓包然后爆破:
-
也是成功找到了密码并登录成功:
-
之后就可以测系统内的东西了