URL跳轉漏洞
阿新 • • 發佈:2018-11-10
URL跳轉漏洞
什麼是URL跳轉
藉助未認證的URL跳轉,將應用程式引導到不安全的第三方區域,從而導致的安全問題。
利用方法
Header頭跳轉:通過設定Location進行跳轉
JavaScript跳轉:通過window.location.href進行跳轉
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String url = request.getParameter("url"); // 客戶端跳轉 //response.sendRedirect(url); // META標籤跳轉:通過設定refresh進行跳轉 //response.setHeader("Refresh","1;url="+url); %>
如上,http://localhost:8080/urlJump/jump.jsp?url=http://www.baidu.com, 當訪問該連結的時候會跳轉到百度,這樣通過容易從一些知名的網站,跳轉到不安全的第三方網站,比如:http://www.qq.com/?url=http://www.demo.com ,使用者會容易以為點選的連結屬於qq的網站,以為是安全的,但是會跳轉到demo這個網站,使用者容易信任該網站,如果攻擊者設定了和qq一樣的登陸介面,那麼使用者很有可能會登陸,從而資訊被盜取。
進階
防禦
- referer的限制如果確定傳遞URL引數進入的來源,我們可以通過該方式實現安全限制,保證該URL的有效性,避免惡意使用者自己生成跳轉連結
- 加入有效性驗證Token我們保證所有生成的連結都是來自於我們可信域的,通過在生成的連結里加入使用者不可控的Token對生成的連結進行校驗,可以避免使用者生成自己的惡意連結從而被利用,但是如果功能本身要求比較開放,可能導致有一定的限制。