Kotak Pandora: kami menganalisis eksploitasi kerentanan WinRAR menggunakan contoh pekerjaan NeoQUEST-2019


Seberapa sering WinRAR tua yang baik membantu kami! Dari waktu ke waktu, ia dengan hati-hati dan tanpa pamrih membongkar arsip kami, dan mengemasnya kembali. Tapi kami semakin tua, dan sekarang saya ingin mencoba sesuatu yang lebih menarik, bukan? Dan saat itu mereka menemukan kerentanan 19 tahun yang memungkinkan penghematan malware diekstrak dari arsip ke lokasi yang sewenang-wenang. Mari kita lihat bagaimana hal ini dapat dilakukan, dengan menggunakan contoh tugas nomor 9 dari tahap online NeoQUEST-2019 .

Menurut legenda, kami memiliki dua server. Server pertama (http://213.170.100.213:800/) memungkinkan Anda mengirim hadiah ke Pandora, yang senang membongkar semua benda tak dikenal yang menarik perhatiannya. Format "hadiah" diketahui: server hanya mengunduh arsip rar. Unduh arsip rar yang sewenang-wenang. Sebagai tanggapan, kami melihat yang berikut:


Sangat tidak mungkin Pandora tertarik pada arsip kami. Mari kita coba belajar lebih banyak tentang server menggunakan nmap:


Sekarang kita tahu bahwa server pertama:

  • memungkinkan untuk memuat arsip-arsip;
  • dibangkitkan pada Windows.

Menangkan + rar = WinRar! Mungkin, arsip diproses oleh pengarsipan ini, di mana (lebih tepatnya - di perpustakaan UNACEV2.DLL) mereka menemukan kerentanan yang telah ada selama 19 tahun. "Lubang" ini memungkinkan Anda untuk meng-unzip konten arsip ke direktori arbitrer, di mana pun pengguna mengekstraksi file. Kami menemukan deskripsi terperinci tentang mekanisme eksploitasi kerentanan di sini . Kami melanjutkan ke produksi arsip, yang berjalan dengan sendirinya dan memutuskan sendiri kemana akan membukanya.

Pertama-tama, dapatkan utilitas WinAceArchiver. Menurut instruksi yang diberikan pada tautan di atas, kami membuat arsip primitif yang berisi file hello.txt. Di WinAceArchiver, klik tombol Create, pada tab Options atur Compression to Store, lalu kembali ke tab Selection, pilih file hello.txt, tentukan path untuk menyimpan arsip kami, dan yang paling penting! - setel opsi "store path lengkap":


Selanjutnya, klik tombol "Tambah" dan dapatkan arsip Hello.ace. Tetap sedikit menyesuaikan jalur dan memperbaiki checksum. Setiap editor biner dan skrip acefile.py akan membantu kami dalam hal ini, yang akan membantu menghitung nilai aktual dengan sendirinya.

Untuk mengeksploitasi kerentanan, Anda harus menambahkan label volume sebelum jalur absolut file, yang akan dijatuhkan oleh pengarsipan. Kemudian sisa jalur akan dianggap sebagai relatif "aman". Jadi, buka editor dan modifikasi jalurnya sehingga dimulai dengan C: \ C: \ .

Itu:


Itu menjadi:


Sekarang periksa checksum menggunakan skrip acefile.py:


Perbaiki nilai saat ini:


Tinggal mengubah nama arsip kami menjadi Hello.rar. Selesai Periksa bagaimana Pandore hadiah seperti itu?


Hebat! Harapan bertepatan dengan kenyataan, dan WinRar memproses arsip persis seperti yang kami butuhkan. Tetap mencari tahu satu hal: jalan mana yang kita butuhkan?

Menurut legenda, kita tahu bahwa harta dapat "dilihat" di server kedua (http://213.170.100.213:900/). Bagaimana ini paling mudah dilakukan? Tentu saja, dengan menjalankan skrip php Anda, yang akan menghasilkan, misalnya, daftar direktori root server. Kami mengkonfirmasi dugaan kami:


Hebat, server siap untuk mengeksekusi skrip php kami! Saatnya mencari tahu di mana harus meletakkan skrip ini. Sementara kita tahu bahwa server ada di Windows - oleh karena itu, kemungkinan besar jalan dimulai dengan C: \ . Lalu? Pelajari lebih lanjut tentang server harta karun.


Di server nginx diangkat. Tentunya lingkungan Pandora mengikuti kata terakhir dari kemajuan teknologi (dalam segala hal yang tidak menyangkut pengarsipan) dan menggunakan versi nginx terbaru, yaitu 1.15.9 (Anda dapat memeriksanya di sini ). Masih menambahkan direktori root server yang ditentukan dalam file konfigurasi nginx default:


Hasilnya adalah sebagai berikut: C: \ nginx-1.15.9 \ html . Apa yang akan dijawab Pandora kali ini?

Akses ke direktori dilarang ... Tapi kami tidak bisa salah! Kami jelas berada di jalur yang benar, karena akses ditolak, tetapi direktori itu ada. Mungkin ada sesuatu yang belum kita ketahui. Kami terus mengumpulkan informasi tentang server menggunakan pemindai direktori:


Ya itu dia. Admin / direktori terdengar menjanjikan. Mari kita coba mengirim Pandce arsip ace, di mana C: \ nginx-1.15.9 \ html \ admin bertindak sebagai jalur absolut:


Sukses! Akhirnya, kami mengeksekusi skrip kami di mana direktori root server terdaftar: 213.170.100.213 : 800 / admin / test34852ED2-8996-4F81-A919-30B6FE9F03AB.php . Script mungkin terlihat seperti ini:

<?php if ($handle = opendir('C:\nginx-1.15.9\html')) { while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != "..") { echo "$entry <br>"; } } closedir($handle); } ?> 

Hasilnya adalah sebagai berikut:


Eureka! Pandorica! Demikian pula, mari kita lihat apa jenis "harta" pandorica / penuh dengan dan melihat key.txt lama ditunggu-tunggu, yang tidak lagi sulit dibaca. Selesai!

Dalam waktu dekat, artikel akan diterbitkan dengan analisis dari beberapa tugas yang tersisa. Dan segera NeoQUEST 2019 akan diadakan! Semua berita - di situs web acara, jangan lewatkan!

Source: https://habr.com/ru/post/id448742/


All Articles