[INS’hAck 2019] – Exploring The Universe

Challenge Description:

Will you be able to find the flag in the universe/ ? I’ve been told that the guy who wrote this nice application called server.py is a huge fan of nano (yeah… he knows vim is better).

Challenge URL:

http://exploring-the-universe.ctf.insecurity-insa.fr/

Kita diberikan sebuah web yang berisi game berbasis javascript.

Hmm, tidak terlihat ada yang menarik. Mari kita coba lihat page-source.

Tidak ada yang menarik juga. What sorcery is this? 😀

Kalau begitu kembali ke Challenge Description.

Dari deskripsi soal tersebut, kita dapat mengetahui bahwa di web tersebut ada file bernama server.py dan file tersebut ditulis antara dengan nano atau vim.

Namun saat kita mencoba untuk meng-akses server.py, kita masuk ke response code 404 (Not Found).

Namun, jika kita perhatikan kembali deskripsi soal, dapat kita simpulkan bahwa yang sebenarnya kita cari bukanlah file server.py namun temporary file dari server.py. Kita punya informasi nano dan vim.

Untuk nano, temporary file yang di generate adalah:

<nama file>.save

Sedangkan untuk vim adalah sebagai berikut:

.<nama file>.swp -> file hidden karena ada . di depannya

Dengan informasi tersebut kita bisa mencoba untuk mendapatkan source code dari soal tersebut. Dari kedua hal itu, kita berhasil mendapatkan file tersebut dengan menggunakan format temporary file vim.

http://exploring-the-universe.ctf.insecurity-insa.fr/.server.py.swp

Setelah mendapatkan source code-nya, mari kita coba untuk melihat isi dari file tersebut.

Dari isi file tersebut, bagian yang terpenting dari source code tersebut adalah fungsi stream_file.

Dan bagian terpenting dari potongan code diatas adalah:

Kenapa? Karena disini kita dapat mengetahui bahwa ada kelemahan yang disebut Path Traversal.

Dari potongan code diatas, dapat diketahui bahwa path apapun yang kita request, akan ditambahkan dengan public didepannya, misal:

Request: universe/flag

Hasil: public/universe/flag

Hal ini akan menyebabkan (sejauh yang kita ketahui) apapun endpoint yang kita request akan terkena 404.

Namun justru memberikan kita informasi yg menarik. Karena jika kita mengetahui bahwa path yang kita request itu seperti itu, maka kita hanya perlu memundurkan 1 directory dan mengakses directory universe.

Dari sana, URL yang harus kita kunjungi adalah sebagai berikut:

https://exploring-the-universe.ctf.insecurity-insa.fr/..%2Funiverse/flag

Tanda / di URL Encode agar tidak menghasilkan path yang berbeda

Jika tanpa URL Encode maka bila kita masukkan:

https://exploring-the-universe.ctf.insecurity-insa.fr/../universe/flag

Akan berakhir menjadi:

https://exploring-the-universe.ctf.insecurity-insa.fr/universe/flag

Dan akan tetap terkena 404

Lalu didapatkanlah flag.

Flag: INSA{3e508f6e93fb2b6de561d5277f2a9b26bc79c5f349c467a91dd12769232c1a29}

Leave a Reply

Your email address will not be published. Required fields are marked *