BurpSuite教程——渗透测试第一关:BP工具使用

news2025/1/23 7:02:08

想要学好网络渗透,了解并熟练使用渗透工具是重要的一关。

Burp Suite 是一款广泛使用的网络安全工具,主要用于测试Web应用程序的安全性。它提供了一系列的功能,帮助安全专家和渗透测试人员发现和利用Web应用程序中的安全漏洞。

目录

一、前置知识:

1.1 HTTP/HTTPS协议

1.1.1HTTP(HyperText Transfer Protocol)

1.1.2HTTPS(HyperText Transfer Protocol Secure)

1.2 Web应用程序架构

1.3 中间人攻击

二、BP模块介绍

2.1 核心功能(Proxy)

2.1.1 Intercept(拦截器)

2.1.2 HTTP history(HTTP历史记录)

2.1.3 Websockets history(WebSockets历史记录)

2.2 爆破

2.2.1 爆破模块


一、前置知识:
1.1 HTTP/HTTPS协议

首先我们需要理解HTTP和HTTPS协议的基本概念,包括请求和响应的格式、方法(GET、POST等)、状态码、标头个消息体。

HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)是用于从网络传输超媒体文档(如HTML页面)到本地浏览器的协议。它们是构建Web的基础,但有一些关键的区别:

1.1.1HTTP(HyperText Transfer Protocol)

- **定义**:是互联网上应用最为广泛的协议之一,用于分布式、协作式、超媒体信息系统。
- **特点**:
  - 明文传输:数据在客户端和服务器之间以明文形式传输,没有加密。
  - 连接无状态:每个请求都是独立的,服务器不会保存之前的状态信息。
  - 快速:因为没有加密解密的过程,所以速度快。
- **使用场景**:适用于不需要安全加密的普通网页数据传输。

1.1.2HTTPS(HyperText Transfer Protocol Secure)

- **定义**:在HTTP的基础上,通过SSL/TLS协议提供了数据加密、完整性校验和身份验证,增强了安全性。
- **特点**:
  - 数据加密:使用SSL/TLS协议对数据进行加密,保护数据传输过程中的隐私和完整性。
  - 身份验证:通过证书验证服务器的身份,确保客户端访问的是正确的服务器。
  - 连接持久:TLS会话可以被重用,减少了握手的开销。
  - 更安全:适用于需要保护用户隐私和数据安全的场合,如网上银行、在线支付、登录等。
- **使用场景**:任何需要保护用户数据和隐私的场合都应该使用HTTPS。

### 主要区别
1. **安全性**:HTTPS比HTTP更安全,因为HTTPS使用SSL/TLS进行加密。
2. **性能**:HTTP通常比HTTPS性能更好,因为它不需要加密解密的过程。
3. **端口**:HTTP默认使用80端口,而HTTPS默认使用443端口。
4. **搜索引擎优化(SEO)**:使用HTTPS的网站可能会获得更好的搜索引擎排名,因为搜索引擎倾向于优先展示更安全的网站。

### 实现HTTPS
实现HTTPS通常需要以下几个步骤:
1. **获取SSL/TLS证书**:从受信任的证书颁发机构(CA)获取证书。
2. **配置服务器**:在服务器上安装证书,并配置SSL/TLS。
3. **更新网站代码**:确保所有资源都通过HTTPS引用,避免混合内容的问题。
4. **使用HSTS**:通过HTTP Strict Transport Security(HSTS)强制客户端使用HTTPS。

1.2 Web应用程序架构

Web应用程序架构指的是Web应用程序的组织结构和组件之间的交互方式。随着技术的发展,Web应用程序变得越来越复杂,涉及到前端、后端、数据库、APIs等多个方面。以下是一些常见的Web应用程序架构概念和组件:

客户端-服务器架构:最基本的Web应用程序架构,客户端(通常是浏览器)向服务器发送请求,并接收服务器返回的响应。

三层架构:
   - 将应用程序分为表示层(前端)、业务逻辑层(后端)和数据访问层(数据库)。
   - 表示层处理用户界面和用户交互。
   - 业务逻辑层处理应用程序的核心功能和逻辑。
   - 数据访问层负责与数据库交互,执行数据的增删查改操作。

MVC架构(Model-View-Controller):
   - 一种用于分离数据(Model)、用户界面(View)和控制逻辑(Controller)的设计模式。
   - 有助于提高应用程序的可维护性和可扩展性。

微服务架构:
   - 将应用程序分解为一组小型、独立的服务,每个服务实现特定的功能,并通过轻量级的通信机制(如RESTful API)相互交互。

单页应用程序(SPA):
   - 应用程序的所有代码(HTML、JavaScript和CSS)在初始页面加载时加载一次,随后的用户交互不会导致页面重新加载,而是动态更新用户界面。

前后端分离:
   - 前端和后端作为两个独立的服务开发和部署,通常通过API进行通信。

1.3 中间人攻击

中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。

二、BP模块介绍
2.1 核心功能(Proxy)

BurpSuite的核心功能是Proxy——“代理”。

代理模块主要用于拦截浏览器的http会话内容,给其他模块功能提供数据。

Proxy向下又分为四个部分:Intercept、HTTP history、Websockets history、options。

2.1.1 Intercept(拦截器)

拦截器是Proxy模块的核心功能之一,允许用户在请求发送到服务器之前和响应返回到客户端之前拦截他们。

我们可以在请求发送时点击“Intercept is on”来激活拦截器。此时,所有通过代理的请求和响应都会被暂停,直到我们手动放行或修改他们。

打开浏览器后,我们访问页面会一直处于加载状态,这正是因为我们拦截了页面请求,直到我们修改或手动释放页面。

我们点击Forward,这就表示放行,放行页面后,浏览器成功加载到百度页面,BP也拦截到了一个新的请求。


我们使用BP官方教程来展示这个功能的详细使用。在导航栏选择Learn,下方的The Web Security Academy就是官方提供给我们的一个学习平台。

我们选择第四个漏洞进行实验 ,以其中的第一个为例。

进入实验,我们来到以下界面,是一个网上商城。登陆他给我们的账号,发现我们有100美元。

现在我们想买这个夹克,但是钱不够。先别急,我们打开BP开始拦截

点击Add to card添加到购物车后,我们拦截到了一个页面,我们发现,页面中有价格设置,我们尝试修改这个价格。

直接“降价”,然后放行,可以看到,商品被我们以超便宜的价格添加到了购物车。

 

这就是拦截器的应用,对于测试和修改请求参数、测试不同相应场景非常有用。

2.1.2 HTTP history(HTTP历史记录)

HTTP历史记录是代理区捕获的所有HTTP请求和响应的列表。我们可以在这个区域查看、搜索、筛选和分析经过代理的所有HTTP流量。历史记录可以按时间、状态码、大小等排序,也可以使用高级搜索条件来查找特定的请求或响应。

并且,这个功能不受拦截开关的影响,即使拦截器处于关闭状态,代理模块仍可以捕获浏览器历史。

针对这个功能,我们再来看一个信息泄漏漏洞。

还是一个商城页面,我们在页面中任意浏览一会,看一看感兴趣的商品,我们可以看到代理模块中多了几条历史记录,选择一条感兴趣的将它发送到重放模块

之后我们点击Repeater,就可以在这里面看到我们刚刚发送过来的数据包了。

我们点击send发送页面,就可以在右边看到这个页面的信息,我打开的是一个商品详情页。

我们将ID值改为2或者其他数字,重新send,就可以看到我们又成功访问了其他商品页面。 

2.1.3 Websockets history(WebSockets历史记录)

WebSockets是一种支持双向通信的网络协议,与HTTP不同,它允许服务器主动向客户端发送消息。Burp Suite的Proxy模块可以拦截和显示WebSockets通信,使用户能够分析实时的双向交互。WebSockets历史记录允许用户查看和管理捕获的WebSockets消息,包括重新发送和修改消息。

相较于前两个模块,Websockets history重要性较弱,主要掌握Intercept和HTTP history的使用

2.2 爆破

Burp Suite的Intruder工具是一个用于自动化执行网络请求的工具,常用于爆破测试,包括但不限于密码破解、寻找隐藏的URL或参数、测试应用程序对特定输入的响应等

2.2.1 爆破模块

首先我们随便访问个网页,在代理中获得一个请求信息,将这个页面发送到爆破模块

在正式开始爆破前,我们先来了解几个概念。

在爆破前我们需要配置Intruder,也就是设置爆破点,设置请求方法、请求头、消息体等,确定需要爆破的参数。

在Web应用程序的安全测试中,"爆破点"(Vulnerability Point)通常指的是应用程序中可能存在安全漏洞的地方,这些地方可以通过自动化测试(如爆破)来检测。如登陆表单、会话管理、输入验证、URL参数、文件上传等。

简单来说,在爆破前我们需要先确定我们想要爆破的位置,对这些位置做填充,发送到服务器,看这些不同的填充会让服务器返回什么不同的结果。

例如,某页面有username=1&password=2这条数据,我们想对username设置爆破点,只需要选中1,再点击右侧的Add,这样就设置了一个爆破点,同样的方法,我们可以再对password设置。

在上方,我们还可以选择爆破方式,即以什么方式去进行爆破。如Sniper(狙击手),它将每个Payload依次放置在每个定义的Payload位置上,适合用于测试少量参数的修改对响应的影响;Battering ram(攻城锤) ,这种攻击方式使用单一的Payload集合,但与Sniper不同,它将相同的Payload放置在所有定义的Payload位置上,这种模式适合于测试大量参数的相同修改对响应的影响,例如,当你知道应用程序对多个参数有相同的响应时。

接下来,我们要去设置Payloads。Payloads是Intruder用来替换请求中特定位置的数据集,可以手动输入Payloads,或使用Burp Suite提供的Payload类型,如数字、字母、字典文件等。

在这一部分,我们可以手动添加删除一些测试内容,下面的Add from list也给我们提供了一个预设的字典,如a-z,A-Z,0-9,以及as、or等在SQL注入中常用的关键字。

接下来我们点击开始爆破,可以看到,我们先对第一个爆破点测试了三次,又对第二个爆破点进行测试。

让我们再来看看Battering ram,可以看到,这种方式是对多个爆破点进行同时填充。

不同的爆破方式有不同的填充方法,这里暂时只演示两组。

另外,不同的payload type也有不同的用处,如:

  1. Simple list:这是最基本的Payload类型,包含一个简单的字符串列表,可以用于替换请求中的参数。
  2. Runtime file:这种Payload类型允许用户指定一个文件,该文件包含在运行时动态生成的Payload列表,避免了内存浪费。
  3. Custom iterator:用户可以创建自定义迭代器,根据特定的规则或模式生成Payload。
  4. Character substitution:这种Payload类型允许用户定义字符替换规则,例如将所有小写字母替换为大写。
  5. Case modification:用于修改字符的大小写,如将所有字符转换为大写或小写。
  6. Recursive grep:递归地搜索文件或目录,并将搜索结果作为Payload列表。
  7. Illegal Unicode:生成包含非法Unicode字符的Payload,用于测试应用程序对Unicode字符的处理。
  8. Character blocks:根据特定的字符块生成Payload,例如所有可能的ASCII字符组合。
  9. Numbers:生成数字序列作为Payload,例如从1开始的递增序列。
  10. Brute forcer:用于生成暴力破解攻击所需的Payload,如所有可能的字符组合。
  11. Null payloads:包含空值或特殊NULL字符的Payload,用于测试应用程序对空输入的处理。
  12. Character frobber:用于修改或“frob”(一种幽默的术语,意为“调整”)字符以生成新的Payload。
  13. Bit flipper:用于翻转二进制数据中的位,生成不同的Payload。
  14. Username generator:生成可能的用户名变体,用于用户名爆破。

简单来说,BP中的爆破像是一个自动化工具,为我们的操作提供了极大便利。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1978157.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JetBrains GoLand单元测试不支持单个单元测试case执行

譬如函数代码 func AddInt(a, b int32) int32 {return a b } 单元测试代码: func TestAddInt(t *testing.T) {type args struct {a int32b int32}tests : []struct {name stringargs argswant int32}{{name: "add",args: args{a: 1, b: 2},want: 3},{n…

安卓自定义控件

文章目录 引入布局创建自定义控件 引入布局 首先创建一个项目&#xff0c;创建一个空的活动。然后右键单击res/layout创建一个Layout Resource File文件&#xff0c;取名title.xml。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmln…

【Android Studio】彻底卸载

文章目录 卸载程序控制面板卸载安全软件卸载 删除文件重启计算机 我们在Android开发时涉及重装时&#xff0c;如果卸载不干净&#xff0c;再次安装是不会正常运行项目的&#xff0c;接下来就让我教你如何删除干净吧。 卸载程序 控制面板卸载 control控制面板一>程序一>…

算法通关:016:设计循环双端队列

文章目录 题目思路代码运行结果问题为什么能直接调用方法名 题目 leetcode641 设计循环双端队列 思路 代码 import java.util.Deque; import java.util.LinkedList;/*** Author: ggdpzhk* CreateTime: 2024-08-03* 641 双端队列&#xff1a;利用双向链表和动态数组实现*/ pu…

百款HTML5小游戏源码搭建的网站,轻松为你的小程序或网站增加流量!

百款HTML5小游戏源码搭建的网站&#xff0c;轻松为你的小程序或网站增加流量&#xff01; 访问链接&#xff1a;http://43.139.69.156/game/80h5/index.html 需要源码可以看主页介绍 &#x1f680;&#x1f31f; 引爆你的创意&#xff01;100款HTML5小游戏源码大公开&#xff…

kettle从入门到精通 第八十三课 ETL之kettle kettle调用python且接收返回值

场景&#xff1a;kettle调用python执行脚本&#xff0c;处理之后&#xff0c;再把结果数据流发给下一个步骤。 看到有个qq群里有个小伙伴求助要实现kettle调用python脚本&#xff0c;然后接收python脚本执行的结果&#xff0c;最后将结果传递到下一个步骤。之前的课程里面介绍的…

bugku-web-xxx二手交易市场

打开题目&#xff0c;点击进入链接&#xff0c;是一个二手交易市场平台 先登录看看 评论了两下&#xff0c;发现<>被注释 对注释字符进行了过滤&#xff0c;无法闭合&#xff0c;sql注入点不存在 看看头像上传&#xff0c;上传文件&#xff0c;抓包 看到后面好长一串…

(001)mysql全接触

1. MySQL 如何优化SQL查询语句? 正确回答通过率&#xff1a;73.0%[ 详情 ] 推荐指数&#xff1a; ★★★★ 试题难度&#xff1a; 中级 建议性操作方案如下&#xff1a; 1&#xff1a;避免全表扫描 考虑在 where 和 order by 涉及的列上建立索引&#xff0c;in 和 not in 也…

ShardingSphere 之ShardingJDBC扩展功能:分片审计、数据加密、读写分离、广播表、绑定表

文章目录 分片审计数据加密读写分离广播表绑定表 分片审计 开发者手册 分片审计功能是针对数据库分片场景下对执行的 SQL 语句进行审计操作。可以对我们要执行的sql进行拦截并进行审核。 目前ShardingSphere内置的分片审计算法只有一个&#xff0c;DML_SHARDING_CONDITIONS。…

教您一键批量下载拼多多批发图片信息,节省时间

图片是电商的核心展示手段&#xff0c;高质量、吸引人的图片能显著提升商品吸引力&#xff0c;增强用户体验&#xff0c;促进购买决策。良好的视觉呈现有助于品牌形象的塑造&#xff0c;提高转化率和客户满意度&#xff0c;对电商平台的流量和销售业绩具有直接影响。 使用图快…

InnoDB锁机制

目录 第一节&#xff1a;锁的基本概念 1. 锁的定义与作用 2. Lock与Latch的区别 3. 锁的占有模式 4. 锁的类型 图文结合示例 Lock与Latch对比图 锁的占有模式兼容性图 锁的类型层次图 第二节&#xff1a;事务隔离级别与MVCC 事务隔离级别 MVCC&#xff08;多版本并发…

《机器人SLAM导航核心技术与实战》第1季:第8章_激光SLAM系统

视频讲解 【第1季】8.第8章_激光SLAM系统-视频讲解【第1季】8.1.第8章_激光SLAM系统_Gmapping算法-视频讲解【第1季】8.2.第8章_激光SLAM系统_Cartographer算法-视频讲解【第1季】8.3.第8章_激光SLAM系统_LOAM算法-视频讲解 第1季&#xff1a;第8章_激光SLAM系统 先 导 课第…

用2点结构标定3点结构的顺序

在行列可自由变换的平面上2点结构只有3个 (A,B)---6*30*2---(0,1)(1,0) 让A分别是2a1&#xff0c;2&#xff0c;3&#xff0c;让B全是0。当收敛误差为7e-4&#xff0c;收敛199次取迭代次数平均值&#xff0c;得到 结构 迭代次数 2a1 58742.717 1.00001 2a2 80796.605 1…

如何在uniapp上隐藏默认导航栏

当要定义导航栏&#xff0c;使用uni.switchTab来跳转页面时&#xff0c;需要将默认的导航栏进行隐藏。 比如使用 uni.hideTabBar(); 去隐藏的话&#xff0c;可能会有闪现出现的可能性。 我们可以在package.json当中的 tabBar加"custom": true。例: "tabBar&q…

【TS】TypeScript类型断言:掌握类型转换的艺术

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 TypeScript类型断言&#xff1a;掌握类型转换的艺术1. 引言2. 什么是类型断言&a…

基于特性价值来确认测试重点

目录 核心特性&#xff1a; 潜力特性&#xff1a; 噱头特性&#xff1a; 辅助特性&#xff1a; 无人问津的特性&#xff1a; 测试重点的确立&#xff1a; 软件的特性包含如下几种&#xff0c;核心特性&#xff0c;潜力特性&#xff0c;噱头特性&#xff0c;无人问津特性&…

Project Euler_Problem 277_A Modified Collatz Sequence

原题目&#xff1a; 题目大意&#xff1a; 一串字母可以视作迭代过程中每一轮除3余多少&#xff0c;问最小的大于1e15的满足那串序列的数是多大 解题思路&#xff1a;可以把那一大串字母&#xff0c;看作是不停地对初始数值x做连续运算&#xff0c;且每一轮运算的结果都应当是…

03:【stm32】GPIO

GPIO 1、芯片的引脚分布2、IO复用与重映射3、片上外设GPIO3.1、GPIO的寄存器组3.2、8种工作模式3.3、最大输出速度3.4、GPIO的内部结构 1、芯片的引脚分布 STM32F103C8T6这款芯片一共有48个引脚&#xff0c;他们分为了特殊功能引脚和普通的IO引脚。其中特殊功能的引脚有如下几个…

一键搬运TEMU、SHEIN店铺起新店。商品一键复制,商品裂变,TEMU商品复制

店铺搬家&#xff0c;一键搬运TEMU、SHEIN店铺起新店。商品一键复制&#xff0c;裂变新类目。铺店群必备 店铺搬家是什么&#xff1f; 店铺搬家就是将Temu一个店铺的所有商品快速搬到另一个店铺&#xff0c;只需要半个小时就能起一个全新的店铺&#xff0c;可以帮助商家快速起新…

comfyUI-MuseTalk的参数设置

comfyUI-MuseTalk的参数设置 目录 comfyUI-MuseTalk的参数设置 一、ComfyUI-VideoHelperSuite 二、comfyUI-MuseV合成的参考视频 2.1、什么时候会用到MuseV&#xff1f; 2.2、MuseV特别消耗系统内存 2.2.1、测试图片序列的像素比 2.2.2、影响运动范围和生成结果的参数 …