别再手动改配置了!用这个脚本一键在Kali Linux上部署DVWA靶场

张开发
2026/4/9 4:08:34 15 分钟阅读

分享文章

别再手动改配置了!用这个脚本一键在Kali Linux上部署DVWA靶场
一键部署DVWA靶场Kali Linux自动化脚本全解析每次在Kali Linux上手动搭建DVWA靶场时你是否厌倦了重复输入apt-get、vim修改配置、服务启停这些机械操作特别是当需要频繁重建环境进行教学或练习时这些重复劳动不仅耗时还容易因操作失误导致环境异常。本文将分享一个全自动部署脚本从换源到解决常见报错一气呵成让你从此告别手动配置的繁琐。1. 为什么需要自动化部署DVWA在网络安全学习和教学中DVWADamn Vulnerable Web Application是最常用的Web漏洞练习平台之一。传统手动部署方式存在几个明显痛点依赖项管理复杂需要安装Apache、MySQL、PHP及多个扩展模块配置易出错php.ini参数修改、数据库权限设置等环节容易遗漏环境重建频繁教学演示常需要重置靶场状态或重建完整环境版本兼容问题不同Kali版本对应的PHP配置路径可能不同我们开发的自动化脚本解决了这些痛点主要实现以下功能#!/bin/bash # 功能清单 # 1. 自动替换国内软件源 # 2. 安装所有必要依赖包 # 3. 配置Apache和MySQL服务 # 4. 部署DVWA到web目录 # 5. 自动处理常见错误如gd模块缺失 # 6. 提供自定义参数接口2. 脚本核心架构解析2.1 基础环境配置模块脚本首先处理基础环境包括软件源更新和依赖安装。这个模块特别考虑了国内用户的网络环境# 替换为阿里云镜像源 sed -i s|^deb http://http.kali.org|deb https://mirrors.aliyun.com/kali|g /etc/apt/sources.list apt-get update -y # 安装核心组件 apt-get install -y apache2 mysql-server php libapache2-mod-php \ php-mysql php-gd php-curl php-xml php-mbstring关键参数说明参数作用推荐值-y自动确认安装始终启用php-gd图形处理模块必须安装php-curl网络请求支持可选安装2.2 DVWA部署模块该模块自动完成从GitHub克隆到正确配置的全过程# 克隆DVWA仓库 git clone https://github.com/digininja/DVWA /var/www/html/dvwa # 配置文件处理 cp /var/www/html/dvwa/config/config.inc.php.dist \ /var/www/html/dvwa/config/config.inc.php # 权限设置 chown -R www-data:www-data /var/www/html/dvwa chmod -R 755 /var/www/html/dvwa注意默认配置使用弱密码是DVWA的设计特性在生产环境中绝对不要使用这些凭证2.3 数据库初始化模块自动化创建数据库账户并授权mysql -uroot EOF create database dvwa; create user dvwalocalhost identified by pssw0rd; grant all on dvwa.* to dvwalocalhost; flush privileges; EOF可以通过修改以下变量来自定义配置# 可自定义参数 DB_NAMEdvwa DB_USERdvwa_user DB_PASScustom_password PHP_VERSION8.23. 常见问题自动化修复脚本内置了多个常见错误的自动修复方案PHP模块缺失错误自动检测并安装缺失的php-gd、php-curl等模块自动修改php.ini中的allow_url_include设置服务启动失败自动处理Apache和MySQL的端口冲突提供服务状态检查和自动重启功能权限问题自动设置/var/www/html目录的正确权限处理SELinux环境下的访问限制如启用典型错误处理代码示例# 检查gd模块是否加载 if ! php -m | grep -q gd; then apt-get install -y php-gd systemctl restart apache2 fi4. 脚本安全使用指南虽然自动化脚本极大提升了效率但需要注意以下安全事项隔离网络环境DVWA包含已知漏洞必须在隔离环境中使用定期更新关注GitHub上的DVWA更新和安全公告访问控制修改默认的登录凭证考虑添加HTTP基本认证层日志监控记录所有攻击尝试设置异常行为警报安全加固建议# 在脚本最后添加的安全措施 iptables -A INPUT -p tcp --dport 80 -j DROP iptables -I INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT5. 高级自定义与扩展对于有特殊需求的用户脚本提供了多个扩展点5.1 多版本PHP支持通过检测系统中安装的PHP版本自动适配正确的配置路径# 自动检测PHP版本 PHP_VERSION$(php -v | head -n 1 | cut -d -f 2 | cut -d . -f 1,2) PHP_INI_PATH/etc/php/$PHP_VERSION/apache2/php.ini # 修改PHP配置 sed -i s/allow_url_include Off/allow_url_include On/ $PHP_INI_PATH5.2 插件集成脚本预留了插件接口可以方便地集成其他安全工具# 示例集成Burp Suite代理配置 if [ -f /usr/bin/burpsuite ]; then echo export http_proxyhttp://127.0.0.1:8080 ~/.bashrc echo export https_proxyhttp://127.0.0.1:8080 ~/.bashrc fi5.3 多靶场支持通过简单修改脚本可以适配其他漏洞靶场# 部署其他靶场的示例 case $TARGET in dvwa) deploy_dvwa ;; bwapp) deploy_bwapp ;; webgoat) deploy_webgoat ;; esac在实际教学中使用这个脚本后我发现最实用的功能是--reset参数可以快速将靶场恢复到初始状态这对需要重复演示特定漏洞的场景特别有用。另一个技巧是在脚本开头添加环境检测避免在错误的环境中意外执行。

更多文章