Saya ingin mencoba beberapa kode shell dan saya ingin menonaktifkan perlindungan linux.
Saya tahu saya bisa mengkompilasi menggunakan flag tetapi saya tahu ada cara lain untuk menonaktifkan perlindungan ini secara umum saya tidak ingat. Bisakah kamu membantuku?
Untuk memperluas apa yang dikatakan vonbrand (dengan benar, +1), ada dua bagian perlindungan tumpukan Linux.
Tumpukan kenari
Stack canaries adalah fitur yang diacu oleh kompiler yang dirujuk oleh vonbrand. Ini tidak dapat dinonaktifkan tanpa kompilasi ulang.
Untuk membuktikan ini pada diri Anda dan lihat bagaimana mereka bekerja, ambil kode berikut:
Sekarang kompilasi itu (
gcc -fstack-protector -masm=intel -S test.c
) menjadi sesuatu yang gnu akan senang untuk berkumpul dan membaca output. Poin penting adalah saat keluar darimybadfunction
fungsi, ada sedikit kode ini:Seperti yang bisa Anda tebak, itu mengambil cookie tumpukan dari
[ebp-12]
dan membandingkannya dengan nilai digs:20
. Tidak cocok? Kemudian memanggil fungsi__stack_chk_fail
di glibc yang membunuh program Anda di sana.Ada beberapa cara untuk mengatasinya dalam hal penulisan eksploit, tetapi cara mudah dalam membangun case test shellcode adalah dengan mengkompilasi program Anda
-fno-stack-protector
.Halaman yang tidak dapat dieksekusi
Ada beberapa pertimbangan lain pada sistem Linux modern. Jika Anda mengambil rintisan pengujian shellcode yang biasa:
GCC / Linux modern akan memetakan
.rodata
bagian file PE hanya baca tanpa izin eksekusi. Anda harus mematikannya, yang dapat dilakukan dengan menggunakan contoh kode dari posting blog ini . Ide dasar: Anda gunakanmprotect
untuk menambahkan izin yang Anda inginkan ke halaman di mana data shellcode berada.Tumpukan yang tidak dapat dieksekusi
Jika Anda akan menguji skenario exploit tradisional, misalnya kode buruk saya di atas, dengan shellcode Anda, maka Anda juga perlu memastikan stack dapat dieksekusi untuk kasus-kasus sederhana. Format file PE berisi bidang untuk menentukan apakah stack dapat dieksekusi - Anda dapat menanyakan dan mengontrolnya dengan execstack . Untuk mengaktifkan tumpukan yang dapat dieksekusi, jalankan
Hal ini dapat dilakukan pada program yang sewenang-wenang tanpa perlu kompilasi ulang, tetapi tidak akan secara otomatis menonaktifkan stack kenari karena ini dipanggang saat dikompilasi.
Bonus tambahan: aslr:
Untuk mematikannya
echo 0 > /proc/sys/kernel/randomize_va_space
,.Apakah Anda baru saja memberitahu seseorang bagaimana cara mengeksploitasi penguin saya yang berharga?
Tidak. Setiap eksploit harus bekerja di sekitar stack canaries (sangat non-sepele) dan menemukan program dengan
execstack
set, atau mengaturnya (artinya tetap dapat menjalankan perintah sewenang-wenang) atau menggunakan teknik yang lebih sulit, seperti kembali ke libc / return pemrograman berorientasi.sumber
Anda dapat menonaktifkan beberapa perlindungan (stack smashing detection dan membuat stack executable) dengan opsi-opsi ini.
Anda juga dapat mematikan ASLR (pengacakan tata letak ruang alamat) dengan Bash dengan perintah:
sumber