일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- file upload
- active recon
- php
- Leviathan
- War Game
- THM
- Cookie
- Reconnaissance
- php 로그인 페이지 만들기
- FTZ
- php login page
- over the wire
- 파일 업로드 취약점
- php To Do List
- active reconnaissance
- ssrf
- BANDiT
- privilege escalation
- access control
- SQLi
- overthewire
- Recon
- php file upload
- php 파일 업로드하기
- sql injection
- Cryptography
- Server Side Request Forgery
- tryhackme
- Authentication
- OS Command Injection
- Today
- Total
R's Hacking Daily Log
[TryHackMe] Madness - WriteUp 본문
이번에 시도해 볼 대상은 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 |