想要学好网络渗透,了解并熟练使用渗透工具是重要的一关。
**Burp Suite **是一款广泛使用的网络安全工具,主要用于测试Web应用程序的安全性。它提供了一系列的功能,帮助安全专家和渗透测试人员发现和利用Web应用程序中的安全漏洞。
一、前置知识:
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。
主要区别
- 安全性:HTTPS比HTTP更安全,因为HTTPS使用SSL/TLS进行加密。
- 性能:HTTP通常比HTTPS性能更好,因为它不需要加密解密的过程。
- 端口:HTTP默认使用80端口,而HTTPS默认使用443端口。
- 搜索引擎优化(SEO):使用HTTPS的网站可能会获得更好的搜索引擎排名,因为搜索引擎倾向于优先展示更安全的网站。
实现HTTPS
实现HTTPS通常需要以下几个步骤:
- 获取SSL/TLS证书:从受信任的证书颁发机构(CA)获取证书。
- 配置服务器:在服务器上安装证书,并配置SSL/TLS。
- 更新网站代码:确保所有资源都通过HTTPS引用,避免混合内容的问题。
- 使用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也有不同的用处,如:
- Simple list:这是最基本的Payload类型,包含一个简单的字符串列表,可以用于替换请求中的参数。
- Runtime file:这种Payload类型允许用户指定一个文件,该文件包含在运行时动态生成的Payload列表,避免了内存浪费。
- Custom iterator:用户可以创建自定义迭代器,根据特定的规则或模式生成Payload。
- Character substitution:这种Payload类型允许用户定义字符替换规则,例如将所有小写字母替换为大写。
- Case modification:用于修改字符的大小写,如将所有字符转换为大写或小写。
- Recursive grep:递归地搜索文件或目录,并将搜索结果作为Payload列表。
- Illegal Unicode:生成包含非法Unicode字符的Payload,用于测试应用程序对Unicode字符的处理。
- Character blocks:根据特定的字符块生成Payload,例如所有可能的ASCII字符组合。
- Numbers:生成数字序列作为Payload,例如从1开始的递增序列。
- Brute forcer:用于生成暴力破解攻击所需的Payload,如所有可能的字符组合。
- Null payloads:包含空值或特殊NULL字符的Payload,用于测试应用程序对空输入的处理。
- Character frobber:用于修改或“frob”(一种幽默的术语,意为“调整”)字符以生成新的Payload。
- Bit flipper:用于翻转二进制数据中的位,生成不同的Payload。
- Username generator:生成可能的用户名变体,用于用户名爆破。
简单来说,BP中的爆破像是一个自动化工具,为我们的操作提供了极大便利。
版权归原作者 SUGERBOOM 所有, 如有侵权,请联系我们删除。