• SSL/TLS 安全测试


    本文介绍了使用半自动化工具执行SSL&TLS安全性评估的过程,以及如何使用手动及工具的测试方法验证并发现问题。目的是优化TLS和SSL安全测试流程,帮助信息安全顾问在渗透测试时在TLS / SSL上花费更少的时间。

    什么是TLS和SSL?

    安全套接层(SSL)和传输层安全(TLS)加密用于通过互联网提供通信安全(传输加密)和来保护网络流量和互联网上的隐私,用于诸如网络,电子邮件,即时消息(IM)和一些虚拟专用网络(VPN)。

    因此,TLS安全配置很重要,应花时间学习如何识别常见的漏洞和安全配置错误。


    TLS / SSL安全测试工具

    testssl.sh

    testssl.sh是我们首选的测试工具,它涵盖了TLS和SSL评估所需的所有测试所需工具,并定期更新。

    安装

    您可以通过执行其git clone来安装最新版本的tesetssl.sh:

    git clone https://github.com/drwetter/testssl.sh.git

    testssl.sh示例

    有许多可以用于testssl.sh的测试选项,您应该使用的选项将在很大程度上取决于您的测试要求。以下是部分有关testssl.sh命令行选项的示例。运行./testssl.sh可以看到所有选项。

    测试单个主机上的所有内容并输出到控制台

    ./testssl.sh -e -E -f -p -y -Y -S -P -c -H -U TARGET-HOST

    测试单个主机上的所有内容并输出到HTML

    ./testssl.sh -e -E -f -p -y -Y -S -P -c -H -U TARGET-HOST | aha> OUTPUT-FILE.html

    测试子网上的所有主机并输出到HTML

    ./testssl.sh -e -E -f -p -y -Y -S -P -c -H -U 192.168.1.0/24 | aha> OUTPUT-FILE.html

    与上述相同,但只列举每个服务器支持的密码类型:

    ./testssl.sh -E 192.168.1.0/24 | aha> OUTPUT-FILE.html

    控制台输出的截图

    f2974159234dd10e0e4f01eec9e93046.png

    HTML输出的截图

    850361f7453378e8e2c8020b172a846d.png

    TLS和SSL漏洞测试

    常见的TLS和SSL漏洞已经列在下面了,每个漏洞都有一个说明,如果可能的话可以手动或自动测试漏洞

    SWEET32(CVE-2016-2183)

    367768fcf0650333d64f663abe8b3121.png

    定义

    64位块大小(如Triple-DES(3DES))的传统块密码在CBC模式下使用,易受到攻击。当使用CBC模式操作时,使用simple birthday attack来识别64位块密码冲突。当碰撞发生时,这意味着输入与输出相同,使得可以执行BEAST style attack来渗透加密的数据。

    作者Karthik Bhargavan和Gaetan Leurent能够在浏览器(作为MiTM)中运行JavaScript,并发送大量的数据导致冲突,然后使用此信息来恢复会话cookie。

    测试SWEET32

    确定服务器是否支持Triple-DES密码,如果服务器支持Triple-DES,则易受SWEET32攻击。

    SWEET32 testssl.sh

    使用testssl.sh识别弱密码:

    ./testssl.sh --ciphers TARGET

    如果输出显示Tripe DES密码,就像下面的截图一样,目标服务器容易受到SWEET32的影响:

    fbf9edfcfdfba5f32ebd99178cd019b6.png

    如果输出看起来像下面的截图,服务器不容易受到SWEET32的影响:

    6a2ae2f314691cff0379a4cbc84431cc.png此外,您可以枚举服务器提供给每个协议的密码,方法如下:

    ./testssl.sh -E TARGET

    ea827e3662ceaad2a4f55a77ca166b32.png

    使用3DES的任何密码都易受SWEET32影响。

    SWEET32 Nmap测试

    Nmap也可用于枚举服务器的密码,NSE插件还将通知是否有任何64位块密码可用。

    nmap --script = ssl-enum-ciphers -p443 TARGET

    如果您在输出中看到以下内容,则会发现64位块密码

    warnings: 
    |       64-bit block cipher 3DES vulnerable to SWEET32 attack

    手动测试SWEET32

    根据上面方法测试用Nmap NSE脚本枚举密码

    DROWN(CVE-2016-0800)

    DROWN定义

    DROWN(使用过时和弱化的eNcryption解密RSA),DROWN攻击的最一般变体利用了SSLv2协议的一个根本缺点,允许中间人(MiTM)攻击者利用导入符合20世纪90年代美国政府的限制(EXPORT等级加密在下面的FREAK漏洞描述中详细描述)的密码学。

    测试DROWN

    testssl.sh DROWN测试
    ./testssl.sh -D TARGET
    Nmap DROWN测试
    nmap -p 443 -sV --script = sslv2-drown

    FREAK(CVE-2015-0204)

    FREAK定义

    FREAK(破解RSA导出密钥),利用了TLS / SSL中的加密弱点,这是美国政府几十年前最初引入的。使用RSA_EXPORT密钥的想法是允许导出包含不能被大多数计算机破解的加密密钥。如果RSA_EXPORT密钥加密为512位或更少,那么以目前的计算机性能很容易破解。

    FREAK执行降级攻击(强制服务器使用较弱的密码),当与中间人(MiTM)类型攻击相结合时,这允许攻击者捕获数据并中断弱密钥的解密。

    FREAK攻击的自动测试

    testssl.sh FREAK攻击测试
    ./testssl -F TARGET

    手动测试FREAK攻击

    使用./testssl.sh -E TARGET或者nmap -p 443 --script=ssl-enum-ciphers TARGET枚举服务器密码,确保服务器支持的以下类型密码不包含:EXPORT。

    例:

    1b4bff26998c574736651f09e636f786.png

    Logjam(CVE-2015-4000)

    Logjam问题利用TLS协议(1.2及更早版本)通过Diffie-Hellman组合交换的方式发现的漏洞。该漏洞允许中间人(MiTM)攻击者执行降级攻击,并使用Diffie-Hellman导出密码(DHE_EXPORT)。

    Logjam自动测试

    logjam的testssl.sh测试
    ./testssl.sh -J TARGET

    手动测试Logjam

    禁用EXPORT密码,说明与FREAK攻击相同,如上所述。

    手动枚举由服务器提供的密码套件,使用./testssl.sh -E TARGET或nmap -p 443 --script=ssl-enum-ciphers TARGET。

    Heartbleed(CVE-2014-0160)

    db1bc110b3495bcadb34c2b039246033.png

    心脏出血的定义

    以OpenSSL处理TLS和DTLS心跳扩展数据包的方式发现了一个缺陷,允许攻击者从加密的TLS / DTLS数据中公开信息。恶意客户端可以发送特制的TLS或DTLS Heartbeat数据包,以便从连接的客户端或服务器的每个请求中获得内存部分。

    公开的内存部分可能包含敏感信息,诸如私钥(由服务提供商用于加密数据),实际用户的姓名,用户名和密码。允许攻击者窃听通信,冒充用户并窃取数据。

    自动化测试

    使用testssl.sh进行测试:
    # ./testssl.sh -B 10.0.1.159
    
    ###########################################################
        testssl.sh       2.8rc1 from https://testssl.sh/dev/
        (424cf23 2016-08-09 10:35:58 -- 1.531)
    
          This program is free software. Distribution and
                 modification under GPLv2 permitted.
          USAGE w/o ANY WARRANTY. USE IT AT YOUR OWN RISK!
    
           Please file bugs @ https://testssl.sh/bugs/
    
    ###########################################################
    
     Using "OpenSSL 1.0.2-chacha (1.0.2i-dev)" [~183 ciphers]
     on kali:./bin/openssl.Linux.x86_64
     (built: "Jun 22 19:32:29 2016", platform: "linux-x86_64")
    
    
     Start 2017-01-20 22:43:38    -->> 10.0.1.159:443 (10.0.1.159) <<--
    
     rDNS (10.0.1.159):      --
     Service detected:       HTTP
    
    
     Testing for heartbleed vulnerability 
    
     Heartbleed (CVE-2014-0160)               
    
    VULNERABLE (NOT ok)
    
     Done 2017-01-20 22:43:41    -->> 10.0.1.159:443 (10.0.1.159) <<--
    使用Nmap测试Heartbleed
    # nmap -p 443 --script ssl-heartbleed --script-args vulns.showall 10.0.1.159
    
    Starting Nmap 7.25BETA2 ( https://nmap.org ) at 2017-01-20 22:45 EST
    Nmap scan report for 10.0.1.159
    Host is up (0.00028s latency).
    PORT    STATE SERVICE
    443/tcp open  https
    | ssl-heartbleed: 
    |   VULNERABLE:
    |   The Heartbleed Bug is a serious vulnerability in the popular OpenSSL cryptographic software library. It allows for stealing information intended to be protected by SSL/TLS encryption.
    |     State: VULNERABLE
    |     Risk factor: High
    |       OpenSSL versions 1.0.1 and 1.0.2-beta releases (including 1.0.1f and 1.0.2-beta1) of OpenSSL are affected by the Heartbleed bug. The bug allows for reading memory of systems protected by the vulnerable OpenSSL versions and could allow for disclosure of otherwise encrypted confidential information as well as the encryption keys themselves.
    |           
    |     References:
    |       http://www.openssl.org/news/secadv_20140407.txt 
    |       http://cvedetails.com/cve/2014-0160/
    |_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160
    MAC Address: 00:0C:29:35:3D:E8 (VMware)
    
    Nmap done: 1 IP address (1 host up) scanned in 0.36 seconds

    手动测试Heartbleed

    使用Metasploit验证已存在的Heartbleed,使用详细设置将显示Heartbleed暴露的内存泄漏。

    msf> use auxiliary/scanner/ssl/openssl_heartbleed
    msf> set rhosts TARGET-ADDRESS
    msf> set verbose true
    msf> run

    1c82abfccabfb8f57315f835a31c8b90.png

    POODLE SSLv3(CVE-2014-3566)

    POODLE定义

    Google的安全小组在2014年10月14日发现了POODLE攻击(Padding Oracle On Downgraded Legacy Encryption)。该漏洞利用了SSLv3处理填充字节的方式(密码块链接)CBC操作模式。

    该缺陷允许中间人(MiTM)攻击者在少于256个SSLv3连接中解密密文的所选字节,如果他们能够强制受害者应用程序重复发送相同的数据通过新创建SSL 3.0连接。

    自动测试POODLE

    使用Nmap测试POODLE
    # nmap -p 443 --script ssl-poodle --script-args vulns.showall 10.0.1.159
    
    Starting Nmap 7.25BETA2 ( https://nmap.org ) at 2017-01-20 22:50 EST
    Nmap scan report for 10.0.1.159
    Host is up (0.00037s latency).
    PORT    STATE SERVICE
    443/tcp open  https
    | ssl-poodle: 
    |   VULNERABLE:
    |   SSL POODLE information leak
    |     State: VULNERABLE
    |     IDs:  CVE:CVE-2014-3566  OSVDB:113251
    |           The SSL protocol 3.0, as used in OpenSSL through 1.0.1i and other
    |           products, uses nondeterministic CBC padding, which makes it easier
    |           for man-in-the-middle attackers to obtain cleartext data via a
    |           padding-oracle attack, aka the "POODLE" issue.
    |     Disclosure date: 2014-10-14
    |     Check results:
    |       TLS_RSA_WITH_AES_128_CBC_SHA
    |     References:
    |       http://osvdb.org/113251
    |       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3566
    |       https://www.imperialviolet.org/2014/10/14/poodle.html
    |_      https://www.openssl.org/~bodo/ssl-poodle.pdf
    MAC Address: 00:0C:29:35:3D:E8 (VMware)
    
    Nmap done: 1 IP address (1 host up) scanned in 0.35 seconds
    使用testssl.sh测试POODLE
    ./testssl.sh -O 10.0.1.159
    
    ###########################################################
        testssl.sh       2.8rc1 from https://testssl.sh/dev/
        (424cf23 2016-08-09 10:35:58 -- 1.531)
    
          This program is free software. Distribution and
                 modification under GPLv2 permitted.
          USAGE w/o ANY WARRANTY. USE IT AT YOUR OWN RISK!
    
           Please file bugs @ https://testssl.sh/bugs/
    
    ###########################################################
    
     Using "OpenSSL 1.0.2-chacha (1.0.2i-dev)" [~183 ciphers]
     on kali:./bin/openssl.Linux.x86_64
     (built: "Jun 22 19:32:29 2016", platform: "linux-x86_64")
    
    
     Start 2017-01-20 22:52:59    -->> 10.0.1.159:443 (10.0.1.159) <<--
    
     rDNS (10.0.1.159):      --
     Service detected:       HTTP
    
    
     Testing for SSLv3 POODLE (Padding Oracle On Downgraded Legacy Encryption) 
    
     POODLE, SSL (CVE-2014-3566)               VULNERABLE (NOT ok), uses SSLv3+CBC (check TLS_FALLBACK_SCSV mitigation below)
    
     Testing for TLS_FALLBACK_SCSV Protection 
    
     TLS_FALLBACK_SCSV (RFC 7507), experim.    Downgrade attack prevention NOT supported
    

    手动测试POODLE

    Kali附带的openssl版本不再支持SSLv3。使用二进制码testssl.sh/bin/openssl.Linux.x86_64进行手动SSLv3测试。

    ./openssl.Linux.x86_64 s_client -ssl3 -connect 10.0.1.159:443

    如果握手完成,则服务器容易受到POODLE的影响。

    对于容易受到POODLE影响的服务器的输出示例(从响应中删除的证书):

    ---
    No client certificate CA names sent
    Server Temp Key: DH, 1024 bits
    ---
    SSL handshake has read 1398 bytes and written 373 bytes
    ---
    New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
    Server public key is 1024 bit
    Secure Renegotiation IS supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
        Protocol  : SSLv3
        Cipher    : DHE-RSA-AES256-SHA
        Session-ID: 0450660185C7B2623CB2145A1C6655BDD8CC281F882C3B9E0ED35E88360639BA
        Session-ID-ctx: 
        Master-Key: 6A56AC01754D9441ACFD6C0B9E534E33450CD2F0E0D619F235E2ACC1780CFD86E769B9AE82D0D5AAA4C62B295B5BB598
        Key-Arg   : None
        PSK identity: None
        PSK identity hint: None
        SRP username: None
        Start Time: 1484971085
        Timeout   : 7200 (sec)
        Verify return code: 9 (certificate is not yet valid)
    ---

    如果服务器不容易受到POODLE的影响,握手将失败,发生如下错误:

    CONNECTED(00000003)
    28395584:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:s3_pkt.c:1475:SSL alert number 40
    28395584:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:656:
    ---
    no peer certificate available
    ---

    CCS注入漏洞(CVE-2014-0224)

    CCS注入定义

    某些版本的OpenSSL存在弱点,允许客户端和服务器通过特制的握手包来强制使用弱密钥进行通信。允许中间人攻击者解密和修改客户端与服务器之间的流量。

    受影响的OpenSSL版本:

    • OpenSSL before 0.9.8za
    • OpenSSL 1.0.0 before 1.0.0m
    • OpenSSL 1.0.1 before 1.0.1

    资料来源: https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2014-0224

    CCS注入自动化测试

    testssl.sh CCS注入测试
    ./testssl.sh -I TARGET
    Nmap CCS注入测试
    nmap -p 443 --script = ssl-ccs-injection TARGET

    POODLE TLS(CVE-2014-8730)

    POODLE TLS定义

    由于TLS填充是SSLv3的一个子集,因此可以重新使用针对TLS的POODLE攻击。TLS对于它的填充格式是非常严格的,但是一些TLS实现在解密之后不执行填充结构的检查。即使使用TLS也不会容易受到POODLE攻击的影响。

    资料来源:https://blog.qualys.com/ssllabs/2014/12/08/poodle-bites-tls

    测试POODLE TLS

    testssl.sh POODLE TLS测试

    与以上针对POODLE SSL的testssl.sh指令相同

    Nmap POODLE TLS测试

    与上面针对POODLE SSL的Nmap说明相同

    BREACH(CVE-2013-3587)

    BREACH攻击定义

    BREACH代表通过自适应压缩超文本进行浏览器检测和渗透。与CRIME相似之处是利用HTTP压缩中的漏洞,允许攻击者识别页面中是否存在文本。

    BREACH攻击基本流程

    当页面上发生文本重复时,将删除重复的术语,有助于减小页面的大小。这可以用于识别现有的页面内容,下面是Web应用程序的示例,显示当前登录的用户在页面中反映的用户名:

    1. 输入您认为不存在于搜索参数中的用户名
    2. 注意返回页面的大小
    3. 发送您认为存在的用户名的其他搜索请求
    4. 注意返回页面的大小,如果用户名与登录用户名匹配(确认存在),页面大小对比上次将会缩小

    通过分析响应的大小可以预测文本,实际上没有流量被“解密”

    为了使BREACH攻击成功地渗透数据,必须有一种机制来反映渲染页面中的用户输入,并且服务器必须支持HTTP压缩。

    BREACH自动测试

    使用testssl.sh测试BREACH
    ./testssl.sh -T TARGET

    BREACH手动测试

    openssl s_client -connect TARGET:443

    输入以下内容来确定服务器是否使用压缩:

    GET / HTTP / 1.1
    主机:目标
    Accept-Encoding:compress,gzip

    如果服务器返回乱码的字符,如下面的截图所示,则服务器支持压缩,容易受到BREACH的攻击:

    9412645fe612a8b2f65e6bc76814946c.png

    如果目标Web服务器不返回压缩数据输出,则它不容易受到BREACH的影响,并且是被禁用压缩。

    RC4 CVE-2013-2566

    TLS协议和SSL协议中使用的RC4算法具有许多单字节偏移。远程攻击者可以通过使用相同明文的大量会话中的密文统计分析来进行明文破解攻击。

    自动RC4测试

    testssl.sh RC4测试

    ./testssl.sh -4目标

    手动RC4测试

    使用./testssl.sh -E TARGET手动枚举服务器密码或者nmap -p 443 --script=ssl-enum-ciphers TARGET确保服务器支持密码类型不使用RC4。

    CRIME(CVE-2012-4929)

    CRIME攻击定义

    CRIME是TLS 1.2漏洞,允许中间人(MiTM)攻击者识别加密数据,(潜在)执行会话劫持。攻击者可以通过检查密文的大小来识别加密数据,同时从浏览器引入多个有效载荷,当字符匹配在标题内时,其大小会有所不同,允许攻击者修改会话cookie。实际上没有使用CRIME攻击解密数据,TLS 1.2处理压缩的一个弱点使得攻击者可以通过比较返回的大小来识别头文件何时存在。

    CRIME自动测试

    使用testssl.sh测试CRIME
    ./testssl.sh -C TARGET

    手动测试CRIME

    Kali使用的openssl客户似乎不再允许TLS 1.2压缩。如果您使用此版本的openssl进行测试,即使目标服务器启用了TLS 1.2压缩,响应将始终为“Compression:NONE”。可以使用testssl.sh附带的openssl.Linux.x86_64二进制文件来解决此问题。

    ./bin/openssl.Linux.x86_64 s_client -connect 10.0.1.158:443
    示例输出 – 不易受CRIME影响

    如果服务器不容易受到CRIME的影响。“压缩:无”表示压缩在服务器上被禁用,并且不易受到CRIME的攻击。

    Compression: NONE
    示例输出 – 易受CRIME影响

    如果服务器易受CRIME攻击:

    Compression: zlib compression压缩:zlib压缩

    Renegotiation(CVE-2009-3555)

    TLS / SSL重新协商漏洞定义

    2009年发现一个利用TLS和SSL协议Renegotiation的漏洞,允许攻击者将数据插入会话可危及其完整性。

    条件

    必须满足以下条件才能利用此漏洞:

    • 服务器不支持secure renegotiation
    • 服务器必须允许client side renegotiation

    Renegotiation的自动测试

    测试secure renegotiation 以及 client side renegotiation.

    # ./testssl.sh -R 10.0.1.159
    
    ###########################################################
        testssl.sh       2.8rc1 from https://testssl.sh/dev/
        (424cf23 2016-08-09 10:35:58 -- 1.531)
    
          This program is free software. Distribution and
                 modification under GPLv2 permitted.
          USAGE w/o ANY WARRANTY. USE IT AT YOUR OWN RISK!
    
           Please file bugs @ https://testssl.sh/bugs/
    
    ###########################################################
    
     Using "OpenSSL 1.0.2-chacha (1.0.2i-dev)" [~183 ciphers]
     on kali:./bin/openssl.Linux.x86_64
     (built: "Jun 22 19:32:29 2016", platform: "linux-x86_64")
    
    
     Start 2017-01-21 00:04:30    -->> 10.0.1.159:443 (10.0.1.159) <<--
    
     rDNS (10.0.1.159):      --
     Service detected:       HTTP
    
    
     Testing for Renegotiation vulnerabilities 
    
     Secure Renegotiation (CVE-2009-3555)      not vulnerable (OK)
     Secure Client-Initiated Renegotiation     not vulnerable (OK)
    
     Done 2017-01-21 00:04:31    -->> 10.0.1.159:443 (10.0.1.159) <<--
    

    手动测试Renegotiation

    测试 Secure Renegotiation
    openssl s_client -connect TARGET:443

    Secure Renegotiation未启用的示例:

    ---
    SSL handshake has read 1606 bytes and written 503 bytes
    ---
    New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
    Server public key is 1024 bit
    Secure Renegotiation IS NOT supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:

    Secure Renegotiation启用的示例:

    ---
    SSL handshake has read 1560 bytes and written 495 bytes
    ---
    New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-GCM-SHA384
    Server public key is 1024 bit
    Secure Renegotiation IS supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
    测试 Client Initiated Secure Renegotiation
    openssl s_client -connect TARGET:443
    
    
    

    类型:

    HEAD / HTTP / 1.1 
    R
    
    
    

    如果你看到响应:

    HEAD / HTTP / 1.1 
    R
    RENEGOTIATING

    即服务器允许client renegotiation。

    如果你看到回应:

    HEAD / HTTP/1.1 
    R
    RENEGOTIATING
    139681067286040:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:656:

    则服务器不支持client renegotiation。

    TLS和SSL证书

    对没有加密的服务器证书应该被评估为配置错误和弱加密签名,下面是证书检查的项目列表:

    使用以下方式获取目标服务器证书:

    openssl s_client -connect TARGET:443 | openssl x509 -noout -text

    证书检查项目表

    名称描述
    识别证书颁发者 确保证书颁发机构(CA)来自受信任的来源,不使用自签名证书,因为自签名证书允许中间人员攻击(除非是内部的,并且与内部CA签名)。
    签名算法 用于确保证书完整性的算法,您应该确保密码是安全的,而不是使用MD5(已知不安全)或SHA1。
    公钥 关键长度应该足够长以确保它不能被破解,最小值应该是2048位。
    Not Before 证书开始日期。
    Not After 证书结束日期。
    Subject&Subject Alternative Name Subject应该列出证书所涉及的DNS名称,如果这是不正确的浏览器会引发错误。Subject Alternative Name应列出通配符证书的DNS名称,应列出此证书的所有DNS名称。

    HTTP Security Headers

    什么是HTTP Security Headers?

    如果配置正确,HTTP Security Headers可为您的域提供额外的安全功能。以下是主要HTTP安全头文件的概述:

    可以使用Burp Suite,Curl或testssl.sh(任何许多其他工具)来检查HTTP Security Headers。

    使用Curl检查HTTP安全头文件

    curl -s -D  -  TARGET -o / dev / null

    示例输出:

    HTTP/1.1 301 Moved Permanently
    Date: Mon, 23 Jan 2017 16:15:51 GMT
    Server: Apache
    Content-Security-Policy: default-src 'self' *.target
    X-Frame-Options: SAMEORIGIN
    X-Content-Type-Options: nosniff
    Location: TARGET
    Cache-Control: max-age=3600
    Expires: Mon, 23 Jan 2017 17:15:51 GMT
    Vary: Accept-Encoding
    Content-Length: 233
    Content-Type: text/html; charset=iso-8859-1

    使用testssl.sh检查HTTP安全头

    ./testssl.sh -H

    6e0ea1b5fc31600f09e7ebfba2dd8957.png

    HTTP安全性头文件

    名称定义
    HSTS HSTS安全头文件强制Web浏览器或客户端仅通过HTTPS连接与服务器进行通信。HSTS确保连接仅使用HTTPS,并防止中间人(MiTM)攻击,降级攻击和cookie劫持。HSTS是Trust on First Use(TOFU),这意味着它必须通过HTTP发送至少一个不安全的连接到主机以传输安全的头。HSTS预载列表是为浏览器提供支持HSTS的站点列表,以避免最初不安全的连接。
    内容安全策略(CSP) 内容安全策略(CSP)是一个HTTP安全头文件策略,可帮助减轻某些类型的数据注入攻击(如XSS(跨站点脚本))的风险。CSP允许网站管理员通过定义一个策略来便面或减少XSS攻击,该策略规定了浏览器应该信任什么位置并允许脚本执行。
    X-Frame选项 该X-Frame选项报头防止网站的代码部分展示出就像<IFRAME>,<FRAME>或<object>。通过防止这种内容在这些元素中呈现,站点可以使用X-Frame选项来防止点击劫持(clickjacking)。
    X-XSS保护 较旧的HTTP安全header,可在Internet Explorer,Chrome和Firefox中启用XSS保护。虽然此功能现在由CSP内联JS提供,但是当与不支持CSP的旧浏览器配合使用时,此标头仍然可以提供保护。
    X-Content-Type-Options 通过强制由Content-Type指定的MIME类型来防止MIME-sniff类型攻击。

    工具地址:

      https://github.com/drwetter/testssl.sh

    文章来自:https://www.infinisign.com/faq/tls-ssl-security-testing。

  • 相关阅读:
    JQuery替换空字符串和正则表达式校验时间格式
    数据库升级,给某张表增加字段,防止重复升级时sql脚本报错
    将jar包安装到本地repository中
    springCloud集成常用组件(持续更新)
    记一次springboot配置事务@transactional失效的事故
    分布式锁实现(Redis和zookeeper)
    springCloud集成zookeper
    zookeeper学习相关
    springboot集成activeMq
    springboot集成redis
  • 原文地址:https://www.cnblogs.com/iamver/p/10243928.html
Copyright © 2020-2023  润新知