Bagaimana baghunter mencegat surat pos udara di ZeroNights



Banyak yang telah dikatakan tentang Bug Bounty, dan kebutuhan akan program semacam itu bagi perusahaan tampak jelas. Selama keberadaan program kami sendiri, Mail.ru Mail membayar lebih dari $ 250.000, pembayaran rata-rata adalah $ 379, kami sudah menulis sedikit lebih banyak tentang ini. Dan hari ini, menggunakan contoh konferensi keamanan informasi ZeroNights baru-baru ini, kami akan berbicara tentang bagaimana Anda dapat menarik peretas untuk berpartisipasi dalam pencarian bug dan kerentanan melalui acara khusus.

Tahun ini, konferensi ZeroNights diadakan di A2 Green Concert Club di St. Petersburg. Meskipun pindah dari Moskow, konferensi ini mengumpulkan lebih dari 1000 peserta dalam 2 hari. Selama konferensi, laporan dari banyak spesialis keren terdengar. Jika Anda memerlukan hardcore, lihat NUClear explotion, Dari Mode Grafis Ke Mode Dewa, Kerentanan Penemuan Virtualisasi GPU, Meneliti Marvell Avastar Wi-Fi: dari nol pengetahuan hingga RCE nol-sentuh over-the-air. Tahun ini ada juga banyak laporan menarik tentang Web, Anda bisa melihat slide dan WebVillage dan tidak hanya. Secara pribadi, laporan dari Ilya Nesterov dan Sergey Shekyan penting bagi saya. Membedakan bot dari pengguna sungguhan menjadi semakin sulit. Baca lebih lanjut tentang laporan di sini .

Tugas kita


Kami menetapkan sendiri tugas-tugas berikut:

  • Mempromosikan merek dan program Bug Bounty di komunitas.
  • Merekrut spesialis cerdas yang berhasil mengatasi tugas.

Ide


Tantangan paling sulit dalam proyek-proyek tersebut: untuk mengembangkan tugas-tugas menarik yang, pertama, akan menarik peserta, dan kedua, memungkinkan kami untuk menguji keterampilan mereka yang sebenarnya.

Tahun ini stan kami adalah gedung kantor yang dilengkapi dengan surat pneumatik. Inti tugas: kepala pos udara mengirim surat ke akuntan, dan tugas peretas adalah mengubah jalur dan memotong surat menggunakan peredam khusus.

Stand tampak seperti ini:



Alih-alih surat itu sendiri, kami menggunakan bola tenis, yang turun dari atas ke bawah di drive yang diperlukan, secara default di "akuntansi". Itu perlu untuk mengaktifkan gerbang, yang dikontrol menggunakan Arduino + RPi3, dan mengarahkan "mail" ke drive lain.

Skema Tindakan:

  • Kami terhubung ke jaringan Wi-Fi pekerjaan.
  • Kami menemukan di jaringan Raspberry Pi, yang terhubung ke Arduino, yang mengontrol peredam.
  • RPi sedang memutar server web. Dua tugas harus diselesaikan - mengeksploitasi kerentanan dan pada akhirnya mereka memberikan tombol untuk mengaktifkan damper, yang memungkinkan pengalihan "mail"



Bola melambangkan surat pneumatik:



Gagasan untuk tugas yang kami ambil dari laporan para peneliti kami.

Misi


Dalam tugas pertama, peserta harus menemukan host RPi3 dan menemukan ada kerentanan konfigurasi khas untuk server web Apache: halaman / server-status, yang menampilkan semua permintaan HTTP yang masuk. Antara lain, permintaan dengan nilai rahasia dalam parameter GET datang ke halaman ini, yang diizinkan melewati level pertama. Untuk penugasan ini, pengunjung menerima kode promosi $ 100 untuk berpartisipasi dalam program Bug Bounty kami.

Solusi
Kerentanan konfigurasi Apache dicari oleh alat biasa seperti dirbuster, baris status server ada di semua kamus saat ini. Selain itu, kami meninggalkan beberapa tips sehingga tugas dapat diselesaikan tanpa skrip dan program, bahkan dari telepon biasa.

Untuk menyelesaikan tugas kedua, perlu untuk hati-hati mempelajari isi dari halaman pemantauan yang sudah dikenal. Dalam kode aplikasi klien, perlu untuk menemukan metode tersembunyi yang tidak dipanggil dari antarmuka, tetapi mengandung kerentanan - injeksi NoSQL "buta" dalam Mongodb.

Solusi
Untuk mengotomatisasi injeksi buta, dua tugas perlu diatasi:
Tulis skrip yang dapat menerima 1 bit informasi dalam satu permintaan. Pada output, Anda harus dapat memasukkan ekspresi logis yang menarik ke dalam permintaan dan, sesuai dengan respons server, pahami apakah itu benar atau salah.

Untuk mengetahui cara mendapatkan informasi yang menarik dari basis data sedikit demi sedikit (misalnya, jika Anda ingin mengetahui nilai dari bidang rahasia = 'some_secret', Anda dapat menggunakan ekspresi reguler. Pertama-tama kita mengetahui rahasia karakter pertama ~ '^ a', rahasia ~ '^ b' ... rahasia ~ '^ s' ... Setelah itu, rahasia kedua ~ '^ sa', rahasia ~ '^ sb' ... Demikian pula, kita mendapatkan seluruh token rahasia).

Ini bukan satu-satunya dan bukan implementasi yang paling efisien, Anda dapat melihat opsi yang lebih baik dalam kode sqlmap.

Kesulitan utama adalah tumpukan teknologi atipikal: MeteorJS, yang secara aktif menggunakan Websockets, serta MongoDB dan Pubsub bukannya permintaan dan tanggapan HTTP biasa, tidak memungkinkan penggunaan alat yang ada dan mengharuskan peserta untuk dapat mengotomatisasi serangan sendiri. Banyak peserta mencari kelemahan dalam fungsi platform MeteorJS itu sendiri, salah mengartikannya sebagai kode pekerjaan. Juga, untuk beberapa peserta ada kesulitan dalam mengotomatisasi permintaan melalui Websockets.



Peserta menerima sweatshirt Mail.ru Bug Hunter sebagai hadiah untuk kontes ini.

Hasil


Hanya dalam dua hari konferensi, lebih dari 200 orang berpartisipasi dalam kompetisi kami. 100 peserta menyelesaikan tugas pertama, 45 orang menyelesaikan tugas kedua.

Tentu saja, setelah berhasil menyelesaikan tugas, kami mewawancarai langsung di tempat. Kartu yang dihasilkan seharga $ 100 memiliki efek yang tertunda, tetapi beberapa di antaranya telah diaktifkan dan kami mendapatkan bug yang baik pada H1. Mereka mendorong peretas untuk mencari bug baru, membantu kami meningkatkan sistem kami dan meningkatkan keamanan. Kartu kecil - hasil yang bagus. Dan seratus dolar adalah seratus dolar.



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


All Articles