패키지를 막 가져다 쓰는 것의 해로움 :: lol.ps

PHYYOU·2020년 11월 15일
33

lol.ps

난 롤을 좋아하고, 많이 플레이 해 본적이 있었고, 안될 때마다 공략을 찾아보며 실력을 높이는 행동을 좀 했었다. 그중 꽤 많은 시청자들을 가지고 있는 프로관전러 P.S. 채널이 있는데, 최근 op.gg처럼, 사이트를 개설하였는데 그게 바로 lol.ps 다.

나는 게시판이 있길래 심심해서 글을 써보려 했고, 글을 쓰기 위해 회원가입을 진행했다.

그래서 이메일 인증을 하라길래 확인 해 보니, 내가 사용하던 패키지인 django-allauth 패키지의 email 인증과 너무 똑같은 것이 아닌가?

▲ lol.ps 이메일 인증 페이지

▲ 기본 djagno-allauth 이메일 인증 페이지

나는 이에 오.. lol.ps 도 django 쓰는구나 하고 신기해 했다. 그리고 불연듯 생각이 들었다.
만약 저렇게 똑같이 되어 있었다면 다른 페이지도 똑같지 않을까?

공개된 패키지, 똑같은 사용.

똑같을 거라 생각하고, 바로 django-allauth 패키지를 공식 문서에 맞추어 urls를 확인해 보았고
debug로 확인해 본 결과 이렇게 나왔다.

login 페이지의 경우 lol.ps는 따로 오버라이딩 한 것인지 달랐지만, 아주 치명적인 주소가 있다. 바로 accounts/password/reset, 이메일을 적으면 그 이메일로 사용자의 비밀번호를 초기화 하는 링크를 보내주는 페이지다. 나는 이 페이지를 확인해 보았다.

결과는...

존재했다.

그리고 이것을 통해, 관리자 비밀번호를 초기화 할 수 있다면?

관리자 이메일의 노출 📧

나는 ps채널의 비즈니스 문의에 있는 이메일을 찾았고 youtubeps@naver.com였다.
그리고 이 이메일로 보낸 결과

정상적으로 작동하였다.
결국 사이트의 보안 취약점이 공개된 패키지를 통하여 드러난 것이다.
또한 이 링크 생성 방식 또한 공개되어 있다.

보안 생성 방식의 노출

내 사이트에서 한번 이메일로 보내보았고

lol.ps 사이트도 확인해 보았다.

이는 매우 비슷햇다.

나는 django-allauth 패키지 파일 중 views.py를 뜯어보았고,

과 같이 되어 있었다.

또한 키도 어떤 방식으로 정해지는지 확인하였고, 이는 랜덤이 아니였다.

기본값이 정해져 있고, 이를 수정하도록 해 놓은 것이다.

나는 사이트 개발자가 urls도 수정을 안하는데 이것도 수정할 것일까? 라는 합리적 의심을 가졌다.

물론 이것 만으로는 해킹되기에는 많은 노력이 필요하지만, 이 정보만으로도 큰 약점이라고 생각했다.

결론

공개된 패키지를 사용한다면, 그로 인해 얻는 이득은, 빠른 개발 속도와, 많은 사용자 경험, 커뮤니티가 있을 수 있다.

하지만, 패키지에 대한 보안인식 없이, 마구잡이로 사용된 패키지는 사용자의 보안에 매우 심각한 결함을 만들 수 있다.

lol.ps 사이트 개발자는 이글을 읽고 빨리 수정하였으면 하였고, 또한 보안인식을 제대로 갖추고 개발하는 것이 확실히 필요해 보인다.

lol.ps 사이트를 분석해 본 결과, 다른 취약점 여럿이 있으니 이 외에도 잘 찾아보길 바란다.

추가로 이 글과 비슷한 내용이 나무위키의 CSRF 문서에서 나와 있었다.

이러한 공격을 하기 위해 해커는 우선 공격을 할 사이트를 먼저 분석한다. 예를 들어서, 이 나무위키의 경우에 토론은 한때 'namu.wiki/topic/'이라고 시작하며 뒤에 숫자가 붙는 형식이었는데 이 뒤의 숫자에 패턴[1]이 있었다.[2] 그러면 이 패턴을 이용하여 일반적인 방법으로 접근할 수 없는 페이지를 오픈한다든지, 개발에 사용되고 실제로 사용하지 않는 샘플 페이지를 찾아낸다든지 이러한 방법이 가능하다.

그게 아니라 웹페이지가 독자적 개발이 아닌 외부에서 이미 개발된 웹 애플리케이션을 사서 조금 수정한 것이라면 공격자는 경우에 따라서 해당 웹 애플리케이션을 구매하여 개인 서버에 설치를 한다. 그 다음에 공격 가능 패턴을 분석한다. 주로 공격자들이 찾는 것은 사용자 패스워드 변경 페이지나 타 시스템과 로그인 연동 주소 패턴 같은 인증 관련된 취약점을 찾는다.

그 다음에 여기서 나온 취약점을 이용해서 공개된 게시판이나 메일을 이용해서 사용자가 해당 링크를 열게 만들면 공격이 완료된다.

추가로 lol.ps의 반응은?

방송에선 별 문제없었다고 말했다.

다시 사이트를 가보니까 비밀번호 초기화 페이지는 url을 조금 수정했고, 아마 여기에서 언급한 키도 바꾸었겠거니 생각한다.

https://lol.ps/member/recovery_password/

profile
박효영

1개의 댓글

comment-user-thumbnail
2020년 11월 17일

오 보안으로 좋은글이네요 ps 팬으로써 이글을 보고 더 발전할수 있었으면 좋겠습니다

답글 달기