DVWA从入门到精通(十七):Open HTTP Redirect(开放重定向)
摘要本文是《DVWA从入门到精通》系列的第十七篇带你全面掌握Open HTTP Redirect开放重定向模块的攻防全流程。从HTTP重定向的基本原理出发逐步讲解Low、Medium、High三个级别的攻击手法与源码分析并深入探讨Impossible级别的终极防御方案。文章包含绝对URL与相对路径的绕过、协议头过滤的多种绕过技巧、参数注入绕过、以及严格白名单防御等核心技术让你真正做到“知其然更知其所以然”。一、什么是开放重定向1.1 重定向的基本原理HTTP重定向是Web应用中非常常见的功能——当你在浏览器中访问一个URL时服务器除了直接返回网页内容还可以告诉你“这个资源不在这儿你去另一个地方找吧”。服务器会返回一个3xx系列的状态码如302 Found并在响应头中加上Location: 新的URL浏览器看到这个响应后会自动跳转到新的地址。这个过程本身是完全合法且必要的比如网站改版换域名用户登录后跳回原来访问的页面短链接服务跳转到目标地址1.2 开放重定向漏洞的本质开放重定向Open Redirect漏洞的根源在于应用程序允许用户通过参数如?redirect控制跳转的目标地址但没有对这个地址进行严格的检查和限制。用一个生活化的例子来理解你家小区门禁很严陌生人进不来。但你家有个后门门上贴了个纸条写着“推开门就能到XX地方”。攻击者不需要破解门禁只需要把纸条上的地址改成“到我的陷阱屋”然后骗一个小区居民去推那扇门。居民一看是小区内部的后门毫无防备地推开结果就中招了。开放重定向就是这个“后门”——网站本身是安全的门禁很严但重定向功能后门上的纸条被攻击者篡改了。从技术角度来看当Web应用程序接受不受信任的输入时可能会发生未经验证的重定向和转发这可能导致Web应用程序将请求重定向到包含在不受信任输入中的URL。攻击者可以将不受信任的URL输入修改为恶意网站从而成功发起网络钓鱼诈骗并窃取用户凭据。1.3 开放重定向的危害虽然开放重定向本身通常被归类为“中危”漏洞但它在实际攻击链中扮演着至关重要的角色危害说明钓鱼攻击攻击者构造一个看起来完全合法的链接域名是可信的用户点击后却被带到高仿的钓鱼页面恶意软件分发跳转的终点可以是一个自动下载恶意程序的页面绕过安全检测一些安全软件会检查链接的域名是否在黑名单攻击者先用白名单域名做第一次跳转绕过检测信任滥用用户看到的是来自可信域名的URL降低了警惕性会话劫持结合其他漏洞重定向可用于窃取用户的会话令牌1.4 常见触发场景开放重定向漏洞通常出现在以下场景登录后的跳转功能如/login?redirect/dashboard外部链接的跳转页面如/goto?url...OAuth认证的回调URL下载资源的重定向短链接服务二、准备工作2.1 靶场环境确保DVWA已部署并正常运行访问地址http://你的服务器IP/dvwa/login.php使用admin/password登录2.2 必备工具工具用途浏览器Chrome/Firefox访问靶场观察跳转行为Burp Suite抓包分析、修改请求参数Medium/High级别必需2.3 基础知识储备理解HTTP状态码3xx系列了解URL的组成部分协议、域名、路径、参数了解header(location: ...)函数的工作原理三、Low级别毫无防护的“裸奔”状态3.1 安全级别设置将DVWA Security设置为Low级别然后进入Open HTTP Redirect模块。3.2 界面观察Open HTTP Redirect模块的页面显示了两个链接——“Quote 1”、“Quote 2”。点击任意一个链接页面会跳转到一个显示引文的页面同时URL中会出现redirect参数。例如点击“Quote 1”后地址栏变为3.3 源码分析查看Low级别的核心代码?php if (array_key_exists (redirect, $_GET) $_GET[redirect] ! ) { header (location: . $_GET[redirect]); exit; } http_response_code (500); ? pMissing redirect target./p ?php exit; ?这段代码存在致命的开放重定向漏洞缺陷说明无任何过滤不检查redirect参数的值是否合法无白名单/黑名单不限制重定向的目标范围直接信任用户输入用户说什么就跳转到哪里无协议验证不检查是否跳转到外部域名3.4 攻击方法直接跳转到任意网站由于Low级别没有任何防护攻击者可以直接将redirect参数修改为任意URL。第一步构造恶意URL在浏览器地址栏中输入http://10.0.0.149/vulnerabilities/open_redirect/source/low.php?redirecthttps://www.baidu.com第二步观察结果页面立即跳转到了百度首页。第三步构造钓鱼链接攻击者可以将这个链接伪装成合法的DVWA链接发给受害者http://10.0.0.149/vulnerabilities/open_redirect/source/low.php?redirect//10.0.0.149/test.html放心点击结果被带到了钓鱼网站//10.0.0.149/test.html。3.5 Low级别总结缺陷说明无任何过滤用户输入直接被用作重定向目标可跳转到任意外部URL包括钓鱼网站、恶意软件站点高危漏洞可被用于大规模钓鱼攻击四、Medium级别协议头过滤的“第一次尝试”4.1 安全级别设置将DVWA Security切换为Medium级别。4.2 观察变化在Medium级别下尝试Low级别的方法直接输入https://www.baidu.com发现被阻止了——页面显示“Absolute URLs not allowed”不允许绝对URL。4.3 源码分析查看Medium级别的核心代码?php if (array_key_exists (redirect, $_GET) $_GET[redirect] ! ) { if (preg_match (/http:\/\/|https:\/\//i, $_GET[redirect])) { http_response_code (500); ? pAbsolute URLs not allowed./p ?php exit; } else { header (location: . $_GET[redirect]); exit; } } http_response_code (500); ? pMissing redirect target./p ?php exit; ?Medium级别的变化改进说明增加了协议头过滤使用正则表达式匹配http://和https://4.4 正则表达式的局限Medium级别只过滤了以http://或https://开头的绝对URL但存在多种绕过方式防护措施存在缺陷危害过滤http://、https://完整协议头未拦截//协议相对 URL过滤逻辑简陋仍可跳转任意外网用于网络钓鱼仅黑名单过滤关键词无域名白名单、无完整 URL 解析校验中危漏洞防护不彻底4.5 攻击方法双斜杠协议继承攻击者可以使用双斜杠//http://10.0.0.149/vulnerabilities/open_redirect/source/medium.php?redirect//www.baidu.com浏览器会继承当前页面的协议http或https自动补全为http://www.baidu.com或https://www.baidu.com。4.6 Medium级别总结防护改进Medium防护原理局限性 / 绕过方式正则黑名单拦截http://、https://使用正则匹配完整协议头禁止绝对 URL 跳转拦截带 http/https 的外网地址1. 协议相对 URL//域名可直接绕过无协议标识不触发正则匹配2. 仍无域名白名单、无路径校验跳转目标完全可控五、High级别白名单参数的“路径限制”5.1 安全级别设置将DVWA Security切换为High级别。5.2 观察变化在High级别下尝试Medium级别的各种绕过方法www.baidu.com、//www.baidu.com发现都被阻止了。5.3 源码分析查看High级别的核心代码?php if (array_key_exists (redirect, $_GET) $_GET[redirect] ! ) { if (strpos($_GET[redirect], info.php) ! false) { header (location: . $_GET[redirect]); exit; } else { http_response_code (500); ? pYou can only redirect to the info page./p ?php exit; } } http_response_code (500); ? pMissing redirect target./p ?php exit; ?High级别的变化改进说明简易白名单校验强制要求 redirect 参数字符串内必须包含info.php子串strpos () 包含匹配检测仅校验是否存在目标字符串不校验域名、路径前后位置非法地址拦截不携带info.php的任意跳转地址直接返回 500 错误拒绝5.4 白名单的漏洞内嵌URL绕过High 级别仅要求字符串中存在info.php未限制 info.php 出现的位置、不校验整体地址是站内还是外网。 本漏洞利用方式为外网 URL 内嵌合法关键字绕过在外部网址中插入info.php子串满足 strpos 检测直接跳转外网。5.5 攻击方法一外部 URL 内嵌关键字绕过构造可利用Payloadhttp://10.0.0.149/vulnerabilities/open_redirect/source/high.php?redirecthttps://www.baidu.com/?paraminfo.php原理分析redirect 完整值https://www.baidu.com/?paraminfo.phpstrpos 检测到字符串包含info.php校验直接放行服务端将完整外网链接传入Location响应头浏览器直接跳转百度外网成功突破限制实现外部跳转。结果成功跳转到外部网站5.6 攻击方法二查询字符串注入Payloadhttp://10.0.0.149/vulnerabilities/open_redirect/source/high.php?redirectinfo.php%3Fid%3D1%26next%3Dhttps://www.baidu.comURL 解码后info.php?id1nexthttps://www.baidu.com原理与真实效果high.php 通过 strpos 检测到info.php放行并重定向到站内的 info.phpDVWA 原生info.php仅为信息展示页面无读取 next 参数的跳转代码页面只会停留在站内不会自动跳转外部百度该利用方式在原生 DVWA 环境下完全无效。5.7 High级别总结防御机制作用绕过方法 局限性强制 redirect 包含 info.php拦截不含该字符串的跳转地址1. 外网 URL 参数内嵌 info.php一步直接跳转外网稳定可用2. info.php 拼接跳转参数仅理论可行DVWA 原生 info 无跳转逻辑无法出网strpos 宽松匹配白名单仅校验关键字是否存在不校验整体域名只做字符串包含检测不区分站内 / 外部域名防护逻辑存在重大缺陷六、Impossible级别终极防御方案6.1 安全级别设置将DVWA Security切换为Impossible级别。6.2 源码分析查看Impossible级别的核心代码?php $target ; if (array_key_exists (redirect, $_GET) is_numeric($_GET[redirect])) { switch (intval ($_GET[redirect])) { case 1: $target info.php?id1; break; case 2: $target info.php?id2; break; case 99: $target https://digi.ninja; break; } if ($target ! ) { header (location: . $target); exit; } else { ? Unknown redirect target. ?php exit; } } ? Missing redirect target.6.3 Impossible级别的严格白名单防御Impossible级别采用了最严格的防御策略防御层技术手段作用第一层强类型校验is_numeric()仅允许数字传入 redirect 参数直接拦截所有字符串、URL、带特殊符号输入第二层Switch数字映射固定跳转地址输入数字1/2/99一对一绑定写死的跳转目标无任何自定义拼接第三层其余全部拦截非数字、不在case内的数字均提示未知跳转目标拒绝执行重定向6.4 为什么Impossible级别无法被绕过攻击方式Impossible 防护逻辑能否成功利用直接输入外部 URLbaidu 等先校验is_numeric()字符串直接拦截❌ 完全失效High 级别绕过URL 内嵌 info.phppayload 是字符串无法通过数字校验❌ 完全失效// 省略协议头、URL 编码、参数拼接全部属于字符串第一层校验直接拦截❌ 完全失效多参数污染 HPP、嵌套查询串参数值非数字无法进入 switch 逻辑❌ 完全失效精确白名单匹配是防御开放重定向的唯一正确方式——只允许跳转到预定义的安全目标拒绝一切其他输入。七、防御开放重定向的最佳实践通过DVWA四个级别的对比我们可以总结出防御开放重定向的最佳实践7.1 必须实施的防御措施措施说明优先级固定映射 / 严格白名单预定义有限跳转标识一一绑定目标地址禁止用户直接传入 URL⭐⭐⭐⭐⭐拒绝用户直接传入 URL不把用户输入直接拼入 Location 响应头⭐⭐⭐⭐⭐禁用包含式匹配strpos禁止仅检测关键字存在极易被绕过⭐⭐⭐⭐⭐校验域名归属若允许外跳使用可信域名列表白名单禁止任意外网⭐⭐⭐⭐7.2 推荐的辅助措施措施说明优先级优先站内相对路径限制仅站内页面跳转彻底杜绝外网跳转风险⭐⭐⭐⭐跳转确认页面跳转至外部站点前增加弹窗 / 页面提示告知用户即将离开本站⭐⭐⭐重定向行为日志记录记录跳转参数、客户端 IP方便事后审计溯源⭐⭐限制跳转次数、有效期防止恶意批量钓鱼链接分发⭐⭐7.3 常见误区在实际开发中以下做法不能有效防御开放重定向仅黑名单过滤http://、https://可被//协议相对 URL 绕过Medium 级别缺陷使用strpos做关键字包含校验仅要求字符串携带指定文本High 级别缺陷直接接收完整 URL 作为参数不做任何域名校验Low 级别高危缺陷URL 编码、正则过滤关键词存在大量变形绕过手段。八、开放重定向的实战检测思路在实际的渗透测试中如何快速发现开放重定向漏洞8.1 检测步骤抓包寻找页面跳转相关 GET/POST 参数传入外部 URLhttps://baidu.com测试是否直接跳转若拦截完整 http 协议使用//baidu.com协议相对地址绕过测试若要求包含指定关键字在外网 URL 路径 / 参数内拼接关键字测试若仅接收数字 / 固定标识尝试枚举所有映射值判断是否存在可控外跳观察是否存在二次跳转页面可拼接跳转参数实现间接出网。8.2 常见参数名参数名说明redirect最通用跳转参数url、target、dest、destination页面跳转、文件跳转常用return、return_to、continue、next登录 / 注册完成回调跳转goto、link简易页面跳转callbackOAuth、第三方登录回调高危参数8.3 常见绕过手法汇总防护类型绕过方法对应级别无任何过滤直接传入完整外部 URLLow黑名单过滤 http/https 协议头双斜杠//协议相对地址、特殊协议变形Mediumstrpos 关键字包含校验需携带指定字符串在外部 URL 的查询参数 / 路径中内嵌指定关键字High数字强校验 固定地址映射白名单不存在可用绕过方式Impossible九、总结本文完整完成了开放重定向漏洞的原理学习、分级实战与防御总结系统掌握了该漏洞的完整攻防体系。我们首先理解了开放重定向的核心原理即Web应用未对用户可控的跳转参数做严格校验允许攻击者篡改重定向目标地址进而实现跳转劫持该漏洞主要危害为网络钓鱼、恶意程序分发、站点信任滥用及安全策略绕过在社工攻击链中具备重要利用价值。在分级实战中Low级别无任何过滤校验攻击者可直接修改redirect参数跳转至任意外部恶意网址Medium级别采用正则黑名单过滤http://与https://协议头存在明显防护缺陷可通过双斜杠协议相对地址等方式轻松绕过并非可靠防护手段High级别采用strpos字符串包含校验机制要求参数必须携带info.php关键字原文所述参数污染绕过方式并不成立真实有效绕过方式为在外部URL中内嵌info.php关键字欺骗服务端校验实现外网跳转Impossible级别摒弃了不安全的字符串匹配逻辑采用数字强类型校验固定地址映射的终极白名单机制并非in_array完全匹配通过预设固定跳转标识绑定可信目标地址完全杜绝用户可控篡改跳转目标的可能性彻底修复开放重定向漏洞。最后本文总结了开放重定向的安全防御最佳实践杜绝黑名单过滤、模糊包含匹配等不安全写法坚持采用精准固定映射白名单、禁止用户直接控制跳转目标、校验可信域名范围等核心防护手段。开放重定向虽多为中危漏洞但却是钓鱼社工攻击的核心跳板依托可信域名降低用户警惕性危害极大生产环境中通过严格白名单限制、杜绝用户可控跳转参数的组合防护方式可彻底根除该类漏洞风险。重要声明本教程及文中所有操作仅限于合法授权的安全学习与研究。作者及发布平台不承担因不当使用本教程所引发的任何直接或间接法律责任。请务必遵守中华人民共和国网络安全相关法律法规。如果这篇文章帮你解决了实操上的困惑别忘记点击点赞、分享也可以留言告诉我你遇到的其它问题我会尽快回复。你的关注是我坚持原创和细节共享的力量来源谢谢大家。

相关新闻

Cling交互式C++解释器:基于Clang/LLVM的即时编译与REPL实践

Cling交互式C++解释器:基于Clang/LLVM的即时编译与REPL实践

1. 项目概述:为什么我们需要交互式C?在C开发者的日常工作中,最熟悉的流程莫过于“编辑-编译-链接-运行”这个循环。写几行代码,保存,敲下编译命令,等待编译器输出,再运行可执行文件查看结果。这…

2026/7/11 8:53:50 阅读更多 →
Kubernetes CKS 安全专家认证:5 大核心模块(权重 20%)实战演练与 CIS 基准检查

Kubernetes CKS 安全专家认证:5 大核心模块(权重 20%)实战演练与 CIS 基准检查

Kubernetes CKS 安全专家认证:5 大核心模块实战演练与 CIS 基准检查 1. 监控、日志记录和运行时安全模块深度解析 作为CKS认证中权重20%的核心模块,监控、日志记录和运行时安全是保障Kubernetes集群安全的关键防线。这一模块要求工程师能够:…

2026/7/11 8:51:49 阅读更多 →
数据标注算法进化史:从人工到智能的跨越

数据标注算法进化史:从人工到智能的跨越

引言:数据规模增长推动标注方式不断演进在人工智能发展的早期阶段,模型能力提升更多依赖算法创新。但随着深度学习技术逐渐成熟,数据质量开始成为影响模型效果的重要因素。“数据决定模型上限”逐渐成为行业共识,而数据标注作为连…

2026/7/11 8:51:49 阅读更多 →

最新新闻

Unity URP线框高亮插件:原理、配置与性能优化全解析

Unity URP线框高亮插件:原理、配置与性能优化全解析

1. 项目概述与核心价值在Unity开发中,尤其是在使用URP(Universal Render Pipeline,通用渲染管线)进行项目开发时,如何清晰、高效地可视化选中物体,一直是个既基础又关键的需求。无论是为了调试模型结构、检…

2026/7/11 9:44:09 阅读更多 →
中山市企业如何申报广东省工程技术研究中心?具体流程是怎样的

中山市企业如何申报广东省工程技术研究中心?具体流程是怎样的

省级工程中心申报单位须为广东省注册登记的企业、高校、科研机构、医院等法人单位,主要科研场所设在广东省内。省级工程中心申报单位原则上已建有市(区)级及以上科研平台,科研管理体制和运行机制比较完善,同时具备下列…

2026/7/11 9:44:09 阅读更多 →
99岁波音首席工程师给10后颁奖:光谷这场AI决赛,我看到了两代人的未来

99岁波音首席工程师给10后颁奖:光谷这场AI决赛,我看到了两代人的未来

引言:一张合影,两个世界中国建筑科技馆,决赛刚结束。大家挤在一起合影。快门按下的那一刻,我突然被眼前的画面击中:后排,是华科校友、评委和家长们,腰背挺得笔直,神情肃穆&#xff0…

2026/7/11 9:44:09 阅读更多 →
Claude Code CLI安装全指南:原生脚本避坑与终端环境适配

Claude Code CLI安装全指南:原生脚本避坑与终端环境适配

1. 项目概述:这不是又一个“点下一步”的安装教程 “别再手动敲重复代码了!Claude Code 保姆级安装教程,30分钟上手”——这个标题里藏着三个关键信号: 痛点明确、工具新锐、门槛真实 。它不是在推销一个概念,而是在…

2026/7/11 9:42:08 阅读更多 →
如何永久保存微信聊天记录:免费开源数据备份工具完整指南

如何永久保存微信聊天记录:免费开源数据备份工具完整指南

如何永久保存微信聊天记录:免费开源数据备份工具完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/We…

2026/7/11 9:42:08 阅读更多 →
CRA 合规倒计时 70 天:制造商如何抢跑合规冲刺期?

CRA 合规倒计时 70 天:制造商如何抢跑合规冲刺期?

引言 距离欧盟《网络弹性法案》(CRA)正式生效仅剩 70 天。对于在欧盟销售联网产品的制造商而言,这已经不再是"是否要做"的战略选择题,而是"如何快速通过"的执行必答题。 与 GDPR 时代不同,CRA 的…

2026/7/11 9:40:07 阅读更多 →

日新闻

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux 想要让AI图像生成真正听从你的指挥吗&…

2026/7/11 0:02:12 阅读更多 →
PIC18F45K42驱动EPT-14A4005P压电蜂鸣器方案详解

PIC18F45K42驱动EPT-14A4005P压电蜂鸣器方案详解

1. 项目背景与核心需求 在工业控制、安防系统和智能家居等领域,可靠的声音警报系统是不可或缺的基础组件。传统蜂鸣器存在音量不足、音质模糊等问题,而基于压电陶瓷技术的EPT-14A4005P蜂鸣器配合PIC18F45K42微控制器,能够构建一套适应性强、音…

2026/7/11 0:04:12 阅读更多 →
大模型推理中的算子融合优化:LayerNorm + Attention 的 CUDA Kernel 手写与验证

大模型推理中的算子融合优化:LayerNorm + Attention 的 CUDA Kernel 手写与验证

大模型推理中的算子融合优化:LayerNorm Attention 的 CUDA Kernel 手写与验证 一、GPU 利用率 30%:分开的算子吃掉所有带宽 推理服务的 GPU 利用率监测显示一个反直觉的现象:计算核心(SM)利用率不到 30%,但…

2026/7/11 0:04:12 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/10 19:03:29 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/9 21:41:05 阅读更多 →

月新闻