burpsuite 基本原理


一、BurpSuite是什么?

  • 我们看官网的overviewThe 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请求)流经里面,我们可以实现进行一些操作,并能得到一些结果。比如:

  1. Burp Proxy —> 代理请求(抓包),生成 history 和 sitemap
  2. 在history中可以对HTTP请求进行一些操作,或传递HTTP请求到其他模块
    在这里插入图片描述
  3. 发送到Intruder,在该模块中,可以自动化批量发包(爆破)
    在这里插入图片描述
    burpsuite还有很多其他模块功能,并且支持我们自定义功能扩展。功能的核心都是对HTTP请求包的操作,包括:
  • 编辑
  • 批量发包
  • 编码/解码
  • 比对
  • 被动扫描

等等。

参考

https://www.wangan.com/docs/1339

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值