0


burpsuite 基本原理

文章目录


一、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;structsockaddr_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,(structsockaddr*)&serv_addr,sizeof(serv_addr);send(sockfd, msg,strlen(msg),0);close(sockfd);

用python有助于我们更好理解:

#!/usr/bin/env python3import 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())withopen("/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

标签: web安全 网络 安全

本文转载自: https://blog.csdn.net/weixin_45626840/article/details/129562414
版权归原作者 藤原千花的败北 所有, 如有侵权,请联系我们删除。

“burpsuite 基本原理”的评论:

还没有评论