当前位置:首页 > 探索

dvwa靶场搭建

DVWA(Damn Vulnerable Web Application)是靶场一个故意设计成漏洞百出的PHP/MySQL Web应用。它的搭建唯一用途就是让你在本地合法地练习SQL注入、XSS、靶场文件包含这些攻击手法。搭建别把它部署到公网,靶场否则第二天你的搭建服务器就会变成别人的肉鸡。

搭建DVWA最省事的靶场方式是用Docker。一条命令就能跑起来:docker run --rm -it -p 80:80 vulnerables/web-dvwa。搭建等几秒钟,靶场浏览器打开 http://localhost,搭建你会看到登录页。靶场默认账号是搭建 admin,密码 password。靶场登录后别急着点那些漏洞模块,搭建先滚到页面底部,靶场点“Create / Reset Database”按钮。这一步会建表并填入测试数据。不点的话,所有功能都会报数据库错误。

如果你不想用Docker,手动在Linux上搭也很快。拿Ubuntu举例,装好Apache、MySQL、PHP和几个扩展:sudo apt install apache2 mysql-server php php-mysql php-gd php-xml。然后把DVWA的源码克隆到Web目录:git clone https://github.com/digininja/DVWA.git /var/www/html/dvwa。权限给足:chown -R www-data:www-data /var/www/html/dvwa。接着进MySQL建个库和用户,比如CREATE DATABASE dvwa; CREATE USER 'dvwa'@'localhost' IDENTIFIED BY 'p@ssw0rd'; GRANT ALL ON dvwa.* TO 'dvwa'@'localhost';。然后改DVWA的配置文件:cp config/config.inc.php.dist config/config.inc.php,把里面的数据库密码改成你刚设的。最后重启Apache,访问 http://你的IP/dvwa。

有个坑我踩过:PHP版本太高会出问题。DVWA对PHP 8.x的支持不算完美,某些模块会抛警告甚至白屏。用PHP 7.4比较稳。如果你用Docker镜像,它已经配好了合适的环境,省心很多。

登录之后,第一件事是去“DVWA Security”页面把安全等级调到“low”。默认是“impossible”,所有漏洞都被堵死了,你什么也练不到。调成low之后,SQL注入模块里输入 1' OR '1'='1 就能绕过认证,XSS模块里直接弹窗。这种即时反馈很爽,但也容易让人低估真实场景的复杂性——实际系统会有WAF、参数化查询、CSP策略,不会这么直白。

DVWA的代码结构很简单,每个漏洞模块对应一个PHP文件,比如 vulnerabilities/sqli/ 下面有 low.php、medium.php、high.php、impossible.php。你可以直接读源码,对比不同安全等级下过滤逻辑的差异。比如SQL注入的medium级别只是把单引号转义了,但数字型注入依然存在。这种对比学习比看教程深刻得多。

我建议每次练习前用快照或者 docker commit 保存干净状态。因为你会把数据库改得乱七八糟,或者不小心上传了WebShell。重置数据库虽然能恢复数据,但上传的文件还在。Docker的话直接删掉容器重新跑一条命令,三十秒回到初始状态。

最后提醒一句:DVWA本身没有身份验证之外的防护,别在云服务器上开放80端口就跑它。用本地虚拟机,或者Docker绑定 127.0.0.1:80:80,只让自己访问。练完就关掉。这东西是手术刀,不是玩具。

分享到: