Fungsi program CGI sangat kuat, tetapi justru karena itu, jika Anda, sebagai pengembang CGI atau administrator sistem, tidak memperhatikan penulisan dan pengaturan program CGI, sistem Anda akan berlubang. Artikel ini membahas masalah keamanan CGI.
3. Keamanan CGI
Fungsi program CGI sangat kuat, tidak hanya dapat berfungsi seperti program biasa, tetapi juga dapat mempublikasikan hasil program di WEB. Namun justru karena fungsi program CGI begitu kuat, jika Anda, sebagai pengembang CGI atau administrator sistem, tidak memperhatikan penulisan dan pengaturan program CGI, sistem Anda akan berlubang, sehingga beberapa pengguna ilegal dapat memanfaatkannya. dari mereka.
Keamanan yang disebutkan di sini bukan disebabkan oleh spesifikasi CGI, tetapi disebabkan oleh pemrograman dan pengaturan sistem yang tidak tepat. Spesifikasi CGI memungkinkan pengguna untuk memanfaatkan kekuatan komputasi server. Perhitungan yang tidak tepat di serverlah yang menyebabkan kerentanan keamanan sistem. Di bawah ini saya berikan kerentanan keamanan CGI pada sistem UNIX.
# !/usr/local/bin/Perl
#formmail.cgi
memerlukan "cgi.pl";
# Luncurkan aplikasi email "/bin/mail" dengan judul Subjek: dari kolom "nama formulir".
open (MAIL, "|/bin/mail -s '".$input{"formname"}."' webweave");
# Tambahkan kolom kirim "formcontents" sebagai isi pesan
PRint MAIL $input{"formcontents"};
tutup(MAIL);
keluar(0);
Dalam contoh ini, program CGI mengirimkan informasi formulir ke /bin/mail dan mengirimkannya ke server webveave. Dalam kebanyakan kasus, program CGI ini dapat menyelesaikan tugas secara normal, namun program CGI ini tidak menyaring informasi yang dimasukkan oleh pengguna dalam bentuk WEB, sehingga meninggalkan risiko keamanan. Ketika pengguna atau orang dengan motif tersembunyi memasukkan data yang salah, hal ini dapat menyebabkan kesalahan sistem atau mendapatkan izin yang tidak semestinya.
Misalnya, pengguna mengisi konten berikut di "formname" formulir WEB:
"ls /etc/passwd '[email protected] #'
Konten /etc/passwd akan ditampilkan di browser WEB pengguna. Jika file passwd sistem UNIX ini tidak memiliki bayangan, pengguna dapat menggunakan konten ini untuk mencoba memecahkan kata sandi menggunakan crack jack atau crack john!
Seperti disebutkan sebelumnya, keamanan CGI adalah tanggung jawab programmer dan administrator sistem. Sekarang saya akan membahas hal-hal yang harus diperhatikan oleh keduanya:
Pekerjaan administrator sistem:
1. Bekerja sama dengan pemrogram untuk berbagi informasi tentang keamanan server, saling memeriksa kode satu sama lain secara bersamaan, dan menemukan masalah keamanan dalam kode secara tepat waktu.
2. Gunakan perangkat lunak server yang baik dan sering-seringlah mengunjungi situs WEB perangkat lunak server untuk mempelajari informasi terbaru.
3. Batasi pengguna server ke host jaringan tertentu, gunakan fungsi manajemen keamanan server, atur kontrol akses perutean, dll.
4. Membatasi fungsi CGI, membatasi beberapa layanan lanjutan untuk pengguna tepercaya, membatasi penggunaan program CGI yang teruji untuk pengembang, dan hanya menyediakan program CGI yang teruji kepada pengguna.
5. Saat menggunakan program CGI orang lain, periksa kodenya dengan cermat.
6. Batasi penggunaan program CGI pada lingkungan yang dilindungi, atur server ke akses pengguna yang tidak memiliki hak istimewa, dan atur akun atau grup yang berjalan khusus untuk program CGI.
7. Mengatur server yang menjalankan program CGI di luar firewall. Perlu dicatat bahwa server yang menjalankan program CGI harus diatur di luar firewall. Jika diatur di dalam firewall, pengguna ilegal akan menemukan kerentanan keamanan server program CGI, mereka akan Anda dapat mengontrol semua host di dalam firewall!
8. Kurangi prioritas menjalankan program CGI untuk mencegah pengguna menjalankan program CGI dalam jumlah besar secara jahat yang menyebabkan kelebihan beban server.
9. Berlangganan email tentang keamanan jaringan dan berpartisipasi dalam grup berita keamanan jaringan.
Pekerjaan Pemrogram CGI:
1. Bekerja sama dengan administrator sistem untuk memahami informasi keamanan sistem dan saling memeriksa kode.
2. Gunakan program perpustakaan yang andal dan periksa kode sumber program perpustakaan.
3. Dapatkan nama klien dari REMOTE_HOST dan batasi beberapa fungsi lanjutan hanya untuk klien tepercaya.
4. Jika server WEB menyediakan konfirmasi kata sandi HTTP, gunakan kata sandi HTTP untuk membatasi akses.
5. Filter masukan pengguna dan hapus data masukan ilegal.
6. Batasi ukuran data masukan untuk mencegah pengguna jahat membebani server secara berlebihan dengan memasukkan data dalam jumlah besar.
7. Hindari meneruskan data pengguna ke aplikasi lain untuk mencegah pengguna memanggil penerjemah perintah atau mengeksploitasi kerentanan keamanan di aplikasi lain.
8. Ketika Anda menemukan kerentanan dalam suatu program CGI, jangan beritahu siapa pun, apalagi meninggalkan komentar di program tersebut. Yang harus Anda lakukan adalah segera menambal kerentanan tersebut.
9. Belajar menjadi penyerang dan cari tahu kerentanan keamanan program CGI.