Pentesting CTF/tryhackme

[Tryhackme] - LazyAdmin

Roronoa 2022. 10. 27. 02:59
반응형

문제 이름

[그림 1] LazyAdmin 문제

https://tryhackme.com/room/lazyadmin

 

TryHackMe | LazyAdmin

Easy linux machine to practice your skills

tryhackme.com

위 사이트에 접속하면 해당 문제를 풀 수 있다.

 

정보 수집

[그림 2] BOX IP address assignment

BOX의 아이피를 할당 받았다.

 

[그림 3] nmap scanning

nmap을 이용하여 포트스캔을 진행하였다. sV 옵션으로 열린 포트의 서비스와 버전정보를 탐색하고 O옵션을 통해 운영체제를 탐색하였고 리다이렉션을 이용해 scan_result에 nmap결과 값을 저장시켰다.

 

오픈된 포트를 확인 해 보면 22번 포트와 80번 포트가 열려있다.

22번 포트는 ssh포트로 다른 컴퓨터에 원격으로 접속을 하는데 많이 사용하는 프로토콜이다. 버전 정보를 보면 OpenSSH 7.2 버전이 실행되는 것을 알 수 있다.

80번 포트는 웹 서비스를 구동하는 포트로 http 웹 서비스를 구동하는 것을 알 수 있고 Apache 2.4.18버전을 확인할 수 있다.

해당 OS는 리눅스로 추측할 수 있다.

먼저 웹 서비스가 구동 되고 있기 때문에 접속을 해보도록 하겠다.

 

[그림 4] 웹 페이지 확인

80포트로 열려있는 웹 사이트에 들어가봤지만 Apache2 페이지를 출력하고 있다.

웹 디렉토리 스캔을 이용하여 해당 웹 서비스에 어떤 디렉토리가 있는지 확인할 수 있다.

 

[그림 5] gobuster 디렉토리 스캔

그림 5번에서는 gobuster를 이용하여 디렉토리 스캔을 실행하는 장면이다.

dir로 디렉토리를 찾도록 설정하였고 u옵션에서 해당 url을 -w옵션에서 사용할 사전파일을 설정해 주었다.

결과를 보면 /content라는 디렉토리가 있음을 확인할 수 있다. 한번 접속해 보도록 하겠다.

 

[그림 6] content 디렉토리 확인

content디렉토리의 내용을 확인해 보면 SweetRice라는 것을 사용한다고 한다.

SweetRice란 웹 사이트를 관리하고 콘텐츠를 생성하는 소프트웨어 응용프로그램이다.

SweetRice에 취약점이 있는지 한번 검색해보겠다.

exploit

[그림 7] searchsploit 사용

searchsploit을 사용하여 SweetRice에 어떤 취약점이 있었는지 확인해 보았다.

현재 SweetRice의 버전정보를 정확하게 모르기 때문에 여기에 있는 취약점이 실행이 될지 안될지 모르지만 일단 해보겠다.

먼저 Backup Disclosure라는 취약점이 있는데 txt파일로 되어있다. 이것은 이 취약점이 어떤식으로 이루어져 있는지 설명해주기 때문에 먼저 확인해보도록 하겠다.

 

[그림 8] Backup Disclosure 취약점 파일 확인

SweetRice 버전 1.5.1에서 영향이 있고 /inc/mysql_backup 디렉토리에 접근이 가능하다.

inc디렉토리에 접근을 해보도록 하겠다.

 

[그림 9] inc 디렉토리

파일을 하나씩 눌러 확인해보면 php는 볼 수 없고 txt파일은 확인이 가능하다.

 

[그림 10] lastest.txt 파일 확인

그림 10번을 보면 lastest.txt 파일에 들어가보니 1.5.1이라고 버전 정보같이 보이는 것을 출력한다.

위 내용을 토대로 1.5.1 버전 취약점을 한번 살펴 보겠다.

 

[그림 11] sweetrice 1.5.1 버전 취약점 확인

취약점중에서 Arbitrary File Upload를 이용하여 임의 파일 업로드를 해보도록 하겠다.

python으로 해당 파일을 실행해보았다.

 

[그림 12] 실행 결과

먼저 URL을 입력받고 Username과 Password를 입력받는다. 그리고 우리가 올릴 파일을 입력받는데 우리는 Username과 Password를 모른다. 하지만 우리는 mysql 백업 파일을 확인할 수 있기 때문에 DB에서 한번 사용자 계정을 확인해 보도록하겠다.

 

[그림 13] mysql_backup sql 다운

Mysql DB를 확인 해본다.

 

[그림 14] admin 계정과 password 확인

admin 계정은 7글자 manager이고 passwd는 32 글자 42f749ade7f9e195bf475f37a44cafcb이다.

DB에서 패스워드는 해시값으로 저장하기 때무넹 passwd는 해시로 되어있지 않을까 생각이 든다.

 

[그림 15] hashid 사용

hashid를 사용하면 이것이 어떤 해시를 사용했는지 유추를 할 수 있다.

MD5를 사용할 가능성이 높을것 같다.

 

[그림 16] john the ripper 도구를 사용하여 hash crack

john the ripper를 사용하여 id는 manager password는 Password123임을 확인하였고 임의 파일을 올리도록 하겠다.

 

[그림 17] 파일 업로드 성공

a.txt 파일을 업로드하는데 성공을 하였고 업로드 위치또한 알려주고있다.

업로드 위치는 http://10.10.118.7/content/attachment/a.txt 이다.

 

[그림 18] 업로드 확인

그림 18번 처럼 업로드가 성공된 것을 확인할 수 있다.

따라서 우리는 웹쉘이나 리버스 쉘 파일을 업로드하면 우리는 원하는 명령어를 실행하거나 원격으로 접속이 가능할 것 이다.

 

[그림 19] 리버스 쉘 다운

아래 깃허브에서 리버스 쉘을 다운받았다.

https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php

 

GitHub - pentestmonkey/php-reverse-shell

Contribute to pentestmonkey/php-reverse-shell development by creating an account on GitHub.

github.com

 

[그림 20] 리버스 쉘 파일 업로드

다운 받은 리버스 쉘 파일을 업로드 하였다.

 

[그림 21] 리버스 쉘 실행

공격자가 포트를 열고 공격대상 쪽에서 웹 페이지에서 파일 업로드한 리버스 쉘을 실행시켜 공격자가 공격대상의 쉘을 획득하였다.

post exploit

[그림 22] interactive terminal 설정

이 명령어를 이용하면 쉘이 이쁘게 나온다.

python3 -c "import pty;pty.spawn('/bin/bash')"

우리의 계정은 www-data이기 때문에 권한상승을 하여야한다.

 

[그림 23] sudo -l 명령어

sudo -l 명령어로 sudo로 실행가능한 명령어를 확인하였다.

아래에 패스워드없이 sudo로 실행할수 있는 명령어가 있다. (/usr/bin/perl /home/itguy/backup.pl 명령어 사용가능)

 

[그림 24] 파일 내용 확인

먼저 /etc/copy.sh을 실행시킨다.

/etc/copy.sh을 보면 리버스쉘을 연결하는 명령어인것 같다.

 

[그림 25] 접근권한 확인

/etc/copy.sh의 접근권한을 확인해보면 기타사용자는 다 접근이 가능해서 코드를 수정할 수 있다.

 

[그림 26] 코드 수정

ip주소와 포트주소를 설정하였다.

 

[그림 27] 명령어 실행

명령어를 실행하면 이제 리버스 쉘이 연결이 된다.

 

[그림 28] root 권한 획득

root 권한을 획득하는데 성공을 하였다.

플래그 값 확인

[그림 29] user 플래그 값

user 플래그 값 : THM{63e5bce9271952aad1113b6f1ac28a07}

[그림 30] root 플래그 값

root 플래그 값 : THM{6637f41d0177b6f37cb20d775124699f}

 

[그림 31] 문제 해결

플래그를 입력하고 문제를 해결하였다!!!

반응형

'Pentesting CTF > tryhackme' 카테고리의 다른 글

[Tryhackme] - GLITCH  (0) 2023.04.01
[Tryhackme] - Basic Pentesting  (0) 2023.03.21
[Tryhackme] - RootMe  (1) 2023.03.20
Tryhackme OpenVPN 설정 방법  (0) 2022.10.26