xxxkkk@海特实验室
简介
这次分析的议题是2020 Blackhat 的When TLS Hacks you
,总体而言,这个议题是今年我最喜欢的一个议题之一了;无论是从技术的新颖性,抑或分析问题的全面性,都是值得学习和借鉴的。
简单来说,作者提出了一种新的SSRF
攻击思路:利用DNS
缓存和TLS
协议进行攻击。
分析
说到SSRF的利用手法,在Orange Tsai
的议题A new era of SSRF
中,介绍了很多SSRF利用技巧,大致可以分为两类:
-
利用一些特殊的协议,比如
gopher://
,zip://
等,但这一类的协议在新版的库中默认并不启用。 -
利用
SNI injection
,在协议解析过程中,存在特定的问题,导致产生了换行等,这一类需要基于特定的漏洞。
作者的SSRF新的利用手法基于TLS
,也就是https://
。当我们访问https://www.baidu.com
的时候,整个交互过程如下:
-
客户端会首先发一个
Client Hello
数据包,里面会包含一个自己生成的random字段和目标的hostname: -
在服务端会响应一个Server Hello数据包,里面同样会有一个random字段,另外还会根据客户端的random字段,生成一个session。
作者提出,在https协议的实现(CURL)中,只判断了目标服务的域名、端口以及协议是否一致, PDF中的截图如下:
为了看完整的逻辑,完整的代码在这里https://clickhouse.tech/codebrowser/html_report/ClickHouse/contrib/curl/lib/vtls/vtls.c.html#344
经过比较,确实如作者所说,仅判断了check->name
、check->conn_to_host
、check->conn_to_port
、check->scheme
,所以可以使用DNS rebinding
的技巧。完整的步骤如下:
-
第一次访问
www.hacker.com:8888
,这个域名指向我们可以控制的IP地址,在这个IP上我们搭建一个自定义的HTTPS服务,他返回的Session
为我们打的payload
,另外8888为我们需要攻击的服务端口,如SMTP
、Redis
等; -
修改DNS解析记录,把
www.hack.com:8888
的IP指向127.0.0.1
; -
再次访问
www.hacker.com:8888
,发起的请求里面,就会附带第一步中我们构造的Session
。 -
这个
Session
就会被附带传到目标服务端口中,形成攻击。
-
需要注意的是:经过测试,直接使用curl请求同一个HTTPS网站两次
SESSION
是不一样的,如图:作者在github(
https://github.com/jmdx/TLS-poison
)中指出If you want to reproduce my curl/memcached demo from the talk, you'll want to pass -L to curl to enable redirects, since command-line curl will use a fresh cache each time it's run.
再次使用
Firefox
测试,如图:
服务端响应Session:dc2e8...
后续多次发起请求,客户端携带的Session都为dc2e8...
: -
使用https://github.com/jmdx/TLS-poison
搭建环境,发现一些细节上的问题,在代码get_spoofed_IP
中,有一段挺奇怪的逻辑判断,
def get_spoofed_IP(domain, ip):
global spoof_count
global start
global last_ip
start = time()
last_ip = ip
for d in HOSTS_LIST:
if re.match(d[0], domain.lower())orTrue:
spoof_count =(spoof_count +1)%3
# The below line will result in the answer switching after 30 seconds,
# instead of alternating
# return d[1] if (time() - start > 30) else args.TARGET
return d[1]if spoof_count ==0else args.TARGET
returnNone
大概意思是三次中DNS只修改一次为127.0.0.1,其余两次还是原来的结果,即Forward默认的DNS解析设备上。不太清楚作者为啥要这么写。
总结
从技术上来说,作者用TLS在DNS rebind时候存在的问题,将HTTPS的数据包,转发到了具有容错特性的本地端口,如Redis、Memcache等。从分析的完整性来说,作者详细分析了如果修补这种缺陷,同时从对性能的影响方面进行测试,分析修补的可行性。这一点是十分值得学习的。
HatLab知识星球
关于我们
人才招聘
一、物联网安全研究员(硬件安全方向)
工作地点:
1.杭州;
岗位职责:
1.嵌入式方向的安全漏洞挖掘;
2.嵌入式系统硬件软件设计与研发。
任职要求:
1.熟练使用C语言,可规范使用指针,结构体,联合体;
2.熟练使用Linux操作系统,理解Makefile原理并可编写Makefile文件;
3.了解数字电路原理,具有较扎实的计算机系统结构知识,理解操作系统原理;
4.了解WEB或PWN方向的漏洞挖掘过程,会使用相关工具如Zap、IDA等,会自行编写漏洞利用工具。
加分项:
1.具有网络安全公司实习经验;
2.具有网络安全赛事经验;
3.有设计电路板原理图和四层PCB布局经验;
4.熟练焊接0402,0201,QFN,BGA等元器件封装;
5.有AVR,ARM,MIPS,Xtensa等内核的MCU/SoC开发经验;
6.向知名平台提交过物联网方向的漏洞报告。
二、物联网安全研究员(固件安全方向)
工作地点:
1.杭州;
岗位职责:
1. 物联网通用协议、组件、操作系统漏洞挖掘与漏洞复现;
2. 物联网设备漏洞挖掘与漏洞复现;
3. 参与创新物联网安全研究项目;
任职要求:
1.具有二进制漏洞挖掘经验,熟悉ARM、MIPS等其他架构的漏洞利用技巧;
2.熟练掌握gdb、IDA等工具的使用;
3.具有一定的硬件基础和动手能力,掌握常见的嵌入式设备固件提取及解包的方法;
4.至少掌握一门编程语言,如C/C++/Perl/Python/PHP/Go/Java等。
加分项:
1.具有知名物联网设备/网络设备漏洞挖掘成果证明;
2.参加CTF比赛并获奖;
3.参与GeekPWN、HackPWN等智能设备破解大赛并取得成绩。
三、物联网安全研究员(无线电安全方向)
工作地点:
1.杭州;
岗位职责:
1. 无线通信协议的通用漏洞挖掘;
2. 无线通信应用系统的漏洞挖掘,如智能设备等。
任职要求:
1. 掌握无线通信基本原理及数字信号处理理论,熟悉各种调制解调算法,信道编码算法等;
2. 熟悉C/C++、MatLab、Python等编程语言;
3. 熟悉至少一种常见无线通信协议及其安全问题,如Wi-Fi、Bluetooth、Zigbee、4/5G等;
4. 熟练掌握SDR外设和GNURadio等工具的使用。
加分项:
1. 具有信息安全公司实习经验;
2. 有嵌入式固件逆向分析经验;
3. 参加CTF比赛并获奖;
4. 有智能设备的破解经验;
5. 通信工程、信息安全专业。
感兴趣的小伙伴请联系姜女士,或将简历及应聘职位投送至下方邮箱。(请注明来源“研究院公众号”)
联系人:姜女士
邮箱:[email protected]
手机;15167179002,微信同号
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论