用户
搜索
  • TA的每日心情

    2018-8-9 11:07
  • 签到天数: 98 天

    连续签到: 1 天

    [LV.6]常住居民II

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    4

    主题

    30

    帖子

    546

    魔法币
    收听
    0
    粉丝
    1
    注册时间
    2017-6-5

    i春秋签约作者

    发表于 2018-7-4 12:33:33 28267
    本帖最后由 hacklikepro 于 2018-7-4 12:53 编辑

    介绍
    最近几年web安全成为了信息安全的重头戏。由于web的各种优势,很多关键性服务被开发成了网站应用。公司对他们网络应用的安全除了注重安全的开发标准流程,还额外的加入了一层安全防护。 应用防火墙WAF 是OSI第七层防火墙,用于检测网站流量从而'试着'规避掉、过滤攻击风险。这篇文章我会介绍一个我在部署审计的过程中发现的一个有趣的绕过方法。

    “漏洞”产生的原因
    最近领导安排我审计一家公司部署 WAF的情况。 我肯定不可以告诉你是哪家公司和用到的设备,但是原理都基本一样。部署的结构大致如下图:

    Image.png

    在我获得需要的信息之后,我就开始想着怎么样能绕过它。委托方给了我对WAF操作的权限来做各种测试。在我发现的各种绕过方式中,有一种有趣的绕过方式是利用滥用SSL加密实现的。当我第一次登录进WAF的管理系统中的时候,不支持SSL加密的警告很快就引起了我的注意。看到之后,我马上就开始了对这款产品的技术文档的研究,并且试着去找到所有支持的SSL加密方式。不过首先我先给你们很快的讲一下SSL连接的基本工作原理。


    SSL的握手有3个主要阶段:
    1.ClientHello/ServerHello 阶段.
    握手先由客户端向服务器发送一个 ClientHello 请求。这个请求里包含了所有服务器所需要的信息,比如客户端所支持的SSL/TLS加密算法的版本。之后服务器回发一个 SeverHello的请求,这个请求里有客户端所需要的类似的内容。服务器也会返回他支持的SSL/TLS加密算法的版本。
    2.证书互换阶段.
    在连接初始化之后,服务器需要向客户端证明自己的身份。服务器发送自己的SSL证书给客户,客户端检查其证书是否可信并决定是否与其继续保持会话连接。
    3.密钥互换阶段.
    上面步骤结束之后服务器端和客户端之间安全隧道就建立成功了,此时他们互换密钥。次密钥用来进行对数据的加密以及解密。

    攻击思路
    我之前脑洞一开想到了这个攻击思路: 假如我们用在WAF上所谓的 “不支持的”SSL 加密方式(但Web服务器支持)去对Web服务器进行初始化连接,由于WAF不支持解密所以看不见数据包里面的数据,就能达到绕过的效果。
    所以之后我开始对这家WAF厂商的技术文档进行了深入研究。我从中找到了如下所有支持的SSL 加密方式。

    SSLv3
    SSL_RSA_WITH_NULL_MD5
    SSL_RSA_WITH_NULL_SHA
    SSL_RSA_WITH_RC4_128_MD5
    SSL_RSA_WITH_RC4_128_SHA
    SSL_RSA_WITH_DES_CBC_SHA
    SSL_RSA_WITH_3DES_EDE_CBC_SHA
    SSL_RSA_EXPORT_WITH_RC4_40_MD5
    SSL_RSA_EXPORT_WITH_DES40_CBC_SHA



    TLS/1.0-1.2
    TLS_RSA_WITH_NULL_SHA256
    TLS_RSA_WITH_AES_128_CBC_SHA
    TLS_RSA_WITH_AES_256_CBC_SHA
    TLS_RSA_EXPORT1024_WITH_RC4_56_MD5
    TLS_RSA_EXPORT1024_WITH_RC4_56_SHA
    TLS_RSA_WITH_AES_128_CBC_SHA256
    TLS_RSA_WITH_AES_256_CBC_SHA256
    TLS_RSA_WITH_RC4_128_MD5 = { 0x000x04 }
    TLS_RSA_WITH_RC4_128_SHA = { 0x000x05 }
    TLS_RSA_WITH_DES_CBC_SHA = { 0x000x09 }



    下一步我们看下网站服务器支持什么类型的 SSL加密。
    我们这时候有很多办法去查看服务器支持那些加密算法。我这使用的是sslscan,这东西用起来方便而且扫出来的细节信息也多。
    [Bash shell] 纯文本查看 复制代码
    pwn@thinkpad:~$ sudo apt install sslscan
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    The following NEW packages will be installed:
    sslscan
    0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
    Need to get 26,7 kB of archives.
    After this operation, 81,9 kB of additional disk space will be used.
    Get:1 [url]http://al.archive.ubuntu.com/ubuntu[/url] bionic/universe amd64 sslscan amd64 1.11.5-rbsec-1.1 [26,7 kB]
    Fetched 26,7 kB in 0s (73,8 kB/s)
    Selecting previously unselected package sslscan.
    (Reading database ... 177002 files and directories currently installed.)
    Preparing to unpack .../sslscan_1.11.5-rbsec-1.1_amd64.deb ...
    Unpacking sslscan (1.11.5-rbsec-1.1) ...
    Processing triggers for man-db (2.8.3-2) ...
    Setting up sslscan (1.11.5-rbsec-1.1) ...
    pwn@thinkpad:~$ sslscan http://target/ | grep Accept


    上面的命令用来显示所有web服务器支持的 SSL/TLS的版本以及加密方式。

    现在我们利用技术文档和扫描结果进行对比,我发现一些WAF不支持但是服务器支持的加密算法。
    例如: Accepted TLSv1 256 bits ECDHE-RSA-AES256-SHA
    上面这个加密算法就是其中一个


    为了测试我的推论,我在WAF上开了一条禁止所有访问 /ssl-cipher-test目录的请求。
    理论上访问这个路径会被防火墙拒绝连接。

    具体化客户端ssl加密算法只用那个防火墙不支持的算法,就是一个快速利用绕过的办法。
    你可以在 curl 里使用 --ciphers  来具体化加密方式, 这里我只用 ECDHE-RSA-AES256-SHA 加密.
    [Bash shell] 纯文本查看 复制代码
    pwn@thinkpad:~$ curl --ciphers ECDHE-RSA-AES256-SHA [url]https://waf-test.lab.local/ssl-cipher-test[/url]
    <html lang=en>
    <title>HELLO </title>
    <p>Bypass worked</p>
    pwn@thinkpad:~$

    从回显来看我们已经成功的绕过了WAF。

    提要
    我们原计划在发这篇文章之前要开发一个扫描所有支持SSL加密方式的扫描器来找到能绕过防火墙的加密算法。然后用开一个代理来转发所有用那个加密算法加密的流量。
    由于这个想法实现比较花时间,而且我也没这么闲。所以抛砖引玉,谁感兴趣就写一个工具出来呗~

    引用
    https://security.stackexchange.com/questions/67931/why-cant-i-decrypt-ssl-traffic-with-the-clients-private-key-only
    https://www.owasp.org/index.php/TLS_Cipher_String_Cheat_Sheet
    CURL Ciphers Document

    原文地址:https://0x09al.github.io/waf/bypass/ssl/2018/07/02/web-application-firewall-bypass.html
    翻译:i春秋翻译小组-1337g






    目前滥用SSL/TLS的的太多了
    不服你TMD来打我啊!
    使用道具 举报 回复
    学到新姿势了,谢谢大佬.
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册