URL跳轉漏洞的危害

一直以來,對URL跳轉漏洞的理解,僅限於釣魚、欺騙等,無法影響到當前業務。但前幾天看到一個漏洞,讓我對URL跳轉的危害理解又加深了一層。
對於URL跳轉漏洞來說,某些URL跳轉的方式可以帶着HTTP referer頭,這就會使得一些依賴referer校驗的安全解決方案失效,比如僅做了referer校驗的jsonp接口。這種問題不產生直接危害,但可能造成其他安全防護功能的繞過。

什麼情況下的URL跳轉會帶referer

還是從代碼上看來的直接:
寫了兩個頁面,分別放在不同的域下,模擬跨域請求
1.http://localhost:81/url.php?url= 存在URL跳轉漏洞的頁面,頁面中模擬了2種主要的跳轉方式。

<?php
if(isset($_GET["url"])) {
    $target = $_GET['url'];
    //使用服務器端302跳轉
    //header("location: ".$target);

    //使用html的方式跳轉
    echo "<script>window.location.href=\"$target\"</script>";
    exit;
} else {
    echo "Please input the URL";
}
?>

2.http://localhost:8101/referer.php 另一個域下的頁面,校驗了referer必須爲localhost:81

<?php
if (isset($_SERVER['HTTP_REFERER'])) {
    $referer = $_SERVER['HTTP_REFERER'];
    if( strpos($referer, "localhost:81") ) {
        echo "Secert";
    } else {
        echo "Wrong referer";
    }
} else {
    echo "referer is null";
}
?>

看執行情況:
直接訪問:http://localhost:81/url.php?url=http://localhost:8101/referer.php
a. 當使用服務器端跳轉時,不帶referer,此時URL跳轉漏洞僅限於釣魚等危害(這種情況跟我查到的資料都不同)
這裏寫圖片描述

b. 當使用html方式跳轉時,帶referer,此時可能造成後續影響
這裏寫圖片描述

*測試環境:最新版Chrome、IE、FF

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章