AMao
小菜鸡目前对一些东西的认知,希望师傅们可以帮忙纠正!

burp中HTTPS代理原理分析

2020-09-24 Web安全 HTTPS 代理
Word count: 819 | Reading time: 2min

代理分为转发代理(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明文

说明

原文地址

由安全客作者 h4d35 翻译

声明

  1. 博主初衷为分享网络安全知识,请勿利用技术做出任何危害网络安全的行为,否则后果自负,与本人无关!
  2. 部分学习内容来自网络,回馈网络,如涉及版权问题,请联系删除 orz
< PreviousPost
纵横杯2020 wp
NextPost >
Web通信协议详解(HTTP、SSL、HTTPS、HSTS)
CATALOG
  1. 1. HTTP代理
  2. 2. HTTPS 转发代理
  3. 3. TLS终止代理
  4. 4. 说明
  5. 5. 声明