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

Metadata

Metadata

Assignees

Labels

securityAddress potential security vulnerabilities.

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions