オープンリダイレクト 03 - yujitounai/helloworld GitHub Wiki

オープンリダイレクト 3

先頭がリダイレクタと同じホストのときしかリダイレクトさせない

脆弱なソースコード (PHP)

<?php
if($loc=filter_input(INPUT_GET, 'url')){
    $regexp="#^".(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://') . $_SERVER['HTTP_HOST']."#";
    if (!preg_match($regexp, $loc)) {
        $loc=(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . strstr($_SERVER['REQUEST_URI'], '?', true);
    }

    header("location: ".$loc);
    exit;
}else {
    echo "usage: ?url=page";
    echo "<br>";
}
?>
<div class="box">
<form method="get" action="">url
<input name="url" type="text">
<input type="submit">
</form>
</div>

攻撃方法

openredirect-03.php?url=http://localhost:[email protected]/

⚠️ **GitHub.com Fallback** ⚠️