DVWA靶场之十六:未验证的重定向漏洞(Open HTTP Redirect)

DVWA靶场之十六:未验证的重定向漏洞(Open HTTP Redirect)


当 Web 应用程序接受不受信任的输入时,可能会发生未经验证的重定向和转发,这可能导致 Web 应用程序将请求重定向到包含在不受信任输入中的 URL。通过将不受信任的 URL 输入修改为恶意网站,攻击者可以成功发起网络钓鱼诈骗并窃取用户凭据。

如上所述,这种攻击的常见用途是创建一个 URL,该 URL 最初指向真实网站,然后重定向受害者到攻击者控制的网站。该网站可能是目标登录页面的克隆版本以窃取凭据,也可能是请求信用卡信息以支付目标网站上的服务费用,或者只是一个充满广告的垃圾页面。

目标:

重定向页面,将用户从 DVWA 网站移出或移至网站上与预期不同的页面。


1. Low:直接重定向

php 复制代码
<?php

if (array_key_exists ("redirect", $_GET) && $_GET['redirect'] != "") {
    header ("location: " . $_GET['redirect']);
    exit;
}

http_response_code (500);
?>
<p>Missing redirect target.</p>
<?php
exit;
?>

redirect 参数作为 location的值。可以重定向到任何网站:

比如127.0.0.1/vulnerabilities/open_redirect/source/low.php?redirect=https://www.baidu.com

就可以重定向到百度


2. Medium:过滤了协议名

php 复制代码
<?php

if (array_key_exists ("redirect", $_GET) && $_GET['redirect'] != "") {
    if (preg_match ("/http:\/\/|https:\/\//i", $_GET['redirect'])) {
        http_response_code (500);
        ?>
        <p>Absolute URLs not allowed.</p>
        <?php
        exit;
    } else {
        header ("location: " . $_GET['redirect']);
        exit;
    }
}

http_response_code (500);
?>
<p>Missing redirect target.</p>
<?php
exit;
?>

意义不大,去掉协议名字即可。

比如127.0.0.1/vulnerabilities/open_redirect/source/medium.php?redirect=//www.baidu.com


3. High:必须包含子串

php 复制代码
<?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);
        ?>
        <p>You can only redirect to the info page.</p>
        <?php
        exit;
    }
}

http_response_code (500);
?>
<p>Missing redirect target.</p>
<?php
exit;
?>

只允许重定向到包含 "info.php" 的路径

要简洁地绕过此限制,只需附加一个无效参数即可。原URL中的 info.php 会被新参数截断,从而实现跳转:
http://127.0.0.1/vulnerabilities/open_redirect/source/high.php?redirect=https://www.baidu.com?a=info.php


4. impossible 白名单

php 复制代码
<?php

$target = "";

if (array_key_exists ("redirect", $_GET) && is_numeric($_GET['redirect'])) {
    switch (intval ($_GET['redirect'])) {
        case 1:
            $target = "info.php?id=1";
            break;
        case 2:
            $target = "info.php?id=2";
            break;
        case 99:
            $target = "https://digi.ninja";
            break;
    }
    if ($target != "") {
        header ("location: " . $target);
        exit;
    } else {
        ?>
        Unknown redirect target.
        <?php
        exit;
    }
}

?>
Missing redirect target.

只接受数字参数,完全避免字符串注入。这一等级直接判断目标是 info.php?id=1 或者 info.php?id=2 或者 info.php?id=99,其他一概拒绝。

相关推荐
qq_479875438 分钟前
TcpConnection
运维·服务器·网络
七七七七0716 分钟前
【计算机网络】HTTPS加密机制详解:从对称加密到证书认证的安全通信
计算机网络·安全·https
华如锦33 分钟前
使用SSE进行实时消息推送!替换WebSocket,轻量好用~
java·开发语言·网络·spring boot·后端·websocket·网络协议
kyle~1 小时前
计算机网络---ICMP协议(Internet Control Message Protocol,互联网控制消息协议)
网络·计算机网络·智能路由器
Fu1co2 小时前
项目源码安全审查—密钥硬编码问题
安全
肩上风骋2 小时前
ubuntu系统使用ifconfig查询网络IP的时候,只能查到本地回环地址,无其他网络接口IP
网络·ubuntu·只能查到本地回环地址
脑子不好的小菜鸟3 小时前
深入剖析 Rust `HashMap`:安全哈希 (SipHash) 与高性能冲突处理 (Swiss Table)
安全·rust·哈希算法
yics.6 小时前
网络原理——初识网络
网络·计算机网络·通信基础
隐语SecretFlow7 小时前
【隐语SecretFlow】由蚂蚁集团牵头制定的“隐私保护计算安全分级”IEEE国际标准已正式发布!
大数据·网络·安全
节点小宝8 小时前
节点小宝与中兴路由合作升级:AX5400系列新增远程控网功能
服务器·网络·安全·智能路由器·远程工作