本文作者:是大方子(Ms08067实验室核心成员)
总结与反思:
1.收集信息要全面
2.用snmp-check检查snmp目标是否开启服务
3.smbmap尝试匿名用户anonymous来枚举目标的共享资源,可能会枚举成功
4.使用smbclient连接到smb进行命令操作
5.使用ole来分析宏
6.使用mssqlclient.py来连接MSSQL
7.mssqlclient.py开启Windows Authentication参数来,保证正常登录
8.使用mssqlclient.py开启cmd_shell
9.利用Responder窃取服务器的凭证
10.利用 | 、less 、+关键词 快速查找内容
11.使用hashcat破解NetNTLMv2密码
12.使用john破解NetNTLMv2密码
13.利用mssql来执行cmd命令
14.使用PowerShell攻击框架里的Invoke-PowerShellTcp.ps1脚本反弹shell
15.使用powershell远程下载反弹shell脚本执行
16.使用 rlwrap 来解决shell中输出不正常问题(删除,方向键是字符问题)
17.使用cmd远程下载提权信息收集脚本PowerUp.ps1
18.使用smbmap(TheNETBIOS connection with the remote host timed
out)的时候需要通过-d添加域的名字
19.利用域内获取的账号密码尝试使用psexec进行命令执行
【前提smb服务开启,并且有权进行读写】
20. 利用GPP漏洞得到管理员密码
靶机信息
KALI地址:10.10.12.115
先用Nmap进行信息收集
扫描结果如下:
可以看到目标机器存在MSSQL,SMB服务
我们在检查下snmp服务是否存在
发现snmp服务不存在
那么我们现在根据nmap的结果来进行测试。
我们用smbmap来尝试枚举下目标的资源,发现访问被禁止
那么我们尝试下匿名的用户去访问,发现资源被枚举出来了
这里的Reports不是系统自带的,所以我们对Reports进行信息挖掘
那么我们用smbclient来访问Reports目录,并执行命令操作
发现目录里面有一个 excel文件,我们把他下载回来
“xls是2003版本下的文件,不管有没有宏程序的话都是xls文件。
2007做了区分,XLSM文件XLSX文件都是excel2007文件,但前者是含有宏启用,Excel中默认情况下不自动启用宏。
Excel不会执行宏XLSX文件,即使它们包含宏代码,因此含有宏的文件可以保存为xlsm文件”
这个“Currency Volume Report.xlsm”是存在宏的,这里我们用下OLE工具套件来分析office宏
用apt安装ole套件
然后我们用olevba去分析我们刚刚下载来的XLSM文件
我们可以发现里面的MSSQL连接字符串
然后我们使用mssqlclient.py进行登录,如果你没这个py脚本可以从下面的项目地址获得项目地址:https://github.com/sdfzy/impacket
把mssqlclient.py拷贝出来
然后进行登录,发现登录失败
我们需要开启Windows Authentication,才能正常登录
然后我们访问下cmd,发现被禁止
因为我们的权限不够,但是我们可以用Responder对服务器上的凭证进行窃取
关于Responder的原理和窃取可以看这个文章:
https://blog.csdn.net/nzjdsds/article/details/94314995
原理是,通过LLMNR/NBT-NS欺骗攻击,让MSSQL去访问我们伪造的服务,当MSSQL去执行时就会把它自己的凭证发给我们,我们通过破解它的凭证在返回去登录MSSQL,得到高权限
Responder地址:
https://github.com/sdfzy/Responder
我们开启Responder,-I填的是我们连接HTB的网络接口,可以通过ifconfig查
然后我们去MSSQL执行命令
之后我们的Responder就能窃取到凭证
我们把hash内容另存为Querier.NetNTLMv2
然后我们用hashcat去破解下
首先我们查下NetNTLMv2的模式代码是多少
进入后 / + NetNTLM 进行搜索
可以看到NetNTLMv2模式代码为5600
然后我们就可以开始破解
也可以用john来破解NetNTLMv2密码
然后我们用获取到的凭证再次用mssqlclient.py登录
help下
开启cmd功能
我们来测试查看cmd是否真的开启
命令是正常执行的
我们使用nishang的反弹shell脚本
nishang项目地址:
https://github.com/sdfzy/nishang
然后我们编辑下reverse.ps1脚本在底下加上,IP写上你自己的IP,端口写上你nc监听的端口
然后还是老样子用python开启简单HTTP服务,让靶机把我们的reverse.ps1下载并执行
然后我们就得到一个shell,这里我是用了rlwrap来解决shell中(删除键,方向键等)输出不正常问题
然后我们就能得到user的flag
接下来就是开始提权
这里我们使用PowerSploit里面的提权信息收集脚本PowerUp.ps1
项目地址:
https://github.com/PowerShellMafia/PowerSploit
一样把脚本拷贝过来,并让靶机下载执行
这里可能需要等几分钟出结果
这里我们看到一个服务滥用
我们尝试利用下
发现john确实加进来了,我们利用smbmap利用下,这里需要增加-d参数写上域的名字
然后发现这个john的权限也不够
我们换一个提权方式
这里还有一组管理员的账号和密码我们再次进行尝试,成功!
提权成功,我们已经拿到system权限了,这里就不演示cat root flag了
这里还有一种是GPP漏洞的利用,原理跟上面是差不多的。
只是需要自己手动破解密码
GPP提权
我们可以通过找到组策略里面的管理员密码并破解出来
Groups.xml
我们仍然需要解密密码,这可以通过以下方式轻松完成gpp-decrypt:
这里看到这里的密码也是我们上面获取到的密码一样
MyUnclesAreMarioAndLuigi!!1!