PicoCTF Who Are You Medium

 

1️⃣ Awal: Mencari Celah dengan nmap

Kamu pertama kali mencoba memindai server dengan nmap:

bash
nmap -sV --script=http-vuln* -p 80,443 http://mercury.picoctf.net:46199/

Namun, perintah ini salah karena URL tidak bisa langsung dimasukkan ke nmap. Seharusnya kamu hanya memasukkan hostname atau alamat IP.

Lalu, kamu memperbaiki perintahnya menjadi:

bash
nmap -sV --script=http-vuln* -p 46199 mercury.picoctf.net

Tapi hasilnya port 46199 dalam kondisi "filtered", yang berarti firewall memblokir scan ini atau ada aturan yang membatasi akses.

Kemudian kamu mencoba:

bash
nmap -A -p 46199 mercury.picoctf.net

Hasilnya tetap sama, port 46199 masih terfilter, jadi tidak bisa mendapatkan banyak informasi dari nmap.

Kesimpulan dari tahap ini:

  • Port 46199 terbuka, tetapi dibatasi aksesnya.
  • nmap tidak bisa memberikan informasi lebih lanjut.
  • Perlu pendekatan langsung dengan curl.

2️⃣ Interaksi Langsung dengan curl

Kamu mencoba mengakses website dengan:

bash
curl -v -A "PicoBrowser" http://mercury.picoctf.net:46199/

Hasilnya:
Website memberikan pesan "I don't trust users visiting from another site."
Artinya, website hanya mengizinkan akses jika ada Referer yang sesuai.

Lalu, kamu menambahkan header Referer:

bash
curl -v -A "PicoBrowser" -H "Referer: http://mercury.picoctf.net:46199/" http://mercury.picoctf.net:46199/

Hasilnya:
Pesan berubah menjadi "Sorry, this site only worked in 2018."
Berarti website memeriksa tanggal permintaan.


3️⃣ Menyesuaikan Tanggal

Karena ada batasan tahun, kamu menambahkan header Date:

bash
curl -v -A "PicoBrowser" \ -H "Referer: http://mercury.picoctf.net:46199/" \ -H "Date: Sun, 10 Jun 2018 12:00:00 GMT" \ http://mercury.picoctf.net:46199/

Hasilnya:
Pesan berubah lagi menjadi "I don't trust users who can be tracked."
Ini mengindikasikan bahwa website memeriksa apakah pengguna bisa dilacak.


4️⃣ Menghilangkan Jejak (Do Not Track & Cookies)

Website tidak ingin pengguna yang bisa dilacak, jadi kamu menambahkan header DNT (Do Not Track) = 1 dan menghapus cookies:

bash
curl -v -A "PicoBrowser" \ -H "Referer: http://mercury.picoctf.net:46199/" \ -H "Date: Sun, 10 Jun 2018 12:00:00 GMT" \ -H "DNT: 1" \ --cookie "" \ http://mercury.picoctf.net:46199/

Hasilnya:
Pesan berubah menjadi "This website is only for people from Sweden."
Sekarang kita tahu bahwa website memeriksa lokasi geografis pengguna.


5️⃣ Menyamarkan Lokasi ke Swedia

Untuk melewati batasan ini, kamu menambahkan:

  • X-Forwarded-For: IP address dari Swedia.
  • Accept-Language: Bahasa Swedia.
bash
curl -v -A "PicoBrowser" \ -H "Referer: http://mercury.picoctf.net:46199/" \ -H "Date: Sun, 10 Jun 2018 12:00:00 GMT" \ -H "DNT: 1" \ -H "X-Forwarded-For: 90.230.0.1" \ -H "Accept-Language: sv-SE,sv;q=0.9" \ --cookie "" \ http://mercury.picoctf.net:46199/

Hasilnya:
Website akhirnya menampilkan flag PicoCTF! 🎉


Kesimpulan Akhir

Website ini memiliki banyak mekanisme keamanan yang harus kita lewati:

  1. Harus menggunakan user-agent tertentu ("PicoBrowser").
  2. Harus memiliki header Referer yang sesuai.
  3. Harus menggunakan tanggal yang sesuai (tahun 2018).
  4. Harus mengaktifkan DNT: 1 untuk tidak bisa dilacak.
  5. Harus berasal dari Swedia (diakali dengan X-Forwarded-For dan Accept-Language).

Dengan memahami bagaimana server web memproses request HTTP, kita bisa mengakali berbagai filter ini dan mendapatkan flag.

Selamat! 🎯🔥

Posting Komentar

0 Komentar