요약

  1. 취약한 워드프레스 환경을 자동으로 구축해주는 깃헙 리포를 발견했습니다. 하지만 이런저런 문제점으로 에러가 나서 그것을 고친 뒤 배포하기로 결정합니다.

    https://github.com/ChoiSG/vwp

    한글 리드미는 여기서 참고해주시기 바랍니다. - https://github.com/ChoiSG/vwp/blob/main/README.ko.md
  2. 직접 리포에 가셔서 클론 하신 뒤 간단하게  docker-compose up --build 으로 환경 구축이 가능합니다.
  3. 해당 리포는 워드프레스 플러그인 관련 취약점 공부를 할 때 유용하게 사용할 수 있습니다.

들어가기 앞서

이번주에는 내가 현재 그룹장을 맡고 있는 RVAPT 그룹에서 취약점 발견/공격을 처음 배우는 친구들을 위한 프리젠테이션을 만들었다. 프리젠테이션 및 실습을 준비하다가 한글용으로도 배포를 하면 좋을 것 같아 한번 배포를 해본다.

워드프레스

워드프레스는 웹사이트를 만들거나 블로그를 만들 때 많이 쓰이는 CMS 중 하나다. 정보보안의 관점에서 워드프레스는 상당히 중요한 CMS 이기도 하다.

  1. 국내/외 웹사이트들 중 30% 가량이 워드프레스를 사용하고 있다.
  2. 다양한 플러그인들이 있고, 그 중에서 취약점이 많이 발견되기도 한다.
  3. 워드프레스 관련된 취약점들은 실제 공격에서도 많이 사용되며, 유명한 취약점인 경우 기사까지 나는 경우가 있다.
  4. 오픈소스 플러그인들의 경우 취약점이 발견되면, 취약점 공부를 할 때 많은 도움이 된다. 코드베이스가 작고 간단한 경우가 많이 때문이다. (물론 PHP 는 고통이다.)

워드프레스는 아주 최근까지도 꾸준하게 취약점이 발견되고, 많은 웹사이트들이 타격을 받고, 기사화까지 되면서 스포트라이트를 받고 있다. 따라서 웹애플리케이션을 공부할 때 가장 실제 공격과 비슷한 환경을 구축하려면 워드프레스 환경을 구축하는 것만큼 좋은 것이 없다.

문제점

특정 CMS 관련된 공부를 할때 가장 중요한 것 중 하나는 바로 실습환경을 구축하는 것이다. 워드프레스 자체는 설치가 쉬운데, 취약점이 발견된 오래된 버전의 플러그인들을 구하는 것이 쉽지 않다. 플러그인들을 구하더라도, 워드프레스의 버전이 안맞거나, PHP 버전이 안맞으면 취약점이 성공하지 않는 경우도 많이 있다. 이래저래 삽질하다가 보면 결국 “그냥 누가 깃헙에 도커로 안만들어놨나” 하고 찾아보게 된다.

그렇게 찾다보면 몇 개의 깃헙 리포가 나오게 되지만, 대부분 오래되고 관리가 제대로 이뤄지지 않는 것들이 많다.

문제 해결

그래서 직접 한 개의 리포(https://github.com/vavkamil/dvwp)를 포크해 에러가 나는 부분들을 고치고, docker/docker-compose 관련된 부분들을 좀 더 다듬어봤다. https://github.com/ChoiSG/vwp  워드프레스, 그리고 관련된 플러그인들을 공부하실 때 이제 이 리포를 클론 하신 뒤, 내가 원하는 플러그인들을 지정해주고, 그냥 docker-compose up 만 하면 바로 환경설정이 완성된다.

직접 사용해보실 분들은 여기로 가시면 된다 - https://github.com/ChoiSG/vwp

취약한 플러그인

자신이 원하는 취약한 플러그인은 ./bin/install-wp.sh 파일의 코드를 바꿔 임의로 추가하거나 제거할 수 있다. 더 자세한 설명은 한글 리드미 (README.ko.md) 를 참고해주시면 된다. 일단 리포에는 최근 1~2년 사이에 (CVE-2019/2020 정도) 발생된 취약한 플러그인 5개를 담았다. 리스트는 다음과 같다.

  1. InfiniteWP Client < 1.9.4.5 - Authentication Bypass (CVE-2020-8772)
  2. WordPress File Upload < 4.13.0 - Directory Traversal to RCE (CVE-2020-10564)
  3. Social Warfare <= 3.5.2 - Unauthenticated Arbitrary Settings Update
    (CVE-2019-9978)
  4. WP Advanced Search < 3.3.4 - Unauthenticated Database Access and Remote Code Execution
  5. Simple File List <= 4.2.2

메타스플로잇 모듈이 있는 플러그인도 있고, 간단한 PoC 가 있는 플러그인도 있고, 아예 아무것도 없는 플러그인도 있다. 다음 블로그 글에서는 1~2개의 취약점을 뽑아 직접 소스코드를 들여다보고, 왜 취약점이 발생하는지, 취약점을 공격할 수 있는 PoC 는 어떻게 만들 수 있는지, 이 취약점을 어떻게 고쳐야할지에 대해 살펴볼 것이다. 이미 InfiniteWP Client 취약점에 대해서는 대충 만들었지만, 중간고사와 과제에 밀려서 블로그 글을 못쓰고 있다.

마치며

환경 구축은 보안 관련 공부를 할 때 매우 중요한 요소다. 하지만 가끔씩은 귀찮기도 하고, 같은 환경을 계속해서 구축하는 것은 지치기도 한다. 이번에 학교 수업, 대회진행, 사이드 프로젝트를 하며 docker, docker-compose, ansible 등의 데브옵스(DevOps) 관련된 기술을 배웠고, 이를 보안과 관련된 프로젝트에 한번 접목시켜봤다.