본문 바로가기

IT Security/HACKABLE

[Two Greedy] Wordpress Attack Using WPscan

가상으로 구축된 환경 외에 시도하는 것은 엄연히 불법입니다. 모든 책임은 개개인에게 있으니 조심해주세요

안녕하세요 Retain0입니다. 이번 시간에 해볼 것은 " wpscan "이라는 도구를 사용해서 wordpress 기반으로 만들어진 사이트를 Dictionary Attack , Vulnerability Scan 을 해보도록 하겠습니다.

wordpress 마크

wordpress " 란

  • 세계에서 가장 많이 사용되고 있는 CMS(Contents Management System)로 사용 비중이 대략 전 세계의 약 59% 정도를 차지하고 있는 웹사이트입니다. "코카콜라, Sonymusic, 뉴욕타임스 블로그, BBC America, 쿠팡 뉴스룸, 현대종합상사, 삼성전자 뉴스룸 등 점차 워드프레스의 사용 비중이 올라가고 있습니다.

wordpress 특징

  • 쉬운 사용법
  • 다양한 플러그인
  • 쉽고 편한 디자인
  • 모바일 최적화

등 사용자들을 위한 다양한 편의 시스템을 가지고 있기 때문입니다. 하지만 반대로 wordpress 가 생소하신 분들도 계실 텐데요 단점은 " 네이버 검색엔진에는 노출 x " 이기 때문에 평소 네이버 플랫폼을 사용하시는 분들이면 잘 모르실 수도 있습니다.

그럼 " wpscan " 은 무엇일까요?

  • " wordpress " 기반으로 만들어진 사이트를 대상으로 보안을 테스트하기 위해 만들어진 Vulnerability Scanner 즉 취약점 스캐너입니다. wpscan 은 다양한 명령어를 내포하고 있기에 잘 만 활용한다면 공격자가 원하는 형태로 다양한 시도를 해볼 수 있겠습니다.

① WPscan

wpscan 실습 구성
사진 1 wordpress 대상 계정

사진 1 해당 워드프레스 사이트로 접속해서 오늘의 타깃이 되어줄 계정들을 확인해둡니다. 두 계정 모두 관리자의 권한을 얻은 계정들입니다.

사진 2 wpscan 명령어들

wpscan --help

(사진 2) " wpscan --help "를 입력해보면 다양한 명령어들이 나오는 것을 확인해 볼 수 있다. 사진에 보이는 것 말고도 하단에 더 많은 옵션들이 있으니 한번 직접 쭉 훑어보시면 되겠습니다.

사진 3 공경 명령어

wpscan --url http://대상주소 --detection-mode mixed --clear-cache -e u
--url : 대상 주소
--detection-mode mixed(default) : 수동 + 자동 혼합모드
--clear-cache : 스캔전 캐쉬 제거
-e : enumerate 의 줄인단어로 wordpress 취약점 열거
 u : user 를 의미

Wordpress 사이트에 대해 wpcan을 실행할 수 있는 3가지 감지 모드가 있는데 " passive, aggressive, mixed " 가 있습니다.

  • passive 모드 : 비 침입감지를 받도록 하며, 수동 모드라 고도 하는데 이경우 보안솔루션 장비들이 감지할 가능성이 적습니다
  • aggressive 모드 : 서버에 수천 건의 요청을 보내면서 수행합니다. 굉장히 공격적이며 이로 인해 보안장비에 걸릴 확률이 있음
  • mixed 모드 : default 즉 기본 옵션으로 사용하며 수동적 + 공격적 혼합하여 사용

사진 4 도출된 결과

위의 옵션으로 스캔 한 결과 해당하는 admin , retain0라는 사용자 계정들이 도출된 것을 확인할 수가 있습니다.

사진 5 wordpress 로그인 폼

사진 5 계정의 ID는 알아냈으니 Pwd(패스워드) 를 알아내보도록 하겠습니다. 

사진 6 Dictionary 파일 작성

사진 6 패스워드를 알아내기 위해 공격자는 예측할만한 패스워드를 만들어두고 Dictionary Attack 을 해보도록 하겠습니다. 예측 가능하다면 저처럼 사전 파일을 작성해봐도 되고 그게 아니면 Hydra 수업 때 해본 " crunch " 도구를 통해서 사전 파일을 만드시면 되겠습니다.

사진 7 공격 명령어

 

wpscan --url http://대상주소 --detection-mode passive -U 대상ID --passwords 사전파일경로 --password-attack wp-login
--url : 대상주소
--detection-mode passive : 수동스캔이며 소량의 요청을 보내기에 보안장비 감지 피할가능성높음
-U : 대상ID
--passwords : 사전파일
--password-attack : 공격위치

사진 8 패스워드 도출

사진 8 준비해둔 사전 파일에 맞는 패스워드를 찾은 것을 확인할 수 있다.

사진 9 공격 명령어

wpscan --url http://대상주소 --detection-mode passive -U 대상ID --passwords 사전파일경로 --password-attack wp-login
--url : 대상주소
--detection-mode passive : 수동스캔이며 소량의 요청을 보내기에 보안장비 감지 피할가능성높음
 -U : 대상ID
--passwords : 사전파일
--password-attack : 공격위치

사진 9 이번에는 admin이라는 계정을 찾았었으니 아까 작성했던 사전 파일을 그대로 사용해서 공격을 시도해보겠습니다.

※ admin이라는 타깃 계정을 입력하지 않고 그대로 공격하면 해당 wordpress의 여러 사용자에 대해 테스트해볼 수 있음( -t를 통해 thread 지정을 좀 낮추고 할 것)

사진 10 패스워드 도출

사진 10 마찬가지로 password 가 사전 파일 안에 있었기에 도출이 된 것을 확인할 수가 있었습니다.

사진 11 취약한 플러그인 스캔

wpscan --url http://대상주소 -e vp
--url : 대상주소
-e : enumerate 의 줄인단어로 wordpress 취약점 열거
vp : 설치된 플러그인

사진 11 사용자의 계정들을 도출해낼 수도 있지만 그 외에도 해당 wordpress에 설치된 각종 plugin 들에 대한 취약점을 스캔할 수가 있습니다.

사진 12 도출된 플러그인 취약점들

사진 12 상단에는 각종 버전들과 기본 정보가 나오고 하단부터 취약점들이 도출되는데 필자의 경우 취약점이 굉장히 많았습니다. 잘 보시면 " CVE " 코드들도 나오는 것을 확인하실 수 있습니다. 이렇게 도출된 취약정보들을 토대로 추가 공격 방향을 잡으시면 되겠습니다.

사진 13 취약한 테마 스캔

wpscan --url http://대상주소 -e vt
--url : 대상주소
-e : enumerate 의 줄인단어로 wordpress 취약점 열거
vt : 설치된 테마들

(사진 12) 플러그인 말고도 " vt " 옵션을 통해 테마를 기점으로 취약지점을 스캔할 수가 있습니다.

더보기

※이외에도 주로 사용하는 명령어 
-o : output 으로 스캐닝 결과를 파일로저장
-t : thread를 지정할 수가 있다. 빠를수록 결과는 금방 도출되지만 무리하게 돌릴시 서비스에 무리가갈 가능성이 있음
-e ap : all plugin 으로 취약한 플러그인 외에도 모든 플러그인에 대한 정보를 알려줌

사진 14

사진 14 에서 wordpress 플러그인 중에 " wpscan " 을 차단시키는 기능을 사용한다거나, WAF(Web Application Firewall) 가 차단을 하는 경우 저 빨간 박스 안쪽에 문구가 나올 테니 안된다면 확인해보시면 되겠습니다.

◆대응 방안

(1) wpscan 을 차단시킬 수 있는 plugin을 추가

(2) 계정의 ID는 되도록 남들이 많이 사용 안 하는 고유 ID를 쓰는 것이 좋다 왜냐하면 ID가 너무 기본적이다보면 패스워드도 쉬울 것으로 예상하고 공격 수행을 할 것이기 때문이다.

(3) 패스워드는 숫자, 소문자, 대문자, 특수문자 중 3가지 이상 조합하여 8자 이상을 쓸 것

(4) 되도록 최신 버전을 유지

wpscan install location : https://github.com/wpscanteam/wpscan

 


이번 시간은 여기까지 해보도록 하겠습니다. 어떤 권한을 가지던 계정의 암호는 양방향이기에 유추할 수도 있으며 crack을 하면 언젠가는 깨질 수밖에 없습니다. 다만 crack을 하는 게 얼마나 걸리느냐가 문제이기에 공격자가 도중에 포기할 수 있도록 조합을 까다롭게 사용하시는 것을 권해드립니다. 그럼 다음 시간에 뵙도록 하겠습니다. 감사합니다.