当前位置: 当前位置:首页 > 百科 > DVWA靶机建站正文

DVWA靶机建站

作者:百科 来源:娱乐 浏览: 【大 中 小】 发布时间:2026-10-17 06:04:53 评论数:

DVWA跑起来只需要三样东西:一台能装PHP和MySQL的靶机机器、一个Web服务器、建站还有DVWA的靶机源码包。我用的建站环境是Ubuntu 22.04,PHP 8.1,靶机MariaDB 10.6,建站Nginx做前端。靶机这套组合不算新,建站但胜在稳定,靶机出了问题网上能搜到的建站解决方案也多。

先把Nginx和PHP装好。靶机Nginx负责处理HTTP请求,建站PHP-FPM负责解析PHP代码,靶机MariaDB存数据。建站三条命令的靶机事:

sudo apt install nginx php-fpm php-mysqli mariadb-server -y

装完之后检查一下PHP-FPM的socket路径,通常在/run/php/php8.1-fpm.sock。这个路径后面配Nginx的时候要用到,写错了就是502 Bad Gateway,我第一次搭的时候在这卡了二十分钟。

数据库配置

MariaDB默认的root认证方式在Ubuntu下是unix_socket,直接用sudo mysql就能进。进去之后建库建用户:

CREATE DATABASE dvwa; CREATE USER 'dvwa'@'localhost' IDENTIFIED BY 'p@ssw0rd'; GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost'; FLUSH PRIVILEGES;

密码别用太简单的,DVWA本身是靶机,但数据库密码设成123456就有点过了。我设的是p@ssw0rd,够用。

部署DVWA源码

从GitHub拉源码:

cd /var/www/html sudo git clone https://github.com/digininja/DVWA.git

目录权限得改。Nginx默认以www-data用户运行,DVWA需要写hackable/uploads/和config/目录:

sudo chown -R www-data:www-data /var/www/html/DVWA sudo chmod -R 755 /var/www/html/DVWA

然后复制配置文件模板:

cd /var/www/html/DVWA/config sudo cp config.inc.php.dist config.inc.php

编辑config.inc.php,把数据库信息填进去。默认的db_user是root,改成刚才建的dvwa用户,密码对应上。db_server保持localhost就行。

Nginx站点配置

新建一个站点配置文件/etc/nginx/sites-available/dvwa:

server {  listen 80; server_name localhost; root /var/www/html/DVWA; index index.php index.html; location / {  try_files $uri $uri/ =404; } location ~ \.php$ {  include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; } }

软链接到sites-enabled,删掉默认站点,nginx -t测试配置,没问题就systemctl reload nginx。

初始化与踩坑

浏览器打开http://localhost/setup.php,点“Create / Reset Database”。如果页面报错说allow_url_include没开,去/etc/php/8.1/fpm/php.ini里把allow_url_include = Off改成On,然后重启PHP-FPM。这个选项DVWA用来演示远程文件包含漏洞,不开启的话部分模块用不了。

还有个常见问题:文件上传模块报权限错误。检查/var/www/html/DVWA/hackable/uploads/目录的属主是不是www-data。我遇到过因为用git clone拉下来之后目录属主是当前用户,Nginx写不进去,手动chown一下就好了。

登录页面默认账号admin,密码password。进去之后第一件事是去DVWA Security把安全级别调成low,不然很多漏洞模块没法正常触发。调完之后就可以开始刷SQL注入、XSS、命令执行这些模块了。

整个搭建过程大概十五分钟,前提是网络顺畅、没踩权限坑。DVWA的代码本身不复杂,配置逻辑清晰,出问题多半是环境层面的——PHP扩展没装全、Nginx的fastcgi配置写错、数据库用户权限不够。排查的时候看Nginx的error log和PHP-FPM的日志,基本能定位到问题。