主页 > 网络知识 > Black Hat USA 2020议题When TLS Hacks You

Black Hat USA 2020议题When TLS Hacks You

2020年BlackHat大会上,Joshua Maddux介绍了一种针对SSRF的新颖利用思路,得到了广泛的关注。此类攻击是通过构造一个HTTPS Server,使TLS session中携带攻击载荷,攻击行为触发主要通过一个受限的SSRF漏洞(甚至一个钓鱼网页),结合TLS协议和DNS协议的特性,把攻击报文发到受害者内网的TCP服务中,达到SSRF漏洞攻击面扩大的效果。本文将针对此攻击进行较深入介绍和演示,供大家学习参考。

在演示该攻击方式之前,我们首先介绍以下关键知识:

SSRF

SSDNS Rebind

TLS session resumption

0x01 SSRF

SSRF漏洞是一个常见的web安全漏洞,通过提交一段精心构造的请求信息,发送给服务器,欺骗服务器读取本地文件、探测内网信息、攻击内网其他服务器等。

攻击行为可以通过多种信息实现,取决于服务对协议的支持情况:

file://

dict://

TFTP://

 

https://

Gopher://
其中通过Gopher协议,我们可以构造的TCP上层报文,和大部分的TCP 服务器通信,比如MySQL、PostgreSQL、Redis、Memcached、SMTP,大大拓展了SSRF漏洞的攻击面。

0x02 DNS Rebinding 0x021 DNS TTL

DNS TTL 用来定义DNS解析数据在缓存中存放的时间,生存时间一到期,名称服务器就丢弃原有的缓存数据,并从权威名称服务器获取新的数据。假如一个域名的 TTL 为10s,当我们在这10s内,对该域名进行多次 DNS 请求,DNS 服务器,只会收到一次请求,其他的都是缓存。

详细的TTL设置参考RFC2181对DNS TTL的描述:

It ishereby specified that a TTL value is an unsigned number, with a minimum value of 0, and a maximum value of 2147483647. That is, a maximum of 2^31 - 1. When transmitted, this value shall be encoded in the less significant 31 bits of the 32 bit TTL field, with the most significant, or sign, bit set to zero.

在DNS应答报文中,TTL字段一共4个字节,其中低31位是有效位,数值范围为0到2^31 - 1,这里以百度域名解析应答为例,DNS应答报文设置了TTL值为249s(000000f9):

 

image-20210410110649940.png

 

0x022 DNS Rebinding

通常的SSRF防御措施是通过以下防御机制实现的:

 

81138e5f4403b0c5b7b1dc96bcd650ff.png

 

这种SSRF防御思路上,通常会对目标url进行解析,“获取IP地址”然后进行ip判断,如果ip地址在正常范围内,则进入下一个逻辑,“服务端请求URL”。

因此,DNS Rebindind的攻击思路,是申请一个域名,构造一个DNS服务器,将域名解析到该DNS服务器,同时设置DNS服务器的应答包围TTL为0,在“获取ip地址”的逻辑中响应正常的ip地址,绕过了检测,与此同时由于TTL为0,因此在“服务端请求URL”步骤中,需要重新进行DNS解析,此时DNS服务器应答的ip地址为希望攻击的ip。

实验步骤如下:

设置域名解析的服务器为自定义的DNS服务器

image-20210409160200259.png

 

启动自定义的DNS服务器

 

image-20210412103906596.png

 

 

image-20210412103838731.png

 

浏览器访问域名
在本地127.0.0.1地址启动http server

 

image-20210412104819282.png

 

 

image-20210412104858444.png

 

访问目标域名,结果响应结果为本地http服务

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!