-
-
[原创][翻译]MSSQL渗透测试:存储过程的持久化
-
发表于:
2021-9-13 17:25
1627
-
[原创][翻译]MSSQL渗透测试:存储过程的持久化
地址:8f8K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2Z5j5h3y4C8K9h3&6Y4j5i4u0@1K9h3y4D9k6i4y4Q4x3X3g2A6L8W2)9J5c8X3#2K6M7%4q4D9i4K6u0V1k6X3!0J5i4K6u0V1M7r3g2F1N6r3g2K6N6r3g2J5i4K6u0V1M7%4c8G2M7X3g2V1i4K6u0V1M7s2u0G2j5$3g2V1N6i4u0W2M7#2)9J5k6s2m8W2M7Y4y4A6M7%4c8W2L8X3y4W2i4K6u0r3
作者:Raj Chandel
日期:2021年9月13日
在本文中,我们将学习在SQL服务器中获得持久性的许多方法之一。这篇文章是对我们的MSSQL渗透测试系列的补充。
获得持久性是执行红队行动的重要步骤之一。当在MSSQL上执行这样的操作时,有可能通过启动存储过程、触发器和注册表项获得持久性。如果您拥有正确用户和数据库的权限,那么很容易实现持久性。如果实例是通过域用户运行的,持久性可能更隐蔽。
当通过启动存储过程获得持久性时,攻击者必须具有sysadmin权限。另一个重要的事情是这个存储过程应该在主数据库中。如果sa不拥有存储过程,它们将没有输入和输出参数,这意味着它们不会与服务器一起重新启动,这将超过持久性的全部要点。
因此,让我们开始,看看如何通过启动存储过程获得持久性。
首先,我们假设xp_cmdshell已启用,因此现在我们将使用以下查询来调用主数据库:

现在我们将在wget的帮助下,在我们的攻击机器上下载PowerShell one-liner的脚本,如下图所示:

现在在脚本中,在cat命令的帮助下,用您的本地主机和本地端口交换给定的IP地址。切换IP地址后,让python服务器将PowerShell脚本共享给目标机器,如下图所示:

现在,让我们创建一个存储过程,它将从在线python服务器调用PowerShell脚本,为此,使用以下查询:

现在我们将把这个存储过程移到启动阶段,因为我们希望它在服务器启动时立即执行。我们将在以下查询的帮助下做到这一点:

现在,我们在启动时有了存储过程,您可以使用以下查询来确认:

让我们打开我们的Netcat监听器,如下图所示:

现在只剩下重启服务器了。要重新启动服务器,右键单击它并从下拉菜单中选择停止选项,如下图所示:

然后再次右键单击服务器,并从下拉菜单中选择开始选项,如下图所示:

服务器重新启动后,您将在netcat上有一个会话。

这就是如何使用启动存储过程在本地获得持久性
作者:Yashika Dhir是一名网络安全研究员、渗透测试员、红队队员、紫队发烧友。在Linkedin和Twitter上联系她
USE master
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2021-9-13 17:41
被梦幻的彼岸编辑
,原因: