SSRF 攻击与 DNS 安全

独家号 安全屋 作者 Sariel.D 原文链接

1. SSRF简介

SSRF(Server-Side Request Forgery,服务器端请求伪造),通俗的来说就是我们可以伪造服务器端发起的请求,从而获取客户端所不能得到的数据。SSRF漏洞形成的原因主要是服务器端所提供的接口中包含了所要请求的内容的URL参数,并且未对客户端所传输过来的URL参数进行过滤。

这个漏洞造成的危害有

1) 可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;

2) 攻击运行在内网或本地的应用程序(比如溢出);

3) 对内网Web应用进行指纹识别,通过访问默认文件实现;

4) 攻击内外网的Web应用,主要是使用Get参数就可以实现的攻击(比如Struts2漏洞利用,SQL注入等);

5) 利用File、gopher协议、dict协议、file协议、http/s协议读取本地文件。

2. 常见绕过

1) URL语法绕过

2) IP进制转换

3) 302跳转

如果后端服务器在接收到参数后,正确的解析了URL的host,并且进行了过滤,我们这个时候可以使用302跳转的方式来进行绕过(http://xip.io )。

4) DNS重绑定攻击

I) 获取到输入的URL,从该URL中提取host;

II) 对该host进行DNS解析,获取到解析的IP;

III) 检测该IP是否是合法的,比如是否是私有IP等;

IV) 如果IP检测为合法的,则进入curl的阶段发包。

第一次去请求DNS服务进行域名解析到第二次服务端去请求URL之间存在一个时间差,利用这个时间差,进行DNS 重绑定攻击。

简易原理如下

I) 服务器端获得URL参数,进行第一次DNS解析,获得了一个非内网的IP;

II) 对于获得的IP进行判断,发现为非黑名单IP,则通过验证;

III) 服务器端对于URL进行访问,由于DNS服务器设置的TTL为0,所以再次进行DNS解析,这一次DNS服务器返回的是内网地址;

IV) 由于已经绕过验证,所以服务器端返回访问内网资源的结果。

3. DNS 部分特性

1)

假设建立新域时设置DNS全名为dns-test.com,则主DNS后缀为dns-test.com

当去访问其它域名网站时,可以看到服务器首先尝试解析HOST+DNS suffix

假如有人真的注册了dns-test.com这个域名,并做了泛解析,那么域内用户去访问域外网站时就会有很大的风险。

另在chrome搜索框输入单词时,会有“类似”的效果:

外国研究人员对此有过解答:

2) 利用DNS传输绕过杀软

一般常见的DNS绕过杀软使用的建立DNS隧道来传输数据,国外安全研究人员尝试用另一种方式来进行绕过:PTR记录。

PTR记录

PTR记录是电子邮件系统中的邮件交换记录的一种;另一种邮件交换记录是A记录(在IPv4协议中)或AAAA记录(在IPv6协议中)。PTR记录常被用于反向地址解析。

  • 首先,先利用msfvenom生成后门payload

  • 然后,将payload转换成PTR格式

  • 再利用dnspoof对服务器DNS进行欺骗

  • 此时在其主机上向这台进行DNS解析IP 1.1.1.1,会得到如下回显:

  • 此时利用研究员分享的NativePayload_DNS.exe对DNS进行持续解析,会获取一系列“部分payload”,最终在目标服务器上拼接成完整的payload并执行。

  • 最后就可在msf上接收到反弹的shell

这种攻击之所以能够成功,是因为大部分IPS/IDS或者硬件防火墙都不会对DNS流量进行过滤,即使通过DNS传输后门载荷并没有进行硬编码或者加密。

“专注信息安全 | 关注无声信息”

> 无声说安全 <

开发者头条

程序员分享平台