본문 바로가기
Hack_ing

[HTB]Hack The Box - Oopsie:: Write up

by Ate1es 2021. 9. 22.

1. Reconnaissance

 

Result of NMAP

Result of NMAP

우선 22, 80/tcp 가 열려있습니다.

 

Result of Dirsearch to web server

Result of Dirsearch to web server

 

 

2. Initial Access

 

웹서버에 접속 후 탐색 중 소스보기에 로그인 페이지 경로가 보입니다. [ /cdn-cgi/login/ ]

 

해당 경로로 접속하면 아래와 같이 로그인 폼이 존재합니다. 

sqlmap을 시도해봤지만, sql injection이나 다른 구문은 먹히지 않았습니다.

 

하여 다시 메인 페이지 탐방 도중 맨 밑부분에 admin@megacorp.com 을 발견하고, 전에 풀었던 박스 비밀번호가 이것과 비슷하다는 것을 알았습니다.

위 사진은 전 단계의 박스 어드민 비밀번호입니다. --> MEGACORP_4dm1n!!

 

이 비밀번호를 이용해 admin으로 로그인하면, 각종 기능들이 있습니다.

이중 업로드 기능이 있길래 들어와봤더니 Super admin 권한이 필요하답니다.

Account 탭으로 가보면 해당 id의 번호마다 부여되어있는 user number 값을 출력해주는 페이지가 존재합니다.

http://10.10.10.28/cdn-cgi/login/admin.php?content=accounts&id=1

http://10.10.10.28/cdn-cgi/login/admin.php?content=accounts&id=1

id가 1일 때 admin의 34322를 출력해주고 있으므로, 파이썬 코드를 통해 super admin이 나올때까지 요청을 보냈습니다.

우리는 다음과 같이 Super admin의 user number를 얻었습니다!!! --> 86575

쿠키값의 user 값을 86575로 바꾸고 다시 upload 탭으로 이동해보면, 업로드 기능이 열린 것을 확인할 수 있습니다.

 

3. Exploit

 

https://github.com/tutorial0/WebShell/blob/master/Php/php-reverse-shell.php

 

GitHub - tutorial0/WebShell: WebShell Collect

WebShell Collect. Contribute to tutorial0/WebShell development by creating an account on GitHub.

github.com

위의 리버스 쉘을 열어주는 php 파일을 업로드 하고, Dirsearch 결과로 찾아낸 /uploads 경로에 있는 악성 php파일을 요청했습니다.

web-server/uploads/~~~.php

웹쉘이 열렸습니다 !!

 

여러 디렉터리 탐색 도중, db connection 파일[db.php]에 username 과 password가 있는 것을 발견했습니다.

해당 비밀번호는 robert라는 유저가 사용하는 비밀번호 같습니다.

result of NMAP에서 22/ssh 포트가 열려있었으므로, robert 계정과 비밀번호를 이용해 ssh 접속을 했습니다.

일반 유저권한의 쉘을 얻었습니다!!

 

3. Privilege Escalation

 

id 명령어 결과, 그룹에 robert외에 bugtracker 라는 그룹이 보입니다. 해당 그룹권한의 파일을 찾아봤더니

/usr/bin/bugtracker 가 있었습니다.

 

해당 파일은 ELF파일로, strings /usr/bin/bugtracker 명령어를 통해 문자열을 탐색해봤더니,

 

cat /root/reports/라는 문자열이 존재합니다.

하지만 현재 cat에 대한 경로가 지정되어 있지 않은 상태입니다. (/root 속 파일에 접근하기 때문에 set uid가 설정되어 있을 것입니다.)

 

따라서 저 cat 파일을 내가 원하는 코드로 짜고, 경로를 내가 원하는 cat 파일로 바꾸고 난뒤

해당 bugtracker 파일을 실행하면, root 권한으로 실행된다는 뜻입니다.

 

아래와 같이 /bin/sh -> 즉 쉘을 실행하는 cat 파일을 /tmp 경로에 생성하고

환경 변수 PATH 맨앞에 /tmp를 추가해 cat /~~~ 명령어가 실행될 때 /tmp/cat 이 실행되도록 바꿨습니다.

그 다음 bugtracker를 실행시키면, /tmp/cat이 실행되고, 그 속의 내용은 /bin/sh 이므로, root shell 이 열립니다.

끝!

 

 

 

4. PS [ 추가 ]

 

/root 디렉터리에 .config 숨겨진 디렉터리안에 이런 파일이 있는데, 아마 다음 박스에 쓰일 것 같습니다.

진짜 아무생각 없이 뒤적뒤적하다 , 깜짝쿵 ><