可以攻击的靶机网站
DVWA(Damn Vulnerable Web Application)跑在虚拟机上,可攻默认账号admin,靶机密码password。网站登录进去,可攻把安全等级调到low,靶机然后打开SQL Injection页面,网站输入框里敲一个单引号,可攻页面直接甩回一条MySQL语法错误。靶机数据库版本、网站路径、可攻表名,靶机全在报错信息里。网站
这就是可攻靶机网站存在的意义——它把所有漏洞明明白白摊开给你看。不像真实环境里还要猜、靶机要绕、网站要碰运气,靶机就是让你直接上手练。
常见的几类靶机
DVWA算是最经典的一个。PHP写的,集成了SQL注入、XSS、文件包含、命令注入、CSRF等十几种漏洞。每个漏洞分四个安全等级:low、medium、high、impossible。同一个漏洞,四种防御写法,你能直观看到过滤函数是怎么起作用的,也能看到哪些过滤其实形同虚设。
另一个常被提到的是OWASP BWA(Broken Web Applications),它是一个虚拟机镜像,里面打包了十几个有漏洞的Web应用,包括WebGoat、Mutillidae、DVWA本身。省去了一个个搭建的麻烦,开机即用。
WebGoat走的是另一个路子。它把每个漏洞做成一节课,左边是讲解,右边是实操。比如SQL注入那一节,它会先告诉你什么是有害查询,然后让你在一个模拟的登录框里试着绕过认证。做完提交,系统判断你是否成功。适合完全没接触过安全的新手,边学边练。
还有一类是CTF风格的靶机,比如HackTheBox和TryHackMe上的机器。它们不叫“靶机网站”而叫“靶机”,因为通常是一整台虚拟机,你要从外网扫描开始,找到入口点,提权,最后拿到flag。TryHackMe的入门房间会给你详细指引,HackTheBox则几乎不给提示,难度高不少。
为什么需要靶机
拿真实网站练手是违法的。《网络安全法》第二十七条写得很清楚,不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动。靶机解决了这个矛盾——它是专门造出来让你打的。
我见过不少人,理论学了一堆,SQL注入的原理能背出来,但真给一个输入框,不知道从哪下手。靶机就是填这个 gap 的。你在DVWA的命令注入页面输入 127.0.0.1; whoami,看到回显里多了一行 www-data,那一瞬间比看十遍教程都管用。
搭建和使用
DVWA的搭建很简单。装个XAMPP或者phpStudy,把DVWA的源码丢进web目录,改一下config文件里的数据库配置,浏览器访问setup.php点一下创建数据库,完事。整个过程不超过十分钟。
如果你想更省事,直接下个Metasploitable2的虚拟机镜像,VMware或VirtualBox打开就能用。里面除了DVWA还有Mutillidae、phpMyAdmin、Tomcat等一堆有漏洞的服务,够你玩很久。
用的时候注意一点:靶机不要暴露在公网。DVWA的low等级下,一个命令注入就能直接反弹shell,你不想自己的虚拟机变成别人的跳板。
打靶机不是目的,理解漏洞的成因和防御才是。DVWA的impossible等级里,SQL注入用PDO预处理语句彻底堵死,XSS用htmlspecialchars转义输出,命令注入用白名单校验。对比low和impossible的源码,比单纯刷漏洞有意义得多。
靶机网站终究是工具。它能给你一个安全的练习场,但真实环境里的逻辑漏洞、业务缺陷、权限设计问题,靶机教不了你。那些得在代码审计和实际项目里慢慢磨。