SQL注入漏洞通常被称为“瞎的“如果不能直接通过错误消息或者直接检索数据。这些漏洞更难,但绝不是不可能的,无法检测和利用。在本文中,我们将研究通过注射布尔条件,触发时间延迟和带外渠道来识别盲目SQL注入漏洞的一些可能方法。
布尔条件注射
在这里,我们有一个来自WebGoat培训工具的示beplay体育能用吗例Web应用程序。我们正在使用的“ Webgoatbeplay体育能用吗”的版本取自OWASP的破碎Web应用程序项目。找出如何下载,安装和使用此项目。
该表格旨在用于测试提供的帐号是否有效。我们可以看到帐号101产生积极的结果,因此帐号有效。
已经满足“真实”条件。
接下来,我们必须满足“错误”条件。
在此示例中,我们使用了帐号666。该应用程序返回了负面响应,因此帐号无效。
已经满足“错误”条件。
下一步是确认输入正在评估为SQL查询,以及我们是否可以使用SQL语法执行True/False测试。
我们进入了这里101和1 = 1。我们知道,这种情况的两个部分都是真实的,并且期望积极的“真实”反应。
我们进入了这里101和1 = 2。我们知道,这种情况的一部分仅是真实的,应该返回负面的“错误”响应。
现在,我们知道我们可以使用SQL语法问应用程序“问题”,我们可以注入SQL以找出任何可访问的信息。
在此示例中,我们正在寻找别针与cc_number。
要在此示例中找到PIN,我们可以更改SQL语句中的数字,并等待应用程序产生正面的“真”响应。为了减少涉及的请求数,我们还可以一次测试第一个中的每个字符,并执行二进制搜索以有效找到正确的答案。
我们可以使用为自动化这项任务的攻击者为了我们。
我们可能试图引起有条件的错误...
但是,即使该应用程序在数据库本身内诱导错误,也没有影响该应用程序的行为。
在这种情况下,我们可以使用Burp Suite注入SQL,这将导致时间延迟,并监视返回响应所花费的时间。
确保“截距”在“代理”拦截选项卡中,并重新发送请求。
右键单击请求中的任何地方,然后单击“发送到中继器”。
我们可以使用中继器“请求”面板中使用“ RAW”或“参数”选项卡更改请求。
在此示例中,我们将注入MS-SQL数据库。我们将以下字符串注入请求参数,并监视应用程序所需的时间来识别任何漏洞。
1;等待延迟'0:0:5' -
在“中继器”响应控制台下,我们可以看到以毫秒为单位收到响应所花费的时间。
此示例中的响应花费了5秒。
这表明该应用确实容易受到SQL注入的影响。
使用带外通道
在某些情况下,不可能在应用程序的内容或接收它所花费的时间内触发任何明显的效果。在这种情况下,可以通过导致数据库建立与测试仪服务器的带外网络连接来检测SQL注入漏洞。
在此示例中,我们可以看到BURP扫描仪已利用了盲目的SQL注入漏洞,以使数据库与BURP合作服务器建立网络连接。这种特殊的攻击使用Microsoft SQL Server的XP_DIRTREE存储过程。其他数据库平台上也存在类似的技术,并且Burp扫描仪使用这些技术。