Keamanan dengan contoh kehidupan nyata selalu lebih menarik.Sekali klien datang dengan permintaan untuk pengujian penetrasi. Dia punya beberapa alasan untuk khawatir, antara lain, satu terdengar: "Beberapa bulan yang lalu seorang pengembang baru datang kepada kami, mendapat akses ke kode sumber, dokumentasi, server uji, menghilang dua hari kemudian dan masih tidak menanggapi. Bagaimana ini bisa mengancam saya? Akses ke sistem live tidak diberikan kepadanya. "
Kami tidak akan berbicara tentang kesalahan pengembang, yang dapat menjadi lubang serius dalam sistem live. Semuanya jauh lebih sederhana - kode sumbernya sendiri mungkin berisi instruksi dan akses langsung.
Dari berbagai proyek yang kami uji untuk keamanan, saya akan memberikan contoh nyata ketika, dengan hanya kode sumber, kami dapat menembus sistem itu sendiri. Semua area masalah ini telah diperbaiki, dan informasi tambahan apa pun dalam tangkapan layar disembunyikan.
Sistem 1.Kode kloning dari gita tidak hanya versi terbaru, tetapi juga riwayat semua perubahan. Kami biasanya menjalankan kode sumber untuk informasi sensitif menggunakan
gittyleaks .
Dalam proyek ini, kami menemukan kunci enkripsi pribadi yang pernah dihapus dari kode, tetapi masih digunakan dalam sistem live. Kunci ini digunakan untuk otentikasi, dan mengetahui mekanismenya, kami dapat membuat cookie otentikasi untuk pengguna mana pun, termasuk administrator.
Gambar 1. Output: gittyleaks --find-anything
Sistem 2.Anda dapat menggunakan
utilitas git dan memintanya untuk menampilkan semua file yang pernah dihapus. Dalam sistem ini, kami menemukan file deployer.pem yang dulunya berada di root proyek dan digunakan untuk secara otomatis menyebarkan proyek ke server melalui saluran SSH. Port SSH di sistem langsung telah dibuka. Kenapa terbuka? Para pengembang menjawab bahwa mesin pembuat mereka berada di belakang alamat IP dinamis, dan mereka memutuskan untuk tidak menutup port - “bagaimanapun, tidak ada yang akan mengambil kunci SSH”. Astaga ...
Gambar 2. Output: git log --diff-filter = D --summarySistem 3.Dengan sistem ini, semuanya menjadi lebih mudah. Mungkin bermanfaat untuk masuk ke skrip database dan melihat bagaimana pengguna dibuat secara default. Biasanya, pengguna pertama yang membuat admin dengan izin tertinggi. Dalam skrip, kami menemukan kode yang menghasilkan hash dari kata sandi asli dan menulisnya ke database. Anehnya, 5 pengguna diciptakan, tetapi kata sandi untuk admin yang paling penting, yang membuat kami takjub, melalui sistem live. Omong-omong, kode ini bukan tahun pertama, dan tidak ada satu orang pun yang bekerja dengannya.
Gambar 3. Cara menemukan kata sandi asli dalam skrip databaseJanji itu.
1. Jika proyek Anda menggunakan gita, buka dan jalankan beberapa perintah dari folder root:
pip instal gittyleaks
gittyleaks --cari-apapun
git log --diff-filter = D --summary2. Satu aturan emas. Sistem live harus selalu memiliki kunci unik, kata sandi pengguna unik, dan semua yang ada di dalamnya harus ditutup semaksimal mungkin.
Informasi di atas disediakan hanya untuk tujuan pendidikan dan pendidikan, bagaimana melakukan sistem mereka tidak perlu.
Denis Koloshko