| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- programmers
- AWS 인프라 아키텍처
- AWS 인프라 분석
- AWS 사고 사례 분석
- reversing
- TryHackMe
- AWS 아키텍처 분석
- 리버싱
- AWS 침해 사고 사례 분석
- 운영체제
- 드림핵
- terraform
- 프로그래머스
- 침입 차단 시스템(IPS)
- AWS 3 Tier Architecture
- IAM Federation
- AWS 침해사고 사례 분석
- C
- AWS Active Directory
- reversing.kr
- network
- 네트워크
- AWS 보안 사고 사례 모음
- Amazon S3
- python
- dreamhack
- AWS 보안 아키텍처 분석
- operating system
- AWS IAM Role
- AWS
- Today
- Total
lhywk 님의 블로그
[TryHackMe] RootMe 본문

nmap 명령어를 통해 공격 타겟에서 두 개의 포트가 열려있는 것을 확인했다.

각각의 문제에 답을 넣어 문제를 풀이한다.

gobuster 도구를 사용하여 웹 서버의 디렉토리와 파일을 스캔한다. 스캔 결과 /index.php, /uploads, /panel와 같은 디렉토리를 발견한다.

/index.php에 접속하면 별 다른 힌트가 보이지 않는다.

/uploads 디렉토리에 접속을 하게 되면 이 디렉토리에 업로드된 파일이 등록되는 것 같다.

/panel에 접속하면 파일 업로드 폼이 있다. 이는 공격자가 서버에 파일을 올릴 수 있는 경로가 될 수 있다.


/js와 /css 디렉토리에 접속하면 각각 파일이 존재한다.

/panel 디렉토리를 입력해 문제를 풀이한다.

wget 명령어를 사용하여 PHP 리버스 쉘 페이로드를 다운로드한다.

php-reverse-shell.php의 이름을 exploit.php로 변경한다.

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

exploit.php 파일의 코드를 수정한다. $ip 변수에 공격자의 IP주소를 입력하고 $port 변수에 공격자가 대기할 포트번호를 설정한다.

파일 업로드 폼이 있는 /panel에 접속한다.

exploit.php 파일 업로드를 시도했으나 실패한다. 이는 서버가 .php 확장자를 가진 파일의 업로드를 차단하는 기능이 있음을 의미한다.

Burp Suite로 파일 업로드 과정의 패킷을 살펴본다. exploit.php이름으로 파일을 업로드하려고 요청을 하면 php 에러를 반환하는 문자열이 응답으로 오는 것을 확인할 수 있다.

.php 확장자 필터를 우회하기 위해 테스트할 여러 파일 확장자 목록을 준비한다.

php를 제외한 모든 확장자로 업로드를 시도했을 때 성공적으로 응답했다.

Burp Suite로 업로드 테스트를 한 파일들이 디렉토리에 모두 존재한다.

nc -lvp 7777 명령어로 공격자의 컴퓨터에서 7777번 포트를 열고 들어오는 연결을 기다리도록 설정한다.

exploit.php 파일을 클릭해 실행하면 서버는 exploit.php5 코드에 설정된 공격자의 IP(10.21.6.181)와 포트(7777)로 리버스 쉘 연결을 시도한다.

리버스 쉘 연결에 성공한다.

획득한 리버스 쉘을 더 안정적이고 상호작용이 가능한 TTY 쉘로 업그레이드한다.

www-data 사용자로 쉘을 획득한 후 /etc/passwd 파일의 내용을 확인한다.

이 이미지는 www-data 사용자의 홈 디렉토리(/var/www)로 이동하여 user.txt (유저 플래그) 파일을 찾아낸다.

해당 플래그의 값을 입력해 문제를 풀이한다.


타겟 서버에서 linpeas.sh라는 권한 상승 스크립트를 다운로드한다.

linpeas.sh 스크립트를 실행한다.

/usr/bin/python2.7 바이너리가 root 소유이면서 SUID 비트가 설정되어 있는 것을 발견한다. python 바이너리에 SUID가 설정된 것은 매우 비정상적이고 이를 이용하면 root 권한을 획득할 수 있다.

위에서 찾은 SUID 파일의 이름을 입력하여 문제를 풀이한다.

GTFOBins 웹사이트를 접속하여 python에 SUID 권한이 있을 때 이를 악용하여 쉘을 획득하는 방법을 찾는다.

python 바이너리의 SUID 취약점을 이용해 권한을 상승시키는 명령어를 확인한다.

명령어 결과 실제 사용자(uid)는 www-data로 표시되지만, 유효 사용자 ID(euid)가 0(root)로 표시된다. 현재 쉘이 root 권한으로 실행되고 있음을 의미한다.

find / -name root.txt 2>/dev/null 명령어를 사용해 시스템 전체(/)에서 root.txt라는 이름의 파일을 검색한다. 검색 결과, 파일이 /root/root.txt 경로에 있는 것을 확인한다. cat 명령어로 플래그를 확인한다.

찾은 최종 플래그를 입력해 문제를 풀이한다.

'TryHackMe' 카테고리의 다른 글
| [TryHackMe] ICE (0) | 2026.02.06 |
|---|---|
| [TryHackMe] Blue (0) | 2026.02.06 |
| [TryHackMe] LazyAdmin (0) | 2026.02.05 |
| [TryHackMe] Bounty Hacker (0) | 2026.02.05 |
| [TryHackMe] Basic Pentesting (1) | 2026.02.04 |