Hack the box의 Starting Point 중 Oopsie 문제를 해결하는 과정을 기록
이번 테스팅 머신도 Spawn 후 포트스캔을 가장 먼저 진행했다.
Wappalyzer로 확인하면 Ubuntu/Apache/PHP를 사용하는것을 확인할 수 있다.
메인 페이지 소스코드 가장 마지막을 보면 로그인 페이지가 보인다.
"/cdn-cgi/login/index.php" 으로 접근하니 로그인 페이지가 보이고 Guest로 로그인할 수 있는것을 확인할 수 있다.
Guest 로그인 시 Cookie에 role: guest, user: 2233
인것을 확인할 수 있다.
상단 탭 Account로 접근하면 "/cdn-cgi/login/admin.php?content=accounts&id=2"로 접근되며 id 파라미터를 변경하여 타사용자 Access ID와 Name 등을 확인할 수 있다.
id=1(admin), id=2(guest)
획득한 Access ID와 Name을 cookie의 role과 user 값으로 변경하고 Uploads 탭에 접근한다.
Reverse shell 기능의 shell.php 파일을 업로드 성공했다.
이제 업로드한 shell.php에 접근하여 php를 실행 시켜야한다. 업로드 디렉터리를 확인하기 위해 FFUF를 돌렸다. (/uploads 😎)
Kali에서 nc로 12321포트를 열고 리스닝하면서 "/uploads/shell.php"에 접근 시 reverse shell 코드가 실행되며 Kali에 Shell를 얻게 된다.
"/cdn-cgi/login/" 디렉터리를 스캔했던 결과로 얻었던 db.php를 확인하면 mysql ID/PW를 획득할 수 있다.
su 명령을 통해 robert로 전환하려했으나, su 명령은 터미널에서만 가능하기에 python3를 통해 "/bin/bash" 터미널을 열었다.
python3 -c 'import pty;pty.spawn("/bin/bash")'
쉽게 flag.txt파일을 확인할 수 있었다.
각종 시스템 파일들을 확인하다가 "/etc/group"에서 bugtracker라는 그룹을 확인할 수 있었고 해당 그룹이 소유하고있는 파일을 확인했다.
소유자 : root, 그룹 : bugtracker
해당 파일은 Set UID가 설정되어있어 실행 시 root권한으로 돌아가는데 일단 실행시켜보았더니 "/root/reports/" 디렉터리에서 사용자가 입력한 파일을 cat으로 확인하는 파일이다.여기서 cat은 root권한으로 실행된다.😆
bugtracker 실행 시 cat명령어를 root권한으로 실행하니 입력받는 값에 "../root.txt"를 입력하여 root 권한으로 txt파일을 읽을 수 있다.
또 SUID가 설정되어있어 LPE가 가능하다. 먼저 "/bin/sh" 라는 내용의 /tmp/cat" 파일을 생성하고 환경변수 첫부분에 /tmp를 등록하고 bugtacker를 통해 값을 입력하면 "/bin/cat"이 아닌 "/tmp/cat"을 먼저 읽어 "/bin/sh"이 root권한으로 실행되 root shell을 획득할 수 있다.