TryHackMe -

TryHackMe - "LazyAdmin" Write-Up

in

TryHackMe - LazyAdmin Writeup 입니다.

서버 정보는 아래와 같습니다.

victim: 10.10.53.216
attacker: 10.18.104.42

Service Analysis

브라우저로 “10.10.53.216”에 접근시 Apache2 Default Page가 나옵니다.

image Apache2 Default Page

“phpmyadmin”과 같은 관리툴을 사용하는지 확인하려는 중 해당 서버의 Rrror Page 및 Reponse 헤더에서 Apache2 버전 정보를 얻을 수 있었습니다.

image Error Info

GoBuster

추가적으로 정보를 수집할 수 있는 경로가 없기 때문에 해당 웹서버 내 파일 및 디렉터리를 스캔하는 “gobuster” 도구를 이용합니다. gobuster는 옵션으로 지정된 wordlist를 이용하여 디렉터리 및 페이지를 스캔하는 자동화 도구입니다.

image Run gobuster

“/content” 경로가 존재하는 것을 확인하였으며 해당 경로로 접근하여 “SweetRice” 라는 웹사이트 관리 시스템을 사용하는 것을 확인했습니다.

image SweetRice

SearchSploit

SearchSploit을 이용해서 “SweetRice”와 관련된 취약점이 있는지 확인합니다. 여러 취약점이 존재하며 버전정보를 알 수 없으므로 유효한 취약점을 찾아내야 합니다.

image Run SearchSploit

위 리스트 중에서 수행해볼 취약점은 임의 파일 업로드(Arbitrarry File Upload)로 공격자가 악의적인 파일을 서버에 업로드할 수 있는 취약점 입니다.

POC 코드를 실행해 봅니다. 하지만 해당 POC코드를 이용하고 위해서는 Username과 Password가 필요하므로 지금 당장은 쓸 수 없습니다. image Run Poc Code

Backup Disclosure

SearchSploit으로 출력된 리스트 중에서 “Backup disclosure” 취약점을 확인해 봅니다. 해당 취약점은 백업용도로 존재하는 공개 경로로 접근하여 민감한 정보를 탈취 할 수 있는 결함 입니다.

만약 개발자가 관리용도로 생성해둔 DataBase 혹은 Web 관련 파일의 백업본을 생성 후 삭제하지않고 남겨두는 경우, 공격자는 해당 데이터베이스 파일안의 관리자 계정 정보를 획득할 수 있습니다.

image Backup Disclosure

텍스트에 적힌 정보대로 inc 경로에 접근하니 디렉터리 목록이 나왔고, 그 중에서 “mysql_backup” 폴더를 확인했습니다. 해당 디렉터리 안에는 “mysql_backup.sql” 파일이 존재합니다.

image Directory List

image mysql_backup

해당 DB 백업파일내 관리자 계정정보가 존재하는지 확인하였으며 관리자 계정의 이름은 “manager”, 패스워드는 “42f749ade7f9e195bf475f37a44cafcb” 인 것을 알아냈습니다.

image Admin Account Info

DB 내부에 저장되는 패스워드는 일반적으로 해시형태로 저장됩니다. 여기서도 마찬가지로 암호가 해시형태로 존재하는데, 해시의 길이가 32글자 인것으로 보아 취약한 해시함수 중 하나인 MD5를 사용하는 것으로 추정되어 크랙을 시도했습니다. image MD5 Crack

해당 해시의 원문이 “Password123”인 것을 알아냈습니다. 이제 관리자 계정의 ID와 PW를 알아냈으니 위에서 수행하지 못한 임의 파일 업로드 취약점을 시도할 수 있습니다.

Exploit

일단 test라는 dump 파일을 생성 후 POC 코드가 잘 동작하는지 확인 합니다.

image POC Code Test-1

정상적으로 업로드된 것을 확인했습니다. 이제 PHP Reverse Shell을 업로드하여 쉘을 획득해보겠습니다.

image POC Code Test-2

Reverse Shell Code의 IP 및 PORT 정보를 수정해줍니다.

image Reverse Shell Code

수정한 Reverse Shell을 업로드 해줍니다. 이때 확장자는 php5로 지정해 줍니다. 텍스트 파일에 적혀있듯이 확장자를 php로 지정할 경우 업로드가 동작하지 않습니다.

image Reverse Shell Upload

공격자 서버의 4444 포트를 listening 상태로 만들어 준 후 Shell Code를 실행합니다.

image listening image Run Reverse Shell

쉘을 획득했습니다. 그러나 root 권한의 셸이 아니기 때문에 취약점을 찾아 Escalation 하는 과정이 필요합니다.

image Exploit

Post-Exploit

linpeas를 다운로드 받은 후 타겟 서버에서 다운로드 받을수 있도록 HTTP Server를 구동합니다.

image Install linpease

image Start HTTP Server

타겟 서버의 “/tmp” 디렉터리로 이동해 “linpeas.sh”를 다운로드 받습니다.

image Download linpeas.sh

실행 권한을 주고 실행합니다.

image run linpeas.sh

해당 정보를 토대로 대상 서버는 Ubuntu 16.04.6 LTS를 사용중임을 확인 했으며, CVE-2021-403을 이용해서 root 권한으로 Escalation 해보겠습니다.

image linpeas info

CVE-2021-403은 polkit의 pkexec 유틸리티에서 발견된 Esclation 결함으로 CVSS 7.8점을 받은 취약점 입니다. poc코드는 “rhysmcneill - PwnKit”을 사용했습니다.
https://github.com/rhysmcneill/CVE-2021-403

PwnKit을 다운로드 하고 HTTP Server를 구동합니다.

image Install PwnKit

타겟 서버의 “/tmp” 경로에 PwnKit을 다운로드 합니다.

image Download PwnKit

실행 권한을 주고 실행했지만 제대로 동작하지 않습니다. 다른 방법을 찾아야 합니다.

image Exploit

sudo -l 명령어로 권한이 허용된 파일 및 디렉터리를 확인 합니다. “/usr/bin/perl”과 “/home/itguy/backup.pl”이 sudo 명령어 필요없이 사용할 수 있도록 되어 있습니다.

image sudo -l

“backup.pl” 파일은 “/etc/copy.sh” 를 실행하도록 되어있으며 “/etc/copy.sh” 파일을 확인한 결과 아이피와 포트를 수정하여 리버스 쉘 처럼 사용가능해 보입니다.

image file analysis

해당 파일들은 관리자나 해당 시스템에 침입한 해커가 백도어 용도로 만들어 놓은 것으로 추정됩니다. root로 Escalation 하기위해 해당 파일을 이용합니다.

수정 권한이 존재하기 때문에 공격자의 IP와 PORT로 수정해 줍니다.

image Edit copy.sh

공격자 서버에서 5555번 포트로 대기합니다.

image listening 5555

타겟 서버에서 sudo 권한의 perl로 “backup.pl” 스크립트를 실행합니다.

image Run backup.pl

Root 쉘 획득에 성공했습니다.

image Exploit