Open Redirect 취약점 제보합니다. > 그누보드6 이슈

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누보드6 이슈

좋은 댓글과 좋아요는 제작자에게 큰힘이 됩니다.

Open Redirect 취약점 제보합니다. 정보

Open Redirect 취약점 제보합니다.

본문

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
추천
0

댓글 6개

패치하신 내용을 검토한 결과 우회가 가능하여 아래 내용을 전달드립니다.
url 파라미터 인자에서 // 에 대한 검증이 없어 별도로 추가한 allow_urls에 개발자가 원하는 도메인을 넣고 관리하더라도 슬래시 2개를 통해 원하는 도메인으로 변경하여 접근하도록 수정할 수 있습니다.


PoC
https://g6.demo.sir.kr/bbs/login?url=//google.com


추가로 해당 취약점 건에 대해 CVE 등록 해주실 수 있으신지 문의드립니다.

안녕하세요 @arrester @KimTom89 님,
해당 우회 관련 취약점 경우 패치 및 버전 업이 1주일 경과한 시점에서 제가 제보하였습니다.



  • 현 issue 경우 6.03 대상 그 후 우회 관련 언급이 없었음
  • 6.04에 취약점 조치 로직이 추가된후에도 아무런 언급이 없었음
  • 6.04에 대한 Open Redirect 취약점 제보후 댓글에 동일한 내용으로 답변이 달림

제가 제보후 똑같은 내용으로 @arrester 님께서 댓글을 달았기에 관련 취약점 경우 CVE 등록시 제 명의로 등록되는게 맞습니다.
@KimTom89 님, CVE 등록 경우 그누보드측에서 진행해주시는지 알수있을까요?



  • (제가 평상시에는 CVE를 등록하지 않지만) 현재 개발중인 SAST에 reference들을 추가를 위해 CVE 등록을 하였으면 해서요.

@arrester @Letm3through
안녕하세요. 저희 측에서는 따로 CVE를 등록하고 있지 않으며,
취약점 관련 조치 안내(CVE, KVE 등)가 오게되면 이에 대한 대응만 진행하고 있습니다.

@KimTom89
알겠습니다. 확인 감사드립니다.
관련 이슈에 조치 PR 또한 제보시 올렸으니 참고하여 진행부탁드립니다.
감사합니다.

안녕하세요 @Letm3through 님 순서대로 본다면 저 그리고 Letm3through님 둘 다 CVE 등록이 되는게 맞습니다.
저는 우회되는 점에 대해 등록 문의를 한 것이 아닌 6.0.3 버전에서 발생한 취약점에 대해 등록 문의를 한 것입니다.
지금까지 발생된 이력을 요약하면 아래와 같습니다.



  1. 6.0.3 Version 기준 Open Redirect 취약점 제보함 - arrester (이 시점에 CVE 등록)
  2. 패치를 늦게 확인하여 6.0.3에서 발생했던 취약점에 대해 패치가 정상적으로 되었는지 확인을 한 내용을 전달함 이 부분은 해당 취약점을 제보한 입장에서 패치가 정상적으로 되었는지 이행 점검을 하는 부분이라 당연한 부분임 (Letm3through님이 제보한 것과 별개로 진행된 부분)
  3. 이행점검이 진행되기 전 패치 후 버전 업데이트가 완료됨 이후 Letm3through님이 우회되는 부분을 발견 (버전 업데이트 이후기 때문에 이 부분도 CVE 등록)
  4. 따라서 시점에 따라 CVE가 2번 나와야 함 (arrester, Letm3through)

이상입니다.

90레벨 이상 댓글을 남길 수 있습니다.

전체 101
그누보드6 이슈 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT