如果你最近在Kali Linux 2024.2上尝试安装DVWA靶场环境,可能会发现按照老教程操作总是卡在数据库连接这一步。这主要是因为从2024版本开始,Kali默认使用MariaDB替代了MySQL,而两者的权限管理机制存在关键差异。本文将带你完整走通在新系统中的安装流程,并重点解决那些"教程里没告诉你"的细节问题。
在开始之前,确保你的Kali Linux 2024.2系统已经更新到最新状态。打开终端执行:
bash复制sudo apt update && sudo apt upgrade -y
DVWA运行需要Apache、PHP和MariaDB的支持。2024.2版本中,PHP默认版本已升级到8.2,我们需要安装配套组件:
bash复制sudo apt install apache2 mariadb-server php php-mysqli php-gd libapache2-mod-php -y
安装完成后,启动基础服务并设置开机自启:
bash复制sudo systemctl start apache2 mariadb
sudo systemctl enable apache2 mariadb
注意:Kali 2024.2默认防火墙规则可能阻止Apache访问,如需从其他设备访问靶场,需放行80端口:
bash复制sudo ufw allow 80/tcp
获取DVWA最新代码推荐直接从官方仓库克隆,避免下载zip包可能存在的版本滞后问题:
bash复制cd /var/www/html
sudo git clone https://github.com/digininja/DVWA.git
sudo mv DVWA dvwa # 统一使用小写命名
权限设置是大多数安装失败的根源。2024.2版本对web目录安全性要求更严格,建议采用以下权限方案:
bash复制sudo chown -R www-data:www-data /var/www/html/dvwa
sudo chmod -R 750 /var/www/html/dvwa
sudo chmod 770 /var/www/html/dvwa/hackable/uploads
sudo chmod 770 /var/www/html/dvwa/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt
复制配置文件并修改PHP设置以适应DVWA需求:
bash复制cd /var/www/html/dvwa/config/
sudo cp config.inc.php.dist config.inc.php
编辑PHP配置文件,确保以下参数已启用:
bash复制sudo nano /etc/php/8.2/apache2/php.ini
查找并修改:
code复制allow_url_include = On
allow_url_fopen = On
这是2024.2版本变化最大的部分。MariaDB的权限系统与MySQL有所不同,特别是在用户创建和密码策略方面。
首先初始化MariaDB安全设置(2024.2版本必须执行此步骤):
bash复制sudo mysql_secure_installation
按提示操作时注意:
创建DVWA专用数据库和用户时,2024.2版本的语法需要调整:
bash复制sudo mysql -u root -p
在MariaDB控制台中依次执行:
sql复制CREATE DATABASE dvwa;
CREATE USER 'dvwa_user'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
关键区别:MariaDB 10.6+版本要求密码必须满足复杂度规则,简单的空密码或弱密码会被拒绝。如果坚持使用简单密码(不推荐),需先执行:
sql复制SET GLOBAL validate_password_policy=LOW;
修改DVWA配置文件以匹配数据库凭据:
bash复制sudo nano /var/www/html/dvwa/config/config.inc.php
更新以下参数:
php复制$_DVWA[ 'db_user' ] = 'dvwa_user';
$_DVWA[ 'db_password' ] = 'your_secure_password';
$_DVWA[ 'db_database' ] = 'dvwa';
即使按照上述步骤操作,在2024.2版本中仍可能遇到一些特殊问题。以下是经过实测的解决方案:
问题1:数据库连接失败,提示"Access denied"
这通常是因为MariaDB的unix_socket认证插件覆盖了密码认证。解决方法:
bash复制sudo mysql -u root -p
执行:
sql复制ALTER USER 'dvwa_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_secure_password';
FLUSH PRIVILEGES;
问题2:PHP函数被禁用警告
编辑php.ini文件后,确认修改已生效:
bash复制sudo systemctl restart apache2
php -i | grep allow_url_include # 应显示On
如果仍显示Disabled,检查是否有多个php.ini文件:
bash复制sudo find / -name php.ini
确保所有实例中的相关设置都已被修改。
问题3:reCAPTCHA密钥缺失
这不会影响核心功能,但如果你想修复:
php复制$_DVWA[ 'recaptcha_public_key' ] = 'your_public_key';
$_DVWA[ 'recaptcha_private_key' ] = 'your_private_key';
问题4:文件上传功能异常
检查SELinux状态(如果启用):
bash复制getenforce
如果是Enforcing模式,暂时设置为Permissive:
bash复制sudo setenforce 0
要永久禁用(不推荐安全环境):
bash复制sudo nano /etc/selinux/config
设置SELINUX=permissive
DVWA作为漏洞演练平台,默认配置存在安全风险。在2024.2环境中建议额外采取以下措施:
修改默认管理员凭证
登录DVWA后(admin/password),立即前往"Security"选项卡:
配置MariaDB网络访问限制
编辑MariaDB配置文件:
bash复制sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
确保存在以下行:
code复制bind-address = 127.0.0.1
skip-networking
启用Apache安全模块
bash复制sudo a2enmod security2
sudo nano /etc/apache2/conf-available/security.conf
调整以下参数:
code复制ServerTokens Prod
ServerSignature Off
TraceEnable Off
实施IP访问限制(可选)
编辑DVWA的Apache配置:
bash复制sudo nano /etc/apache2/sites-available/dvwa.conf
添加:
code复制<Directory /var/www/html/dvwa>
Require ip 192.168.1.0/24 # 仅允许本地网络访问
</Directory>
完成所有配置后,执行全面重启:
bash复制sudo systemctl restart apache2 mariadb
现在你可以通过浏览器访问http://localhost/dvwa/setup.php完成最后的数据库初始化。点击"Create/Reset Database"按钮后,系统会自动跳转到登录页面,使用默认凭证admin/password即可开始你的安全测试之旅。