개요

  • 오픈소스 워드프레스 취약점 스캔 툴인 WPScan의 사용법을 정리해둔다.
  • WPScan은 루비로 작성되었다.

스캔할 수 있는 것

  • 설치된 WordPress 버전과 관련된 취약점
  • 설치된 플러그인과 관련된 취약점
  • 설치된 테마와 관련된 취약점
  • 사용자 이름 열거
  • 비밀번호 무차별 대입으로 약한 비밀번호를 가진 사용자찾기
  • 액세스 가능한 백업된 wp-config.php 파일
  • 액세스 가능한 데이터베이스 덤프
  • 오류 로그가 플러그인으로 인해 공개된 경우
  • 미디어 파일 열거
  • 취약한 Timthumb 파일
  • WordPress readme 파일이 존재하는 경우
  • WP-Cron이 활성화된 경우
  • 사용자 등록 가능하게 되어 있는 경우
  • 풀패스 공개
  • 디렉토리 리스팅

설치

Ruby gem이나 Docker 컨테이너로 설치할 수 있다.

Ruby Gem

gem install wpscan

Docker

docker pull wpscanteam/wpscan

라이센스

  • Kali Linux에서는 기본으로 설치되어 있다.
  • 그 외의 리눅스에서는 사용하려고 하면 API 키를 요구한다. (취약점DB와 연결할 때 API 키가 필요하다)
  • 하루에 25번까지의 API 호출이라면 무료로 사용가능하다. (회원가입이 필요하다.)
  • 상용으로 이용하려면 유료 라이센스를 구매해야 한다.

사용법

스캔

docker run -it --rm wpscanteam/wpscan --url https://example.com/ --enumerate u

API 토큰 얻기

API 토큰은 –api-token옵션 또는 config 파일을 통해 지정한다.

curl -H "Authorization: Token token=API_TOKEN" https://wpscan.com/api/v3/wordpresses/494

옵션

유저명 찾기

docker run -it --rm wpscanteam/wpscan --url https://target.tld/ --enumerate u

취약한 플러그인 찾기

  • 취약한 플러그인을 찾으려면 -e vp을 사용한다.
  • WordPress Vulnerability Database API를 사용하므로 API 토큰을 설정하여 사용한다.
docker run -it --rm wpscanteam/wpscan --url http://XXXXXX/WordPress/ -e vp --api-token xxxxxxxxxxxxxxxxxxxxxxxx

테스트 하기

당연한 말이지만 아무 곳이나 스캔해서는 안된다. Damn Vulnerable WordPress가 Github에 공개되어 있으니 이 것을 설치해서 테스트해보면 좋을 것 같다.

참고

  • https://wpscan.com/
  • https://wpscan.com/how-to-install-wpscan/
  • https://github.com/wpscanteam/wpscan/wiki/WordPress-Plugin-Security-Testing-Cheat-Sheet
  • https://qiita.com/koujimatsuda11/items/d49e8642dea1a1b0d067
  • https://github.com/vavkamil/dvwp