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개를 통해 원하는 도메인으로 변경하여 접근하도록 수정할 수 있습니다.
PoChttps://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 버전에서 발생한 취약점에 대해 등록 문의를 한 것입니다.
지금까지 발생된 이력을 요약하면 아래와 같습니다.
- 6.0.3 Version 기준 Open Redirect 취약점 제보함 - arrester (이 시점에 CVE 등록)
- 패치를 늦게 확인하여 6.0.3에서 발생했던 취약점에 대해 패치가 정상적으로 되었는지 확인을 한 내용을 전달함 이 부분은 해당 취약점을 제보한 입장에서 패치가 정상적으로 되었는지 이행 점검을 하는 부분이라 당연한 부분임 (Letm3through님이 제보한 것과 별개로 진행된 부분)
- 이행점검이 진행되기 전 패치 후 버전 업데이트가 완료됨 이후 Letm3through님이 우회되는 부분을 발견 (버전 업데이트 이후기 때문에 이 부분도 CVE 등록)
- 따라서 시점에 따라 CVE가 2번 나와야 함 (arrester, Letm3through)
이상입니다.
@KimTom89
알겠습니다. 답변 감사합니다.
90레벨 이상 댓글을 남길 수 있습니다.