CodePartTwo

meowyeok

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

Reconnaissance

nmap -sV $IP
notion image
  • 22번과 8000번 포트가 열려있다.
 
notion image
notion image
  • 8000번 포트의 웹서비스에 접근하여 코드입력창이 보이길래 ssti인가 확인해봤는데 바로 걸렸다.
  • {{7*’7’}} 까지 되는거 보니 jinja2나 Twig인거같다.
  • 근데 생각해보니까 코드 에디터라서 그냥 되는거같기도하다 (기본적인 payload들이 아예 안먹힘)
 
notion image
  • 메인 페이지의 Download APP 버튼을 통해 소스코드를 얻어낼 수 있다.
 
  • 의심가는 부분을 확인해보았는데 절묘하게 CVE에 맞춘 환경이 구성되어 있었고, 때문에 js2py rce CVE-2024-28397라고 확신했다.
 

Exploitation

notion image
notion image
  • payload를 직접 웹사이트에 올려봤지만 잘 되지 않아서 python script로 작성하였다.
  • 에러가 떴지만 js2py.eval_js(code) 이부분이 실행 됐기에 성공적으로 리버스셸을 획득하였다.
 
notion image
  • 하지만 marco의 계정도 얻어내야 플래그를 획득할 수 있다.
 
notion image
  • app/instance/users.db 내에서 marco 계정의 비밀번호 해시값 획득
  • sweetangelbabylove 로 크랙 성공!
notion image
  • user flag 획득!!
 

Privilege Escalation

notion image
  • sudo -l을 쳐보면 marco가 비밀번호 없이 root권한으로 /usr/local/bin/npbackup-cli를 실행할 수 있게 나온다.
 
sudo /usr/local/bin/npbackup-cli
notion image
  • 한번 실행해보면 root로 돌리는데 configuration file없이는 돌릴 수 없다는 경고문이 떠서 내부 코드를 한번 봐야한다.
 
  • 여기서 currunt_dir/npbackup.conf 경로를 받는걸 확인할 수 있다.
 
sudo /usr/local/bin/npbackup-cli --config-file /home/marco/npbackup.conf -b
notion image
  • 일단 --config-file 파라미터로 기존에 marco 홈디렉토리에 존재했던 npbackup.conf파일을 넣으니까 이런식으로 작동되었다.
 
sudo /usr/local/bin/npbackup-cli --config-file /home/marco/npbackup.conf --ls
notion image
  • --ls 옵션을 주니 /home/app/app내부에 있는 파일들이 백업되는걸 확인할 수 있었다.
 
sudo /usr/local/bin/npbackup-cli --config-file /home/marco/npbackup.conf --dump /home/app/app/requirements.txt
notion image
  • 그리고 --dump 옵션과 백업된 파일 경로를 주면 백업된 파일 내용을 확인할 수 있다 (root로!!)
 
  • 이제 기존 npbackup.conf파일에서 paths 값을 /root로 바꾸고 --dump 옵션으로 root.txt를 확인하여 플래그를 획득하면 될것이다.
 
sudo /usr/local/bin/npbackup-cli --config-file /home/marco/root.conf --check-config-file
notion image
  • 새로운 conf 파일에 대해 --check-config-file로 유효성 검사를 먼저 해줘야 진행이 되었다.
 
sudo /usr/local/bin/npbackup-cli --config-file /home/marco/root.conf -b -f
notion image
  • -b 만 주게되면 최근 1일동안 backup한 내역이 있으면 backup을 실행하지 않는다. 그래서 -f로 강제로 해줘야했다.
 
sudo /usr/local/bin/npbackup-cli --config-file /home/marco/root.conf --ls
notion image
  • 성공적으로 /root 하위의 내용들을 백업한걸 확인할 수 있다!!
 
sudo /usr/local/bin/npbackup-cli --config-file /home/marco/root.conf --dump /root/root.txt
  • root flag 획득!!
 
Loading...