Cara kehilangan akses ke sistem langsung dengan hanya meraba-raba kode sumber

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
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
Gambar 2. Output: git log --diff-filter = D --summary

Sistem 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
Gambar 3. Cara menemukan kata sandi asli dalam skrip database

Janji 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 --summary

2. 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

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


All Articles