OSI七层模型和TCP/IP四层模型
在深入 Burp Suite 的强大功能之前,我们先放慢脚步,夯实一下网络基础知识。 你可能会觉得这些理论有点枯燥,但它们就像武功的内功心法,是理解和运用 Burp Suite 这类“神兵利器”的根基。 磨刀不误砍柴工,掌握扎实的网络基础,才能更高效、更深入地掌握 Burp Suite,发挥它的真正威力。
首先需要知道两个模型OSI七层模型和TCP/IP四层模型:
OSI七层模型 | TCP/IP四层模型
--------------------------------------------------
应用层(Application Layer) | 应用层(Application Layer)
--------------------------------------------------
表示层(Presentation Layer) | -
--------------------------------------------------
会话层(Session Layer) | -
--------------------------------------------------
传输层(Transport Layer) | 传输层(Transport Layer)
--------------------------------------------------
网络层(Network Layer) | 网络层(Network Layer)
--------------------------------------------------
数据链路层(Data Link Layer)| 网络接口层(Network Interface Layer)
--------------------------------------------------
物理层(Physical Layer) | -
--------------------------------------------------
OSI七层模型和TCP/IP四层模型是理论上的网络通信模型,用于描述和组织网络协议的功能和层次结构。它们是网络通信领域的基础和参考,对于网络协议的设计和实现起到了重要的指导作用。
然而,在实际的工业界中,TCP/IP协议族更加广泛地被使用和实现,而OSI七层模型相对较少直接应用。这是因为TCP/IP协议族是互联网的核心协议,几乎所有的互联网通信都基于TCP/IP协议。因此,TCP/IP协议族更加贴合实际应用和实际需求。
实际工业界中的网络通信系统和协议栈往往是基于TCP/IP协议族的,但是可以参考OSI七层模型的思想和层次结构进行设计和组织。TCP/IP协议族的实际实现往往是在网络接口层、网络层、传输层和应用层进行的,而对于表示层、会话层和物理层的功能,可能会被合并到其他层次或由应用层来实现。
此外,一些特定的行业和领域可能会根据实际需求进行定制化的协议设计,在设计过程中可能会参考OSI七层模型的思想,但实际的协议结构和层次可能与标准的模型有所不同。
http/https抓包的原理
好的,理解了网络模型,对于我们接下来学习抓包就非常有帮助了。虽然实际工作中我们更多接触的是TCP/IP四层模型,但OSI七层模型可以帮助我们更系统地理解网络协议的分层概念。 就好比我们了解了房子的地基、梁柱、墙壁和屋顶这些基本结构,再去看具体的装修细节就更容易理解了。
HTTP(Hypertext Transfer Protocol)和HTTPS(HTTP Secure)都是基于TCP/IP协议的应用层协议,用于在客户端和服务器之间进行数据传输和通信。下面分别介绍HTTP和HTTPS的规范:
- HTTP规范:
- HTTP的规范主要由RFC 2616(HTTP/1.1规范)定义,随后更新为RFC 7230-7235。
- HTTP规范定义了请求报文和响应报文的格式和语义,包括请求行、状态行、头部字段和报文主体等。
- HTTP规范定义了多种请求方法(如GET、POST、PUT、DELETE等)和状态码(如200、404、500等)的含义和用途。
- HTTP规范还定义了头部字段的语法和用法,包括通用头部字段、请求头部字段、响应头部字段和实体头部字段等。
- HTTPS规范:
- HTTPS是在HTTP协议基础上添加了安全性的协议,通过SSL/TLS协议对通信进行加密和认证。
- HTTPS的规范主要由RFC 2818(HTTP Over TLS)定义,随后更新为RFC 7230-7235。
- HTTPS规范与HTTP规范的大部分内容相同,但在安全性方面有所扩展和修改。
- HTTPS规范要求客户端和服务器之间建立安全连接,使用SSL/TLS协议进行数据的加密和认证。
- HTTPS规范还定义了使用SSL/TLS协议进行握手、证书验证和密钥交换的过程。
- 请求报文:
- 请求行:包含请求方法、请求URL和HTTP版本。
- 请求头部:包含与请求相关的各种信息,如Host、User-Agent、Content-Type等。
- 请求主体(可选):包含请求发送的数据,如表单数据、JSON数据等。
- 响应报文:
- 状态行:包含响应状态码和状态描述。
- 响应头部:包含与响应相关的各种信息,如Content-Type、Content-Length等。
- 响应主体(可选):包含响应返回的数据,如HTML页面、JSON数据等。
- 请求方法:
- HTTP定义了多种请求方法,如GET、POST、PUT、DELETE等,用于指定请求的操作类型。
- 每种请求方法有不同的语义和用途,用于实现不同的操作。
- 状态码:
- HTTP定义了一系列状态码,用于表示请求的处理结果。
- 常见的状态码有200表示成功、404表示资源未找到、500表示服务器内部错误等。
- 头部字段:
- HTTP定义了各种头部字段,用于承载请求和响应的各种元数据。
- 头部字段可以包含通用头部字段、请求头部字段、响应头部字段和实体头部字段等。
- Cookie:
- HTTP通过Cookie机制来实现状态管理和会话跟踪。
- 服务器可以通过Set-Cookie响应头部字段将Cookie信息发送给客户端,客户端将Cookie信息保存并在后续请求中发送回服务器。
- 缓存:
- HTTP通过缓存机制来减少网络传输和提高性能。
- 客户端和服务器可以通过Cache-Control、Expires、Last-Modified等头部字段来控制缓存行为。
HTTP和HTTPS的规范定义了请求报文、响应报文、请求方法、状态码、头部字段等方面的规。HTTP规范主要由RFC 2616和RFC 7230-7235定义,而HTTPS规范主要由RFC 2818和RFC 7230-7235定义。HTTP规范定义了基本的请求和响应格式,而HTTPS规范在此基础上添加了安全性的要求,通过SSL/TLS协议对通信进行加密和认证。
HTTP(S)协议的请求方式
HTTP定义了多种请求方法(也称为HTTP动词),用于指定请求的操作类型。以下是常见的HTTP请求方法及其简单介绍:
- GET:用于从服务器获取资源,一般用于获取数据,不应该对服务器产生副作用。
请求报文示例:
GET /path/to/resource HTTP/1.1
Host: example.com
- POST:用于向服务器提交数据,一般用于发送数据、更新资源或进行服务器端操作。
请求报文示例:
POST /path/to/resource HTTP/1.1
Host: example.com
Content-Type: application/json
{"key": "value"}
- PUT:用于向服务器上传新的资源或更新现有资源,用于替换服务器上指定位置的资源。请求报文示例:
PUT /path/to/resource HTTP/1.1
Host: example.com
Content-Type: text/plain
Updated content
- DELETE:用于删除服务器上指定位置的资源。
请求报文示例:
DELETE /path/to/resource HTTP/1.1
Host: example.com
- HEAD:类似于GET请求,但只获取响应头部信息,不返回响应体,常用于获取资源的元数据。
请求报文示例:
HEAD /path/to/resource HTTP/1.1
Host: example.com
- OPTIONS:用于获取服务器支持的请求方法和可用选项,用于探测服务器的功能和配置。
请求报文示例:
OPTIONS /path/to/resource HTTP/1.1
Host: example.com
HTTP(S)的状态码
HHTTP(S)协议定义了一系列状态码(Status Code),用于表示服务器对客户端请求的处理结果和响应状态。状态码由三位数字组成,分为五个类别,每个类别代表不同的响应含义。客户端和服务器可根据状态码采取相应的操作和处理。
状态码分类及常见示例:
1xx – 信息性状态码(Informational)
表示请求已被服务器接收,客户端应继续发送请求的剩余部分。
- 100 Continue:服务器已接收到请求的初始部分,客户端应继续发送剩余内容。
- 101 Switching Protocols:服务器理解并接受客户端请求,准备切换到新的协议。
2xx – 成功状态码(Success)
表示请求已成功处理。
- 200 OK:请求成功,服务器已成功处理请求并返回响应内容。
- 201 Created:请求成功,并在服务器上创建了新的资源。
- 204 No Content:请求成功,但响应中不包含任何实体内容。
3xx – 重定向状态码(Redirection)
表示客户端需要采取进一步的操作才能完成请求,通常涉及资源位置的变化。
- 301 Moved Permanently:请求的资源已永久移动到新位置,客户端应使用新的URL。
- 302 Found:请求的资源临时移动到不同的位置,客户端应临时访问新位置。
- 304 Not Modified:客户端缓存的资源仍然有效,可以直接使用缓存版本,无需重新下载。
4xx – 客户端错误状态码(Client Error)
表示客户端请求存在错误,服务器无法处理请求。
- 400 Bad Request:服务器无法理解客户端请求,通常是请求语法或参数错误。
- 401 Unauthorized:请求需要身份验证,客户端需提供有效的身份凭证。
- 404 Not Found:请求的资源不存在或无法找到。
- 418 I’m a teapot:此状态码并非正式HTTP规范定义,而是1998年IETF(Internet Engineering Task Force)愚人节玩笑中提出的,源自名为”Hyper Text Coffee Pot Control Protocol”(HTCPCP)的虚构协议。该协议描述了如何通过网络控制咖啡壶。”418 I’m a teapot”状态码表示服务器拒绝冲泡咖啡,因为它是一个茶壶。始皇也曾以此梗开玩笑。
5xx – 服务器错误状态码(Server Error)
表示服务器在处理请求时发生了意外错误或异常情况。
- 500 Internal Server Error:服务器遇到意外情况,无法完成请求。
- 503 Service Unavailable:服务器当前无法处理请求,通常是由于服务器过载或维护。
状态码的作用与意义
HTTP(S)状态码提供了请求处理结果的明确指示,客户端和服务器可以根据状态码采取相应的操作和处理措施。以上列举的是一些常见的状态码,实际应用中还有其他更多状态码可供使用,具体使用时可根据实际需求进行选择和判断。
http/https抓包的原理
HTTP/HTTPS抓包的本质是通过拦截网络通信流量,捕获并分析客户端与服务器之间的请求和响应数据包。下面分别介绍HTTP和HTTPS抓包的具体原理:
一、HTTP抓包原理
HTTP协议采用明文传输,抓包过程相对简单:
- 中间人代理模式:
抓包工具(如Burp Suite、Wireshark、Fiddler、Charles等)在客户端与服务器之间充当中间人代理,拦截HTTP请求和响应数据包。 - 代理配置:
用户通过配置客户端或系统的网络设置,使HTTP流量经过抓包工具。 - 数据捕获与分析:
当客户端发送HTTP请求时,抓包工具捕获请求数据包并展示给用户;服务器返回的HTTP响应数据包同样被捕获和展示。 - 请求与响应的查看与修改:
用户可通过抓包工具查看请求头、响应头、请求体、响应体等详细信息,并进行分析和修改。
二、HTTPS抓包原理
HTTPS协议使用SSL/TLS加密通信,抓包过程较为复杂:
- SSL/TLS加密通信:
HTTPS通信通过SSL/TLS协议进行加密和认证,数据以密文形式传输。 - 中间人代理与证书替换:
抓包工具在客户端与服务器之间建立中间人代理,并生成自己的SSL证书(称为根证书或中间人证书)。 - 证书信任机制:
客户端发起HTTPS请求时,抓包工具伪装成服务器,向客户端发送自己生成的SSL证书。
客户端收到证书后,会验证证书合法性。由于抓包工具的证书并非由可信的证书颁发机构签发,客户端通常会发出安全警告。 - 用户信任与流量解密:
若用户选择信任抓包工具的根证书,客户端与抓包工具之间便建立安全连接。此时,抓包工具可解密客户端与服务器之间的SSL流量。 - 数据捕获与分析:
抓包工具捕获解密后的HTTPS请求和响应数据包,用户可查看明文数据,进行分析和调试。
三、抓包工具证书与服务端证书的关系
(一)抓包工具的证书(根证书)
- 抓包工具生成自己的SSL根证书(Root Certificate),用于拦截和解密HTTPS流量。
- 用户需将此根证书添加到操作系统或浏览器的受信任证书存储中,以便客户端信任该证书。
(二)服务端的证书
- 服务端使用由可信第三方机构(CA)签发的SSL证书,包含服务端公钥、域名信息及CA签名。
- 客户端收到服务端证书后,会验证证书合法性,包括签名有效性、域名匹配性和证书有效期等。
(三)证书替换与验证过程
- 客户端发起HTTPS请求时,抓包工具拦截请求,并使用自己的根证书替代服务端证书。
- 抓包工具解析并验证服务端证书合法性后,生成新的证书链(包含抓包工具根证书)返回给客户端。
- 客户端验证并接受抓包工具的根证书后,与抓包工具建立安全连接,从而实现流量解密。
四、小结
- HTTP抓包:通过中间人代理直接拦截明文HTTP请求和响应数据包,过程简单直接。
- HTTPS抓包:需建立中间人代理并进行证书替换,通过用户信任抓包工具的根证书实现SSL流量解密,过程相对复杂。
通过以上机制,抓包工具能够有效捕获和展示HTTP/HTTPS请求与响应的详细信息,帮助用户进行调试、分析和修改。需要注意的是,抓包工具的根证书仅在本地机器上生效,不会影响其他用户的HTTPS通信。
抓包工具首席推荐之burpsuit
Burp Suite是一款功能强大的Web安全测试工具,广泛应用于渗透测试、漏洞挖掘和应用程序安全评估。它集成了多个模块,提供丰富的功能和工具,帮助安全测试人员高效地发现并利用应用程序中的漏洞。本文将详细介绍Burp Suite的主要组成部分及其功能,并分享一些推荐使用它的理由和技巧。
Burp Suite的主要组成部分及功能
1. Proxy代理(核心组件)
- 拦截与修改请求:Burp Proxy允许用户拦截、修改和分析HTTP/HTTPS请求与响应,作为中间人代理捕获流量,便于调试和漏洞挖掘。
- 高级功能:提供拦截规则、自动化扫描、HTTP历史记录等功能,帮助用户更高效地进行安全测试。
2. Scanner扫描器(自动化漏洞检测)
- 自动化漏洞扫描:Burp Scanner能够主动扫描应用程序,自动检测常见漏洞类型,如跨站脚本攻击(XSS)、SQL注入、命令注入等。
- 详细报告生成:扫描完成后,生成详细的漏洞报告,帮助安全测试人员快速识别和修复潜在风险。
3. Spider爬虫(自动化页面发现)
- 自动遍历应用程序:Burp Spider通过模拟用户行为,自动发现隐藏页面和功能,遍历应用程序的不同路径和链接。
- 发现敏感信息泄露:帮助测试人员发现未经授权访问、敏感信息泄露等安全问题。
4. Intruder暴力破解器(暴力破解与Fuzz测试)
- 自动化攻击测试:Burp Intruder可自动发送大量定制请求,进行暴力破解、字典攻击、参数化Fuzz测试。
- 发现安全弱点:帮助测试人员发现认证绕过、弱口令、输入验证问题等安全漏洞。
5. Repeater重放器(交互式请求测试)
- 请求重放与修改:Burp Repeater允许用户手动修改请求参数和头部信息,实时观察响应结果。
- 调试与分析:特别适合对特定请求进行深入调试和分析,快速定位问题。
为什么推荐使用Burp Suite?
- 易于上手:早期版本的Burp Suite仅作为抓包工具使用,用户需要手动配置证书,操作较为繁琐。新版Burp Suite自带内置浏览器,无需额外配置证书即可轻松抓包,非常适合入门新手。
- 功能强大且集成化:Burp Suite集成了多种渗透测试工具,允许测试人员结合手工和自动化技术,更高效地完成Web应用程序的安全测试。
- 跨平台支持:Burp Suite基于Java开发,具备良好的跨平台性,适用于不同操作系统环境 。
关于安装与破解的建议
网络上有很多Burp Suite的安装包和破解工具,这里推荐一种简单有效的方法:在Github搜索Burp Suite Pro Loader & Keygen
,该工具能够自动更新并下载最新版本。后续有机会我会专门抽出源码进行详细讲解。