Analis Siber Purwakarta - Admin. Kita kembali lagi pada segmen Natas Overthewire Wargame. Wargame Natas ini akan mengajarkan dasar dari serverside web security. Sebagaimana wargame Overthewire sebelumnya, Natas dimulai dari level 0, dan masing-masing level berisikan kredensial untuk level selanjutnya.
Natas Level 0
Sebagai permulaan, kita akan diberikan kredensial default untuk masuk pada sistem. Kredensial untuk level selanjutnya cukup terbilang mudah, kita hanya perlu memeriksa struktur dari web ini menggunakan developer tools browser yang kita gunakan.
| Flag untuk level 0-1 Sumber Dokumentasi Penulis |
Natas Level 0 - 1
Masih sama dengan level sebelumnya, flag untuk level ini kita hanya perlu mendapatkannya dengan membuka struktur web. Bedanya, kita tidak bisa membuka developer tools melalui inspect element, namun kita bisa membukanya menggunakan shortcut browser.
| Flag untuk level 1-2 Sumber: Dokumentasi penulis |
Natas Level 1 - 2
Naik level selanjutnya, kita tidak lagi menghadapi kredensial yang dibiarkan terbuka, melainkan kita harus membaca direktori dari website ini. Pada level ini kita belum perlu menggunakan alat fuzzing tertentu, dengan membaca struktur web kita dapat mengetahui terdapat sebuah gambar png yang disimpan pada irektori files/.
Kita buka direktori tersebut dan terdapat file lain yang bernama users.txt. Bila kita membacanya, kita akan mendapatkan kredensial untuk level selanjutnya.
| Flag untuk level 2-3 Sumber: Dokumentasi Penulis |
Natas Level 2 - 3
Pada level ini kita memerlukan sedikit effort untuk melakukan content discovery. Petunjuk untuk level ini kita bisa mengetahuinya melalui komentar pada tag html <!-- No more information leaks!! Not even Google will find it this time... -->. Mesin pencaharian biasanya akan mengindeks konten sebuah website melalui mekanisme crawling, kita bisa melakukan konfigurasi mana halaman yang akan diindeks, dan mana yang tidak dengan menggunakan Robots.txt
Bila kita menambahkan /robots.txt pada akhir url halaman ctf ini, kita akan mendapati terdapat direktori yang bernama /s3cr3t. Bila kita buka direktori tersebut maka kita akan mendapatkan flag kredensial untuk level selanjutnya.
| Direktori untuk mendapatkan kredensial level 3-4 Sumber: Dokumentasi Penulis |
Natas Level 3 - 4
Pada level ini kita akan memulai untuk memanipulasi header HTTP Request. Terdapat dua HTTP Header yang perlu kita ketahui yaitu: Authorization, dan Referer. Authorization merupakan HTTP Header yang digunakan untuk membuktikan identitas client ke server, sedangkan Referer adalah HTTP header yang memberi tahu server dari halaman mana sebuah request berasal.
Hubungan dua HTTP heade tersebut pada level ini kedua header tersebut digunakan secara bersamaan. Header Authorization memastikan bahwa pengguna telah login sebagai akun natas4, sedangkan header Referer memberikan akses jika request terlihat berasal dari http://natas5.natas.labs.overthewire.org/.
| Menambahkan HTTP Header Referer pada Request untuk mendapatkan flag 4-5 Sumber: Dokumentasi Penulis |
Natas Level 4 - 5
Untuk mendapatkan kredensial pada level ini kita akan melakukannya melalui pendekatan manipulasi cookie (MayADevBe, 2025). Terdapat dua cara yakni storage pada developer console pada browser yang kita gunakan, atau menambahkan header cookie value yang semula bernilai 0 menjadi 1. Setelah merubah nilai value cookie menjadi 1, kemudian kita melakukan refresh pada browser kita akan mendapatkan kredensial untuk level selanjutnya.
| Memanipulasi Cooke Header value menggunakan Developer Tools Firefox Sumber: Dokumentasi Penulis |
Natas Level 5 - 6
Pada level ini, kita akan mendapati sebuah website yang meminta untuk memasukan sebuah sandi rahasia. Letak sandi tersebut terdapat pada direktori yang disebutkan pada struktur aplikasi web ini.
Untuk mendapatkan sandi rahasia tersebut kita perlu melakukan kembali inspect elemen sebagaimana pada level-level awal. Sandi rahasia terdapat pada direktori includes/secret.inc, dan bila kita mengakses direktorinya kita mendapatkan sandi rahasia yang diminta oleh aplikasi. Masukan sandi rahasia tersebut, maka kita akan mendapatkan kredensial untuk level selanjutnya.
| Akses kredensial untuk level 6-7 yang diperoleh melalui membaca source code aplikasi Sumber: Dokumentasi Penulis |
Natas Level 6 - 7
Level ini akan mengambil referensi mengenai salah satu kerentanan aplikasi yakni file inclusion. File inclusion merupakan kerentanan yang terjadi karena aplikasi memberikan pengguna kendali untuk menentukan file yang akan dimuat (include), tetapi tidak melakukan validasi yang memadai terhadap file tersebut. Hal ini juga diperjelas oleh petunjuk komentar tag HTML yang menjelaskan bahwa kredensial untuk level selanjutnya terdapat pada direktori /etc/natas_webpass/natas8.
Terdapat parameter yang bisa kita gunakan untuk menguji kerentanan ini, pada parameter ?page= pada url menunjukan dimana halaman tersebut disimpan pada direktori web. Bila kita uji menggunakan petunjuk yang sebelumnya disebutkan maka kita akan memperoleh kredensial untuk halaman selanjutnya.
| Memanfaatkan File Local Inclusion untuk mendapatkan kredensial Sumber: Dokumentasi Penulis |
Natas Level 7 - 8
Pendekatan untuk memperoleh kredensial pada level ini hampir sama dengan level 6 sebelumnya. Perbedaannya, pada level ini kita perlu melakukan proses decoding terhadap sandi rahasia yang diberikan.
| Sandi rahasia yang disamarkan Sumber: Dokumentasi Penulis |
Apabila diperhatikan, fungsi `encodeSecret()` melakukan tiga tahapan untuk menyamarkan nilai sandi rahasia. Proses tersebut dapat dipermudah dengan menggunakan alat seperti CyberChef. Caranya, masukkan nilai sandi rahasia pada kolom Input, kemudian tambahkan operasi From Hex, Reverse, dan From Base64 pada kolom Recipe dengan pengaturan default. Setelah seluruh operasi dijalankan, akan diperoleh nilai sandi rahasia asli yang dapat digunakan untuk memperoleh kredensial pada level selanjutnya.
Natas Level 8 - 9
Level ini hampir serupa dengan level 6 sebelumnya. Perbedaannya terletak pada tugas yang mengharuskan kita mengeksploitasi kerentanan Command Injection untuk memperoleh kredensial yang digunakan pada level berikutnya. Kerentanan Command Injection dapat diidentifikasi melalui source code, tepatnya pada sebuah penggunaan metode passthru() (Hammer of Thor (2015)) yang terdapat pada statement kondisional yang berfungsi untuk menerima masukan dari parameter.
Hammer Of Thor (2015) dalam writeupnya menjelaskan untuk melakukan direct command injection ke metode passthru() tersebut, kita bisa menggunakan karakter seperti ; atau # pada awal dan akhir payload kita. Sebagai contoh, apabila kita menginput ; ls /etc # pada form input, maka kita akan mendapatkan output berupa isi dari direktori /etc. Untuk mendapatkan kredensial level selanjutnya, kita bisa menggunakan command ; cat /etc/natas_webpass/natas10 #.
Melakukan eksploitasi kerentanan Command Injection untuk memperoleh kredensial
Sumber: Dokumentasi Penulis
Natas Level 9 - 10
Tantangan pada level ini masih serupa dengan level sebelumnya, yaitu mengeksploitasi command injection untuk memperoleh kredensial menuju level berikutnya. Perbedaannya, aplikasi telah menerapkan mekanisme penyaringan terhadap beberapa karakter yang umum digunakan dalam serangan, yaitu ;, |, dan &.
Salah satu teknik yang dijelaskan oleh Hammer of Thor (2015) adalah memanfaatkan karakter * untuk mengelabui mekanisme penyaringan. Dengan menggunakan payload .* /etc/natas_webpass/natas11 #, sistem tetap mengeksekusi payload sehingga kredensial untuk level selanjutnya berhasil diperoleh.
Memanfaatkan karakter yang tidak terfilter oleh mekanisme
Sumber: Dokumentasi Penulis
Atribusi Konten
Seluruh materi dan skenario wargame dalam artikel ini merupakan hak cipta dari komunitas OverTheWire. Artikel ini dibuat murni sebagai catatan belajar (writeup) pribadi dan panduan metodologi edukatif tanpa memberikan spoiler instan.
Referensi
https://mayadevbe.me/posts/overthewire/natas/natas5/
https://mcpa.github.io/natas/wargame/web/overthewire/2015/09/28/natas09/
https://mcpa.github.io/natas/wargame/web/overthewire/2015/09/28/natas10/