Burp Suite 官网 :https://portswigger.net/burp
Burp Suite 文档目录:https://portswigger.net/burp/documentation/contents
官方文档:https://portswigger.net/burp/documentation/desktop
1、安装
burpsuite 是攻击 Web 应用程序的集成平台。功能强大,是渗透测试神器。。。
汉化 绿色版
BurpSuite 汉化无 cmd 框版(2024.11.03):https://www.52pojie.cn/thread-1544866-1-1.html
官网 英文版
自己从官网下载并安装。
下载 Burpsuite pro
下载地址:https://portswigger.net/burp/releases 下载 jar 文件
Java 环境
方法 1:下载 java,并配置 Java 环境变量
Oracle java 下载:https://www.oracle.com/cn/java/technologies/downloads/1. 下载并安装 java。( java8 需要配置 classpath,java11+ 不需要配置 classpath )
2. 我本地 Java 安装路径是 C:\Program Files\Java
3. 配置环境变量。配置 jdk 环境:
- 添加系统环境变量 JAVA_HOME:C:\Program Files\Java\jdk-11.0.12
- 添加到 Path:.;%JAVA_HOME%\bin;
4. 验证是否安装成功。win + r ---> cmd ,然后输入 java -version
方法 2:下载 java (推荐),不用配置 Java 环境变量
将 jdk 和 BurpLoaderKeygen.jar、burpsuite_*.jar 同一目录下
执行 注册机时,注册机就会使用当前目录下的 Java 执行。
Burpsuite pro 注册
注册 工具:https://github.com/h3110w0r1d-y/BurpLoaderKeygen/releases
BurpSuite 注册教程:https://www.52pojie.cn/thread-1953331-1-1.html
BurpSuite 光标错位修复:https://www.52pojie.cn/thread-1908732-1-1.html
1. 把下载的工具 BurpLoaderKeygen.jar 移动到 Burpsuite 相同目录下。
2. 双击 BurpLoaderKeygen.jar,点击 Run,burp 运行。
打开jar闪退,无打开方式,无反应:https://blog.csdn.net/yzl_007/article/details/109410410
3. 把 BurpLoaderKeygen.jar 中的 Liscense 内容复制到出现的窗口中,点击下一步。
4. 点击 NEXT,再次点击 Mannal Activation
5. 选择 copy request,复制到 Activation Request 中,返回 Activation Response 值。
6. 把 Activation Response 值再复制到 burp 中,点击 Next。
7. 注册成功。
安装 ca 证书
:https://blog.csdn.net/qq_45300786/article/details/106881575
1. 浏览器设置代理 127.0.0.1:8080
2. 访问 http://burp 下载证书
3. 浏览器导入证书
firefox 导入证书 步骤:
chrome 导入证书 步骤:
4. 重启浏览器,证书生效
为什么 要导入 证书
抓包工具抓包时,都需要导入抓包工具自己的证书。
HTTPS握手过程
- 客户端发出请求(ClientHello): 客户端向服务端发起加密通信的请求
- 服务器回应(SeverHello): 服务器收到客户端请求后,确认加密通信协议版本是否一致,如果版本一致则返回服务器证书,否则关闭加密通信
- 客户端回应:客户端收到服务器回应后,客户端首先验证证书是否有效。如果证书失效,则会给访问者一个警示,由其决定是否继续连接。如果证书没失效,则使用证书中的公钥加密一个随机数(pre-master key)返回给服务器,同时返回客户端握手结束通知。
- 服务器的最后回应:服务器收到客户端发来的pre-master key后,计算生成本次会话的“会话密钥”,向客户端发送服务器握手结束通知。
- 整个握手阶段结束。接下来,客户端与服务器进入加密通信。
客户端校验证书的合法性
- 首先浏览器读取证书中的证书所有者、有效期等信息进行校验,校验证书的网站域名是否与证书颁发的域名一致,校验证书是否在有效期内
- 浏览器开始查找操作系统中已内置的受信任的证书发布机构CA,与服务器发来的证书中的颁发者CA比对,用于校验证书是否为合法机构颁发
- 如果找不到,浏览器就会报错,说明服务器发来的证书是不可信任的。
- 如果找到,那么浏览器就会从操作系统中取出颁发者CA 的公钥(多数浏览器开发商发布
版本时,会事先在内部植入常用认证机关的公开密钥),然后对服务器发来的证书里面的签名进行解密- 浏览器使用相同的hash算法计算出服务器发来的证书的hash值,将这个计算的hash值与证书中签名做对比
- 对比结果一致,则证明服务器发来的证书合法,没有被冒充
为什么要用证书
知道什么是证书之前需要了解下 “非对称加密”
- 对称加密:客户端和服务器用一个秘钥加密和解密,效率高
- 非对称加密:将公钥公布于众,客户端拿公钥加密,服务器拿自己的私钥解密,这样即使数据被截获,别人也解密不出明文内容,效率低。
非对称加密有两个秘钥,公钥和私钥,而这两个秘钥只要用一个加密,另一个就能解密,我们正常加密数据用公钥加密,用私钥解密
而我们还有一种用法就是服务器发数据用私钥加密,客户端用公钥解密,那么客户如果用公钥正确解密出数据,那么就证明这个数据一定是服务器发的,因为私钥只有它知道,这个过程我们一般不叫加密,叫签名,也就是服务器对数据签个名,代表这个确确实实是它发的。
其实我们正常情况下因为对称加密效率虽高,但是不安全,因为它告诉对方秘钥的时候这个秘钥容易被截获,但是我们如果用非对称加密,安全是安全,效率又太低,所以一般采用对称加密来加密数据,非对称加密配送对称加密的秘钥。
因为公钥是在网络上进行传输的,那么假如遭遇了如下图所示的中间人攻击,那么A的私钥就可能是伪造的。那么如何验证公钥的合法性呢?------ 证书
什么是证书
证书就是由认证机构,采用它们自己的私钥,对发送方的公钥和发送方的信息进行数字加密。各大CA(认证机构)的证书已经默认被添加到了浏览器和操作系统中。
- 服务器生成自己的密匙对——公钥和私钥
- 服务器在认证机构注册自己的公钥
- 认证机构(CA)用自己机构的私钥对,服务器的公钥进行数字签名并生成证书(里面带了这个签名过得公钥和服务器一些信息)
- 认证机构把证书给客户端
- 客户端用认证机构的公钥验证数字签名
- 认证成功后用里面带的服务器的公钥加密并发消息给服务器
- 服务器用自己的私钥解密
这样一来就可以解决数据传输的安全问题了
问题:
- 如果黑客在第二步服务器在认证机构注册公钥的时候截取数据呢?这个完全不用担心,CA证书的申请,流程很多,而且较为严格,比如准备很多文件,再比如CA那边如果通过后还会要申请方这边的管理员验证之类的。
- 第五步的认证机构的公钥咋传输的?如果黑客改了呢?如果改了那么这个证书就不会验证成功,其实各大CA的公钥已经在系统和浏览器中内置了。看下边的例子:百度的证书信息:
为什么要导入抓包工具的证书
如果用过 Charles、Fiddler 或者其它抓包软件,那么一定对抓 HTTPS 包需要导入抓包软件的证书的流程不陌生,那么为什么它能解密 HTTPS 数据,为什么它需要导包呢?看以下流程:
- 客户端发一个HTTPS请求,然后被Fiddler拦截,并且Fiddler伪装成客户端发送请求给服务器
- 服务器 向 "假装成客户端的FIddler" 返回了CA证书,Fiddler 就获取到了服务器的公钥。
- Fiddler 制作一张证书( 包含假的公钥 ),然后假装成服务器,给客户端发了自己做的证书。
- 客户端生成对称秘钥,并用 Fiddler 假冒的公钥加密发送
- Fiddler用自己的私钥解密获取对称秘钥
- ……
这样的话 Fiddler 能完全获取解析到双方加密的数据。
示例:当我们正常访问百度,查看证书:
开启 Fiddler 后查看证书:
2、burpsuite 教程
2.1 burpsuite 入门
入门文档:https://portswigger.net/burp/documentation/desktop/getting-started
Burp Suite 包括一系列自动和手动工具,可以在渗透测试工作流程中使用这些工具。入门教程旨在教您如何使用 Burp Suite 来:
- 映射您的目标应用程序。
- 分析攻击面。
- 测试一系列漏洞。
通过入门教程可以大致了解典型的渗透测试工作流程。可以使用官网提供的故意易受攻击的网站进行练习。
- Web Security Academy (注册免费):http://Web Security Academy
- ginandjuice.shop:https://ginandjuice.shop/
Proxy --- 拦截 http、https
burpsuite 可以拦截 浏览器和目标服务器之间发送的 HTTP 的 request 和 response
- 启动 Burp 自带的浏览器:单击 打开浏览器。这将启动 Burp 自带的浏览器,该浏览器已预先配置为开箱即用地使用 Burp。
- 拦截请求:首先打开拦截 ( intercept is on ),然后使用 Burp 自带的浏览器 ( 也可以使用其他浏览器,使用其他浏览器时需要手动配置代理和证书 ) 访问 https://portswigger.net 。可以看到浏览器发出的HTTP请求,在到达服务器之前被拦截了。
- 转发请求:单击“转发”按钮几次以发送截获的请求以及任何后续请求,直到页面加载到Burp的浏览器中。
- 关闭 拦截:由于浏览器通常发送的请求数量众多,您通常不希望拦截其中的每一个。单击 “intercept is on” 按钮,使其现在显示 “intercept is off”。返回浏览器并确认您现在可以像往常一样与网站进行交互。
-
查看 HTTP 历史记录:Proxy > HTTP history (代理 HTTP 历史记录) 选项卡。在这里可以查看通过 Burp Proxy 传递的所有 HTTP 流量的历史记录,即使拦截已关闭。
Proxy --- 修改 request (请求)
在 Burp 中,转到 Proxy > Intercept 选项卡,并确保拦截已关闭。启动 Burp 内置浏览器访问 URL:https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-excessive-trust-in-client-side-controls
加载页面后,单击 Access the lab(访问实验室)。如果出现提示,请登录您的 portswigger.net 账户。几秒钟后,您将看到自己的虚假购物网站实例。
在购物网站上,单击 My account 并使用以下凭据登录:
用户名:wiener
密码:peter
请注意,您只有 100 USD 的商店积分。
- 浏览要购买的产品,在要添加到 购物车这个动作之前,打开拦截,然后点击添加购物车,可以看到已经拦截到请求,并注意到正文中有一个名为 price 的参数,该参数与商品的价格(以美分为单位)相匹配。然后将 price 参数的值更改为 1,
- 然后单击 "转发" 将修改后的请求发送到服务器。再次关闭拦截,以便任何后续请求都可以不间断地通过 Burp 代理。或者简单粗暴,直接单击 Forward > Forward all 可以将修改后的请求与任何其他拦截的请求一起发送到服务器。
- 在 Burp 的浏览器中,单击右上角的购物篮图标,查看购物车。可以看到添加成本仅为一美分。
- 点击下单按钮,就可以以修改后的价格购买夹克。
上面就是使用 burpsuite 进行 "代理拦截、查看和操作 HTTP 流量"。
设置目标范围
目标标范围会告诉 Burp 您要测试的 URL 和主机。这使您能够过滤掉浏览器和其他网站产生的噪音,以便您可以专注于您感兴趣的流量。操作步骤:
- 浏览目标站点:在浏览器中,通过单击几个产品页面来浏览该网站。
- 研究 HTTP 历史记录:在 Burp 中,转到 Proxy > HTTP history (代理 HTTP 历史记录) 选项卡。为了使其更易于阅读,请按住最左侧列 (#) 的标题,直到请求按降序排序。这边 您可以在顶部看到最近的请求。
- 设置目标范围:转到 Target > 站点地图。在左侧面板中,您可以看到浏览器与之交互的主机列表。右键单击目标站点的节点,然后单击 Add to scope。当弹出窗口中出现提示时,单击 Yes (是) 以排除范围外的流量。
- 过滤 HTTP 历史记录:单击 HTTP 历史记录上方的显示筛选器,然后选择 Show only in-scope items(仅显示范围内的项目)。向后滚动浏览 HTTP 历史记录,可以看到现在仅显示来自目标网站的条目。所有其他条目均已隐藏。这大大简化了历史记录,以仅包含您感兴趣的项目。如果您继续浏览目标站点,超出范围的流量不再记录在站点地图或代理历史记录中。
Repeater --- 再次 (重放) 请求
右键单击任何请求,然后选择 “Send to Repeater”
就可以在 Repeater 选项上看到要重放的请求,单击 Send 并查看来自服务器的响应。
可以根据需要多次重新发送此请求,每次都会更新响应。使用箭头在您发送的请求的历史记录及其匹配的响应之间来回移动。每个箭头旁边的下拉菜单还允许您跳转 添加到历史记录中的特定请求。这对于返回到您之前发送的请求以进一步调查特定输入非常有用。
尝试发送意外输入
服务器似乎希望通过此参数接收整数值。让我们看看如果我们发送不同的数据类型会发生什么。
发送另一个请求,修改 productId 值为字符串 testtest
运行 扫描 网站
Burp Scanner 既可以用作全自动扫描仪,也可以用作增强手动测试工作流程的强大手段。Burp Scanner 可以检测到的漏洞列表不断增长。
扫描网站包括两个阶段:
- 内容和功能的爬网:Burp Scanner 首先在目标站点周围导航,密切反映真实用户的行为。它对结构和内容进行了编目 以及用于导航的路径,以便构建该站点的综合地图。
- 漏洞审核:扫描的审计阶段涉及分析网站的行为,以识别安全漏洞和其他问题。Burp 扫描仪 采用广泛的技术来提供对目标的高覆盖率、准确的审计。
下面开始了解如何启动一个自动漏洞扫描。
打开扫描启动器:转到 仪表板 ( Dashboard ),然后选择 新建扫描 ( New scan),扫描类型选择 "Crawl(爬虫) and audit(审计)"
在 URL to scan 字段中输入url 地址:https://ginandjuice.shop/
如果设置的有目标范围则先删除。
其他设置暂时保留为默认值。
在 Scan configuration 中,单击 轻量级。轻量级扫描模式旨在尽快提供目标网站非常高级的概览。使用此模式的扫描最多可运行 15 分钟。
单击 OK 启动扫描。这时会将新任务添加到仪表板,同时 Burp Scanner 会从输入的 URL 开始爬取并实时显示一些关键信息。可以选择任务以查看有关其状态及其当前正在执行的操作的更多详细信息。
查看爬网的实际效果
转到 “目标>站点地图”选项卡,并注意 的新条目。展开此节点以查看爬网程序到目前为止已成功发现的所有内容。如果等待几秒钟,您将看到地图正在实时更新
查看已识别的问题
在仪表板中监视扫描的状态。一两分钟后,爬网将完成,并且 Burp 扫描程序将开始审核漏洞。当它发现问题时,这些问题将显示在“仪表板”选项卡上的“问题活动”面板中。
任意选择一个问题点击,可以看到“通报”选项卡,其中包含有关问题类型的关键信息,包括详细说明和一些补救建议。旁边是几个选项卡,这些选项卡提供了Burp扫描仪发现此问题的证据。这通常是请求和响应,但会因问题类型而异。
生成报告:转到“目标>站点地图”选项卡,右键单击 的条目,然后选择“问题”>“报告此主机的问题”。
查看和共享报表:在 Burp 的浏览器中打开报表以查看其中包含的内容。这对于向同事或客户报告扫描结果非常有用。
生成报告
转到 Target > 站点地图 选项卡,右键单击 的条目,然后选择 问题 > 报告此主机的问题。向导将指导您完成可用选项,例如要包含的详细信息量。现在,只需单击 Next (下一步) 接受默认值,直到系统提示您输入报表的文件名和位置。单击 Select file 并选择要保存报告的位置。输入文件的名称。生成的报告可以在 Burp 的浏览器中打开查看。这对于向同事或客户报告扫描结果非常有用。
2.2 burpsuite 所有功能
burpsuite 所有功能详解:https://portswigger.net/burp/documentation/desktop/tools
功能 目录
- Dashboard (看板)
- Burp's browser (内置浏览器)
- Proxy (代理)
- Repeater (重放器)
- Intruder (入侵)
- Target (目标)
- Inspector (检查员)
- Message editor (消息编辑)
- Collaborator [Pro only] (合作、协作)
- Logger (日志)
- Sequencer (音序器)
- DOM Invader (DOM入侵者)
- Clickbandit (强盗、盗取)
- Comparer (比较)
- Decoder (解码)
- Engagement tools (互动/交互 工具)
- Infiltrator ( 渗入者,渗透者)
- Organizer (组织者、承办单位)
- Search (搜索)
- Context menu (上下文菜单)
- Filter settings (过滤设置)
功能说明
- Dashboard (控制面板) - Dashboard (控制面板) 选项卡提供了一个中心位置,用于监控和控制项目中的所有自动化任务,例如漏洞扫描或实时任务。
- 目标 - 包含扫描目标的详细信息,它允许您定义哪些目标在你当前工作的范围内,还允许你推动漏洞测试过程。
- Burp 浏览器 - 此浏览器经过预配置,可立即使用 Burp Suite 的全部功能。
- 代理 - 这是一个拦截 Web 代理,在终端浏览器和目标 Web 应用程序之间充当中间人。它允许您拦截、检查和修改双向传递的原始流量。
- 扫描器 [专业版] - 这是一个高级的 Web 漏洞扫描程序,可以自动抓取内容并审核多种类型的漏洞。扫描器根据配置会自动执行扫描网站内容和漏洞的任务。默认情况下,所有扫描都将使用 Burp 内置的浏览器,以确保通过浏览器驱动的扫描实现最大覆盖范围。
- 入侵者 - 这是一个强大的工具,用于对 Web 应用程序执行自动化自定义攻击。它是高度可配置的,可用于执行各种任务,使您的测试更快、更有效。
- Repeater - 这是一个用于手动操作和重新发送单个消息以及分析应用程序响应的工具。
- Sequencer - 这是一个复杂的工具,用于分析应用程序的会话令牌或其他不可预测的重要数据项中的随机性质量。
- Decoder - 这是对应用程序数据执行手动或自动解码和编码的有用工具。
- Comparer - 这是一个方便的实用程序,用于在任意两项数据(例如,相似的 HTTP 消息对)之间执行可视化“差异”。
- 记录器 - 这是用于记录和分析 Burp Suite 生成的 HTTP 流量的工具。
- Inspector - 这为分析和编辑 HTTP 和 WebSockets 消息提供了一些有用的功能。
- 合作者 专业的- 这是一个用于识别带外漏洞的手动工具。
- DOM Invader - 这是一个用于查找 DOM XSS 漏洞的工具。
- Clickbandit - 这是生成 Clickjacking 攻击的工具。
- 消息编辑器 - 这是一个用于查看和编辑整个 Burp 中的 HTTP 请求和响应的工具。
- 互动工具 专业的- 配置各种与互动相关的任务。
- 搜索 - 这是在 Burp Suite 中执行搜索的工具。
- Infiltrator - 这是一个工具,用于检测 Burp 的输入是否被传递给可能不安全的 API。
- 管理器 - 这是一个工具,用于存储和批注您稍后要调查的 HTTP 消息。
- 上下文菜单 - 上下文菜单提供对整个 Burp Suite 中各种工具和功能的快速访问。
- Filter settings (筛选设置) - 这些设置使您能够筛选各种 Burp Suite 工具中显示的消息。
scan (扫描)
Proxy (代理)
Intruder (入侵、爆破、攻击)
Burp Intruder 是一个强大的工具,用于对网站执行高度可定制的自动化攻击。它能够配置一遍又一遍地发送相同请求的攻击,每次将不同的有效负载插入预定义的位置。此外还可以使用 Intruder
- Fuzz 用于基于输入的漏洞。
- 执行暴力攻击。
- 枚举有效标识符和其他输入。
- 收集有用的数据。
具体内容
Repeater (重放)
用于手动操作和重新发出单个HTTP请求,并分析应用程序的响应。可以从Burp中的任何位置向中继器发送请求,修改请求并一遍又一遍地发出请求。
Sequencer (序列)
序列器是一种用于分析数据项样本中随机性质量的工具。您可以使用它来测试应用程序的会话令牌或其他不可预测的重要数据项,例如反 CSRF 令牌、密码重置令牌等。
Decoder (解码)
解码器是一个简单的工具,用于将编码数据转换为其规范形式,或将原始数据转换为各种编码和散列形式。它能够使用启发式技术智能地识别多种编码格式。
Compare (对比、比较)
比较器是一个简单的工具,用于在任意两个数据项之间执行比较(视觉“差异”)
可以通过以下方式将数据加载到比较器中:
- 将其直接粘贴到剪贴板中。
- 从文件加载它。
- 选择Burp中任意位置的数据,然后从上下文菜单中选择“发送到比较器”。
比较器的一些常见用途如下:
- 查找用户名枚举条件时,可以使用有效和无效的用户名将响应与失败的登录进行比较,以查找响应中的细微差别。
- 当入侵者攻击导致一些非常大的响应,其长度与基本响应不同时,您可以比较这些响应以快速查看差异所在。
- 在比较不同类型的用户生成的站点地图或代理历史记录条目时,您可以比较成对的相似请求,以查看导致不同应用程序行为的差异所在。
- 使用布尔条件注入和其他类似测试测试盲目 SQL 注入 Bug 时,可以比较两个响应,以查看注入不同的条件是否导致了响应的相关差异。
Logger (日志)
用于记录 Burpsuite 套件生成的所有 HTTP 流量,用于调查和分析,但特别适用于:
- 调查如果 Burpsuite 产生意外结果会发生什么。
- 查看当您的工作涉及会话处理时,Burp Suite正在发送的内容的详细信息。
- 确保长期正在进行的任务(如后台扫描)仍在运行。
- 分析需要了解 Burp Suite 正在做什么的任何问题。
Extender (扩展)
扩展选项 允许您通过安装社区创建的扩展来增强 Burp的功能,甚至可以编写自己的扩展。
通过 扩展( 插件 ),可以自定义和扩展 burpsuite 的行为。这些可能包括:
- 修改 HTTP 请求和响应。
- 发送其他请求。
- 自定义 打嗝套件 的界面。
- 向打嗝扫描仪添加额外的检查。
- 从打嗝套房访问信息。
具体 内容
- Installing extensions
- Managing extensions
- Monitoring system impact
- Viewing requests sent by Burp extensions using Logger
- BCheck custom scan checks
- Bambdas
- Creating extensions
- BApp Store acceptance criteria
- Submitting extensions to the BApp Store
- Montoya API
- Extender API (Legacy)
- Creating BChecks
- Submitting BChecks to the communit
Project options (项目配置)
Setting (设置)
详细 信息
- Key settings
- Tool settings
- Project settings
- Session settings
- Network settings
- User interface settings
- Suite settings
- Extensions
- Configuration library
- Response extraction rules
User options (用户配置)
2.3 Burp 教程
Burp Suite 实战指南
- :https://t0data.gitbooks.io/burpsuite/content/
- :https://blog.csdn.net/qq_41691212/article/details/122639862
拦截 HTTP 请求和响应
增强手动测试
重新发送单个请求
扫描网站,查找漏洞
使用 实时 任务
使用 Burp Suite 项目
使用 Burp Suite 项目选项
浏览 Burp Suite 用户界面
使用 Proxy 的拦截规则
使用 目标 范围
测试 WebSocket
减少手动测试期间的噪音
使用 Burp Intruder 强制登录
使用 Burp Intruder 枚举子域
使用 Logger 查看 Burp 扩展发送的请求
使用 Repeater 测试反射型 XSS
使用 代理匹配和替换欺骗您的 IP 地址
使用 Intruder 填充凭证
使用 Collaborator 测试异步漏洞
- Intercepting HTTP requests and responses
- Augmenting manual testing using Burp Scanner
- Resending individual requests with Burp Repeater
- Scanning a website for vulnerabilities
- Using live tasks in Burp Suite
- Using Burp Suite projects
- Using Burp Suite project options
- Touring the Burp Suite user interface
- Using Burp Proxy's interception rules
- Using target scope in Burp Suite
- Testing WebSockets with Burp Suite
- Reducing noise during manual testing
- Brute forcing a login with Burp Intruder
- Enumerating subdomains with Burp Intruder
- Viewing requests sent by Burp extensions using Logger
- Testing for reflected XSS using Burp Repeater
- Spoofing your IP address using Burp Proxy match and replace
- Credential stuffing using Burp Intruder
- Testing for asynchronous vulnerabilities using Burp Collaborator
2.4 我该怎么做
设置 目标 范围
保存 我的 工作
搜索
使用 自定义 配置
安排任务
比较站点地图
使用内容发现
测试移动应用程序
测试 WebSocket
使用 HTTP/2 测试网站
- Set the scope
- Save my work [Pro only]
- Search [Pro only]
- Work with custom configurations
- Schedule tasks
- Compare site maps
- Use content discovery
- Test mobile applications
- Test WebSockets
- Test a website using HTTP/2
2.5 有用的功能
消息 编辑器
检查
Burp 内置的浏览器
Burp Collaborator 客户端
网址 匹配 规则
CSRF PoC 生成器
查看 所有 有用的功能
- Message editor
- Inspector
- Burp's browser
- Burp Collaborator client [Pro only]
- URL matching rules
- CSRF PoC generator
- View all useful functions
2.6 burp 扩展 功能
查看 所有 扩展
创建 自定义 扩展
2.7 选项、偏好 设置
:Burp Suite options - PortSwigger
2.8 训练、练习
:Burp Suite Training - PortSwigger
2.9 故障排查
:Troubleshooting common errors within Burp Suite - PortSwigger
3、BurpSuite 插件推荐
From:https://blog.csdn.net/qq_28205153/article/details/113829654
BurpSuite-collections ( 有关 burpsuite 的插件(非商店),文章以及使用技巧的收集 ):https://github.com/Mr-xn/BurpSuite-collections
BurpSuite 是最强大的 Web 渗透工具,没有之一!它也是日常中用得最多的工具,它有一些强大的插件可以帮忙减少大量的工作量以及更好地挖掘漏洞,今天分享下我常用的一些 burp 插件。
Autorize --- 强大的越权自动化测试工具
如果你在测试越权的时候,还是手动把URL复制到另一个浏览器的低权限账号中来打开,你就 out了!Autorize 是一个测试权限问题的插件,可以在插件中设置一个低权限账号的 cookie ,然后使用高权限的账号去浏览所有功能,Autorize 会自动用低权限账号的 cookie 重放请求,同时也会发一个不带 cookie 的请求来测试是否可以在未登录状态下访问。
该插件可以直接在 Bapp Store 安装。
Turbo Intruder --- 短时间发送大量请求
如果你还在用 burp 的 intruder 功能来爆破密码,测试并发,爆破目录那你就 out 了!
Turbo Intruder 是 Intruder 的增强, 它可以在短时间内发送大量的 http 请求,具体速度取决于你的网速,即使在比较差的公共网络下,它也能每秒发送几百个请求。
使用 Turbo Intruder 我们可以在几分钟内爆破完百万级的密码字典和目录字典,也可以在一瞬间发送几十个并发请求来测试并发漏洞。
该插件可以直接在Bapp Store 安装。
在要插入 payload 的地方加个 %s ,然后在下面窗口添加自定义的处理脚本即可开始爆破。
Software Vulnerability Scanner --- 自动根据版本号查找 CVE
一个扫描器增强插件,它会检查网站的一些软件版本信息,然后通过 vulners.com 上的漏洞数据库来查询相应的 CVE 编号,找到的结果会显示在漏洞面板上,不用我们自己手动去查找某个版本的 CVE 。
该插件可以直接在Bapp Store 安装。
Scan Check Builder --- 自定义扫描 payload
Scan Check Builder 就是 Burp Bounty ,它提供了十分的简单的方式去为 burp 的扫描功能添加自定义的扫描 payload 。 这样我们可以对一些 burp 没有覆盖到的漏洞添加 payload,并生成相应的漏洞扫描结果。
该插件可以直接在Bapp Store 安装。
Logger++ --- 更强大的请求历史查看器
Logger++ 可以查看所有工具发出的请求,如 repeater, intruder, scanner, 插件等。这样我们可以查看到扫描时的一些 payload,以及在扫描时监控网站后台的响应情况。
该插件可以直接在Bapp Store 安装。
Brida --- 连接 frida 与 burpsuite
Brida 是我很喜欢的一个插件,它可以连接 frida 与 burpsuite ,hook 神器 frida 在移动 APP 的渗透上发挥着很重要的作用,如绕过 ssl pinning , 自动加解密 APP 的请求内容等。我们可以把一些常用的 frida 脚本放在 Brida 的脚本上,然后通过 Brida 启动 APP来进行渗透。后续可能会写一篇文章来介绍怎样使用 Brida。
该插件可以直接在Bapp Store 安装。
J2EEScan --- 强大的 J2EE 后台扫描插件
J2EEScan 是一个扫描器增强插件,可以通过该插件扫描 J2EE 漏洞,如 weblogic、struts2 、 jboss 等漏洞。唯一不足是停止更新了,只有17年的漏洞
该插件可以直接在Bapp Store 安装。
sqlmap4burp++ --- 连接 burpsuite 与 sqlmap
sqlmap4burp++是一款兼容Windows,mac,linux多个系统平台的Burp与sqlmap联动插件。可以方便地对请求调用 sqlmap 来扫描。
该插件地址如下:https://github.com/c0ny1/sqlmap4burp-plus-plus
Knife --- 工具箱、自定义 payload
Knife 插件的主要的目的是对burp做一些小的改进,更加方便使用。个人比较喜欢它的 dissmiss 功能和 hackbar ++ 功能, dissmiss 可以方便让 burp 不拦截某个域名的请求,而 hackbar++ 有很多 payload ,可以方便地在 repeater 中插入 payload, 而且可以添加自定义的插入 payload。
插件的地址是:https://github.com/bit4woo/knife
CSRF Token Tracker --- 绕过CSRF限制
CSRF Token Tracker 可以自动获取 csrf 的 token,对于一些有 csrf 限制的请求,它可以绕过该限制,如暴力PJ具有 csrf token 的登录请求。
该插件可以直接在Bapp Store 安装。
JSON Beautifier --- 格式化查看 json
格式化 json 格式的数据,在查看 json 请求时十分好用。
该插件可以直接在Bapp Store 安装。
Decompressor --- 自动解码和修改 gzip 压缩包
Decompressor 可以自动解码和修改使用 gzip 压缩过的请求数据。有时候网站发送的数据是使用 gzip 压缩过的,使我们在 burp 上看到的请求是乱码,并且无法修改请求数据,Decompressor 可以帮我们自动解码来查看,并且可以以未压缩的方式修改数据,然后再自动进行压缩。
该插件可以直接在Bapp Store 安装。
Wsdler --- 测试 WSDL 请求
Wsdler 可以解析 WSDL 请求,以便使用 repeater 和 scanner 对 WSDL 请求进行测试。
该插件可以直接在Bapp Store 安装。
4、Brida 操作指南
github:GitHub - federicodotta/Brida: The new bridge between Burp Suite and Frida!
Brida 操作指南:https://bbs.pediy.com/thread-248977.htm
大家如果经常做APP安全测试的话,抓包应该经常会遇到加密或者需要sign
的请求,然后这个时候就很蛋疼,一般的做法可能就是需要自己去逆算法扣代码解包拼包来写fuzzer
。
再坑爹一点的,APP加个固,算法混个淆,鬼才看得懂,但是老板分配的任务又他娘的不能shift+del
,然后就花了两天(像我这种拖延症,不重要的事情一般其实是两周)时间撸一遍算法,最后用5分钟来发包发现0高0中0低,内心:wtm....
Brida
就是用来解决这个问题的,仅需20分钟,加密、解密、Fuzz、Scan一条龙服务。
- Brida 是一个 Burp 的插件,BurpSuite 不用说了吧,大家懂的。
- Brida 是一座连接Burp和Frida的桥,Frida也不用说了吧,roysue ( r0ysue · GitHub ) 写过好几次了。
- Brida 教程 ( https://techblog.mediaservice.net/2018/04/brida-a-step-by-step-user-guide/ ) 。
Burp 安装 Brida 插件
- 1. 安装 Python3、Pyro4( pip install pyro4 ) 和 frida( pip install frida )
- 2. 安装 Node.js、npm、frida-compile ( npm install frida-compile@9 )。 10版本的frida-compile有问题
- 3. Burp -> Extender -> BApp Store -> Brida -> Install
启动 frida-server
进入手机 shell 终端,启动 fridaserver,这里使用 fridaUiTools 启动
启动 Pyro4 server 和 app
- 填好 Python 路径
- Start server:这个会调用 Python 的 Pyro4库起一个套接字,host和端口也可以自己配置,后面写 Proxy 就是在这个端口上拿数据。
- JS file 可以选择点击 default script,然后随便找个地方存,待会再用编辑器写 RPC 脚本。
- Application ID 写上 APP 的包名。
- 上面设置好后,点击功能区的 Spwan application,这时就会打开你手机上的 APP。
填写目标APP包名,点击"Start server" 以及"Spawn application"或"Compile&Spawn"。当红字都变绿时说明环境配置成功。
使用 Brida 操作加密数据包
使用Brida对数据包加密的APP进行漏洞挖掘:http://www.hackdig.com/05/hack-363252.htm
android apk通过 brida与frida工具进行流量加解密:android apk通过 brida与frida工具进行流量加解密_brida console.log-CSDN博客
Android渗透测试frida——Brida插件加解密实战演示:Android渗透测试frida——Brida插件加解密实战演示 - 网安
现在有一个目标APP,抓取数据包,发现数据包中的字段已进行加密。
反编译 apk 分析加解密算法
编写 brida.js 文件
选中菜单:"Brida"—"JS Editor"—"Load JS file",选中brida.js文件。
在 jbrida.js 文件的特定位置,编写我们代码对我们反编译分析得到的加解密算法进行调用,实现对加密数据的解密
encrypt: function (dec) {
console.log("Brida Java Starting script ---->ok");
var enc;
Java.perform(function () {
var key = "9876543210123456";
var AesEncryptionBase64 = Java.use('com.ese.http.encrypt.AesEncryptionBase64');
console.log("Brida start : encrypt before--->" + dec);
enc = AesEncryptionBase64.encrypt(key, dec);
console.log("Brida start : encrypt after--->" + enc);
return enc;
}
},
decrypt:function (enc) {
console.log("Brida start :0--->" + message);
var text;
Java.perform(function () {
try {
var key = "9876543210123456";
//hook class
var AesEncryptionBase64 = Java.use('com.ese.http.encrypt.AesEncryptionBase64');
console.log("Brida start : AesEncryptionBase64 ---> success");
console.log("Brida start : decrypt before--->" + enc);
//hook method
text = AesEncryptionBase64.decrypt(key, enc);
console.log("Brida start : decrypt after--->" + text);
} catch (error) {
console.log("[!]Exception:" + error.enc);
}
});
console.log("Brida start : decrypt after--->" + text);
return text;
}
编辑好代码后,分别点击"Save JS file"和"Compile&reload JS",没有报错就说明此处暂时没问题。
调试编写的加解密函数
当brida.js文件编写完成后,可通过"Debug export"模块来对刚才编写的代码进行测试,验证是否和期望的结果相同。
Custom plugins 配置与使用
操作菜单:"Brida"—"Custom plugins"
插件开启过后,我们可以在插件处选择"open debug window"打开调试输出窗口,然后再抓取数据包,可以查看到插件的运行情况。
通过以上操作,我们可以发现我们的自动加密插件已经生效。接下来再来完成一下自动解密插件的设置。
再抓取加密数据包,查看抓包记录如下:
登录加密数据包爆破
爆破结果:
找算法
相比较算法还原,相信算法在哪里这个问题对各位来说应该不是什么多大的问题。不过,Brida提供了一个很方便的操作:插桩
切换到 Analyze Binary,点击 Load tree,然后可能会卡一会,因为在加载类列表,加载完点开Java,可以看到这个进程里的所有类,
一般在这就直接搜 crypt,然后他就会卡更久,因为这个智障把 SO 里的导出导入函数也搜了一个遍,最后可以 右键 -> Inspect,把可疑的给 hook 住。然后让他发包,如果方法被调用了就会打出日志,运气好的话直接就找到他的加解密函数了,
调用算法
这里就是编辑那个js脚本了,可以看到代码里的rpc.exports
里帮你写了四个contextcustom
,这四个是给右键菜单预留的,contextcustom1、contextcustom2
会出现在repeater
等模块中request
的右键菜单,contextcustom2、contextcustom3
则会出现在response
的右键菜单。主要就是为了实现手动加解密的功能,就是这样:
值得注意的是,这四个函数接收的参数都是hex形式的,所以返回的时候也要转成hex再传出去。
当然你可以自己在rpc.exports
添加函数,然后再contextcustom
里调就可以了,只要是在这里面的,后面都可以在API中被调用到。
具体代码可以看 github ( 直接搜 brida ):GitHub - hookmaster/frida-all-in-one: 《FRIDA操作手册》by @hluwa @r0ysue
Proxy
作为一名资深的老湿基(其实连驾照都没拿到..),不能做到自动驾驶自己都说不过去。既然上面都说需要一条龙服务了,显然是不可能用手撸..那么多请求的!有现成的Intruder
和Scanner
不用白不用,所以这个时候就需要Proxy
+Pyro4
了
Jython
在开始之前,你需要先装一个Jython
,因为坑爹的BurpSuite全是Java写的,所以不支持CPython,就用了这个Java实现的Python来作为代替品。 当然你也可以选择使用Java来写插件。
如果你有pyenv
的话直接:pyenv install jython-2.7.1
没有的话就自己去看官网Guide自己装一个。
装完你还需要pip
,放心吧CPython
的get-pip.py
在Jython
上是用不了的 ( GitHub - jythontools/pip: Used for Jython 2.7.0 ensurepip bundle, now obsolete with use of upstream pip in Jython 2.7.1 )
jython setup.py install
然后你就拥有一个Jython的pip了,最后安装一个Pyro4即可:
Extender
到这就是看BurpAPI
然后开发扩展了,Burp
的API
不多,文档也还算友好,所以并没有多难。
申明一个类,继承于IBurpExtender
和IHttpListener
:
class BurpExtender(IBurpExtender, IHttpListener)
重写registerExtenderCallbacks
和processHttpMessage
:
def registerExtenderCallbacks(self, callbacks):
self._callbacks = callbacks
self._helpers = callbacks.getHelpers()
self._callbacks.setExtensionName("fuck encrypt!")
callbacks.registerHttpListener(self)
def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
# tool https://portswigger.net/burp/extender/api/constant-values.html#burp.IBurpExtenderCallbacks
if toolFlag == 64 or toolFlag == 16 or toolFlag == 32: # TOOL_REPEATER TOOL_SCANNER TOOL_INTRUDER
request = messageInfo.getRequest()
analyzedRequest = self._helpers.analyzeRequest(request)
headers = analyzedRequest.getHeaders()
if not messageIsRequest:
response = messageInfo.getResponse()
analyzedResponse = self._helpers.analyzeResponse(response)
messageInfo.setResponse(self.decrypt(analyzedResponse, response))
# elif toolFlag != 4:
else:
messageInfo.setRequest(self.encrypt(analyzedRequest, request))
对着toolFlag一顿if是为了过滤Burp的模块,判断他是从哪过来的,这里是过滤了三个:reperter
、scanner
、intruder
,抓包过来的无需处理,如果你处理了那APP就不能正常收发数据了。self.decrypt
和self.encrypt
就是去跟Brida
开的端口交换数据,处理加解密:
uri = 'PYRO:BridaServicePyro@localhost:9999'
pp = Pyro4.Proxy(uri)
...
def decrypt(self, RequestOrResponse,raw):
body = raw[RequestOrResponse.getBodyOffset():]
newbody = body.tostring()
args = []
args.append(newbody.encode('hex'))
ret = pp.callexportfunction('contextcustom3',args)
ret = self._helpers.bytesToString(ret).decode('hex')
return self._helpers.buildHttpMessage(RequestOrResponse.getHeaders(), ret)
def encrypt(self, RequestOrResponse,raw):
body = raw[RequestOrResponse.getBodyOffset():]
newbody = body.tostring()
args = []
args.append(newbody.encode('hex'))
ret = pp.callexportfunction('contextcustom2',args)
ret = self._helpers.bytesToString(ret).decode('hex')
return self._helpers.buildHttpMessage(RequestOrResponse.getHeaders(), ret)
用callexportfunction
来调用你刚才js脚本里rpc.exports
里的函数,参数是函数名和参数列表。
好了代码到这就写完了,完整代码看github
,复制粘贴两分钟搞定。
然后去 Burp -> Extender -> Options -> Python Environment -> Location Of Jython standalone JAR file
把你 Jython 的 ja r包扔进去,pyenv 可以用 pyenv which jython
看到你的bin
路径,这个jar
包就在bin
往上一级的安装目录里。
最后把你的py加进去,就可以使用Scanner等功能了
最后就是这个效果
5、Burp 联动 Sqlmap 插件
sqlmap4burp++
github:https://git hub.com/c0ny1/sqlmap4burp-plus-plus
burp 插件之 burp4sqlmap++ 安装及使用教程:https://blog.csdn.net/luochen2436/article/details/118525503
sqlmap4burp++ 是一款兼容Windows,mac,linux多个系统平台的Burp与sqlmap联动插件
这个插件嘎嘎好用,大大提升了sqlmap 的效率
安装
- 从 github 下载插件
- 进入 burp 拓展模块
- 点击添加
- 上传文件
- 找到下载的插件上传
使用
- 在数据包页面右击,选择对应的插件进行使用
- 配置好对应的参数就直接跳转到sqlmap开始运行了
SQLiPy
需要先下载 jpython 环境,然后在安装