상세 컨텐츠

본문 제목

0x01 - CMS 1-Day 취약점 분석[Drupal 8.7.4, CVE-2019-6342]

Exploit Review

by 알 수 없는 사용자 2020. 10. 25. 23:30

본문

0x01. 서론

안녕하세요 Vincent 입니다. 날이 갑자기 많이 추워졌습니다. 저번에 긴팔을 다 꺼내서 다우니 넣고 세탁기 돌리길 잘했다고 생각합니다. [로버트 다우니 주니어]

 

 

아무튼 이번에 포스팅할 CMS 1-Day 취약점은 Drupal 8.7.4(이하 편의상 드루팔이라 하겠습니다) 버전에서 발생하는 CVE-2019-6342 입니다. [그럼 7버전은 드루칠인가?]

 

 

관련 CVE 링크 : nvd.nist.gov/vuln/detail/CVE-2019-6342

 

NVD - CVE-2019-6342

References to Advisories, Solutions, and Tools By selecting these links, you will be leaving NIST webspace. We have provided these links to other web sites because they may have information that would be of interest to you. No inferences should be drawn on

nvd.nist.gov

 

이 취약점은 특이하게도 오직 Drupal 8.7.4 버전에서만 나타나며, WorkSpaces라는 모듈을 설치하는 경우 익명의 비회원 방문자에게 뜬금없이 글 쓰기/수정/삭제 권한이 부여되는 취약점입니다. 취약점 등급이 꽤 높은 편에 속해있어 첫 포스팅으로 정해보았습니다. 그럼 뭐가 문제인지 살펴보도록 하겠습니다.

 

 

아 먼저, 자칭 CMS계의 리눅스라 부르는 드루팔에 대해 궁금하신 분들은 다음 블로그를 참조해주시기 바랍니다.

acaroom.net/ko/blog/youngdeok/%EB%93%9C%EB%A3%A8%ED%8C%94%EB%A1%9C-%EB%A7%8C%EB%93%9C%EB%8A%94-%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8

 

드루팔로 만드는 웹사이트

드루팔이란 웹 오픈소스 프레임워크로 CMS(Contents Management System)으로도 불린다. 이 사이트도 드루팔로 만든 사이트이다. CMS 프레임워크로는 WordPress, Joomla등이 있다.

acaroom.net

 

0x02. 환경 설정

이번 포스팅을 위해 구축한 환경은 다음과 같습니다.

항목 버전 역할
우분투 Ubuntu 18.04.5 LTS OS
아파치 Apache/2.4.29 웹 서버
MySQL 14.14 Distrib 5.7.31 DBMS
PHP PHP 7.0.33 개발 언어

 

 

0x03. 정상 동작 확인

Step1. 우선 어렸을 적 친구 별명같은 이름인 드루팔 8.7.4 버전을 찾아서 설치해봅니다.

드루팔 8.7.4 설치중...

 

 

Step2. 설치가 완료된 후에 어드민 계정으로 로그인 했습니다. 콘텐츠 추가하기 버튼이 보이는데요, 아무 글이나 일단 틀어보겠습니다. [왜들 그리 가운데 있어]

어드민 로그인, 콘텐츠 추가하기

 

 

Step3. 당연히 관리자 계정이니까 글 쓰는 권한이 있습니다.

어드민 권한으로 글 작성

 

 

Step4. 로그아웃 후에 일반 방문자. 즉, 익명 권한으로 접근하는 경우 글 작성 권한이 없어서 콘텐츠 추가 버튼이 보이지 않습니다.

로그아웃

 

 

Step5. 익명 권한으로 글 작성 URL로 직접 접근해보니 접근이 거부되었다며 갓 만든 따끈따끈한 페이지가 한껏 차가워졌습니다.

차갑게 식어버린 너

 

 

Step6. 다시 어드민 계정으로 로그인 해서 권한 관리 페이지로 접근합니다. 아래 보시는 바와 같이 익명 사용자에게 글 작성 권한 부여가 가능합니다. 활성화 해보겠습니다.

익명 사용자 권한 활성화

 

 

Step7. 아래와 같이 익명의 방문자에게도 콘텐츠 추가하기 버튼이 활성화 되었습니다. 정상적으로 글 작성 또한 가능한 것을 볼 수 있습니다

익명 사용자 글 작성

 

 

Step8. 이제 문제의 모듈인 Workspaces를 설치하도록 하겠습니다.

실험적

 

 

Step9. 위험은 사용자가 감수해야 한다며 강력한 경고를 하지만 미국인들은 경고문을 읽지 않는다고 합니다. 일단 테스트를 위해 활성화 하도록 하겠습니다. [트미 : Drupal은 미국에서 가장 많이 쓰인다고 합니다.]

Workspaces 모듈 활성화

 

 

Step10. Workspaces 모듈을 활성화 하면 일종의 배포버전, 테스트버전으로 나누어 콘텐츠 관리가 가능합니다.

 

 

Step11. Stage 워크스페이스 변경하여 테스트 글을 작성해봅니다.

 

 

Step12. Live 워크스페이스에는 Stage 워크스페이스에서 작성한 글이 배포하기 전에는 보이지 않습니다. 아무튼 기능 설명은 이 정도로 하고 이제 이번 포스팅의 본론인 취약점으로 넘어가도록 하겠습니다.

 

 

0x04. 취약점 설명

Step1. 로그아웃 후에 익명 권한으로 돌아갔는데, 콘텐츠 추가하기 버튼이 활성화 되어있습니다??!!!

 

 

Step2. 글 등록도 가능한 상황입니다. 이것이 취약점일까요?!

 

 

Step3. 아, 권한 관리 페이지로 가보니 아까 활성화 했던 권한이 보이네요. 놀란 가슴을 쓸어내리며 비활성화 합시다.

 

 

Step4. 그런데 아직도 콘텐츠 추가하기 버튼이 활성화 되어있습니다?!!?!?!?

?!?!?!?!?!

 

 

바로 이번 포스팅의 취약점입니다. 드루팔 8.7.4 버전에서 Workspace 모듈을 활성화 하는 경우 관리자의 권한 할당과 관계 없이 익명의 방문자에게 글 쓰기/수정/삭제 권한이 부여됩니다.

 

 

Step5. 이제 테스트는 다 했으니 만악의 근원인 워크스페이스 모듈을 비활성화 하도록 하겠습니다. 사라져버렷

타 모듈과 달리 좌측 체크박스 버튼을 통해 선택해서 삭제가 불가합니다.

 

 

Step6. 그런데 아직도 익명 권한으로 콘텐츠 추가가 가능합니다... 구천을 떠도는 워크스페이스

 

 

Step7. 워크스페이스 설정 페이지로 이동해보니 벌써 한탕 크게 친 페이퍼 컴퍼니 마냥 자취를 감췄습니다.

전화를 받을 수 없어, 소리샘으로 연결됩니다.

 

 

이번 취약점은 오직 8.7.4 버전에서만 발견되기 때문에 유일한 대응방법은 업데이트 입니다. 정상적인 모듈 비활성화가 불가능하며 이로 인해 비활성화 후에도(?) 해당 취약점이 계속해서 동작합니다.

 

 

Step8. 8.7.5 버전으로 업데이트를 합시다.

 

 

Step9. 드루팔 코어 버전을 8.7.4 -> 8.7.5 버전으로 업데이트 했을 뿐인데 익명 방문자 권한에서 콘텐츠 추가가 가능하던 악령취약점이 사라졌습니다.

 

 

Step10. 글 쓰기 URL로 직접 접근해보니 정상적으로 접근을 차단하는 것을 확인 할 수 있습니다.

 

 

0x05. 대응방안 & 결론

취약점 설명에서 보셨다시피 이번 드루팔 8.7.4 버전 취약점의 경우 문제가 발생하는 모듈의 비활성화 후에도 취약점이 해결되지 않았습니다.

 

그리고 해당 버전이 2019년 07월 04일[트미 : 미국 독립 기념일] 배포 되었으니 현재 글을 포스팅하는 시점에도 많은 서비스에서 취약 버전을 사용하고 있을지도 모른다는 생각이 듭니다.

 

결과적으로 이번 취약점의 가장 뾰족한 해결 방안은 다음 버전인 8.7.5 이상으로 드루팔을 업데이트 하는 것 입니다. 보안 업데이트를 생활화 합시다. 드루팔도 그렇게 얘기했습니다.

www.drupal.org/sa-core-2019-008

 

 

구천을 떠도는 워크스페이스 악령을 잡아서 구마의식을 완료했으니 이번 포스팅은 여기서 마치도록 하겠습니다.

 

 - 요약

1. Drupal 8.7.4 버전에서 Workspaces 모듈 설치 시 익명 권한에게 글 쓰기/수정/삭제 권한이 부여됨

2. 해당 모듈을 삭제해도 취약점이 해결되지 않음

3. 8.7.5 버전으로 업데이트 하면 문제 해결 Profit!

4. 취약한 버전은 사지도 쓰지도 맙시다. [공익광고협의회]

5. 여러분은 제가 Step 10을 두번 썼다는 사실을 인지하지 못했습니다

6. 여러분은 방금 Step 10을 보고 왔습니다.

관련글 더보기