文章目录
- 前言
- 一、BurpSuite
-
- 1.BurpSuite简介
- 2.BurpSuite安装教程
-
- (1)BurpSuite安装与激活
- [(2)安装 https 证书](#(2)安装 https 证书)
- 3.BurpSuite使用
- 4.BurpSuite资料
- 二、图解HTTP
- 总结
前言
在网络安全和渗透测试领域,BurpSuite 是一个不可或缺的工具。它凭借强大的功能集和灵活的模块化设计,成为安全研究人员、开发者以及测试人员分析 Web 应用漏洞的"瑞士军刀"。然而,对于初学者来说,BurpSuite 的配置和使用可能略显复杂,尤其是代理设置、证书安装以及 HTTP/HTTPS 流量分析等环节。
与此同时,理解 HTTP 协议的基础知识是掌握 BurpSuite 的核心前提。HTTP 作为 Web 通信的基石,其请求与响应的结构、状态码的含义、以及 HTTPS 加密机制的原理,都是渗透测试中需要深入剖析的关键点。
本篇博客将从 BurpSuite 的安装与破解入手,逐步演示如何配置代理、安装证书、抓取流量,并结合 HTTP 协议的核心概念(如 URL/URI 结构、请求头与响应头、状态码分类、HTTPS 加密原理等),帮助读者构建完整的 Web 安全分析知识体系。无论你是刚入门的安全爱好者,还是希望巩固基础的开发者,都希望能通过本文的实践与理论结合,快速上手 BurpSuite 并更深入理解 HTTP 的底层逻辑。
一、BurpSuite
1.BurpSuite简介
BurpSuite 是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化地或手工地能
更好的完成对Web应用的渗透测试和攻击。
BurpSuite 是由 Java 语言编写而成,而依托 Java 自身的跨平台性,使得软件在不同系统平台使用
更加方便。
2.BurpSuite安装教程
(1)BurpSuite安装与激活
BurpSuite Professional 破解版压缩包: https://easylink.cc/9licrh(点击即下载)
双击keygen.bat
,启动BurpSuite破解程序
(双击 keygan.bat 后会自动启动cmd和激活页面)点击Run
后就会启动BurpSuite
界面功能解释
功能 | 解释 |
---|---|
Auto Run | 勾选会自动执行 Loader Command |
Ignore Update | 勾选忽略更新,不勾选可以点击上方蓝字下载 BurpSuite 最新稳定版 |
Early Adopter | 勾选可以点击上方蓝字下载 BurpSuite 前期测试版 |
Loader Command | 加载器启动 BurpSuite 命令,点击 Run 可执行 |
License Text | License 文本,可自己修改,比如 licensed to mingxyz |
License | 生成的 License |
Activation Request | 激活请求 |
Activation Response | 激活响应 |
勾选"Help improve Burp by submitting feedback about its performance"
点击 "I Accept" 同意协议
按下图示操作后点击Next
注意:点击Manual activation
按下图示操作后在"Activation Response"框中会自动生成字符串
将"Activation Response"中生成的字符串按下图示复制到相应位置后点击Next
Finish之后会自动打开BurpSuite
Next
Start Burp
关闭BurpSuite后可在压缩包解压后的解压文件中再次打开BurpSuite(可自行设置快捷方式于桌面)
BurpSuite.vbs为英文版
BurpSuite-cn.vbs为中文版
根据个人需要自行选择(建议初学者使用英文版进行学习)
(2)安装 https 证书
BurpSutie默认只能抓取http请求,由于HTTPS流量是加密的,为了能够查看和修改这些流量,需要在BurpSuite中安装CA证书,并在浏览器中信任这个证书。这样,BurpSuite可以作为中间人(MITM)来解密和重新加密流量。
打开BurpSuite后,依次点击Proxy > Proxy setting > Tools下的Proxy
点击Import/export CA certificate
勾选 Certificate in DER format 后点击Next
文件名的后缀一定要是.der
,文件前缀随意(建议整个文件名为"bp.der")
文件类型:所有文件
Next
双击 安装证书.der ,点击安装证书
本地计算机
勾选 将所有的证书都放入下列存储
受信任的根证书颁发机构
注意:
1.操作完成上面的破解步骤后,证书已经成功写入系统,后续不必再重复破解
2.如果更新了BurpSuite
版本,可能需要重新破解激活才可正常使用
想要清除系统BurpSuite
激活信息,双击执行reset_license.bat
脚本
更新:
1.打开
keygen.bat
点击蓝色小字下载最新版本,或者自己去官网下载BurpSuite Pro
: https://portswigger.net/burp/releases
2.下载后复制到BurpSuite
目录下并重命名为burpsuite_pro.jar
然后按照上面的步骤依次破解、启动即可
注意:安装完证书后,一定记得重启浏览器,之后才会生效
3.BurpSuite使用
●代理监听
依次点击Proxy > Proxy settings > Tools > Proxy在 Proxy listeners 里可以看到有个127.0.0.1:8080
,
启动 BurpSuite 会默认监听这个地址,所有经过该地址的请求都会被记录下来。
●浏览器插件下载
为了使用 BurpSuite 捕获浏览器所有的 HTTP 及 HTTPS 请求,我们需要通过设置浏览器的代理,指
向 BurpSuite 的代理服务监听地址127.0.0.1:8080
。
SwitchyOmega 是一个浏览器代理插件,它允许用户在浏览器中快速设置和切换代理。它允许用户自
定义代理设置,以控制浏览器的网络流量。
ㅇEdge浏览器代理插件:ProxySwitchyOmega3(ZeroOmega)-Microsoft EdgeAddons
ㅇChrome浏览器代理插件(需要科学上网):ZeroOmega
ZeroOmega设置
1.以Edge浏览器为例,首先按照如下让其显示
点击"选项""
点击新建情景模式 ,输入情景模式名称
情景模式名称可为:burp
选择代理服务器
并选择情景模式的类型 为:代理服务器 ,点击创建
配置代理服务器
代理协议:HTTP
代理服务器:127.0.0.1
代理端口:8080
清空不可代理地址列表,并添加如下内容后点击"应用选项"
bash
<-loopback>
proxy模块使用
●1.拦截选项卡:显示拦截的请求包
●2.HTTP history:HTTP历史记录,所有经过 127.0.0.1:8080
这个代理服务器的请求都会在这里显示
●3.WebSockets history:Websockets历史记录
●4.Match and replace:替换规则
●5.Proxy settings:代理设置
●6.lntercept off/on:拦截开关,off为关,on为开,为on时浏览器发出的请求会被拦截下来,off则相
反
●7.Forward:转发请求,把拦截到的数据包转发到服务器或客户端
●8.Drop:丢弃请求,会把拦截到数据包丢弃,丢弃后数据包不会到达服务器或客户端
●9.Open browser:打开bp自带的浏览器,该浏览器无需安装证书代理插件,在此浏览器中的http或
https请求都会被bp抓取
4.BurpSuite资料
● Burp Suite文档: https://portswigger.net/burp/documentation/desktop
● 拦截HTTP流量:https://portswigger.net/burp/documentation/desktop/getting-started/intercepting-http-traffic
二、图解HTTP
1.HTTP基础知识
HTTP 是超文本传输协议,也就是H yper T ext T ransfer Protocol。
是一种用于分布式 、协作式 和超媒体信息系统 的应用层协议。是一个基于请求与响应,无状态的,应用
层的协议,常基于 TCP/IP
协议传输数据,互联网上应用最为广泛的一种网络协议,所有的互联网文
件都必须遵守这个标准。
HTTP的名字「超文本协议传输」,它可以拆成三个部分:
● 超文本
● 传输
● 协议
- 协议
HTTP 是一个用在计算机世界里的协议 。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范(两个以上的参与者 ),以及相关的各种控制和错误处理方式(行为约定和规范)。
- 传输
就是把一堆东西从A点搬到B点,或者从B点搬到A点。
HTTP协议是一个双向协议。
HTTP是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。
我们在上网冲浪时,浏览器是请求方A,百度网站就是应答方B。双方约定用HTTP协议来通信,于
是浏览器把请求数据发送给网站,网站再把一些数据返回给浏览器,最后由浏览器渲染在屏幕,就可以
看到图片、视频了。
3. 超文本
HTTP 传输的内容是「超文本」。
「文本」,在互联网早期的时候只是简单的字符文字,但现在「文本」的涵义已经可以扩展为图片、视频、压缩包等,在 HTTP 眼里这些都算做「文本」。
「超文本」,它就是超越了普通文本的文本,它是文字、图片、视频等的混合体最关键有超链接,能从一个超文本跳转到另外一个超文本。
HTML 就是最常见的超文本了,它本身只是纯文字文件,但内部用很多标签定义了图片、视频等的链接,在经过浏览器的解释,呈现给我们的就是一个文字、有画面的网页了。
总结:
HTTP是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据
的「约定和规范」。
统一资源定位符(URL)
URL(统一资源定位符):我们常说的网址,包含了用于查找资源的足够的信息,而一个完整的URL包
含下面几部分:
URL 遵守一种标准的语法,它由协议、主机名、域名、端口、路径、以及文件名这六个部分构成,其
中端口可以省略。
具体语法规则如下:
bash
protocol://[[user[:password]@]host[:port]][/path][?query][#fragment]
[协议名]://[用户名]:[密码]@[主机名]:[端口]/[路径]?[查询参数]#[片段ID]
bash
protocol:指定使用的传输协议,最常用的是通过 HTTP/HTTPS 协议来定位网络资源。
mailto: 用户打开邮箱的客户端
ftp: 用来做文件的转换
file: 用来获取文件
user:password 需要认证后才能访问时的账号密码。
host:表示合法的因特网主机域名或者IP地址。
port:用于表示在传输层上交换信息的进程端口号,标明了获取服务器资源的入口,
http协议默认端口号为80,不同的协议默认端口号不同。
path:指定请求服务器上资源的路径。
?query:可选,用于给动态网页传递参数,可以有多个参数,用"&"符号隔开,每个参数的键值之间用"="隔开。
#fragment:信息片断字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。
例如:
bash
https://en.wikipedia.org:443/wiki/Hypertext_Transfer_Protocol?id=123#HTTP/1.1_response_messages
统一资源标志符(URI)
URl:Universal Resource Identifier
统一资源标志符,用来标识抽象或物理资源的一个紧凑字符
串。
HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请
求/响应协议。
HTTP使用统一资源标识符(URI)来传输数据和建立连接。
URI和URL的区别:URL是URI的一个子集
URN:Universal Resource Name
统一资源名称,通过特定命名空间中的唯一名称或ID来标识资
源。
URI可被视为定位符(URL),名称(URN)或两者兼备。统一资源名(URN)如同一个人的名称,而
统一资源定位符(URL)代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物
的方法。
2.HTTP客户端请求消息
HTTP请求报文:Web客户端向服务器发送的请求
HTTP请求由四个部分组成:
●请求行
●请求头部字段
●空行
●请求正文
请求行
bash
Method Request-URI HTTP-Version CRLF
Method:表示请求方法;
Request-URI:是一个统一资源标识符;
HTTP-Version:表示请求的HTTP协议版本;
CRLF:表示回车和换行
除了作为结尾的CRLF外,不允许出现单独的CR或LF字符
●请求方法
请求方法 | 描述 |
---|---|
GET | 请求获取Request-URI所标识的资源 |
POST | 在Request-URI所标识的资源后附加新的数据 |
HEAD | 请求获取由Request-URI所标识的资源的响应消息报头 |
PUT | 请求服务器存储一个资源,并用Request-URI作为其标识 |
DELETE | 请求服务器删除Request-URI所标识的资源 |
TRACE | 请求服务器回送收到的请求信息,主要用于测试或诊断 |
OPTIONS | 请求查询服务器的性能,或者查询与资源相关的选项和需求 |
CONNECT | 保留将来使用,HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 |
PATCH | 用于将局部修改应用到资源。 |
●HTTP1.0
定义了三种请求方法:GET
、POST
、HEAD
方法。
●HTTP1.1
新增了六种请求方法:OPTIONS
、PUT
、PATCH
、DELETE
、TRACE
、CONNECT
方法。
请求头部字段
http_header:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
content_type:http://tools.jb51.net/table/http_content_type
请求头部字段:(Request Header Fields)
bash
Header:Header_Value CRLF
允许客户端传递关于自身的信息和希望的响应形式。
在HTTP/1.1
协议中,所有的请求头,除Host
外,都是可选的。
Header头部 | 解释 |
---|---|
Host | 指定请求的服务器的域名和端口号 |
Content-Length | 请求的内容长度 |
Accept | 指定客户端能够接收的内容类型 |
X-Requested-With | Ajax异步请求 |
User-Agent | 包含发出请求的用户信息 |
Content-Type | 请求的与实体对应的MIME信息 |
Origin | 指明当前请求来自于哪个站点 |
Referer | 先前网页的地址,当前请求网页紧随其后 |
Accept-Encoding | 指定浏览器可支持的web服务器返回内容压缩编码类型。 |
Accept-Language | 浏览器可接受的语言 |
Cookie | HTTP请求发送时,会把保存在该请求域下的所有cookie值一起发送给web服务器。 |
Connection | 表示是否需要持久连接 |
●Host
客户端发送请求时,用来指定服务器的域名。
bash
Host: www.A.com
有了Host字段,就可以将请求发往「同一台」服务器上的不同网站。
●Content-Length
Content-Length字段指明发送给接收方的消息主体的大小。
bash
Content-Length: 1000
如上面则是告诉接收方(不管是客户端还是服务端),本次发送的数据长度是1000个字节。
●Content-Type
Content-Type字段用于指定资源的媒体类型(也称为MIME类型)。这个字段告诉接收方--无论是
浏览器、服务器还是任何处理HTTP请求和响应的中间件一-正在传输的数据的类型。
bash
Content-Type: text/html; charset=utf-8
●User-Agent
User-Agent用于在HTTP请求中向服务器提供发起请求的客户端(通常是浏览器)的信息。这个字段
可以让服务器知道请求是由哪种类型的浏览器、浏览器版本、操作系统以及其版本等信息发起的。
User-Agent字段的内容通常由客户端的浏览器自动生成,但也可以被开发者或用户自定义修改。
bash
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0
●Cookie
它包含了客户端存储的Cookie值,这些值会在客户端向服务器发起请求时自动附加到请求中。这个
字段使得服务器能够识别不同的用户会话和存储的用户偏好。
bash
Cookie: User=admin
●Referer
Referer字段用于指示一个请求是从哪个页面发起的。这个字段通常由浏览器设置,当用户点击链接
或提交表单时,浏览器会将当前页面的URL作为Referer字段的值发送给目标服务器。
bash
Referer: https://www.baidu.com/
●空行
表示请求头结束,请求正文(请求体)开始
●请求正文
GET方法 :提交数据时,数据参数会作为URL的一部分,放在文件路径后面发送给服务器,被称为查询
字符串
bash
http://www.hetianlab.com?username=12345%40qq.com&password=2f7402f......a592b&validateCode=&rtnJson=true
POST方法:发送的数据在请求体中
bash
username=12345%40qq.com&password=2f7402f......a592b&validateCode=&rtnJson=true
3.HTTP服务端响应消息
HTTP响应报文:在接收和解释请求消息后,服务器返回一个HTTP响应消息。
HTTP响应也由四个部分组成,分别是:
●状态行
●响应头部字段
●空行
●响应正文
状态行
bash
HTTP-Version Status-Code Reason-Phrase CRLF
HTTP-Version:表示服务器HTTP协议的版本;
Status-Code:表示服务器发回的响应状态代码;
Reason-Phrase:表示状态代码的文本描述。
五大类HTTP状态码
●1xx
1xx
类状态码属于提示信息,是协议处理中的一种中间状态,实际用到的比较少。
●2xx
2xx
类状态码表示服务器成功处理了客户端的请求,也是我们最愿意看到的状态。
「200 OK」 是最常见的成功状态码,表示一切正常。如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据。
「204 No Content」 也是常见的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据。
「206 Partial Content」 是应用于 HTTP 分块下载或断电续传,表示响应返回的 body 数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。
●3xx
3xx
类状态码表示客户端请求的资源发送了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向。
「301 Moved Permanently」 表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。
「302 Moved Permanently」 表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问。
301 和 302 都会在响应头里使用字段 Location,指明后续要跳转的 URL,浏览器会自动重定向新的 URL。
「304 Not Modified」 不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,用于缓存控制。
●4xx
4xx
类状态码表示客户端发送的报文有误,服务器无法处理,也就是错误码的含义。
「400 Bad Request」 表示客户端请求的报文有错误,但只是个笼统的错误。
「403 Forbidden」 表示服务器禁止访问资源,并不是客户端的请求出错。
「404 Not Found」 表示请求的资源在服务器上不存在或未找到,所以无法提供给客户端。
●5xx
5xx
类状态码表示客户端请求报文正确,但是服务器处理时内部发生了错误,属于服务器端的错误码。
「500 Internal Server Error」 与 400 类型,是个笼统通用的错误码,服务器发生了什么错误,我们并不知道。
「501 Not Implemented」 表示客户端请求的功能还不支持,类似"即将开业,敬请期待"的意思。
「502 Bad Gateway」 通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。
「503 Service Unavailable」 表示服务器当前很忙,暂时无法响应服务器,类似"网络服务正忙,请稍后重试"的意思。
响应头部字段
响应头部字段(Response Header Fields):
响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-
URI所标识的资源进行下一步访问的信息。
Header头部 | 解释 |
---|---|
Server | web服务器软件名称 |
Data | 原始服务器消息发出的时间 |
Content-Type | 返回内容的MIME类型 |
Set-Cookie | 设置Http Cookie |
Content-Length | 响应体的长度 |
ETag | 请求变量的实体标签的当前值 |
refresh | 应用于重定向或一个新的资源被创造 |
WWW-Authenticate | 表明客户端请求实体应该使用的授权方案 |
Allow | 对某网络资源的有效的请求行为,不允许则返回405 |
Content-Type | 返回内容的MIME类型 |
Location | 用来重定向接收方到非请求URL的位置来完成请求或标识新的资源 |
空行
表示响应头结束,响应正文(响应体)开始
响应正文
服务器返回的资源内容
bash
{"result":"success","message":null}
4.HTTP部分请求方法理解
Get
Get 方法的含义是请求从服务器获取资源,这个资源可以是静态的文本、页面、图片视频等。
POST
POST:向Request-URI所标识的资源提交数据,数据就放在请求正文中用于向指定资源发送数据,指定的资源会对数据进行处理,然后将处理结果返回给客户端,一般用于表
单提交、文件上传
5.HTTPS与HTTP
HTTP 与 HTTPS 的区别
1.HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
2.HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
3.HTTP 的端口号是 80,HTTPS 的端口号是 443。
4.HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
HTTPS 解决的问题
HTTP 由于是明文传输,所以安全上存在以下三个风险:
●窃听风险 ,比如通信链路上可以获取通信内容,用户号容易没。
●篡改风险 ,比如强制入垃圾广告,视觉污染,用户眼容易瞎。
●冒充风险 ,比如冒充淘宝网站,用户钱容易没。
HTTPS在HTTP
与TCP
层之间加入了SSL/TLS
协议。
可以很好的解决了上述的风险:
●信息加密 :交互信息无法被窃取,但你的号会因为「自身忘记」账号而没。
●校验机制 :无法篡改通信内容,篡改了就不能正常显示,但百度「竞价排名」依然可以搜索垃圾广告。
●身份证书:证明淘宝是真的淘宝网,但你的钱还是会因为「剁手」而没。
总结
通过本文的探索,我们完成了两个核心目标:
BurpSuite 的实战部署:从破解安装、证书配置到代理监听,一步步搭建了渗透测试的基础环境。借助 BurpSuite 的拦截功能,读者可以直观地观察 HTTP/HTTPS 流量,分析请求与响应的细节,甚至修改数据包以模拟攻击场景。
HTTP 协议的深度解析:从 URL/URI 的语法规则,到请求方法(GET/POST)、头部字段(如 Cookie、User-Agent)的作用,再到状态码的分类逻辑(如 404 与 500 的区别),我们系统性地梳理了 HTTP 的核心机制。而 HTTPS 的加密原理与 HTTP 的明文传输风险对比,则进一步揭示了安全通信的重要性。
如果你觉得这篇文章对你有帮助,欢迎点赞,你的支持是我分享更多免费优质内容的动力!