Skip to content

Open Redirect 취약점 제보합니다. #557

Description

@arrester

Security 탭에서 제보가 불가능하여 Issues를 통해 제보드립니다.

Version: 6.0.3

Vuln: Open Redirect

PoC

http://localhost:8000/bbs/login?url=https://google.com

Impact

  • 피싱 사이트로 연계한 공격이 발생할 수 있습니다.

Secure Code (bbs/login.py)

https://github.com/gnuboard/g6/blob/master/bbs/login.py

아래 코드에서 url 인자에 대해 필터링이 미흡하여 발생하기 때문에 필터링 추가 필요

@router.post("/login")
async def login(
        request: Request,
        member_service: Annotated[MemberService, Depends()],
        mb_id: str = Form(...),
        mb_password: str = Form(...),
        auto_login: bool = Form(default=False),
        url: str = Form(default="/")
):
    """로그인 폼화면에서 로그인"""
    member = member_service.authenticate_member(mb_id, mb_password)

    request.session["ss_mb_id"] = member.mb_id
    # XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다.
    ss_mb_key = session_member_key(request, member)
    request.session["ss_mb_key"] = ss_mb_key

    # 자동로그인
    response = RedirectResponse(url=url, status_code=302)
    # 최고관리자는 보안상 자동로그인 기능을 사용하지 않는다.
    if auto_login and not is_super_admin(request):
        age_1day = 60 * 60 * 24
        cookie_domain = request.state.cookie_domain
        response.set_cookie(key="ck_mb_id", value=member.mb_id,
                            max_age=age_1day * 30, domain=cookie_domain)
        response.set_cookie(key="ck_auto", value=ss_mb_key,
                            max_age=age_1day * 30, domain=cookie_domain)

    return response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

securityAddress potential security vulnerabilities.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions