浅谈云上攻防——CVE-2020-8562漏洞为k8s带来的安全挑战
浅谈云上攻防——CVE-2020-8562漏洞为k8s带来的安全挑战
图 1 CVE-2020-8562漏洞细节
Issue地址如下:
https://github.com/kubernetes/kubernetes/issues/101493
在正式开始介绍这个漏洞是如何对Kubernetes集群带来危害之前,我们先来看看这个漏洞中应用到主要攻击技巧:DNS重绑定攻击(DNS Rebinding)。
DNS 重绑定攻击
DNS重绑定攻击技术的实现主要依赖于攻击者可将其自建的DNS服务器中DNS TTL配置为设置为0或者极小值。 DNS TTL表示DNS记录的生存时间,数值越小, DNS记录在DNS服务器上缓冲的时间越小。
在攻击者将DNS TTL数值设置为一个极小值时,当受害目标第一次访问恶意域名时并发起域名解析请求时,恶意DNS服务器会返回一个ip地址A;当受害目标第二次发起域名解析请求时,却会得到ip地址B的解析结果。具体的原理,我们可以通过一道CTF题目,深入了解一下:
$dst = @$_GET[‘KR’];
$res = @parse_url($dst);
$ip = @dns_get_record($res[‘host’], DNS_A)[0][‘ip’];
…
$dev_ip = “54.87.54.87”;
if($ip === $dev_ip) {
$content = file_get_contents($dst);
echo $content;
}
这道CTF题目需要参赛者访问内网127.0.0.1地址并获取存储于其中的Flag。
从代码中可见,题目将会判断参赛者传入的域名解析后的ip,并仅允许访问54.87.54.87地址的内容。
如何绕过题目中的条件语句,利用到的就是DNS重绑定攻击技术。
从上文代码段可见,程序通过以下代码来执行第一次DNS解析以获取ip:
$ip = @dns_get_record($res[‘host’], DNS_A)[0][‘ip’];
假设此时参赛者传入的域名为www.a.com,将会进行如下的解析: