Wildlife Tracker
July 5, 2025
Category: web
Challenge Overview
Description: The "Wildlife Tracker" promises to help keep tabs on various species. However, every good system has its blind spots, and this one might be no exception. Can you exploit its nuances and gain unauthorized access to its deeper operations?
Solution
Setelah mencoba mengakses website yang diberikan, saya kira awalnya ini merupakan challenge payload injection (XSS, SSTI, dsb). Tapi, saat saya membuka halaman website, ternyata terdapat URL query parameter yang memungkinkan saya membaca file yang ada di server. Parameter tersebut ada ketika saya menekan tombol “Info” di halaman /about. Yaitu “?read_file=”. http://134.209.102.23:8082/?read_file=wildlife_info.txt
Seharusnya, ada file lain yang bisa saya buka melalui parameter tersebut. Maka dari itu, sebelumnya, saya cek tech stack yang digunakan dalam website ini.

Website ini menggunakan framework flask dari python. Secara default, biasanya terdapat file “app.py” jika menggunakan flask. So, ketika saya coba read file app.py dengan parameter tadi, saya dapat melihat source code asli dari website sebelum di-render di server. http://134.209.102.23:8082/?read_file=app.py
Ada beberapa hal yang menarik dari source code tersebut. Pertama, untuk masuk ke halaman /admin_dashboard, saya harus memiliki cookie admin_token. Kedua, cookie tersebut menggunakan sistem JWT. Ketiga, JWT tersebut harus mengandung ‘role’ yang bernilai admin dan ‘authorized’ yang mengandung nilai true. Terakhir, saya harus memiliki environment variable “SECRET_KEY” untuk generate JWT tokennya.

Selanjutnya, saya mencoba mencari lokasi variabel SECRET_KEY (biasanya ada di file .env). Yup, ternyata variabel tersebut bisa dibaca melalui query parameter tadi (“?read_file=.env”). Langsung saja saya generate JWT token yang dibutuhkan untuk masuk ke dashboard admin.

Setelah menambahkan cookie admin_token, langsung saja saya decode strings base64 tersebut.
Flag:
FITUKSW{b10d1v3rsqty_1n_th3_w1ld}