• TLS Poison


    0x00 前言

    本次学习的是2020 Blackhat 的一篇文章When TLS Hacks you,简单来说,作者提出了一种新的SSRF攻击思路:利用DNS重绑定和TLS协议的会话恢复进行攻击。具体可参考:Blackhat - When TLS Hacks you


    Lots of people try to attack the security of TLS. But, what if we use TLS to attack other things? It's a huge standard, and it turns out that features intended to make TLS fast have also made it useful as an attack vector. Among other things, these features provide a lot of flexibility for Server-Side Request Forgery (SSRF). While past work using HTTPS URLs in SSRF has relied upon platform-specific bugs such as SNI injection, we can go further. In this talk, I present a novel, cross-platform way of leveraging TLS to target internal services. By Joshua Maddux


    0x01 前置知识

    SSRF攻击

    SSRF全称是服务器端请求伪造。在各种Web应用程序中,这是一个非常普遍的漏洞,攻击者可以在其中代表服务器伪造网络请求。假如,具有以下URL:https://example.com/?ping=www.xxx.com我们可以从中得出什么?它像是一个ping参数,可以通过某种方式与www.xxx.com 进行通信。也许它下载了文件,也许它向它发送了其他一些HTTP请求。看到这样的URL,攻击者可能会检查是否可以通过这种方式访问其他内部文件。

    攻击者还将检查路径是否可以使用完整的主机名扩展,例如ping=http://127.0.0.1/。这将导致服务器去连接本地IP地址,或者去连接外界无法进行访问的内网地址,这是由于攻击者代表Web服务器伪造了该请求。这种攻击可能导致各种危害:包括执行端口探测,内网主机探测,或在本地主机上与可用的服务进行交互。

    如果没有任何防御措施,也可以使用file:///C:/windows/win.ini语句访问本地文件。


    TLS 会话恢复

    当两个通信方发起TLS会话时,正在交换握手。在握手期间,双方会相互验证并建立加密算法以及会话密钥。完成后,加密的通信将继续。为了节省时间和资源(协商和创建会话密钥需要占用大量CPU资源),服务器会发送一个所谓的会话ID给客户。重新连接的客户端可以在ClientHello消息过程中提供此会话ID,并重新使用以前建立的会话密钥。这被称为会话恢复,因为双方已经协商了要使用的算法和密钥,因此可以显着加快通信的速度。重要的一点是,在握手期间,客户端会显示服务器提供的会话ID值。

    image-20210423120647546

    详情可参考之前的文章,TLS 1.3 与 TLS 1.2 的会话恢复


    DNS重绑定攻击

    整个攻击过程类似于之前讲过的DNS重绑定攻击,攻击内网设备。不同地方是在这里利用的是TLS的会话恢复。

    详情可参考之前的文章,详解DNS 重绑定攻击


    0x02 攻击原理

    原理图:

    image-20210423191414509


    攻击流程:

    1. 攻击者首先诱使受害者打开一个网站(钓鱼或者广告页面都可以实现),会向攻击者的TLS 服务器 https://ssltest.jmaddux.com:11211 请求页面。
    2. 受害者打开网站后,客户端发出DNS查询,查找 ssltest.jmaddux.com域名的IP地址,攻击者准备的DNS权威域名服务器接收到查询,进行响应。
    3. 此时,返回的DNS响应报文是TLS sever的真实IP地址,并且设置TTL 为0
    4. 受害者客户端发送Hello 消息尝试进行TLS握手(在这之前进行了TCP三次握手,这里省略没写,不是重点)
    5. TLS服务器端响应Hello消息,并将会话id设置为payload 发送给受害者
    6. 当TLS握手全部完成之后,进行HTTPS通信,TLS服务器通过301重定向状态码,重定向到https://ssltest.jmaddux.com:11211 (重新进行再次访问)
    7. 客户端重新加载https://ssltest.jmaddux.com:11211 页面。
    8. 由于之前设置的DNS缓存记录,TTL为0,在很短的时间内就失效,所以受害者客户端会再次向攻击者DNS服务器请求IP地址
    9. 此时,攻击者拥有的DNS服务器返回解析结果为127.0.0.1,TTL为0。(127.0.0.1代表本机)
    10. 客户端尝试去恢复会话,带着之前的payload 会话ID,与127.0.0.1:11211 进行会话恢复,于是payload 发送给了客户端本身。
    11. 此时会话重用失败,会返回一个TLS error,但攻击者的目的已经达成。

    0x03 影响范围

    借用作者的原图,下图是易受攻击的HTTPS客户端应用:

    image-20210423212412706

    下图是可以攻击的目标,以及可利用的方式:

    image-20210423213557739



    0x04 参考资料


    TLS-poison github

    Black Hat USA 2020 Highlights: When TLS Hacks You

    DNS Rebinding 攻击绕过 ssrf 限制

    从0到1认识DNS重绑定攻击

    为什么 HTTPS 需要 7 次握手以及 9 倍时延

    today is not tomorrow
  • 相关阅读:
    .net core 3.1 新增过滤器(Filter)和拦截器(LogInterceptor)
    .net core 3.1 新增log4net 和 NLog
    .net core 3.1 jwt token授权
    IdentityServer4 之 Resource Owner Password Credentials 其实有点尴尬
    IdentityServer4 之Client Credentials走起来
    Hive 窗口函数sum() over()求当前行和前面n条数据的和
    机器学习-线性规划(LP)
    机器学习-KNN算法
    flume整合kafka
    学习kafka自己发生的几个小错误记录
  • 原文地址:https://www.cnblogs.com/PsgQ/p/14695637.html
Copyright © 2020-2023  润新知