一、BurpSuite是什么?
- 我们看官网的overview:
The leading toolkit for web security testing.
- 一款集合了各类Web攻击当中所需要的功能且参数极为复杂的攻击套件
- 一个抓包改包工具
一个抓包改包工具 / 安全测试的工具包,这个怎么理解呢?先回到我们的HTTP协议。HTTP协议本质是一个基于文本的解析规则
,即通过socket API发送一段特定格式的文本:
GET /captiveportal/generate_204 HTTP/1.1
Host: edge-http.microsoft.com
Pragma: no-cache
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connection: close
...
上述文本的回车换行实际上就是\r\n
,这段文本在底层(C语言socket API)应该是这样的:
int sock;
struct sockaddr_in serv_addr;
char msg[1024];
strcpy(msg, "GET / HTTP/1.1\r\n");
strcat(msg, "Host: www.baidu.com\r\n");
strcat(msg, "Content-Type: text/html\r\n");
strcat(msg, "Content-length: \r\n");
printf("%s",msg);
sockfd = socket(AF_INET, SOCK_STREAM,0);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr("x.x.x.x")
serv_addr.sin_port = htons(atoi(端口号));
connect(sockfd,(struct sockaddr*)&serv_addr, sizeof(serv_addr);
send(sockfd, msg, strlen(msg), 0);
close(sockfd);
用python有助于我们更好理解:
#!/usr/bin/env python3
import socket
target_host = "127.0.0.1" #目标IP
target_port = 9999 # 目标端口
# 建立一个 socket 对象
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 链接客户端
client.connect((target_host,target_port))
# 发送一些数据
client.send("GET / HTTP/1.1\r\nHost:baidu.com\r\n\r\n".encode())
# 接受一些数据
response = client.recv(4096)
print(response.decode())
with open("/home/kali/Desktop/test.html","w") as f:
f.write(response_str)
发送的文本就是HTTP请求
二、正向代理(抓包/改包)
上面的python代码一个HTTP 客户端,或者说TCP客户端。这就已经实现HTTP协议,就是 客户端发送一段文本消息,服务端按\r\n
分割逐行解析这些文本所预定义的意义。我们所做的Web漏洞测试就是围绕这些文本进行的,也就是所谓HTTP请求包
。
现在我们使用BurpSuite监听一个端口,然后在浏览器中设置代理指向该端口。这里其实就是一个正向代理了。当你在浏览器中设置代理地址的时候,其实就是设置了IP和端口。浏览器正常的通过三次握手与bp建立连接,bp即是浏览器所发起的任何网络连接的服务器。当bp收到来自浏览器的请求时,提取请求的URL/域名。之后,bp又充当客户端,向该url/域名请求资源,之后将响应的资源又响应给浏览器
通过Wireshark抓包,我们可以清晰的看见,浏览器设置经过代理的HTTP请求与不经过代理的HTTP请求包是一致的,只是代理的请求数据包的下层协议(网络层-IP、传输层-端口)封装的地址指向了代理服务器,HTTP请求包不需要改变或封装。
三、安全测试工具包
浏览器的包发送到bp,在bp可以对HTTP数据包的内容进行修改,用于安全测试。进一步,我们针对数据包实现对其的编码/解码、比较、爆破等功能,那么,就可以称之为工具包了。
**Burp 渗透测试工作流的核心是能够在 Burp 工具之间传递 HTTP 请求以执行特定任务的能力。**您可以从 “代理拦截” 选项卡,“代理历史记录”,站点地图,甚至在 Burp 中您看到 HTTP 消息的其他任何地方发送消息。为此,选择一个或多个消息,然后使用上下文菜单将请求发送到另一工具。
你将用于特定任务的 Burp 工具如下:
- 扫描程序 - 用于自动扫描网站的内容和安全漏洞。
- 入侵者 - 这使您可以执行自定义的自动攻击,以执行各种测试任务。
- 中继器 - 用于不断地手动修改和重新发出单个 HTTP 请求。
- Collaborator 客户端 - 用于生成 Burp Collaborator 负载并监视结果带外交互。
- Clickbandit- 用于产生针对易受攻击的应用程序的点击劫持漏洞。
- 定序器 - 用于分析应用程序会话令牌中的随机性质量。
- 解码器 - 这使您可以使用常见的编码和解码方案来转换应用程序数据的位。
- 比较器 - 用于对应用程序数据的位进行视觉比较,以发现有趣的差异。
你可以通过多种方式组合 Burp 的各种工具,以执行从非常简单到高度高级和专业化的测试任务。
标记的的那句话(背景黄色)就是burp的本质!
- 核心是能够在 Burp 工具之间传递 HTTP 请求以执行特定任务的能力
- 核心是能够在 Burp 工具之间传递 HTTP 请求以执行特定任务的能力
- 核心是能够在 Burp 工具之间传递 HTTP 请求以执行特定任务的能力
上图的工作流即可看成HTTP数据包的流转。每一个框代表了一个功能模块,数据包(HTTP请求)流经里面,我们可以实现进行一些操作,并能得到一些结果。比如:
- Burp Proxy —> 代理请求(抓包),生成 history 和 sitemap
- 在history中可以对HTTP请求进行一些操作,或传递HTTP请求到其他模块
- 发送到Intruder,在该模块中,可以自动化批量发包(爆破)
burpsuite还有很多其他模块功能,并且支持我们自定义功能扩展。功能的核心都是对HTTP请求包的操作,包括:
- 编辑
- 批量发包
- 编码/解码
- 比对
- 被动扫描
等等。文章来源:https://www.toymoban.com/news/detail-771850.html
参考
https://www.wangan.com/docs/1339文章来源地址https://www.toymoban.com/news/detail-771850.html
到了这里,关于burpsuite 基本原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!