Forensik, injeksi SQL, dan kucing yang lama menderita: analisis tugas No. 3 dari panggung online NeoQUEST-2020



Hari ini kita akan mempertimbangkan tugas paling kontroversial dari NeoQUEST-2020 : bagian pertama adalah juara dalam jumlah peserta yang melewatinya, dan bagian kedua hanya mematuhi beberapa saja. Apa yang istimewa dari dia? Pahami potongannya!


Pernahkah Anda menyelidiki dump RAM? Tahukah Anda berapa banyak hal menarik yang bisa Anda dapatkan dari sana? (spoiler: semuanya, termasuk hasil menjalankan skrip, foto terbaru, serta riwayat browser).
Bagaimana dengan suntikan SQL eksotis? Anda mengunggah gambar tertentu ke situs, dan Anda diberi informasi dari database tertutup - bukankah ini kejahatan yang ideal?
Di bagian pertama artikel, kami akan mempertimbangkan alat untuk menganalisis dump memori dan mempelajari cara mengekstrak informasi yang kami butuhkan dari sana, dan di bagian kedua artikel kami akan dengan jelas menunjukkan proses memanipulasi tag gambar untuk injeksi yang rumit :)

Jadi, tugasnya adalah mengunduh arsip, yang berisi file biner 1 GB dengan nama berbicara memdump.bin, berdasarkan yang dapat kita asumsikan bahwa ini adalah dump RAM. Kami akan menggunakan kerangka kerja volatilitas untuk penelitiannya . Volatilitas mendukung berbagai plugin yang membuatnya mudah untuk mencari dan mengekstrak dari dump berbagai informasi yang berguna untuk memeras analis. Pertama, gunakan perintah imageinfo dan dapatkan informasi tentang dump:



Dilihat oleh output dari perintah imageinfo, kita berurusan dengan dump memori Windows 7. Selanjutnya, kita akan melihat daftar proses yang berjalan di sistem pada saat dump dihapus menggunakan perintah pslist:



Dalam daftar ini, Anda dapat melihat beberapa proses menarik. Mari kita mulai studi dengan proses chrome.exe - di browser Anda selalu dapat menemukan sesuatu yang menarik. Ada plugin tambahan untuk volatilitas yang mengotomatiskan ekstraksi informasi dari proses. Sebagai contoh, plugin chromehistory akan memungkinkan kita untuk mengekstrak riwayat kunjungan browser dari dump RAM:



Dalam sejarah chrome, beberapa hal menarik dapat dilihat sekaligus. Pertama, tautan ke bagian kedua penugasan, serta permintaan pencarian tentang metadata di gambar PNG, yang juga merupakan petunjuk untuk bagian kedua, tetapi kita akan beralih ke ini nanti. Pada tahap saat ini, kami tertarik pada permintaan untuk kode promosi untuk diskon ke situs dan file-file pdf, yang mengisyaratkan objek pencarian lebih lanjut (menjalankan Acrobat Reader`a juga dapat mendorong kami dalam hal ini). Mari kita coba cari dokumen pdf dalam dump menggunakan perintah filescan:



Selamat mencoba! Sepertinya ada beberapa promo.pdf di dump. Mari kita coba menariknya menggunakan perintah dumpfiles:



Pada tahap ini, kesulitan kecil mungkin timbul karena kenyataan bahwa beberapa pemirsa dokumen pdf mungkin tidak mengenali file yang baru saja diekstrak (Anda hanya perlu menghapus byte tambahan di akhir file). Tetapi apakah kita benar-benar takut dengan beberapa byte tambahan? :) Pada akhirnya, buka dokumen dan lihat kode QR, setelah membaca yang mana, kita mendapatkan bendera dari bagian pertama tugas (dan pada saat yang sama kode promosi untuk menerima hadiah dari tim NeoQUEST - kami memberikan hadiah yang berkesan semua peserta yang menyelesaikan setidaknya satu tugas!).



Selanjutnya, cobalah untuk mendapatkan bendera kedua. Kami kembali ke situs, tautan yang ditemukan dalam riwayat browser. Untuk mengakses situs Anda perlu memasukkan kode promosi. Kami mengingat riwayat pencarian di browser dan deskripsi dokumen itu sendiri (GUNAKAN INI UNTUK BERGABUNG), dari mana kami dapat menganggap bahwa bendera pertama adalah kode promosi yang kami butuhkan. Kami memasukkannya ke dalam bidang dan sampai ke situs tempat kami ditawari untuk mengunggah gambar:



Melihat seberapa sering situs membeku, peserta kami memutuskan untuk secara eksperimental memverifikasi pemuatan semua jenis dokumen yang mungkin. Sejumlah waktu kemudian kami memahami bahwa hanya gambar PNG yang dapat diunggah ke situs. Teka-teki berikutnya adalah pesan "Tidak cukup data untuk menyimpan gambar ini, maaf!", Yang terjadi ketika Anda mencoba mengunggah gambar.

Kembali ke riwayat peramban, kami ingat tentang permintaan formulir β€œtambahkan metadata ke file png”. Menggunakan kesimpulan sederhana, kami menyimpulkan bahwa, kemungkinan besar, nilai-nilai tertentu harus dimasukkan dalam metadata untuk mengunggah gambar ke situs. Anda dapat mulai dengan menjelajahi format PNG (untuk keterangan, misalnya, klik di sini ). Pertama, periksa daftar kata kunci standar untuk gambar metadata PNG, misalnya: "Penulis", "Deskripsi", dll. Dengan menggunakan, misalnya, utilitas konversi dari set ImageMagick, tambahkan metadata ke gambar uji:

convert test.png -set 'Title' '1' -set 'Author' '2' -set 'Deskripsi' '3' -set 'Copyright' '4 '-set' Waktu Pembuatan '' 5 '-set' Perangkat Lunak '' 6 '-set' Penafian '' 7 '-set 'Warning' '8' -set 'Source' '9' -set 'Comment' '0' out.png

Kami mencoba mengunggah gambar yang dihasilkan ke situs dan menikmati keberhasilan:



Ternyata bidang metadata yang diperlukan adalah Judul, Deskripsi, Penulis, dan Hak Cipta.
Sebuah petunjuk untuk ini, omong-omong, juga dapat ditemukan di dump memori: Anda dapat menemukan penyebutan file mr_cat.png menggunakan volatilitas.



Peserta kami memutuskan bahwa dengan bantuan Tn. Cat maka perlu untuk menyuntikkan situs tersebut (banyak pesan datang ke surat kami dengan Tn. Cat dalam bentuk terkompresi, terbalik, terpantul dan penampilan tidak sedap dipandang lainnya ), tetapi kucing tidak ada hubungannya dengan itu! Dia hanya mengalihkan perhatian dan memberi isyarat kepada para peserta: well, lihat saya, ada sesuatu yang menarik di dalam! Di dalam tempat sampah, gambar hanya terpelihara sebagian; namun, dalam residunya, Anda dapat melihat bidang metadata lengkap yang diperlukan:



Silakan: sekarang kita dapat mengunggah file ke situs; namun, apa yang diberikannya dan bagaimana mencari bendera? Adalah logis untuk mengasumsikan bahwa sekali metadata diperlukan untuk mengunduh, ada kemungkinan bahwa mereka entah bagaimana digunakan untuk menyimpan file yang diunduh (misalnya, sebagai kunci dalam database). Hore! Kami mendekati pencuci mulut: kami perlu memeriksa situs untuk kemungkinan injeksi SQL. Kami mengetahui bahwa jika salah satu parameter diganti dengan tanda kutip ganda ("), maka situs akan memberi tahu kami tentang kesalahan alih-alih memuat gambar:



Sekarang kita melihat query SQL itu sendiri dan memahami bidang apa yang bisa kita operasikan untuk membangun injeksi untuk mengekstrak data dari database yang digunakan. Adapun lokasi bendera, dalam hal ini logis untuk memeriksa gambar pertama yang telah diunggah ke database. Juga, selama operasi injeksi, Anda harus memperhatikan fakta bahwa INSERT dieksekusi dalam permintaan. Ini memaksa Anda untuk membangun kueri tertentu, karena Anda tidak dapat secara eksplisit melakukan operasi SELECT dari tabel yang sama yang Anda sisipkan pada saat yang sama dengan operasi sisipan (INSERT).

Mari kita membuat permintaan untuk mengeluarkan Deskripsi gambar pertama dalam basis data:

convert test1.png -set 'Judul' '1' -set 'Penulis' '", (SELECT description FROM (SELECT * FROM picture) AS x batas 0,1)) - -' -set 'Deskripsi' '3' - set 'Copyright' '4' test.png

Unggah gambar yang dihasilkan ke situs web dan dapatkan deskripsi di bidang Hak Cipta, yang merupakan tanda:



Hore, tugas selesai! Kami berharap bahwa kami meyakinkan semua orang untuk memeriksa ulang input pengguna untuk yang ke-juta kalinya, dan juga tetap aman apel mata Anda dari membuat dump RAM Anda :)
Selesaikan artikel dengan kutipan dari orang bijak:


All Articles