当前位置:   article > 正文

渗透测试 ( 8 ) --- Burp Suite Pro 官方文档、Brida(frida)_burpsuite官网

burpsuite官网

Burp Suite 官网 :https://portswigger.net/burp

官方文档:https://portswigger.net/burp/documentation/desktop

完整文档:https://portswigger.net/burp/documentation/contents

Burp Suite 实战指南

BurpSuite-collections ( 有关burpsuite的插件(非商店),文章以及使用技巧的收集 ):https://github.com/Mr-xn/BurpSuite-collections

1、安装

burpsuite 是攻击 Web 应用程序的集成平台。功能强大,是渗透测试神器。。。

BurpSuite v2024.2.1.2汉化无cmd框版(2024.03.16更新):https://www.52pojie.cn/thread-1544866-1-1.html

配置 Java 环境

Java 环境:https://repo.huaweicloud.com/java/jdk/

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

不用 配置 java 环境 (推荐)

将 JDK、BurpLoaderKeygen.jar、burpsuite_*.jar 放到相同目录下,注册机就会使用指定的Java自动执行。

Burpsuite pro 的下载、安装

下载地址:https://portswigger.net/burp/releases

下载 jar 文件,这里下载完是放到 D:\BurpSuitePro 目录下。

Burpsuite pro 注册

注册:https://github.com/h3110w0r1d-y/BurpLoaderKeygen/releases

1. 把下载的工具 BurpLoaderKeygen.jar 移动到 Burpsuite 相同目录下。

2. 双击 BurpLoaderKeygen.jar,点击 Run,burp 运行。

java环境配好后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. 注册成功。

burpsuite 安装与卸载 CA证书 

https://blog.csdn.net/qq_45300786/article/details/106881575

1. 浏览器设置代理 127.0.0.1:8080

2. 访问 http://burp 下载证书

3. 浏览器导入证书

firefox 导入证书 步骤:

 chrome 导入证书 步骤:

4. 重启浏览器,证书生效

抓包工具为什么要导入自己的证书

HTTPS握手过程

  1. 客户端发出请求(ClientHello): 客户端向服务端发起加密通信的请求
  2. 服务器回应(SeverHello): 服务器收到客户端请求后,确认加密通信协议版本是否一致,如果版本一致则返回服务器证书,否则关闭加密通信
  3. 客户端回应:客户端收到服务器回应后,客户端首先验证证书是否有效。如果证书失效,则会给访问者一个警示,由其决定是否继续连接。如果证书没失效,则使用证书中的公钥加密一个随机数(pre-master key)返回给服务器,同时返回客户端握手结束通知。
  4. 服务器的最后回应:服务器收到客户端发来的pre-master key后,计算生成本次会话的“会话密钥”,向客户端发送服务器握手结束通知。
  5. 整个握手阶段结束。接下来,客户端与服务器进入加密通信。

客户端如何验证证书的合法性

  1. 首先浏览器读取证书中的证书所有者、有效期等信息进行校验,校验证书的网站域名是否与证书颁发的域名一致,校验证书是否在有效期内
  2. 浏览器开始查找操作系统中已内置的受信任的证书发布机构CA,与服务器发来的证书中的颁发者CA比对,用于校验证书是否为合法机构颁发
  3. 如果找不到,浏览器就会报错,说明服务器发来的证书是不可信任的。
  4. 如果找到,那么浏览器就会从操作系统中取出颁发者CA 的公钥(多数浏览器开发商发布
    版本时,会事先在内部植入常用认证机关的公开密钥),然后对服务器发来的证书里面的签名进行解密
  5. 浏览器使用相同的hash算法计算出服务器发来的证书的hash值,将这个计算的hash值与证书中签名做对比
  6. 对比结果一致,则证明服务器发来的证书合法,没有被冒充

1.为什么要用证书?

知道什么是证书之前需要了解下 “非对称加密”

  • 对称加密:客户端和服务器用一个秘钥加密和解密,效率高
  • 非对称加密:将公钥公布于众,客户端拿公钥加密,服务器拿自己的私钥解密,这样即使数据被截获,别人也解密不出明文内容,效率低。

​非对称加密有两个秘钥,公钥和私钥,而这两个秘钥只要用一个加密,另一个就能解密,我们正常加密数据用公钥加密,用私钥解密

​而我们还有一种用法就是服务器发数据用私钥加密,客户端用公钥解密,那么客户如果用公钥正确解密出数据,那么就证明这个数据一定是服务器发的,因为私钥只有它知道,这个过程我们一般不叫加密,叫签名,也就是服务器对数据签个名,代表这个确确实实是它发的。

​其实我们正常情况下因为对称加密效率虽高,但是不安全,因为它告诉对方秘钥的时候这个秘钥容易被截获,但是我们如果用非对称加密,安全是安全,效率又太低,所以一般采用对称加密来加密数据,非对称加密配送对称加密的秘钥。

​因为公钥是在网络上进行传输的,那么假如遭遇了如下图所示的中间人攻击,那么A的私钥就可能是伪造的。那么如何验证公钥的合法性呢?------ 证书

2.什么是证书

证书就是由认证机构,采用它们自己的私钥,对发送方的公钥和发送方的信息进行数字加密。各大CA(认证机构)的证书已经默认被添加到了浏览器和操作系统中。

  1. 服务器生成自己的密匙对——公钥和私钥
  2. 服务器在认证机构注册自己的公钥
  3. 认证机构(CA)用自己机构的私钥对,服务器的公钥进行数字签名并生成证书(里面带了这个签名过得公钥和服务器一些信息)
  4. 认证机构把证书给客户端
  5. 客户端用认证机构的公钥验证数字签名
  6. 认证成功后用里面带的服务器的公钥加密并发消息给服务器
  7. 服务器用自己的私钥解密

这样一来就可以解决数据传输的安全问题了

问题:

  1. 如果黑客在第二步服务器在认证机构注册公钥的时候截取数据呢?这个完全不用担心,CA证书的申请,流程很多,而且较为严格,比如准备很多文件,再比如CA那边如果通过后还会要申请方这边的管理员验证之类的。
  2. 第五步的认证机构的公钥咋传输的?如果黑客改了呢?如果改了那么这个证书就不会验证成功,其实各大CA的公钥已经在系统和浏览器中内置了。看下边的例子:百度的证书信息:

3.抓包软件为什么要导入证书

如果用过 Charles、Fiddler 或者其它抓包软件,那么一定对抓 HTTPS 包需要导入抓包软件的证书的流程不陌生,那么为什么它能解密 HTTPS 数据,为什么它需要导包呢?看以下流程:

  1. 客户端发一个HTTPS请求,然后被Fiddler拦截,并且Fiddler伪装成客户端发送请求给服务器
  2. 服务器 向 "假装成客户端的FIddler" 返回了CA证书,Fiddler 就获取到了服务器的公钥。
  3. Fiddler 制作一张证书( 包含假的公钥 ),然后假装成服务器,给客户端发了自己做的证书。
  4. 客户端生成对称秘钥,并用 Fiddler 假冒的公钥加密发送
  5. Fiddler用自己的私钥解密获取对称秘钥
  6. ……

这样的话 Fiddler 能完全获取解析到双方加密的数据。

示例:当我们正常访问百度,查看证书:

开启 Fiddler 后查看证书:

2、官方文档

2.1 burpsuite 入门

https://portswigger.net/burp/documentation/desktop/getting-started

Step 2: 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”。返回浏览器并确认您现在可以像往常一样与网站进行交互。

Step 3: Proxy --- 修改 request (请求)

​在Burp中,转到"“代理>拦截"选项卡,并确保拦截已关闭。启动 Burp 的浏览器并使用它来访问以下URL:https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-excessive-trust-in-client-side-controls

加载页面时,单击“访问实验室”。如果出现提示,请登录到您的 portswigger.net 帐户。几秒钟后,您将看到自己的虚假购物网站实例。

在购物网站上,单击“我的帐户”,然后使用以下凭据登录:
用户名:wiener
密码:peter
请注意,您只有$ 100的商店信用额。

浏览要购买的产品,在要添加到 购物车这个动作之前,打开拦截,然后点击添加购物车,可以看到已经拦截到请求,并注意到正文中有一个名为 的参数,该参数与商品的价格(以美分为单位)相匹配。price

将参数的值更改为 1,然后单击“转发”将修改后的请求发送到服务器。price

再次关闭拦截,以便任何后续请求都可以不间断地通过Burp代理。

在Burp的浏览器中,单击右上角的购物篮图标以查看您的购物车。请注意,夹克的添加成本仅为一美分。

点击下按钮,以极其合理的价格购买夹克。

恭喜您,您还刚刚解决了您的第一个Web安全学院实验室!您还学习了如何使用打嗝代理拦截、查看和操作 HTTP 流量。

Step 4: Repeater --- 重新发出 ( 重放 ) 请求

右键单击任何请求,然后选择 “Send to Repeater”

就可以在 Repeater 选项上看到要 重发发送的请求

Step 5: 运行第一次扫描

转到 “仪表板 ( Dashboard )”选项卡,然后选择“新建扫描 ( New scan)”

Scan configuration 中,单击轻量级轻量级扫描模式旨在尽快提供目标的非常高级的概览。使用此模式的扫描最多可运行 15 分钟。

单击 “确定” 启动扫描。这时会将新任务添加到仪表板,会实时显示一些关键信息,如当前正在运行的扫描阶段、已发送的请求数等。

查看爬网的实际效果

转到 “目标>站点地图”选项卡,并注意 的新条目。展开此节点以查看爬网程序到目前为止已成功发现的所有内容。如果等待几秒钟,您将看到地图正在实时更新

查看已识别的问题

在仪表板中监视扫描的状态。一两分钟后,爬网将完成,并且 Burp 扫描程序将开始审核漏洞。当它发现问题时,这些问题将显示在“仪表板”选项卡上的“问题活动”面板中。

任意选择一个问题点击,可以看到“通报”选项卡,其中包含有关问题类型的关键信息,包括详细说明和一些补救建议。旁边是几个选项卡,这些选项卡提供了Burp扫描仪发现此问题的证据。这通常是请求响应,但会因问题类型而异。

生成报告:转到“目标>站点地图”选项卡,右键单击 的条目,然后选择“问题”>“报告此主机的问题”。

查看和共享报表:在 Burp 的浏览器中打开报表以查看其中包含的内容。这对于向同事或客户报告扫描结果非常有用。

2.2 burpsuite 的 所有 功能

https://portswigger.net/burp/documentation/desktop/tools

New Scan (扫描、新建扫描)

扫描器自动执行扫描网站内容和漏洞的任务。根据配置,扫描程序可以对应用程序进行爬网以发现其内容和功能,并审核应用程序以发现漏洞。默认情况下,所有扫描都将使用Burp的浏览器,以确保通过浏览器驱动的扫描实现最大覆盖范围。您还可以提供用户凭据集,以便 Burp Scanner 可以发现和审核只有经过身份验证的用户才能访问的内容。导入完整的登录序列甚至使Burp Scanner能够处理更复杂的登录机制,包括单点登录。

Target (目标)

目标选项 包含站点地图,其中包含有关目标应用程序的详细信息。它允许您定义哪些目标在您当前工作的范围内,还允许您推动漏洞测试过程。

Proxy (代理)

Intruder (入侵、爆破)

Repeater (重放、重新发送请求)

用于手动操作和重新发出单个HTTP请求,并分析应用程序的响应。您可以从Burp中的任何位置向中继器发送请求,修改请求并一遍又一遍地发出请求。

Sequencer (序列)

序列器是一种用于分析数据项样本中随机性质量的工具。您可以使用它来测试应用程序的会话令牌或其他不可预测的重要数据项,例如反 CSRF 令牌、密码重置令牌等。

Decoder (解码)

解码器是一个简单的工具,用于将编码数据转换为其规范形式,或将原始数据转换为各种编码和散列形式。它能够使用启发式技术智能地识别多种编码格式。

Compare (对比、比较)

比较器是一个简单的工具,用于在任意两个数据项之间执行比较(视觉“差异”)

可以通过以下方式将数据加载到比较器中:

  • 将其直接粘贴到剪贴板中。
  • 从文件加载它。
  • 选择Burp中任意位置的数据,然后从上下文菜单中选择“发送到比较器”。

比较器的一些常见用途如下:

  • 查找用户名枚举条件时,可以使用有效和无效的用户名将响应与失败的登录进行比较,以查找响应中的细微差别。
  • 入侵者攻击导致一些非常大的响应,其长度与基本响应不同时,您可以比较这些响应以快速查看差异所在。
  • 在比较不同类型的用户生成的站点地图代理历史记录条目时,您可以比较成对的相似请求,以查看导致不同应用程序行为的差异所在。
  • 使用布尔条件注入和其他类似测试测试盲目 SQL 注入 Bug 时,可以比较两个响应,以查看注入不同的条件是否导致了响应的相关差异。

Logger (日志)

用于记录 Burpsuite 套件生成的所有 HTTP 流量,用于调查和分析,但特别适用于:

  • 调查如果 Burpsuite  产生意外结果会发生什么。
  • 查看当您的工作涉及会话处理时,Burp Suite正在发送的内容的详细信息。
  • 确保长期正在进行的任务(如后台扫描)仍在运行。
  • 分析需要了解 Burp Suite 正在做什么的任何问题。

Extender (扩展)

扩展选项 允许您通过安装社区创建的扩展来增强 Burp的功能,甚至可以编写自己的扩展。

通过 扩展( 插件 ),可以自定义和扩展 burpsuite 的行为。这些可能包括:

  • 修改 HTTP 请求和响应。

  • 发送其他请求。

  • 自定义打嗝套件的界面。

  • 打嗝扫描仪添加额外的检查。

  • 从打嗝套房访问信息。

扩展 的 安装、查看

Project options (项目配置)

User options (用户配置)

2.3 Burp 教程

拦截 HTTP 请求和响应

使用 Burp Scanner 增强手动测试

使用 Burp Repeater 重新发送单个请求

扫描网站以查找漏洞

在 Burp Suite 中使用实时任务

使用 Burp Suite 项目

使用 Burp Suite 项目选项

浏览 Burp Suite 用户界面

使用 Burp Proxy 的拦截规则

在 Burp Suite 中使用目标范围

使用 Burp Suite 测试 WebSocket

减少手动测试期间的噪音

使用 Burp Intruder 强制登录

使用 Burp Intruder 枚举子域

使用 Logger 查看 Burp 扩展发送的请求

使用 Burp Repeater 测试反射型 XSS

使用 Burp 代理匹配和替换欺骗您的 IP 地址

使用 Burp Intruder 填充凭证

使用 Burp Collaborator 测试异步漏洞

2.4 How do I

设置范围

保存我的工作

搜索

使用自定义配置

安排任务

比较站点地图

使用内容发现

测试移动应用程序

测试 WebSocket

使用 HTTP/2 测试网站

2.5 有用的功能

消息编辑器

检查

Burp 的浏览器

Burp Collaborator 客户端

网址匹配规则

CSRF PoC 生成器

查看所有有用的功能

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 是最强大的 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一条龙服务。

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 文件的特定位置,编写我们代码对我们反编译分析得到的加解密算法进行调用,实现对加密数据的解密

  1. encrypt: function (dec) {
  2. console.log("Brida Java Starting script ---->ok");
  3. var enc;
  4. Java.perform(function () {
  5. var key = "9876543210123456";
  6. var AesEncryptionBase64 = Java.use('com.ese.http.encrypt.AesEncryptionBase64');
  7. console.log("Brida start : encrypt before--->" + dec);
  8. enc = AesEncryptionBase64.encrypt(key, dec);
  9. console.log("Brida start : encrypt after--->" + enc);
  10. return enc;
  11. }
  12. },
  13. decrypt:function (enc) {
  14. console.log("Brida start :0--->" + message);
  15. var text;
  16. Java.perform(function () {
  17. try {
  18. var key = "9876543210123456";
  19. //hook class
  20. var AesEncryptionBase64 = Java.use('com.ese.http.encrypt.AesEncryptionBase64');
  21. console.log("Brida start : AesEncryptionBase64 ---> success");
  22. console.log("Brida start : decrypt before--->" + enc);
  23. //hook method
  24. text = AesEncryptionBase64.decrypt(key, enc);
  25. console.log("Brida start : decrypt after--->" + text);
  26. } catch (error) {
  27. console.log("[!]Exception:" + error.enc);
  28. }
  29. });
  30. console.log("Brida start : decrypt after--->" + text);
  31. return text;
  32. }

编辑好代码后,分别点击"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

作为一名资深的老湿基(其实连驾照都没拿到..),不能做到自动驾驶自己都说不过去。既然上面都说需要一条龙服务了,显然是不可能用手撸..那么多请求的!有现成的IntruderScanner不用白不用,所以这个时候就需要Proxy+Pyro4

Jython

在开始之前,你需要先装一个Jython,因为坑爹的BurpSuite全是Java写的,所以不支持CPython,就用了这个Java实现的Python来作为代替品。 当然你也可以选择使用Java来写插件。

如果你有pyenv的话直接:pyenv install jython-2.7.1

没有的话就自己去看官网Guide自己装一个。

装完你还需要pip,放心吧CPythonget-pip.pyJython上是用不了的 ( 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然后开发扩展了,BurpAPI不多,文档也还算友好,所以并没有多难。

申明一个类,继承于IBurpExtenderIHttpListener

class BurpExtender(IBurpExtender, IHttpListener)

重写registerExtenderCallbacksprocessHttpMessage:

  1. def registerExtenderCallbacks(self, callbacks):
  2. self._callbacks = callbacks
  3. self._helpers = callbacks.getHelpers()
  4. self._callbacks.setExtensionName("fuck encrypt!")
  5. callbacks.registerHttpListener(self)
  6. def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
  7. # tool https://portswigger.net/burp/extender/api/constant-values.html#burp.IBurpExtenderCallbacks
  8. if toolFlag == 64 or toolFlag == 16 or toolFlag == 32: # TOOL_REPEATER TOOL_SCANNER TOOL_INTRUDER
  9. request = messageInfo.getRequest()
  10. analyzedRequest = self._helpers.analyzeRequest(request)
  11. headers = analyzedRequest.getHeaders()
  12. if not messageIsRequest:
  13. response = messageInfo.getResponse()
  14. analyzedResponse = self._helpers.analyzeResponse(response)
  15. messageInfo.setResponse(self.decrypt(analyzedResponse, response))
  16. # elif toolFlag != 4:
  17. else:
  18. messageInfo.setRequest(self.encrypt(analyzedRequest, request))
'
运行

对着toolFlag一顿if是为了过滤Burp的模块,判断他是从哪过来的,这里是过滤了三个:reperterscannerintruder,抓包过来的无需处理,如果你处理了那APP就不能正常收发数据了。
self.decryptself.encrypt就是去跟Brida开的端口交换数据,处理加解密:

  1. uri = 'PYRO:BridaServicePyro@localhost:9999'
  2. pp = Pyro4.Proxy(uri)
  3. ...
  4. def decrypt(self, RequestOrResponse,raw):
  5. body = raw[RequestOrResponse.getBodyOffset():]
  6. newbody = body.tostring()
  7. args = []
  8. args.append(newbody.encode('hex'))
  9. ret = pp.callexportfunction('contextcustom3',args)
  10. ret = self._helpers.bytesToString(ret).decode('hex')
  11. return self._helpers.buildHttpMessage(RequestOrResponse.getHeaders(), ret)
  12. def encrypt(self, RequestOrResponse,raw):
  13. body = raw[RequestOrResponse.getBodyOffset():]
  14. newbody = body.tostring()
  15. args = []
  16. args.append(newbody.encode('hex'))
  17. ret = pp.callexportfunction('contextcustom2',args)
  18. ret = self._helpers.bytesToString(ret).decode('hex')
  19. 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 环境,然后在安装

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/1012569
推荐阅读
相关标签
  

闽ICP备14008679号