BurpSuite的https代理原理

BurpSuite的基本原理是搭配浏览器使用的http代理。对于HTTP协议,与一般的HTTP代理原理相同。对于HTTPS,即使用SSL的安全HTTP协议,BurpSuite需要发起“中间人攻击”以获得HTTP消息明文。具体原理如下。






1. 无BurpSuite的HTTPS交互过程


    Client                          Server  
      | -----HTTPS(TCP443) Req------> |


      | <----- Certificate -----------|


  Verify Cert


      | <------SSL Negotiation------->|


      |<----Security Connection------>|


Client需要获取Server的公钥证书,并利用非对称密码算法协商对称密钥,实现后面http消息的机密性和完整性保护。SSL的设计是能够扛中间人攻击的,所以无法通过传统的中间人攻击实现https代理。






2. 有BurpSuite的HTTPS交互过程


BurpSuite的基本思路是伪装成目标https服务器,让浏览器(client)相信BurpSuite就是目标站点。为了达成目标,BurpSuite必须:(1)生成一对公私钥,并将公钥和目标域名绑定并封装为证书;(2)让浏览器相信此证书,即通过证书验证。所以, BurpSuite需要在操作系统添加一个根证书,这个根证书可以让浏览器信任所有BurpSuite颁发的证书。具体流程如下:


    Client                     BurpSuite                             Server
 
    |-----https(tcp 443) req------> |


                  Generate an certificate1 bound


                     with the target domain


    |<------ -certificate1---------->|


    |<-------SSL negotiation-------->|


    |<-----security connection------>|


                                     | -------https(tcp 443) req------->|


                                     |<-------certificate2------------->|


                                     |<----------SSL connection-------->|


                                     |<-------security connection------>|


之后,BurpSuite拥有了两套对称密钥,一套用于与client交互,另外一套与server交互,而在BurpSuite处可以获得https明文。





猜你喜欢

转载自blog.csdn.net/write_down/article/details/78990182