代理分为转发代理(Forwarding proxies)和TLS终止代理(TLS terminating proxies),
- 转发代理只转发数据包,却看不到加密的有效内容
- TLS终止代理,代理程序会解开TLS数据包来查看有效载荷,burp采用的就是这种代理
HTTP代理
正常HTTP流量包
HTTP代理流量包
发送到代理的GET请求的第二个参数是完整的URI(或URL),代理程序据此发现目标端点,此格式被称为
absolute-form
当向代理程序发出请求时,除了
CONNECT
或服务器范围的OPTIONS
请求之外,客户端必须以absolute-form
的形式发送目标URI。
- 浏览器建立和代理之间的TCP连接
- 浏览器将HTTP请求(使用
absolute-URI
)发送到代理- 代理建立与yahoo.com之间的TCP连接(使用
absolute-URI
)- 代理转发HTTP请求
- 代理收到响应。
- 代理关闭与yahoo.com的连接。
- 代理将响应转发给浏览器。
- 代理通知关闭连接(使用
FIN
)。- 浏览器和代理之间的连接关闭。
HOST
代理可以查看HOST请求头,为什么还需要使用
absolute-UIR
为了向后兼容
HTTP/1.0
代理,即使请求目标是absolute-form
的,客户端也必须在HTTP/1.1
请求中发送Host
请求头字段,因为这样允许Host信息通过旧的HTTP/1.0
代理进行转发新版代理依赖于
absolute-URI
并忽略Host
请求头,如果Host
请求头与URI
不同,那么代理必须生成正确的Header
并发送请求
HTTPS 转发代理
CONNECT 请求
在TLS握手之前,浏览器会将目标端点的域名随
CONNECT
请求发送至代理程序格式:包含目标主机和端口
1
CONNECT www.example.com:80 HTTP/1.1
CONNECT方法请求接收方建立一条连接至由请求目标标识的、目标原始服务器的隧道,如果成功,则将其行为限制在对两个方向上的分组数据的盲目转发,直到隧道关闭
浏览器创建与转发代理的TCP连接
浏览器将
CONNECT google.com:443
请求发送给代理代理尝试连接到
google.com:443
如果成功,代理返回响应
200 connection established
现在浏览器知道代理可以和目标端点建立连接并启动TLS握手
转发代理只是传递请求,直到一方关闭连接,然后关闭其他连接
代理程序只进行转发,并不会解密报文
TLS终止代理
Burp 中的HTTPS代理
Burp 有自己的证书,BurpSuite需要在操作系统添加一个根证书,这个根证书可以让浏览器信任所有BurpSuite颁发的证书
BurpSuite拥有了两套对称密钥,一套用于与client交互,另外一套与server交互,而在BurpSuite处可以获得https明文
说明
声明
- 博主初衷为分享网络安全知识,请勿利用技术做出任何危害网络安全的行为,否则后果自负,与本人无关!
- 部分学习内容来自网络,回馈网络,如涉及版权问题,请联系删除 orz
Author: AMao
Link: https://passenger-amao.github.io/2020/09/24/burp%E4%B8%ADHTTPS%E4%BB%A3%E7%90%86%E5%8E%9F%E7%90%86/
Copyright: 本站所有文章均采用 署名-非商业性使用-相同方式共享 4.0 国际(CC BY-NC-SA 4.0) 许可协议。转载请注明出处!