Beberapa waktu lalu di kalangan peneliti keamanan, sangat "modis" untuk menemukan penyimpanan cloud AWS yang tidak terkonfigurasi dengan berbagai jenis informasi rahasia. Pada saat itu, saya bahkan menerbitkan sebuah catatan kecil tentang bagaimana penyimpanan cloud terbuka Amazon S3 ditemukan.
Namun, waktu berlalu dan fokus dalam penelitian telah bergeser ke pencarian untuk database domain publik yang tidak aman dan terbuka. Lebih dari setengah kasus kebocoran data besar yang diketahui selama setahun terakhir adalah kebocoran dari basis data terbuka.

Hari ini kami akan mencoba mencari tahu bagaimana database tersebut ditemukan oleh peneliti keamanan ...
Penafian yang diperlukan: artikel ini tidak membahas dan tidak mengangkat masalah hukum dan etika terkait dengan pencarian dan identifikasi database yang tersedia untuk umum. Semua informasi di bawah ini harus dianggap semata-mata sebagai pendidikan.
Saya tidak akan “menemukan Amerika” jika saya mengatakan bahwa alat utama untuk mencari basis data terbuka adalah mesin pencari khusus Shodan.io, BinaryEdge.io dan Censys.io. Saya hanya akan membuat catatan bahwa ini bukan layanan gratis, dan Anda harus membayar akses ke hasil pencarian lengkap (dalam kasus Shodan itu adalah $ 59 / bulan, BinaryEdge - $ 50 / bulan, dan untuk Censys - $ 99 / bulan untuk paket dasar minimum). Versi gratis dari mesin pencari sangat membatasi jumlah hasil dalam penerbitan.
Selain pengalaman pencarian klasik seperti Google menggunakan fungsi pencarian, mesin pencari ini memberikan kemampuan untuk terhubung melalui API. Pemilik langganan berbayar yang beruntung akan menerima kunci API. Ini memungkinkan seseorang untuk secara signifikan memfasilitasi tugas membersihkan tumpukan sampah pencarian. Saya telah memberikan daftar skrip yang berguna dan program otomasi pencarian yang menggunakan kunci API di akhir artikel ini.
Mari kita lihat contoh mesin pencari Shodan: cara menemukan database MongoDB dan Elasticsearch yang terbuka.
Permintaan paling sederhana dan paling jelas yang meminta upaya adalah "MongoDB":

Dari tangkapan layar di atas, kita dapat melihat bahwa permintaan ini mengembalikan semua server MongoDB yang diindeks (pada port default 27017). Selain itu, kebanyakan dari mereka (tiga yang pertama dalam tangkapan layar) akan menjadi basis data tertutup yang memerlukan kredensial akun. Bukan itu yang ingin kami temukan. Lebih tepatnya, itu tidak menarik sama sekali.
Mari kita sedikit mempersulit kueri menggunakan filter pencarian "semua:" informasi server mongodb "semua:" metrik "":

Hasilnya terlihat jauh lebih baik. Semua basis data yang ditemukan tersedia secara bebas pada saat mesin pencari mengindeksnya. Sangat mungkin bahwa kita akan dapat terhubung ke alamat IP yang ditentukan menggunakan manajer apa pun untuk MongoDB (misalnya, Manajer NoSQL untuk MongoDB atau Studio 3T untuk MongoDB).
Untuk menemukan contoh MongoDB tidak terauthentikasi yang juga bertindak sebagai server penyimpanan file, Anda dapat mencoba menggunakan kueri "port: 27017 -semua:" sebagian "semua:" fs.files ""
Satu dapat membatasi pencarian ke negara manapun. Katakanlah untuk mencari MongoDB terbuka di China: (permintaan "semua:" informasi server mongodb "semua:" metrik "negara:" cn ""):

Untuk mencari database terbuka Elasticsearch, lebih mudah menggunakan kueri "port:" 9200 "all:" indeks elastis "":

Untuk menerapkan filter yang lebih kompleks (batasan ukuran database, tanggal server dalam indeks, dll.) Pada hasil pencarian, seseorang dapat menggunakan skrip dan program khusus. Untuk melakukan ini, orang akan memerlukan akses berbayar dan kunci API, seperti yang saya tulis di atas.
Berikut adalah daftar kecil tautan yang mungkin berguna:
- cli.shodan.io adalah konsol resmi Shodan.
- github.com/woj-ciech/LeakLooker adalah program python untuk mencari basis data terbuka (MongoDB, CouchDB, Elasticsearch, dll.).
- lampyre.io adalah antarmuka grafis yang sangat kuat (dan masih sangat buggy!) untuk mencari dan memvisualisasikan apa yang Anda temukan. Ini memiliki template bawaan untuk pencarian MongoDB dan banyak lagi. Ini dalam pengujian beta dengan semua konsekuensi yang menyiratkan ...