R's Hacking Daily Log

[TryHackMe] Madness - WriteUp 본문

TryHackMe/Challenge - WriteUp

[TryHackMe] Madness - WriteUp

hanhxx 2023. 8. 17. 14:40

https://i.imgur.com/5iW7kC8.jpg

이번에 시도해 볼 대상은 Try Hack Me - Madness!

머신을 시작시키면 1분 뒤에 target IP를 얻을 수 있다.

 

 

[ Nmap - port scan ]

target IP에서 어떤 포트를 열고 있는지 확인하기 위해 포트 스캔을 진행해 준다.

결과를 보면 22 & 80번 포트가 열려있는 걸 확인할 수 있다.

22번 포트는 ssh, 80번 포트는 http web이 동작하는 default port이다. 

 

 

80번 포트가 열려있다는 건 web에서 접근이 가능하다는 의미이므로 브라우저에 target IP를 입력하면!

위와 같은 페이지로 들어가질 것이다.

 

 

[ information - gathering ]

페이지를 자세히 보면 어떤 이미지 파일이 있는 거 같은데 제대로 출력되지 않고 있다. 

페이지 코드를 확인해 보니

 

 

주석 처리된 문구 위에 thm.jpg라는 img tag가 눈에 들어온다. 

아마 이 이미지 파일이 출력되지 않는 듯한데 어떤 문제가 있는지 알아보자!

 

 

wget command로 파일을 다운받아 확인해 봤더니 무언가 잘못됐다며 사진이 출력되지 않았다. 

hexeditor로 thm.jpg를 열어봤더니 

 

 

음?? 파일 확장자명은 분명히 JPG였는 데 file signature가 PNG로 되어있다.

 

 

hexeditor로 파일을 열어 나온 89 50 ..1A 0A과는 JPG signature가 완전히 다른 걸 확인할 수 있다.

 

아마 확장자명과 signature가 일치하지 않아 이미지가 정상적으로 출력되지 않는 듯하다.

그러니 이미지를 보기 위해선 JPG signature로 바꿔주어야 한다!!

 

 

JPG signature로 값을 바꿔주고 저장하면 다시 파일을 열어봤을 때

 

 

정상적으로 이미지가 나올 것이다. thm.jpg 안에는 hidden directory 정보가 숨겨져 있었다!! 

(왠지.. gobuster로 directory scan해도 뭐가 안 나오더라..)

 

!! hidden directory = /th1s_1s_h1dd3n

 

 

[ directory - /th1s_1s_h1dd3n ]

숨겨져 있던 디렉토리로 들어가 보면 남겨진 메세지를 마주하게 된다. 

이게 다인가..? 싶어 페이지 코드를 확인해 봤더니

 

 

0 ~ 99 사이에 뭔가 의미 있는 값이 있다고 하는 데 이게 무슨 말일까??

 

 

지금까지 내용을 정리해 봤을 때,

메세지를 남긴 누군가의 계정으로 SSH에 접속할 수 있을 것이다. 

 

계정 정보를 얻기 위해서 필요한 힌트를 조금씩 남겨두었는 데 그 첫 번째가 thm image였다. 

thm image로 알아낸 숨겨진 디렉토리에서는 현재 마주한 0 ~ 99까지 중 유효한 값을 알아내야 한다는 힌트를 얻었다. 

 

페이지에 남겨진 문구를 잘 보면 "Secret Entered"라는 부분이 신경 쓰이는 데..

페이지 상에 어떤 값을 제공하기 위해서는 어떤 방식으로 처리할 수 있을까 고민해 보니 

url에 parameter를 전달하면 되지 않을까 싶었다. 

 

 

[ Burp Suite ]

hidden directory를 요청하는 packet에 secret이라는 이름의 parameter를 추가해서 보내보자!

힌트에서 알려준 대로 secret 값은 0부터 99까지로 설정했다.

 

 

/th1s_1s_h1dd3n/?secret=0이라는 request를 보내면 Secret Entered: 뒤에 " 0 "이 생긴 걸 볼 수 있다.

이 페이지에 전달된 secret 값이 Secret Entered 뒤에 출력되는 시스템인가 보다.

 

 

0부터 99까지 secret 값을 주르륵 넣어보면 결과가 다른 secret 값을 찾아낼 수 있다.

 

 

secret = 73일 때 응답 페이지를 보면 자신이 누군지는 안 알려준다면서 웬 수상한 코드를 하나 남겼다. 

 

사실 thm.jpg는 hidden directory를 제공하는 것 말고도 다른 정보가 숨겨져 있었는 데..

그게 뭔지는 steghide를 사용해 보면 알 수 있다!!

 

 

[ Steghide ]

thm.jpg가 정상적으로 출력되고 난 뒤 맨 처음에 해봤던 건 steghide였다. 

passphrase가 필요한 참이었다 보니 hidden directory에서 코드를 발견했을 때 딱 이거다! 했다.

 

 

steghide command로 thm.jpg에 숨겨진 정보를 추출해라! 명령하면 passphrase를 입력하라는 문구가 나온다.

여기에 위에서 찾은 수상한(?) 코드를 넣어주면 hidden.txt를 얻을 수 있다.

 

hidden.txt에서는 username을 알려주고 있는 데 쉽게 알려준다고 생각하면 오산이라고..?

뭔가 구린 냄새가 난다!!

 

 

혹시나 싶어 ROT13을 돌려봤는 데 띠용(OoO)

눈에 익은 이름이 바로 나와버렸다.

 

!! username = joker

 

 

[ find password ]

이제는 joker의 비밀번호만 알아내면 ssh 접속이 가능해진다..!

근데 문제는 비밀번호가 어디에도 안 보인다??

 

hydra도 해보고 다른 directory가 있나 더 살펴봤는데 아무것도 안 나왔다.

그러다.. 수상한 jpg 이름을 보고 말았다.

 

madness 페이지에 가보면 이미지 파일이 하나 있는데..

이 이미지 파일명이 굉장히 수상하고 수상하다. (파일명 : 5iW7kC8.jpg)

 

 

앞에서 jpg가 나와서 그런가 뭔가 딱 이건가 싶었다. 

사진을 저장하고 steghide를 실행해 보니 

역시..! 자신의 password를 알려주는 password.txt가 숨겨져 있었다.

(이번에는 passphrase가 없다. 그냥 엔터 쳐주면 된다.)

 

!! joker's password = *axA&GF8dP

 

 

[ ssh ]

알아낸 joker의 계정으로 22번 포트에서 동작 중인 ssh에 접속할 것이다.

joker 계정으로 접속 완료!

 

sudo command를 실행해 봤더니 joker는 sudo 명령어를 못 쓴다고 한다..

그래서 find command로 root 권한으로 실행되는 파일을 찾아보았다.

 

 

에러는 블랙홀(/dev/null)로 넣어주고~

결과를 훑어보면 눈에 들어오는 결과가 있을 것이다.

 

 

이게 뭔가 검색해 보니 

바로 Local Privilege Escalation과 관련된 내용을 나온다.

그것도 Exploit-DB에서!

 

 

[ Privilege Escalation ]

다시 터미널로 돌아가 searchsploit으로 해당 shell을 바로 복사해 준다.

Path 부분에 나오는 경로는 전체 경로가 아니라서 모든 경로를 알고 싶다면 

 

 

searchsploit command에 -p 옵션을 사용하면 된다. 

이 쉘을 실행하면 root로 권한 상승이 되는 것인데 

그러기 위해서는 공격자의 터미널이 아닌 권한 상승을 할 target 서버에 이 파일을 보내야 한다. 

 

 

그러기 위해서는 파일을 갖고 있는 공격자 터미널에서 server를 열고 (8000 포트)

joker로 접속해 있는 대상 서버에서 41154.sh을 다운로드하면 된다.

 

 

이때도 위에서 wget command를 실행하면 쉽게 파일을 얻어올 수 있는데

 

!! 다른 directory에서 실행하면 권한 문제 때문에 아마 실패할 것이다. 

이럴 때는 /tmp directory로 들어가서 실행하면 사진에서처럼 shell을 성공적으로 가져올 수 있다.

 

 

41154.sh을 실행하고 id를 확인하면 root 변경된 걸 볼 수 있다.

 

 

/root/root.txt & /home/joker/user.txt를 읽어 flag를 찾으면 

tryhackme - madness 완료!!

'TryHackMe > Challenge - WriteUp' 카테고리의 다른 글

Try Hack Me - anthem (2)  (0) 2023.07.21
Try Hack Me - Anthem (1)  (0) 2023.07.21
Year of the Rabbit (2)  (0) 2023.03.25
Year of the Rabbit (1)  (0) 2023.03.23
Gaming Server (2)  (0) 2023.03.12
Comments