Cara Hack Akun Forum Dengan Password-Stealing Picture
Gambar yang kita upload secara online adalah sesuatu yang cenderung kita anggap sebagai ekspresi diri, tapi gambar-gambar ini bisa membawa kode untuk mencuri kata kunci dan data kita. Foto profil, avatar, dan galeri gambar digunakan di seluruh internet. Sementara semua gambar membawa data gambar digital dan banyak juga membawa metadata mengenai suntingan kamera atau foto jauh lebih tidak diharapkan gambar sebenarnya menyembunyikan kode berbahaya.
Bagaimana mungkin menyembunyikan kode pada gambar?
File umumnya terstruktur dalam beberapa bagian yang berbeda. File gambar misalnya, umumnya dimulai dengan beberapa deklarasi tipe data file gambar yang ada. Ini biasanya seperti marker "Start of Image", urutan atau nomor yang menunjukkan apa yang akan diikuti. File GIF dimulai dengan GIF87a atau GIF89a bila dilihat sebagai pengkodean ISO 8859-1, atau "47 49 46 38 37 61" dalam heksadesimal.
Tanda tangan ini diikuti oleh data yang sesuai dengan susunan dan pewarnaan piksel pada gambar. Data ini bila dilampirkan dalam file gambar sudah cukup untuk membuat gambar bitmap yang bisa digunakan. Namun selain data gambar yang terlihat ini, setelah data gambar berakhir, metadata seperti EXIF dapat dimasukkan mengikuti segmen penanda aplikasi. Setelah titik-titik ini, data gambar telah dibuka dan ditutup dengan indikator yang ditentukan, dan apapun setelah data ini tidak akan diproses sebagai gambar.
Metadata umumnya hanya terlihat oleh pengguna saat diurai secara khusus dan dengan cara yang sama, kode tersembunyi hanya akan terlihat oleh program yang mencari kode untuk dijalankan. Meskipun data ini sering berisi informasi kamera, data lokasi, atau informasi serupa yang terkait dengan foto itu sendiri, dokumen ini juga dapat diisi dengan file lain atau dalam kasus ini kode yang dapat dieksekusi.
Meskipun konten tersembunyi disertakan dalam file gambar, namun tetap berperilaku sebagai gambar standar karena komponen pembuka dan penutup konten gambar cukup memadai untuk program penayangan gambar untuk menafsirkan dan menampilkan gambar secara efektif.
Dengan cara yang sama, ketika sebuah situs web diberitahu untuk mencari jenis naskah tertentu setidaknya akan berusaha menjalankannya atau mencari sesuatu yang dapat digunakan untuk tindakan yang diperintahkannya. Jika skrip ini adalah file gambar dan bukan file teks situs web akan dapat menjalankan skrip asalkan bisa menemukan elemen pembuka dan penutup kode.
Bagaimana teknik ini bisa digunakan?
Situs web seperti forum, situs hosting, atau situs lain dengan konten buatan pengguna sering memungkinkan pengunggahan gambar dan pengeposan teks atau konten media.
Dalam kasus tertentu, tag skrip HTML diizinkan, mungkin widget tersedia bagi pengguna untuk ditambahkan ke pos atau laman mereka. Tag skrip mungkin dapat disisipkan di tempat yang seharusnya tidak karena kurangnya verifikasi formulir, seringkali dengan menggunakan tag pelarian seperti properti textarea HTML ... Tetapi bahkan jika tidak, Anda dapat meng-host memiliki halaman web yang menghasilkan skrip dari halaman lain dan jika skrip tersebut mencoba mengakses cookies dari domain tempat mereka berada, mereka akan diberi akses.
Karena ini sebagai tindakan perlindungan, kebanyakan situs tidak akan membiarkan Anda mengunggah skrip, namun banyak yang memungkinkan Anda mengupload gambar. Dan banyak dari mereka hanya akan menyimpan gambar itu dan menayangkannya seperti apa adanya (dengan muatan kita yang bijaksana). Jadi dengan mengunggah JavaScript dalam gambar, situs dapat dihosting dan dijalankan dari server situs. Selain itu teknik ini sangat menyusahkan JavaScript jahat bahkan saat digunakan di server yang dikendalikan oleh penyerang dan dapat digunakan untuk mengaburkan tindakan laman phishing.
Apa yang bisa kita lakukan dengan melaksanakan JavaScript yang diinangi pada server target?
JavaScript dapat digunakan untuk mencoba mencuri cookies yang mungkin termasuk token otentikasi yang sering kali rentan terhadap string escape XSS untuk mengeksekusi lebih banyak javascript, dapat meminta browser untuk mendownload atau menjalankan sebuah program dan bahkan mencuri informasi dari situs-situs lain yang telah dikunjungi pengguna Dengan asumsi host target menyajikan integrasi yang diakses oleh halaman web lainnya). Dalam kasus contoh ini, fungsi peringatan JavaScript sederhana digunakan untuk mengonfirmasi bahwa JavaScript berjalan dengan baik, namun hal ini dapat diganti dengan kode berbahaya atau bahkan peramban browser BeEF.
Berikut ini langkah-langkahnya:
Langkah 1
Mengunduh dan memasang Imagejs
Mari kita mulai dengan mengkloning repositori git untuk proyek ini. Perintah dalam contoh ini dimasukkan ke lingkungan terminal Kali Linux.
git klonhttps://github.com/jklmnn/imagejs
Setelah mengkloning repositori, kita pindah ke direktori dengan perintah berikut.
cd imagejs
Akhirnya, untuk mengkompilasi program, kita jalankan saja:
membuat
Langkah 2
Menyiapkan Kode JavaScript
Format JavaScript yang dibutuhkan relatif minimal. Tidak ada tag pembuka atau penutup yang diperlukan dan file kami dapat menentukan tindakan yang ingin dilakukan. Untuk menguji fungsionalitas JavaScript, kita bisa menggunakan contoh string seperti yang ada di bawah ini. Kode JavaScript ini hanya akan membuka jendela peringatan dengan teks "WeLcOmE TO My SiTeS."
window.alert ("WeLcOmE TO My SiTeS");
Kita bisa menyimpan teks ini sebagai nama file pilihan kita atau langsung mengirimkannya ke script.js dengan string command line berikut.
echo "window.alert (" Null Byte ");" > script.js
Langkah 3
Menyematkan JavaScript ke dalam gambar
Kode JavaScript dapat disematkan ke file GIF, BMP, WEBP, PNM, atau PGF manapun. Namun tergantung dari keterbatasan dimana gambar akan diupload, kita harus mempertimbangkan bagaimana kita membentuknya.
Jika gambar akan diupload sebagai avatar atau gambar profil di situs web, kita harus memastikan keduanya tidak terlalu besar dari sebuah file atau resolusi itu melebihi ukuran maksimum. Jika gambar dengan JavaScript tersemat diskalakan atau dikompresi oleh situs web atau jika situs mengeluarkan data EXIF, fungsionalitas kode mungkin tidak dipertahankan, namun harapannya adalah jika Anda mengunggah gambar yang sesuai dengan persyaratan yang dinyatakan di situs akan menyimpannya di lokasi yang dihosting seperti apa adanya tanpa perubahan apapun. Saya hanya menggunakan gambar disimpan sebagai file GIF dengan diekspor menggunakan GIMP.
Langkah 4
Menggunakan Imagejs
Setelah kami memiliki kedua kode yang ingin kami embed dan gambar yang ingin kami tambahkan kodenya, kami dapat menyematkannya menggunakan parameter berikut. Script dalam contoh ini berjudul "script.js" dan gambar "image.jpg", keduanya berada di direktori yang sama dengan program gambar seperti yang bisa kita konfirmasikan dengan menjalankan ls.
Sintaksnya dimulai dengan menjalankan program imagejs. Argumen pertama dalam hal ini gif menunjukkan jenis file. Argumen kedua mengacu pada naskah yang kita gunakan dan argumen terakhir yang mengikuti flag -i adalah gambar yang ingin kita ubah.
./imagejs gif script.js -i image.gif
Nama file output. pada kasus ini. akan menjadi "script.js.gif". Namun kita bisa mengganti namanya menjadi apapun yang kita pilih.
Langkah 5
Menguji Script
Untuk menguji fungsionalitas gambar skrip, mari buat halaman uji HTML dengan tag pembuka dan bodi.
<html>
<body>
<img src = "script.js.gif">
<script src = "script.js.gif"> </ script>
</ body>
</ html>
Kita bisa menyimpan file ini sebagai "script.html" atau nama file pilihan kita. Saat kita membukanya di browser, seharusnya terlihat seperti gambar.
Tag <img> telah disertakan untuk menunjukkan bahwa gambar GIF masih berfungsi sebagai gambar, namun bisa diabaikan dan skripnya tetap berjalan.
Melayani dari file ini bekerja sebagai file system tidak menentukan jenis file mime. Sebagian besar server web modern akan menentukan jenis mime untuk file yang dilayaninya berdasarkan ekstensi file. Jika ini masalahnya dan server web menentukan jenis mime gambar (seperti gambar / gif), peramban modern tidak akan mencoba mengeksekusi skrip karena jenis mime gambar tidak dapat dieksekusi.
Langkah 6
Menyerang
Sekarang setelah kami membuat cara untuk menyematkan JavaScript di gambar, kami ingin melihat apa yang dapat kami lakukan dengan kode JavaScript tersebut dan bagaimana cara menyuntikkan ke situs web langsung.
Perintah berikut akan mencoba untuk membuang menulis cookies ke halaman web yang disajikan. Kuki ini mungkin dapat digunakan untuk meniru identitas pengguna dengan mencuri token autentikasi mereka. Sekarang yang jelas hanya menuliskannya ke browser mereka tidak akan membawa mereka ke Anda (Anda harus menulis naskah untuk mempostingnya dengan tenang ke server Anda sendiri), namun ini akan menjadi bukti konsep sederhana:
document.write ('cookie:' + document.cookie)
Akhirnya untuk menyebarkan serangan tersebut, kami perlu menemukan tempat untuk mengunggah gambar dan bidang lain yang rentan terhadap serangan XSS di mana kami dapat lolos dari verifikasi masukan dan menggunakan tag <script> atau (lebih mudah) memuat gambar (sebagai skrip) dari laman web phishing kami sendiri. Pada contoh kami mengupload avatar kami 1337.gif dan mengikuti tag keluar </ textarea>, kami menyertakannya dalam tag skrip. Setelah ini, siapa pun yang melihat profil ini akan menghapus cookie mereka ke jendela browser mereka. Ganti script di atas dengan yang diam-diam memposting nilai-nilai document.cookie ke server yang Anda pilih dan Anda sendiri yang memiliki kredensial kredensial diam.
Langkah 7
Melawan terhadap serangan
Solusi untuk bertahan melawan serangan seperti ini di sisi klien mungkin sesederhana menginstal NoScript dan tetap berpegang pada situs yang dapat dipercaya yang menghabiskan banyak waktu untuk melindungi diri mereka dari serangan XSS. Namun cukup sulit untuk membedakan skrip yang bagus dan yang buruk dan tanggung jawab untuk mencegah injeksi JavaScript berbahaya ada di pundak pengembang web dan administrator.
Agar pengembang web benar-benar menghindari jenis JavaScript, PHP atau injeksi SQL, solusinya sama masukan sanitasi dan pengelolaan hak istimewa pengguna. Jika pengguna pada titik tertentu dapat mencapai eksekusi kode jauh, sebagian besar pertempuran telah hilang. Pastikan server web Anda up to date dan dikonfigurasi dengan benar untuk menampilkan gambar / * jenis mime untuk file gambar yang Anda host. Meskipun bisa melakukan sedikit kerja lebih banyak, praktik terbaik adalah mengupas data EXIF dari gambar yang diupload pengguna ... atau jika Anda tidak tahu cara melakukannya, cukup gunakan salah satu gambar yang mengubah ukuran perpustakaan seperti ImageMagick. untuk ukuran ulang dan kompres ulang gambar yang diunggah karena ini akan sering membuang data EXIF sebagai bagian dari proses.
Comments
Post a Comment
WeLcOmE TO My SiTeS