【HTB系列】靶机Querier的渗透测试 – 作者:shuteer

本文作者:是大方子(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漏洞得到管理员密码

靶机信息

1614522082_603ba6e26622a0da2cfc9.png!small

KALI地址:10.10.12.115
先用Nmap进行信息收集

1614522097_603ba6f179f836b9b4d49.png!small扫描结果如下:

1614522113_603ba701b839e3e4cb15d.png!small

1614522152_603ba7285c25e6e65ae93.png!small

1614522160_603ba7305ee285494522e.png!small

1614522167_603ba737492f452890de6.png!small

可以看到目标机器存在MSSQL,SMB服务
我们在检查下snmp服务是否存在

1614522181_603ba74598d3523d86d0a.png!small

发现snmp服务不存在
那么我们现在根据nmap的结果来进行测试。
我们用smbmap来尝试枚举下目标的资源,发现访问被禁止

1614522206_603ba75e0ba8514c80a7b.png!small

那么我们尝试下匿名的用户去访问,发现资源被枚举出来了

1614522223_603ba76f49e88afc9bc08.png!small

这里的Reports不是系统自带的,所以我们对Reports进行信息挖掘

那么我们用smbclient来访问Reports目录,并执行命令操作

1614522234_603ba77a1fd3b01a6c5d6.png!small

发现目录里面有一个 excel文件,我们把他下载回来

1614522255_603ba78f6c46ea96871f2.png!small

“xls是2003版本下的文件,不管有没有宏程序的话都是xls文件。
2007做了区分,XLSM文件XLSX文件都是excel2007文件,但前者是含有宏启用,Excel中默认情况下不自动启用宏。

Excel不会执行宏XLSX文件,即使它们包含宏代码,因此含有宏的文件可以保存为xlsm文件”

这个“Currency Volume Report.xlsm”是存在宏的,这里我们用下OLE工具套件来分析office宏
用apt安装ole套件

1614522262_603ba796249de315598e5.png!small然后我们用olevba去分析我们刚刚下载来的XLSM文件

1614522273_603ba7a100a6b75f80cd1.png!small1614522289_603ba7b129912a3bfce42.png!small

1614522304_603ba7c07ab710209620e.png!small

我们可以发现里面的MSSQL连接字符串

1614522318_603ba7ce6ab088c1f8baf.png!small

然后我们使用mssqlclient.py进行登录,如果你没这个py脚本可以从下面的项目地址获得项目地址:https://github.com/sdfzy/impacket
把mssqlclient.py拷贝出来

1614522328_603ba7d8abf7ea247d98a.png!small

然后进行登录,发现登录失败

1614522337_603ba7e1643dfb9135669.png!small

我们需要开启Windows Authentication,才能正常登录

1614522354_603ba7f2350316bae7b91.png!small

然后我们访问下cmd,发现被禁止

1614522369_603ba80101a999a7e46a5.png!small

因为我们的权限不够,但是我们可以用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查

1614522380_603ba80c8d03ac4a9f5ce.png!small

1614522386_603ba812a34068db4e34a.png!small

1614522392_603ba81834bc7bb17b279.png!small

然后我们去MSSQL执行命令

1614522401_603ba8217fd19effd1ddc.png!small

之后我们的Responder就能窃取到凭证

1614522410_603ba82a14f3e976365ff.png!small

我们把hash内容另存为Querier.NetNTLMv2

1614522424_603ba83872d45596a579b.png!small

然后我们用hashcat去破解下
首先我们查下NetNTLMv2的模式代码是多少

1614522438_603ba846d0b81fcae4ecd.png!small

进入后     / + NetNTLM        进行搜索

1614522451_603ba85344ad077f5a6ed.png!small

可以看到NetNTLMv2模式代码为5600
然后我们就可以开始破解

1614522460_603ba85ca474dd4610a99.png!small

1614522464_603ba860e6114aab13fdb.png!small

也可以用john来破解NetNTLMv2密码

1614522472_603ba868c55a2827d05d7.png!small

1614522477_603ba86d70adde6e20e30.png!small1614522482_603ba8728004b99d92557.png!small

然后我们用获取到的凭证再次用mssqlclient.py登录

1614522494_603ba87eccce1fab15503.png!smallhelp下

1614522527_603ba89feebc81f8db11e.png!small

开启cmd功能

1614522507_603ba88beb85b7fca8f43.png!small

命令是正常执行的
我们使用nishang的反弹shell脚本
nishang项目地址:

https://github.com/sdfzy/nishang

1614522549_603ba8b589616c1bc178b.png!small

然后我们编辑下reverse.ps1脚本在底下加上,IP写上你自己的IP,端口写上你nc监听的端口

1614522557_603ba8bd246a748a6d3f7.png!small

然后还是老样子用python开启简单HTTP服务,让靶机把我们的reverse.ps1下载并执行

1614522566_603ba8c6a113b35816fcb.png!small

1614522575_603ba8cf1c99da2d01897.png!small

然后我们就得到一个shell,这里我是用了rlwrap来解决shell中(删除键,方向键等)输出不正常问题

1614522588_603ba8dc7f10de8fb5dc8.png!small

然后我们就能得到user的flag

1614522600_603ba8e88385ea5eeff04.png!small

1614522605_603ba8ed5b46f96374316.png!small

接下来就是开始提权
这里我们使用PowerSploit里面的提权信息收集脚本PowerUp.ps1
项目地址:

https://github.com/PowerShellMafia/PowerSploit
一样把脚本拷贝过来,并让靶机下载执行

1614522616_603ba8f8c06b6ade3aaa0.png!small1614522624_603ba9001939913e99bbc.png!small1614522629_603ba9054268329daa618.png!small1614522636_603ba90c78db4bb3a09a6.png!small这里可能需要等几分钟出结果

1614522646_603ba91696713381b1eb8.png!small

这里我们看到一个服务滥用

我们尝试利用下

1614522662_603ba9263f4bbc4d5f243.png!small发现john确实加进来了,我们利用smbmap利用下,这里需要增加-d参数写上域的名字

1614522678_603ba936036f9260afd72.png!small

1614522683_603ba93b764a5f81b88f0.png!small

然后发现这个john的权限也不够

我们换一个提权方式

1614522695_603ba94700ba10206ecf6.png!small

1614522699_603ba94bbe947bf23b462.png!small这里还有一组管理员的账号和密码我们再次进行尝试,成功!

1614522714_603ba95a0d33d4a862695.png!small

提权成功,我们已经拿到system权限了,这里就不演示cat root flag了

1614522723_603ba963d79b5bfb07500.png!small

这里还有一种是GPP漏洞的利用,原理跟上面是差不多的。

只是需要自己手动破解密码

GPP提权
我们可以通过找到组策略里面的管理员密码并破解出来

1614522736_603ba970c290f04609f57.png!small

1614522742_603ba97637fd5928410ff.png!small我们仍然需要解密密码,这可以通过以下方式轻松完成gpp-decrypt:

1614522752_603ba9806c49507c16d60.png!small这里看到这里的密码也是我们上面获取到的密码一样
MyUnclesAreMarioAndLuigi!!1!MS08067

实验室官网:www.ms08067.com

公众号:” Ms08067安全实验室”

Ms08067安全实验室目前开放知识星球: WEB安全攻防,内网安全攻防,Python安全攻防,KALI Linux安全攻防,二进制逆向入门

最后期待各位小伙伴的加入!

来源:freebuf.com 2021-02-28 22:37:59 by: shuteer

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论