使用burpsuite验证https证书是否安全

来源:互联网 发布:js手指滑动图片轮播 编辑:程序博客网 时间:2024/06/07 09:01

为什么要验证https证书?

https是安全的传输过程,一旦建立连接便以加密形式通信,正常情况下窃听者无法得到私钥也无法解密数据,这些是由安全证书RSA本身特性保证的

然而如果在https建立过程中,未对证书做校验,攻击者可以伪造证书骗取密钥以解密之后的数据流,正如fiddler的角色:

首先fiddler截获客户端浏览器发送给服务器的https请求, 此时还未建立握手。
第一步, fiddler向服务器发送请求进行握手, 获取到服务器的CA证书, 用根证书公钥进行解密, 验证服务器数据签名, 获取到服务器CA证书公钥。
第二步, fiddler伪造自己的CA证书, 冒充服务器证书传递给客户端浏览器, 客户端浏览器做跟fiddler一样的事。
第三步, 客户端浏器生成https通信用的对称密钥, 用fiddler伪造的证书公钥加密后传递给服务器, 被fiddler截获。
第四步, fiddler将截获的密文用自己伪造证书的私钥解开, 获得https通信用的对称密钥。
第五步, fiddler将对称密钥用服务器证书公钥加密传递给服务器, 服务器用私钥解开后建立信任, 握手完成, 用对称密钥加密消息, 开始通信。
第六步, fiddler接收到服务器发送的密文, 用对称密钥解开, 获得服务器发送的明文。再次加密, 发送给客户端浏览器。
第七步, 客户端向服务器发送消息, 用对称密钥加密, 被fidller截获后, 解密获得明文。


1.环境配置

①导出证书

我测试的是iphone端,首先安装证书,先把证书导出

Proxy -> Options -> Proxy Listeners -> import / export CA certificate 出现CA Certificate对话框

Export -> Certificate in DER format -> Next -> 保存为 tmp.cer -> Next ....

②手机端下载证书

在本地建立简单的Http服务器,吧tmp.cer放到其中,用iphone登录自己的网站下载cer,会自动识别为证书,安装即可

(在这里记得把以前重复安装的证书删掉,否则不生效,笔者在这里栽了好久)

③手机端设置代理

设置iphone的代理,细节不赘述(主机建立热点保证和手机在同一个wifi,设置代理ip=???? port=8080)

④设置burp代理服务器

Proxy -> Options -> Proxy Listeners ,listener里面默认有一项127.0.0.1:8080,选择Edit,Bind to address从Lookback only修改为All interfaces


2.设置假证书

设置前面listener的Certificate,让然在Edit proxy listener页面,Certificate选项卡有三项:

Use a self-signed certificate使用自签名证书,用于检测伪造证书为自签名情况

Generate CA-signed per-host certificates使用目标域名CA签名的证书,这是正常情况,代理工具会为每个域名生成证书

Generate a CA-signed certificate with a specific hostname使用指定域名CA签名的证书,用于检测伪造host签名情况

Use a custom certificate(PKCS#12)使用用户自定义证书,用于检测其他伪造证书情况,如假日期

设置以后立即生效


现在尝试对https://www.baidu.com做一次校验,选择指定域名CA签名这种情况,设置为*.qq.com

正常情况下,www.baidu.com匹配才能通过,如果*.qq.com被通过了,说明存在https未验证host漏洞

结果为无法连接,说明浏览器做了校验域名


0 0