DVWA靶场Open HTTP Redirect (重定向) 漏洞所有级别通关教程及源码审计 ...

打印 上一主题 下一主题

主题 903|帖子 903|积分 2709

Open HTTP Redirect

HTTP 重定向(HTTP Redirect Attack)是一种网络,利用 HTTP 协议中的重定向机制,将用户引导至恶意网站或非法页面,进而进行垂纶、恶意软件流传等恶意行为。攻击者通常通过操控重定向响应头或 URL 参数实现这种
HTTP 重定向基本原理
HTTP 重定向是一种用于通知客户端(如欣赏器)哀求的资源已被移动到另一个位置的机制,通常由服务器发送 3xx 系列状态码响应。常见的重定向状态码包括:

  • 301 Moved Permanently:永久重定向,表现哀求的资源已被永久移动到新的 URL。
  • 302 Found:临时重定向,表现哀求的资源临时在另一个 URL 上。
  • 303 See Other:建议客户端利用 GET 方法获取资源。
  • 307 Temporary Redirect:临时重定向,保持哀求方法稳定。
  • 308 Permanent Redirect:永久重定向,保持哀求方法稳定。
HTTP 重定向方式
HTTP 重定向紧张利用了合法的重定向机制,通过各种方式将用户重定向到恶意网站。常见的方式包括:

  • 开放重定向(Open Redirect)


  • 通过操控网站的 URL 参数,实现对重定向目标的控制。例如,合法网站的 URL 参数 redirect=http://example.com 被替换为 redirect=http://malicious.com,导致用户被重定向到恶意网站。

  • 垂纶(Phishing)


  • 利用重定向将用户引导到伪装成合法网站的恶意网站,诱骗用户输入敏感信息(如登录凭据、银行账号)。

  • 恶意软件流传(Malware Distribution)


  • 通过重定向将用户引导到托管恶意软件的网站,诱骗用户下载和安装恶意软件。
low

随便点击一个链接,发现url栏有传参点

定位源码查看,发现重定向点

修改为source/low.php?redirect=http://www.baidu.com

成功跳转
源码审计

没有存在过滤,不安全
  1. <?php
  2. // 检查URL中是否存在'redirect'参数,并且该参数不为空。
  3. if (array_key_exists("redirect", $_GET) && $_GET['redirect'] != "") {
  4.     // 如果存在'redirect'参数且不为空,则进行重定向到指定的路径。
  5.     header("location: " . $_GET['redirect']);
  6.     exit; // 终止脚本执行
  7. }
  8. // 如果'redirect'参数不存在或为空,则返回HTTP 500状态码并显示缺少重定向目标的错误信息。
  9. http_response_code(500);
  10. ?>
  11. <p>Missing redirect target.</p>
  12. <?php
  13. exit; // 终止脚本执行
  14. ?>
复制代码
medium

low级别的方法没什么区别,查看源码可以发现差别的地方在于禁用了http://,https:// 字段
构造url绕过 source/low.php?redirect=www.baidu.com,如果没有明确指定协议,直接以 // 开头,则表现利用和当前页面相同的协议,便可以绕过了

源码审计

利用正则表达式检查是否含有http:// https:// 字段。如果有则过滤
  1.         Absolute URLs not allowed.
  2.         <?php
  3. // 检查URL中是否存在'redirect'参数,并且该参数不为空。
  4. if (array_key_exists("redirect", $_GET) && $_GET['redirect'] != "") {
  5.     // 如果存在'redirect'参数且不为空,则进行重定向到指定的路径。
  6.     header("location: " . $_GET['redirect']);
  7.     exit; // 终止脚本执行
  8. }
  9. // 如果'redirect'参数不存在或为空,则返回HTTP 500状态码并显示缺少重定向目标的错误信息。
  10. http_response_code(500);
  11. ?>
  12. <p>Missing redirect target.</p>
  13. <?php
  14. exit; // 终止脚本执行
  15. ?>
复制代码
high

查看源码可以发现与上面两个级别差别的是检查是否有info.php字段,如果没有,则不能进行重定向
构造代码绕过:source/low.php?redirect=http://www.baidu.com?id=info.php

成功绕过
源码审计

检查了url种是否含有info.php字段,如果没有则会过滤
  1.         You can only redirect to the info page.
  2.         <?php
  3. // 检查URL中是否存在'redirect'参数,并且该参数不为空。
  4. if (array_key_exists("redirect", $_GET) && $_GET['redirect'] != "") {
  5.     // 如果存在'redirect'参数且不为空,则进行重定向到指定的路径。
  6.     header("location: " . $_GET['redirect']);
  7.     exit; // 终止脚本执行
  8. }
  9. // 如果'redirect'参数不存在或为空,则返回HTTP 500状态码并显示缺少重定向目标的错误信息。
  10. http_response_code(500);
  11. ?>
  12. <p>Missing redirect target.</p>
  13. <?php
  14. exit; // 终止脚本执行
  15. ?>
复制代码
impossible

源码审计

采用了更加符合现真相况的方法,较为安全
  1. <?php
  2. // 初始化目标URL为空字符串
  3. $target = "";
  4. // 检查URL中是否存在'redirect'参数,并且该参数是一个数字。
  5. if (array_key_exists("redirect", $_GET) && is_numeric($_GET['redirect'])) {
  6.     // 根据'redirect'参数的整数值选择不同的重定向目标。
  7.     switch (intval($_GET['redirect'])) {
  8.         case 1:
  9.             // 如果参数值为1,设置目标为"info.php?id=1"
  10.             $target = "info.php?id=1";
  11.             break;
  12.         case 2:
  13.             // 如果参数值为2,设置目标为"info.php?id=2"
  14.             $target = "info.php?id=2";
  15.             break;
  16.         case 99:
  17.             // 如果参数值为99,设置目标为"https://digi.ninja"
  18.             $target = "https://digi.ninja";
  19.             break;
  20.     }
  21.     // 如果目标URL已被设置,执行重定向。
  22.     if ($target != "") {
  23.         header("location: " . $target);
  24.         exit; // 结束脚本执行
  25.     } else {
  26.         ?>
  27.         Unknown redirect target.
  28.         <?php
  29.         exit; // 结束脚本执行
  30.     }
  31. }
  32. ?>
  33. Missing redirect target.
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表