高级攻击与持久化控制

193 阅读3分钟

介绍:

在SQL注入攻击中,获得数据库的系统访问权限是一个高级的目标。当你成功地获取了数据库管理员权限时,SQLMap允许你进一步尝试访问底层操作系统。通过执行操作系统级别的命令,你可以获得对整个服务器的控制,甚至上传文件或安装后门。这种技术通常涉及使用数据库特有的功能,比如SQL Server的xp_cmdshell存储过程。

一、什么是 xp_cmdshell

xp_cmdshell 是 Microsoft SQL Server 中的一个扩展存储过程,它允许数据库用户在操作系统上执行命令。这意味着,如果你有足够的数据库权限(如管理员权限),你可以通过 SQL 语句在服务器的操作系统上运行命令,比如创建文件、下载恶意软件、或开启远程连接。

EXEC xp_cmdshell 'dir C:';

这个 SQL 语句会在服务器上执行 dir C:,列出 C: 盘的文件和目录。

二、如何在 SQLMap 中使用 xp_cmdshell 获取系统访问权限?
1.1 前提条件

你需要在数据库中具有管理员权限(如 sa 用户)。如果没有足够的权限,你可能无法成功执行操作系统命令

xp_cmdshell 仅适用于 Microsoft SQL Server。如果目标数据库是其他类型的数据库(如 MySQL、PostgreSQL),需要采用不同的技术。

  • MySQL:可以使用 LOAD_FILE() 函数读取服务器上的文件,或者使用 INTO OUTFILE 写入文件。
  • PostgreSQL:可以利用 COPY 命令从文件系统中读取数据或将数据写入文件。
  • Oracle:通过 UTL_FILE 包操作文件系统,或利用 Java 功能执行操作系统命令。
1.2使用 SQLMap 执行操作系统命令
sqlmap -u "http://example.com/page?id=1" --os-shell

这个命令会触发 SQLMap 尝试利用 xp_cmdshell 或其他可用的系统命令接口,打开一个交互式的操作系统 shell。

1.3执行操作系统命令

假设你已经打开了一个操作系统 shell,SQLMap 会提示你输入要执行的命令。你可以输入操作系统命令,如:

sql-shell> dir C:\

这个命令会列出 C: 盘的文件和目录,返回结果会显示在终端中。

1.4上传文件或安装后门

通过 xp_cmdshell 或 SQLMap 的文件操作功能,你可以在目标系统上上传文件或安装后门。例如,SQLMap 提供了 --file-write--file-dest 选项,用于上传文件:

sqlmap -u "http://example.com/page?id=1" --file-write=/path/to/local/file --file-dest=C:/path/on/target/file

这样,你可以将本地的文件(如 web shell 或恶意脚本)上传到目标服务器的指定位置。

三、绕过防护机制

在现代的 SQL Server 实践中,xp_cmdshell 通常是禁用的。如果你发现它被禁用,可以尝试通过以下 SQL 语句启用它:

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

这段 SQL 代码将启用 xp_cmdshell,但需要足够高的权限。

在获得操作系统访问后,你可以尝试创建新的用户账户或修改系统配置,从而在系统重启后依然保留对系统的控制权。