[Overthewire] – Natas13

Link : http://natas13.natas.labs.overthewire.org/

Password : jmLTY0qiPZBbaKc9341cqPQZBJv7MQbY

Pertama diberikan sebuah tampilan

Nampaknya web ini hanya menerima file JPEG dan dapat diketahui ada mekanisme pertahanan untuk memastikan file yang di upload merupakan sebuah image file.

Mari kita lihat source code yang disediakan

Terdapat sebuah variabel target_path yang menyimpan function bercabang makeRandomPathFromFilename dan makeRandomPath

Function makeRandomPathFromFilename akan melakukan pengecekan kepada extension dari file yang di upload yang defaultnya adalah jpeg dan passing value dir dan ext ke makeRandomPath

Function makeRandomPath bertugas mereturn sebuah value tempat file akan disimpan di directory upload

lebih tepatnya file akan tersimpan pada “upload/(random string berjumlah sepuluh character dari list alphanumeric).jpeg”

Namun hal yang berbeda dari natas13 adalah pada natas14 ini terdapat pengecekan tipe file menggunakan exif pada

Melihat dokumentasi exif_imagetype

Kita mengetahui bahwa cara kerja dari exif_imagetype adalah dengan melakukan pengecekan byte pertama sebuah image untuk memastikan file tersebut adalah image. Jika exif_imagetype tidak mendapatkan byte yang cukup untuk dibaca maka, value yang di return adalah false.

Namun pengecekan tipe file seperti ini pun masih dapat kita lewati dengan menggunakan beberapa tools untuk mengedit byte di sebuah file seperti hexed.it

Kita akan menggunakan hexed.it untuk mengedit atau menambahkan magic number pada header sebuah file. Mari kita cari tahu apakah header yang sesuai untuk dimasukkan kedalam file header tipe jpeg.

Penulis menggunakan sumber dari web ini

https://www.garykessler.net/library/file_sigs.html

Kita menemukan sebuah header yang cocok untuk digunakan dalam file header kita. Memiliki awalan berupa FF D8 dan trailer FF D9

Mengapa ada awalan dan trailer? Awalan merupakan sebuah tanda bahwa image file akan mulai dari byte setelah itu dan berakhir sebelum trailer byte nya.

Maka secara logika, step-step yang akan kita lakukan antara lain :

Membuat sebuah text file yang berisi code php untuk kita sisipkan nanti yang bertugas untuk mengeluarkan konten etc/natas_webpass/natas14

Tetapi jika kita mensubmit file ini, kita akan tidak akan bisa melewati pengecekan exif_imagetype.

Maka mari kita menambahkan 4 byte pertama dari magic number jpeg di file text yang sudah kita buat tadi.

FF D8 akan menunjukkan file image kita telah mendapatkan header pembuka dan langsung ditutup dengan FF D9. Sisanya adalah payload kita. Mari kita submit file kita.

Jangan lupa nyalakan burpsuite untuk mengganti nama file menjadi *.php

Nama file sudah diubah menjadi .php

File sukses ter-upload

Berhasil ! Password untuk natas13 adalah Lg96M10TdfaPyVBkJdjymbllQ5L6qdl1

 

 

Leave a Reply

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