重定向漏洞

更多的是出现在Flask需要定位返回上一级功能中,在返回上一级功能则就需要去抓取用户的来源(HTTP referer),或者去独立写一个返回值,如下:

from flask import request
@app.route('/foo')
def foo():
    return '<h1>Foo page</h1><a href="%s">Do something and redirect</a>' % url_for('do_something', next=request.full_path)
@app.route('/bar')
def bar():
    return '<h1>Bar page</h1><a href="%s">Do something and redirect</a>' % url_for('do_something', next=request.full_path)

# 这里使用request.full_path获取当前页面的完整路径

或者

def redirect_back(default='hello', **kwargs):
    for target in request.args.get('next'), request.referrer:
        if target:
            return redirect(target)
    return redirect(url_for(default, **kwargs))

@app.route('/do_something_and_redirect')
def do_something():
    # do something
    return redirect_back()

这两段代码中都是用了重定向
如果有心人做了一个和真网站(A站)一模一样的假网站(B站),然后发送给用户一个真网站但带假网站重定向的连接,如:http://www.a.com/do-something?next=http://www.b.com,然后让用户登录,这时就可以轻易的获取到用户的账号密码

关于重定向漏洞更多可以参考:
https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html

作者:admin  创建时间:2025-02-10 16:31
最后编辑:admin  更新时间:2025-05-15 17:13