一、对Burp intruder的简介
Burp Intruder是一个强大的工具,用于自动对Web应用程序自定义的攻击,Burp Intruder 是高度可配置的,并被用来在广范围内进行自动化攻击。你可以使用 Burp Intruder 方便地执行许多任务,包括枚举标识符,获取有用数据,漏洞模糊测试。合适的攻击类型取决于应用程序的情况,可能包括:缺陷测试:SQL 注入,跨站点脚本,缓冲区溢出,路径遍历;暴力攻击认证系统;枚举;操纵参数;拖出隐藏的内容和功能;会话令牌测序和会话劫持;数据挖掘;并发攻击;应用层的拒绝服务式攻击。
二、模块说明
Burp Intruder主要有四个模块组成:
1:Target 用于配置目标服务器进行攻击的详细信息。
2:Positions 设置Payloads的插入点以及攻击类型(攻击模式)。
3:Payloads 设置payload,配置字典
4:Opetions 此选项卡包含了request headers,request engine,attack results ,grep match,grep_extrack,grep payloads和redirections。你可以发动攻击之前,在主要Intruder的UI上编辑这些选项,大部分设置也可以在攻击时对已在运行的窗口进行修改。
三.对需要用到的知识进行说明
什么是 Burp 代理?
Burp 代理是一个用来攻击和调试 web 应用程序的交互式的 HTTP /S 代理服务器。 他就像一个在浏览器和目标服务器之间的中介人, 并允许用户拦截, 查看和修改两个方向上的原始流量。Burp 代理允许你通过监视和操纵应用程序传输的关键参数和其他数据来查找和探索应用程序的漏洞。通过以恶意的方式修改浏览器的请求, Burp 代理可以用来进行攻击,如:SQL 注入, cookie 欺骗,提升权限,会话劫持,目录遍历,缓冲区溢出。拦截的传输可以被修改成原始文本, 也可以是包含参数或者消息头的表格, 也可以十六进制形式, 甚至可以操纵二进制形式的数据。在 Burp 代理可以呈现出包含 HTML 或者图像数据的响应消息除了每一个请求的操纵外, Burp 代理保持着一个完整的历史记录,包括浏览器发送的每一个请求,所有的操作,以及接收到的所有响应。你可以复查较早的请求,并修改后补发任何请求,还能以原始的形式或者 web 页面的形式来查看保存的响应。可以把两个方向上的整个会话记录到一个文件中,用来作进一步分析或者提供审查线索。在 Burp Suite 里, Burp 代理是何其他工具紧密地集成在一起的。并允许把任意的请求和响应发送到其他工具里作进一步处理。 通过一次单击, 你可以把一个感兴趣的请求作为分析会话令牌的基础,或者经过人工修改后再发送,漏洞分析,或者使用 Burp Intruder 进行一次自定义的自动攻击。通过基于域名, IP 地址,协议, HTTP 方法, URL ,资源类型,参数, cookies,消息头/消息体内容, 响应代码, 内容类型和 HTML 页面标题的请求和响应的细微规则来控制 Burp代理的交互式行为。 可以悄悄地执行配置操作, 而不会影响任何请求。 你可以晚一点查看历史记录以确认请求经过更严格检查。虽然使用了正则表达式匹配规则和替换规则, Burp 代理还可以用来自动修改 HTTP 请求和响应消息。除了用户的主界面,在浏览上也可以控制 Burp 代理用来查看请求历史记录和重发请求。 Burp 代理可以与上游代理结合起来使用。它可以处理上游代理和 web 服务器的 basic,NTML 和摘要式身份认证,同样也可以用在大多数局域网环境中。它支持 SSL(可以自定义服务器或客户端证书 ),可以查看 HTTPS 传输,还可以把它修改成明文。另外,它还能自动处理许多种编码的服务器响应,包括分块传输编码和压缩内容编码。使用 Burp 代理当 Burp 代理运行后, HTTP/S 代理服务器自动开启 8080 端口仅作为回环接口。
Burp Intruder 是什么?
Burp Intruser 是一个对 web 应用程序进行自动化的自定义攻击的工具。Burp Intruder 不是一个点击工具。要想高效地使用它,你需要明白目标应用程序是怎样工作的,以及一些 HTTP 协议的知识。在你使用 Burp Intruder 进行攻击之前,你需要调查清楚目标应用程序的功能和结构,尤其是再浏览器和服务器直接传输的许多 HTTP 消息。 你可以使用标准浏览器和 Burp Proxy 拦截和查看应用程序产生的请求和响应。当你确认了一些一些感兴趣的 HTTP 请求需要更严格的检查时, 你就已经为使用 Burp Intruder 准备好。Burp Intruder 是高度可配置的,并被用来在广范围内进行自动化攻击。你可以使用 Burp Intruder 方便地执行许多任务,包括枚举标识符,获取有用数据,漏洞模糊测试。合适的攻击类型取决于应用程序的情况,可能包括:缺陷测试: SQL 注入,跨站点脚本,缓冲区溢出,路径遍历;暴力攻击认证系统;枚举;操纵参数;拖出隐藏的内容和功能;会话令牌测序和会话劫持;数据挖掘;并发攻击;应用层的拒绝服务式攻击。
Burp Intruder 有许多预设的攻击 ”有效负荷 ”(在探索发现常规漏洞中有用的字符串)列表。 它包含了许多工具, 这些工具动态地产生适合应用程序内的特定机制的攻击载体。外部的文件也可被加载并纳入到 Burp Intruder( 如,枚举用户名的列表,新发型的漏洞的模糊字符串 )。核心动作就是通过这些 HTTP 请求重复地攻击。在调查阶段确认有基础请求派生的请求。Burp Intruder 以特殊方式操纵这些基础请求来确认或探测应用程序漏洞。它使用一个或多个有效载荷来替换基础请求中的一部分来实现这个过程。 可以为每次攻击配置时间和执行方案。 同时可以使用多线程来产生请求。限制请求可以防止入侵检测系统的探测。拒绝服务模型可以使用请求来轰炸服务器,这时会忽略。
4 个可能的攻击类型:
sinper —这使用了单个有效负荷集合。 它的目标是在每个位置上, 并把每个有效负荷按顺序地插入到这些位置上。 请求中的不是目标的位置不受影响—位置标记会被删除并且它们之间的模板里的文本不会变化。 这类攻击类型对单独使用数据域来测试常规漏洞 (如,跨站点脚本 )非常有效。 攻击产生的大量请求是位置数量和有效负荷数量的产品。
battering ram —这使用了单个有效负荷集合。 它是通过有效负荷迭代, 并一次在所有定义的位置插入有效负荷。当一次攻击需要在 HTTP 请求 (如,Cookie 消息头和消息体里的用户名 )中的多个位置上插入相同的有效负荷时, 这个攻击类型非常有用。 攻击产生的所有请求数量就是有效载荷的数量。
pitchfork — 这个是用在多个有效负荷集合。在每个定义的位置有不同的有效负荷集合(最多 8 个 )。攻击同时通过所有的有效负荷集合进行迭代, 并在每一个位置上插入一个有效载荷。 例如, 第一个请求会把第一个有效负荷集合里第一个有效负荷插入到第一个位置, 第二个有效载荷集合里的第一个有效负荷插入到第二个位置。 第二个请求会把第一个集合里的第二个有效负荷插入到第一个位置, 把第二个有效负荷里的第二个有效负荷插入到第二个位置,等等。当攻击需要将不同的但相关的输入插入到 HTTP 请求 (如,一个数据域里的用户名,以及在其他数据域里的一个和用户名相关的 ID 号)的多个位置里时,这个攻击类型会有用的。攻击产生的所有的请求数量是最小有效负荷集合里的有效负荷数。
cluster bomb — 这个使用了多个有效负荷集合。每个定义的位置 (最多 8 个 )都有一个不同的有效负荷集合。 攻击会按照每个有效负荷集合的顺序进行迭代, 于是所有的有效负荷排列组合都会被测试。例如,如果有 2 个有效负荷位置,攻击会把第一个有效负荷集合里的第一个有效负荷放置在第一个位置, 在位置 2 里会迭代第二个有效负荷里的所有有效负荷;然后他会把第一个集合里第二个有效负荷放在第一个位置,然后在位置 2 上迭代集合 2 里的所有有效负荷。当攻击需要在 HTTP 请求 (如,一个参数里的用户名和另一个参数里的密码)里插入不同的并且不相关的输入时,这个攻击类型会很有效。攻击产生一个对攻击结果进行有效解释的关键部分, 定位在感兴趣或成功的服务器响应, 以及产生这些响应的请求。
通常情况下感兴趣的响应分为下面几种:
1.一个不同的 HTTP 状态码。
2.一个不同长度的响应。
3.某个表达式存在或不存在。
4.一个错误或超时的产生。
5.接收或完成响应的时间。
例如,在一个探索内容的测试中, 请求一个现存的资源, 会返回一个长短不一的 ”200OK”的响应,然而请求一个不存在的资源时,会返回一个 ”404 not found ”的响应,或者返回一个包含固定长度的自定义出错页面。在一次密码猜测攻击中,登陆失败会产生一个包含关键字”login failed ”的”200 OK ”的响应,然而成功的登陆会产生一个 ”302 Object moved ”的响应,或者一个包含关键字 ”welcome”的不同长度的 ”200 OK ”的响应。
题目:小宁写了一个登陆验证页面,随手就设了一个密码
题目场景: http://111.198.29.45:33074/
随意输入用户名和密码,提示用户名为admin.
使用admin为用户名登录,提示密码错误
然后查看页面源代码
提示: maybe you need a dictionary
(后面我们用到生成密码的方式指的就是dictionary)
然后我们打开Bursuite进行拦截
然后点击右键->发送给Intruder
选择 Clusterbomb,因为这样就有两个有效负载集(用户名和密码),然后对有效载荷进行设置.
因为用户名已经固定,只需要对密码进行生成.
点击开始攻击,密码开始自动生成.
找寻长度不一样的,即密码的正确值
我们看到正确的密码为123456.
再次进入题目场景,输入正确的用户名和密码
得到flag