DNS- More than just names

路人甲 2014-04-04 20:00:00

DNS: More than just names

from:DNS: More than just names

0x00 前言


此文章讲得所有内容都是用的DNS本身设计的功能,但是没有想到可被利用的地方。

讨论的范围仅是利用DNS本身攻击。

所以不会讨论下面的DNS攻击,如:

DNS污染 DNS错误配置(域传送等) DNSSec

等等

0x01 DNS是如何工作的


0x02 协议


DNS 类型

有很多不同的记录类型,但是我们这次只关注A,AAAA,CNAME,MX和TXT记录。

A :: 获取一个IP地址

AAAA :: 获取一个IPv6地址

MX :: 邮箱服务器

也有,

CNAME - 别名 TXT - 文本数据

别忘了: NB/NBSTAT - NetBIOS

数据包结构:

如果name是以一对“1”bit开头的,剩下的14bit说明实际域名所在位置相对DNS起始表示字段的偏移。

例如:如果name是“C0 0F”则表示 “使用出现偏移量为0x0F的名字。

详细解释可以参考:http://blog.csdn.net/twelvelee/article/details/6714115

当然,这可能指向自身,造成DNS客户机/服务器 无限循环。 :)

反向DNS

工作原理相同,但是有PTR的记录类型(特殊方法格式化ip地址)。

最终你可以甚至为任何你想要的。

这让我疑惑,什么是可信的?

侦查与DNS

当遇到只能走dns的数据,其他的都被防火墙挡住的时候:

我拥有skullseclabs.org域名,所有的请求都通过*.skullseclabs.org转到我的DNS服务器。

XSS

当你插入的js代码在浏览者的浏览器中执行的时候,你如何知道呢?

如果user-agent内容会被插入执行,

<img src='http://ab12.skullseclabs.org/img.jpg'>

然后查看我的DNS服务器 :

证明html代码被执行。

为什么我们关心呢?

因为,数据包看起来完全是正常的。 我们没有直接连接服务器,因此防火墙是不会知道的。

最后我们可以知道是或否有服务器想要连接,不需要成功连接,甚至不需要服务器尝试连接。我们还可以做什么呢?

想要知道谁给你发邮件?

非常简单用admin@abc123.skullseclabs.org

结论?可能什么都没有,或许能找到一个反垃圾邮件。

SQL 注射

两个可以执行DNS查询的SQL语句

XXE 漏洞

Google曾经给在他服务器上找到XXE漏洞的人支付了1W刀。

XXE能够让你读取系统的本地文件:

同时也可以请求远程服务器

我们就有了一种探测XXE漏洞的一种方式:

即使存在防火墙,或者服务器限制严格一些文件不能读取,你仍然能够探测到XXE漏洞。

通过DNS直接获取数据不太可能,但是用来检测是否有漏洞是个很有效的办法。

shell注入

使用这种方法,很容易检测到shell的注入,适用与不同的平台上。

插入一个DNS查询:

(适用于Windows,Linux,BSD)

有人想起来这个周的ShellShock吗?

Attack over DNS

安全性就是边界。

受信任的数据在一边,不受信任的数据在了另外一边。

当你做了DNS查询,你又考虑到结果不可信吗?

看看下面代码有安全问题吗?

把TXT记录改成如下,最终导致SQL注入:

下面有一篇详细的DNS注入的writeup

https://blog.skullsecurity.org/2014/plaidctf-writeup-for-web-300-whatscat-sql-injection-via-dns

下面是一个有效的CNAME,MX,TXT,PTR等记录(双引号和空格不允许)

<script/src='http://javaop.com/test-js.js'></script>

显然TXT记录可以做更多的事情。

在2010年的时候我测试三个访问最多的域名查询系统的时候全部都有这个漏洞

现在其中的一个仍然有此问题。

DNS隧道

如何传送数据呢?

来回的通信:

实际的过程:

作者自己还解决的一些压缩等问题,最后给出自己写的工具地址:

https://github.com/iagox86/dnscat2

评论

路人甲

真正的路人甲.

twitter weibo github wechat

随机分类

浏览器安全 文章:36 篇
漏洞分析 文章:212 篇
安全管理 文章:7 篇
木马与病毒 文章:125 篇
Java安全 文章:34 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Article_kelp

因为这里的静态目录访功能应该理解为绑定在static路径下的内置路由,你需要用s

N

Nas

师傅您好!_static_url_path那 flag在当前目录下 通过原型链污

Z

zhangy

你好,为什么我也是用windows2016和win10,但是流量是smb3,加密

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

目录