• 第四章 SSL和Proxy高级选项


    在前一章,我们已经学习了HTTP消息如何通过Burp Proxy进行拦截和处理,本章我们将继续学习HTTPS协议消息的拦截和处理。

    HTTPS协议是为了数据传输安全的需要,在HTTP原有的基础上,加入了安全套接字层SSL协议,通过CA证书来验证服务器的身份,并对通信消息进行加密。基于HTTPS协议这些特性,我们在使用Burp Proxy代理时,需要增加更多的设置,才能拦截HTTPS的消息。

    本章包含的主要内容有

    • CA证书的安装
    • CA证书的卸载
    • Proxy监听设置
    • SSL直连和隐形代理设置

    我们都知道,在HTTPS通信过程中,一个很重要的介质是CA证书,下面就我们一起来看看Burp Suite中CA证书的安装。

    CA证书的安装

    一般来说,Burp Proxy代理过程中的CA主要分为如下几个步骤(以win7下IE9为例):

    1.首先,根据前三章内容的学习,你已配置好Burp Proxy监听端口和IE的代理服务器设置。其次,你的IE浏览器中没有安装过Burp Suite的CA证书,如果已经安装,请先卸载证书。详细的卸载方法请参考CA证书的卸载章节。

    2.以管理员身份,启动IE浏览器,在地址栏输入http://burp并回车,进入证书下载页面 

    3.点击上图所示的证书下载,另存为到本地目录。

    4.点击浏览器上的【工具】菜单,打开【Internet选项】。

     

    5.在弹出的证书对话框中,点击【内容】-【证书】。

     

    6.在弹出的证书对话框中,选中【受信任的根证书颁发机构】,点击【导入】。

     

    7.点击【下一步】,选择步骤3保存的证书文件,进行下一步操作。

     

    8.指定证书的存储位置,如图

     

    9.点击【下一步】,直至完成。这时,会提示安全警告,点击【是】,提示导入完成。

     

    10.关闭IE,重启浏览器,CA证书即配置完成。

    CA证书的卸载


    CA证书的卸载的通常有两种方式,第一种方式在上一章节CA证书安装中的第6步,找到需要卸载的证书,点击【删除】即可。我们这里主要描述第二种删除方式,主要是为了解决在第一种方式的基础上删除按钮失效或者证书列表里看不到的证书也一起删除的方法。

    1.首先,我们打开cmd,输入mmc,或者你在运行输入框里直接输入mmc回车,会弹出管理控制台。 

    2.点击【文件】菜单,打开【添加/删除管理单元】 

    3.找到证书,如下图1,点击【添加】按钮,如下图2

     

    4.在弹出的对话框中默认选中【我当前的用户】,点击【完成】,一直到结束,这是会在控制台跟节点下多了一个证书的节点。 

    5.打开CA证书所在的位置,选择删除即可。

     

    6.这时,你再返回到IE浏览器的证书列表里,则不会再看到被删除的证书了。

    除了IE之外,其他的浏览器如FireFox、Chrome、Sarifa等都证书的安装和卸载基本类似,操作时可以以IE的CA证书安装作为参考。

    Proxy监听设置


    当我们启动Burp Suite时,默认会监听本地回路地址的8080端口,除此之外,我们也可以在默认监听的基础上,根据我们自己的需求,对监听端口和地址等参数进行自由设置。特别是当我们测试非浏览器应用时,无法使用浏览器代理的方式去拦截客户端与服务器端通信的数据流量,这种情况下,我们会使用自己的Proxy监听设置,而不会使用默认设置。

    • Proxy监听设置

    当我们在实际使用中,可能需要同时测试不同的应用程序时,我们可以通过设置不同的代理端口,来区分不同的应用程序,Proxy监听即提供这样的功能设置。点击图中的【Add】按钮,会弹出Proxy监听设置对话框,里面有更丰富的设置,满足我们不同的测试需求。

      

    Proxy监听设置主要包含3块功能:

    1.端口和IP绑定设置Binding 绑定的端口port是指Burp Proxy代理服务监听的端口,绑定IP地址分仅本地回路、所有接口、指定地址三种模式,在渗透测试中,无论你选择哪种模式,你需要明白一点,当你选择的非本地回路IP地址时,同局域网内的其他电脑也可以访问你的监听地址。

    2.请求处理Request Handling 请求处理主要是用来控制接受到Burp Proxy监听端口的请求后,如果对请求进行处理的。  

    其具体配置可分为:端口的转发、主机名/域名的转发、强制使用SSL和隐形代理4个部分。当我们配置了端口的转发时,所有的请求都会被转发到这个端口上;如果我们配置了主机或域名的转发,则所有的请求会转发到指定的主机或域名上。同时,我们可以指定,通过Burp Proxy的消息是否强制使用SSL,如果设置了此项,则请求若是http协议,经Burp proxy代理后将转换为https协议。隐形代理主要是用于测试富客户端应用或者是非浏览器代理方式的应用,当我们设置了它,访问这些应用时,将通过非代理的方式,直接连接Burp Proxy的监听端口。

    1. SSL 证书 这些设置控制呈现给SSL客户端的服务器SSL证书。可以解决使用拦截代理时出现的一些SSL问题: 1.您可以消除您的浏览器的SSL警报,并需要建立SSL例外。其中,网页加载来自其他域的SSL保护的项目,可以确保这些正确的加载到浏览器,而不需要为每个域手动接受代理的SSL证书。 2.可以与该拒绝无效的SSL证书连接到服务器胖客户机应用程序的工作。 它有下列选项可供设置:

    2. 使用自签名证书(Use a self-signed certificate ) —— 一个简单的自签名SSL证书呈现给您的浏览器,它总是会导致SSL警告。
    3. 生成每个主机的CA签名证书(Generate CA-signed per-host certificates)—— 这是默认选项。在安装时,Burp创造了一个独特的自签名的证书颁发机构(CA)证书,并将此计算机上使用。当你的浏览器发出的SSL连接指定主机,Burp生成该主机的SSL证书,由CA证书签名。您可以安装Burp的CA证书作为浏览器中的受信任的根,从而使每个主机证书没有任何警报接受。
    4. 生成与特定的主机名CA签发的证书(Generate a CA-signed certificate with a specific hostname)—— -是类似于前面的选项;不同的是,Burp会生成一个主机证书与每一个SSL连接使用,使用指定的主机名。
    5. 使用自定义证书(Use a custom certificate)—— 此选项可以加载一个特定的证书(在PKCS#12格式)呈现给浏览器。如果应用程序使用这需要一个特定的服务器证书(例如,与给定的序列号或证书链)的客户端应该使用这个选项。

    SSL直连和隐形代理

    SSL直连的设置主要用于指定的目的服务器直接通过SSL连接,而通过这些连接的请求或响应任何细节将在Burp代理拦截视图或历史日志中可见。通过SSL连接传递可以并不是简单地消除在客户机上SSL错误的情况下有用。比如说,在执行SSL证书的移动应用。如果应用程序访问多个域,或使用HTTP和HTTPS连接的混合,然后通过SSL连接到特定的主机问题仍然使您能够以正常的方式使用Burp的其他方式进行通信。如果启用自动添加客户端SSL协商失败的选项,当客户端失败的SSL协议检测(例如,由于不承认Burp的CA证书),并会自动将相关的服务器添加到SSL直通通过列表中去。其设置界面如下图所示: 

    有时候,在拦截富客户端软件时,我们通常需要使用隐形代理。富客户端软件通常是指运行在浏览器之外的客户端软件,这就意味着它本身不具有HTTP代理是属性。当它进行网络通信时,客户端将无法使代理感知或者无法由代理进行通信。在Burp中,我们可以使用隐形代理的方式,对通信内容进行代理或拦截,从而对通信的请求和响应消息进行分析。使用隐形代理通常需要做如下设置(以https://example.com为例): 

    1.配置hosts文件,Windows操作系统下的目录位置Windows/System32/drivers/etc/hosts,而Linux或者Unix下的目录为/etc/hosts,添加如下行:

    127.0.0.1 example.com
    

    2.第一步设置完成之后,我们需要添加一个新的监听来运行在HTTP默认的80端口,如果通信流量使用HTTPS协议,则端口为443。  

    3.如果是HTTPS协议的通信方式,我们需要一个指定域名的CA证书。

      

    4.接着,我们需要把Burp拦截的流量转发给原始请求的服务器。这需要在Options->Connections->Hostname Resolution 进行设置。因为我们已经告诉了操作系统,example.com的监听地址在127.0.0.1上,所以我们必须告诉Burp,将example.com的流量转发到真实的服务器那里去。  

    5.通过这样的配置,我们就可以欺骗富客户端软件,将流量发送到Burp监听的端口上,再由Burp将流量转发给真实的服务器。

    ***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***
  • 相关阅读:
    Expert C programming书摘
    修改文件时间属性的方法
    算法学习, 开始计划
    小游戏学习搜集
    C++ 练习记录2---Effective STL中的vector<bool>
    C++ 练习记录1--vector<T> 中T的初始化
    oracle的wm_concat函数实现行转列
    Oracle批量插入有日期类型数据
    如何将zTree选中节点传递给后台
    第五章:1.数组和广义表 -- 数组
  • 原文地址:https://www.cnblogs.com/guanfuchang/p/6978875.html
Copyright © 2020-2023  润新知