51Testing软件测试论坛
标题:
Burp Suite:Web 应用程序安全利器
[打印本页]
作者:
海鸥一飞
时间:
2024-9-4 11:33
标题:
Burp Suite:Web 应用程序安全利器
一、Burp Suite 简介
Burp Suite 是用于 Web 应用程序渗透测试的集成平台,包含多种功能强大的工具,能高效地进行漏洞挖掘和测试。
Burp Suite 包含了许多工具,如 Proxy、Spider、Scanner、Intruder、Repeater、Sequencer、Decoder、Comparer 等。这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的 HTTP 消息、持久性、认证、代理、日志、警报。
其中,Proxy 是一个拦截 HTTP/S 的代理服务器,作为浏览器和目标应用程序之间的中间人,允许拦截、查看、修改在两个方向上的原始数据流。Spider 是一个应用智能感应的网络爬虫,能完整地枚举应用程序的内容和功能。Scanner(仅限专业版)是一个高级工具,执行后能自动地发现 web 应用程序的安全漏洞。Intruder 是一个定制的高度可配置的工具,可对 web 应用程序进行自动化攻击,如枚举标识符、收集有用的数据以及使用 fuzzing 技术探测常规漏洞。Repeater 是一个靠手动操作来补发单独的 HTTP 请求,并分析应用程序响应的工具。Sequencer 是一个用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。Decoder 是一个进行手动执行或对应用程序数据者智能解码编码的工具。Comparer 是一个实用的工具,通常是通过一些相关的请求和响应得到两项数据的一个可视化的 “差异”。
Burp Suite 以 Java 语言编写而成,由于 Java 自身的跨平台性,使得软件的学习和使用更加方便。免费版的 Burp Suite 可以从免费版下载地址进行下载,但会有许多限制,很多高级工具无法使用。如果想使用更多的高级功能,需要付费购买专业版。专业版与免费版的主要区别有 Burp Scanner 工作空间的保存和恢复、拓展工具,如 Target Analyzer、Content Discovery 和 Task Scheduler。
安装 Burp Suite 需要先完成安装 Java 及环境变量配置。打开注册机 burp-loader-keygen.jar,点击 run,license text 随便填,将生成的 license 复制粘贴到打开的 burp 里,点击 next。点击 manual activation 手动激活,将 request 粘贴到 activation request,将自动生成 response,再粘贴到 burp 里最下面的 response 中,点击下一步即可激活成功。第二次打开 burp 要先打开 burp-loader-keygen.jar,再点击一下 run,或者在文件目录下执行 java -Xbootclasspath/p:burp-loader-keygen.jar -jar burpsuite_pro_v1.7.37.jar 来启动。
Burp Suite 可执行程序是 java 文件类型的 jar 文件。当 Burp Suite 运行后,Burp Proxy 开启默认的 8080 端口作为本地代理接口。通过设置一个 web 浏览器使用其代理服务器,所有的网站流量可以被拦截,查看和修改。默认情况下,对非媒体资源的请求将被拦截并显示(可以通过 Burp Proxy 选项里的 options 选项修改默认值)。对所有通过 Burp Proxy 网站流量使用预设的方案进行分析,然后纳入到目标站点地图中,来勾勒出一张包含访问的应用程序的内容和功能的画面。在 Burp Suite 专业版中,默认情况下,Burp Scanner 是被动地分析所有的请求来确定一系列的安全漏洞。在开始认真工作之前,最好为指定工作范围。最简单的方法就是浏览访问目标应用程序,然后找到相关主机或目录的站点地图,并使用上下菜单添加 URL 路径范围。通过配置的这个中心范围,能以任意方式控制单个 Burp 工具的运行。当浏览目标应用程序时,可以手动编辑代理截获的请求和响应,或者把拦截完全关闭。在拦截关闭后,每一个请求,响应和内容的历史记录仍能再站点地图中积累下来。和修改代理内截获的消息一样,可以把这些消息发送到其他 Burp 工具执行一些操作:可以把请求发送到 Repeater,手动微调这些对应用程序的攻击,并重新发送多次的单独请求;可以把请求发送到 Scanner,执行主动或被动的漏洞扫描;可以把请求发送到 Intruder,加载一个自定义的自动攻击方案,进行确定一些常规漏洞;如果看到一个响应,包含不可预知内容的会话令牌或其他标识符,可以把它发送到 Sequencer 来测试它的随机性;当请求或响应中包含不透明数据时,可以把它发送到 Decoder 进行智能解码和识别一些隐藏的信息。可以使用一些 engagement 工具使工作更快更有效。在代理历史记录的项目,单个主机,站点地图里目录和文件,或者请求响应上显示可以使用工具的任意地方上执行任意以上的操作。可以通过一个中央日志记录的功能,来记录所单个工具或整个套件发出的请求和响应。这些工具可以运行在一个单一的选项卡窗口或者一个被分离的单个窗口。所有的工具和套件的配置信息是可选为通过程序持久性的加载。在 Burp Suite 专业版中,可以保存整个组件工具的设置状态,在下次加载过来恢复你的工具。
二、核心功能之代理
(一)拦截与修改请求响应
Burp Suite 设置 HTTP/HTTPS 代理并抓包的步骤如下:设置完代理后,可以作为一个观察者查看所有经过 Burp Suite 代理的 Http 报文。要拦截报文进行修改,首先进入 Proxy - Options - Intercept Client Requests 设置 request 拦截的规则。如果不勾选 Intercept requests based on the following rules,无法拦截到任何 http request。可以添加多条规则,规则之间可以是与 / 或的关系,添加并勾选规则后,只有满足这些规则组合的 http request 才会被拦截。
拦截成功后,可以在 Intercept 选项卡页直接编辑请求的参数 /headers 等等,然后再转发(Forward)报文。
如果需要拦截 response 并修改 response 中的返回值,第一步仍然是进入 Proxy - Options - Intercept Server Response 设置 response 拦截的选项。可以添加规则,例如当 request 被拦截的时候,也拦截 response。添加 rule 后,效果如下,可以修改 request/response 中的值并 Forward。
设置浏览器代理的步骤如下:对于 Chrome 浏览器,依次点击菜单栏的 “设置”->“高级”->“打开您计算机的代理设置”,选择 “手动配置代理”,填入 Burp Suite 的监听地址(默认为 127.0.0.1:8080)并勾选 “使用代理”。
(二)实际应用案例
在实际功能测试过程中,比如页面判断用户第一次进入页面后会弹窗,这里客户端是根据接口中 hasShowedTaoJob 值来进行判断。每次都需要去修改服务端中数据库的值太麻烦,测试接口返回值没有问题后,可以通过修改 response 中的数据来实现弹窗的效果。例如将 true 修改为 false 然后 Forward。
在进行 Web 应用程序渗透测试时,拦截和修改请求响应可以帮助测试人员快速发现漏洞。例如,通过修改请求参数,可以测试应用程序对不同输入的处理情况;通过修改响应内容,可以模拟服务器的错误响应,测试客户端的处理能力。
在漏洞挖掘中,拦截和修改请求响应可以帮助测试人员发现 SQL 注入、XSS 等漏洞。例如,通过修改请求参数中的 SQL 语句,可以测试应用程序是否存在 SQL 注入漏洞;通过修改响应内容中的 HTML 代码,可以测试应用程序是否存在 XSS 漏洞。
作者:
海鸥一飞
时间:
2024-9-4 11:34
三、核心功能之扫描
(一)自动检测漏洞
Burp Suite 的 Scanner 模块是一个强大的漏洞检测工具,它可以自动检测 Web 应用程序的安全漏洞。Scanner 模块分为主动扫描和被动扫描两种方式。
1. 主动扫描
主动扫描会向目标 Web 应用程序发送大量带有攻击探测信息的请求,可以获得精准性高且详细的信息。但是会对目标站点造成较大影响,所用时间和资源也较多。适合在网站离线时做测试。
主动扫描的步骤如下:
在需要扫描的网站上右键,点击发送到主动扫描模块。
在 Scan queue 中查看主动扫描的进度。
Issue actively 查看扫描到的漏洞具体信息,可以对内容进行自定义标记,导出报告等。
主动扫描适用于以下类型的漏洞:
客户端的漏洞,如 XSS、HTTP 头注入、操作重定向。
服务端的漏洞,如 SQL 注入、命令行注入、文件遍历。
以 SQL 注入漏洞检测为例,Burp 在检测过程中会采用各种技术验证漏洞是否存在,例如诱导时间延迟、强制修改 Boolean 值、与模糊测试的结果进行比较,以提高漏洞扫描报告的准确性。
2. 被动扫描
被动扫描只会根据爬虫获得的内容上进行分析,不会重新对域名进行请求攻击,可以得到比较具体的信息。当服务器正在运作时,可以使用该方式扫描,不会对网站造成损害。该方式精准度低于主动扫描,但是时间短,消耗资源小,影响小。
被动扫描在你需要扫描的网站上右键,点击发送到被动扫描模块。默认情况下,Burp Suite 运行时,Scanner 会自动进行被动扫描,当在爬取网页时,它会探测出简单少量的信息。
被动扫描容易检测出以下类型的漏洞:
提交的密码为未加密的明文。
不安全的 cookie 的属性,例如缺少 HttpOnly 和安全标志。
cookie 的范围缺失。
跨域脚本包含和站点引用泄露。
表单值自动填充,尤其是密码。
SSL 保护的内容缓存。
目录列表。
提交密码后应答延迟。
session 令牌的不安全传输。
敏感信息泄露,例如内部 IP 地址、电子邮件地址、堆枝跟踪等信息泄露。
不安全的 ViewState 的配置。
错误或不规范的 Content-Type 指令。
(二)扫描配置与结果分析
1. 扫描配置方法
(1)打开扫描启动页面:打开 Dashboard 标签页选择 New scan,新建扫描任务。打开扫描启动对话框后,在 URLs to scan 文本框填写目标网站地址,记得取消之前设置目标范围 target scope 时添加的过滤条件,其他选项保持默认。
(2)配置扫描参数:选择 Scan configuration 对 Burp Scanner 的各方面参数进行微调,以适应不同的测试用例和目标站点。初次学习可尝试 Use a preset scan mode(预设扫描模式),然后单击 Lightweight。轻量级扫描模式旨在尽可能快地对目标进行大致扫描,用时最多运行 15 分钟。
(3)设置扫描选项:在 Options 中可以设置扫描的规则选项、设置攻击插入点,检测敏感字段。设置扫描的引擎,设置主动和被动扫描的选项。具体包括 Attack Insertion Points、Active Scanning Engine、Active Scanning Optimization、Active Scanning Areas、Passive Scanning Areas、Static Code Analysis。
2. 分析扫描结果
(1)查看扫描进度和结果:在 Dashboard 标签页里可以实时查看扫描状态。爬取网站结束后,Burp Scanner 开始审计漏洞。点击左侧任务进度部分,右侧会展开任务相关信息。切换到任务详情的 issues 标签,就能查看扫描出的所有安全事件了。
(2)查看漏洞详情:随机选择一条安全事件记录,下面会出现 Advisory,也就是安全建议选项卡。选项卡内容包含有关事件类型的关键信息,包括安全事件的详细描述和一些补救建议。右侧几个选项卡是 Burp Scanner 发现此次安全事件的记录证据,通常是一个请求和响应。除了请求和响应外,有时也会需要其他选项卡的信息做参考。
(3)生成漏洞扫描报告:打开 Target > Site map 标签页,找到要生成漏洞扫描报告的站点入口,右键选择菜单项 Issues > Report issues。打开扫描报告的导出向导,然后自定义报告的格式和内容。选好扫描报告的保存位置确认即可生成并保存报告。导出扫描报告后可以直接在 Burp 浏览器查看。
四、核心功能之攻击
(一)定制化攻击工具
Burp Suite 的 Intruder 模块是一个强大的定制化攻击工具,用于对 Web 应用程序进行自动化攻击。它可以枚举标识符、收集有用的数据以及使用模糊测试技术探测常规漏洞。
Intruder 模块主要有四个组成部分:Target、Positions、Payloads 和 Options。Target 用于配置目标服务器进行攻击的详细信息,包括目标服务器的 IP 地址、端口号以及是否使用 HTTPS。Positions 设置 Payloads 的插入点以及攻击类型。Payloads 用于配置一个或多个有效载荷的集合,可以定义不同的有效载荷类型和处理规则。Options 包含了 request headers、request engine、attack results、grep match、grep_extrack、grep payloads 和 redirections 等选项,可以在发动攻击之前或攻击时对大部分设置进行修改。
(二)攻击方法与实践
攻击方法
Sniper(狙击手模式):将一组攻击载荷分别在每一个位置上逐个放入单个 payload 测试。例如,字典里有五个 payload,在请求模板上定义了两个 payload 位置,在修改时会把这五个 payload 分别放入第一个位置,再分别放入第二个位置,最后产生十个版本的请求。这种模式主要适用于竞争条件测试、密码和验证码暴力破解、重放攻击等场景。
Battering ram(攻城锤模式):遍历一组有效载荷,在所有定义的位置上放入同一个载荷。同样是五个 payload,两个位置,那一共会有五个版本的修改请求,每个版本的请求的两个位置上是同样的 payload。此模式主要适用于暴力破解,比如在用户名和密码相同的情况下。
Pitchfork(草叉模式):使用多组有效载荷,每个定义的位置使用一组不同的有效载荷。例如,两个位置、两组攻击载荷分别有 5 个 payload,第一次攻击将第一组的第一个 payload 放入与第一组对应的位置,将第二组第一个 payload 放入与第二组对应的位置;第二次攻击将第一组第二个 payload 放入相应位置,将第二组第二个 payload 放入对应位置。一共五个版本,五次攻击。适用于恶意注册等场景。
Cluster bomb(集束炸弹模式):同样使用多组有效载荷,每个定义的位置使用一组不同的有效载荷。与 Pitchfork 不同的是,攻击时,第一个位置放入第一组的第一个 payload 然后在第二个位置遍历第二组中所有的 payload,然后第一个位置再放入第一组的第二个 payload,第二个位置同样再遍历一次第二组的所有 payload,一直下去。例如,两个位置,第一组有两个 payload,第二组有三个 payload,会产生 2 * 3 = 6 次攻击请求。主要适用于账号、密码暴力破解。
实际案例
假设我们要对一个 Web 应用程序的登录页面进行暴力破解。首先,使用 Burp Suite 的 Proxy 工具捕获登录请求,然后将请求发送到 Intruder 模块。在 Intruder 的 Positions 选项卡中,我们可以手动指定用户名和密码字段为攻击点。如果我们选择 Sniper 模式,并且有一个包含常见用户名的字典和一个包含常见密码的字典,Intruder 会依次将用户名字典中的每个值放入用户名字段,同时保持密码字段不变,然后再对密码字段进行同样的操作。通过分析响应状态码、响应长度或响应体,我们可以判断是否成功破解了登录密码。
对于枚举标识符的场景,我们可以使用 Intruder 对一个 Web 应用程序的参数进行模糊测试。例如,我们可以通过修改请求中的某个参数的值,观察服务器的响应,以确定该参数是否存在漏洞或者是否可以被利用。通过不断尝试不同的值,我们可以收集到有用的数据,为进一步的渗透测试提供依据。
五、漏洞挖掘方法
(一)利用 Python 扩展
Burp Suite 可以通过安装 Python 扩展来实现更强大的功能和自动化漏洞挖掘。以下是安装步骤和使用方法:
1. 安装 Jython 运行环境
首先,从 Jython 官网(
https://www.jython.org/
)下载 Jython 运行环境。官网提供了多种版本供选择,用户可以根据自己的需求进行下载。下载完成后,按照安装向导进行安装,确保安装路径正确设置。
2. 导入 Jython 到 Burp Suite
安装完成 Jython 后,需要将其导入到 Burp Suite 中。在 Burp Suite 中,转到 “Extender” 选项卡,点击 “Options”。在 Python Environment 配置项中,点击 “Select file”,选择 Jython 的安装目录下的 Jython.jar 文件。这样,Burp Suite 就可以识别并使用 Jython 环境了。
3. 使用 Python 脚本进行自动化漏洞挖掘
安装好 Python 扩展后,可以使用 Python 脚本进行自动化漏洞挖掘。例如,可以通过编写 Python 脚本来实现以下功能:
获取当前页面的请求结果:
import requests
# 这里填写非https的网站
target_url = 'http://xxxxx.com'
burp_proxy = {'http': 'http://127.0.0.1:8080', 'https': 'http://127.0.0.1:8080'}
# 通过 Burp 代理发送 HTTP 请求
response = requests.get(target_url, proxies=burp_proxy)
print(response.content)
复制代码
处理 HTTPS 网站:
import requests
import json
复制代码
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2