Kadang-kadang ketika saya cat
secara tidak sengaja file biner, terminal saya rusak. Tidak ada yang cepat reset
tidak bisa perbaiki, tetapi tidak bisa seorang penyerang secara teoritis membuat file yang, ketika ditampilkan pada terminal, akan mengeksekusi beberapa kode arbitrer? Melalui exploit di terminal emulator atau lainnya.
terminal
cat
special-characters
Gunchar
sumber
sumber
more
) atau terminal-aware (less
) untuk memeriksa isi file. Tidak hanya itu tidak akan membuat terminal Anda dalam keadaan aneh, seluruh file tidak akan terbang dalam satu kesempatan.stty sane
perintah mereset xterm (atau serupa) yang telah beralih ke misalnya set karakter yang berbeda.mosh
dokumentasi memiliki beberapa pemikiran tentang itu: mosh.mit.edu/#techinfoJawaban:
Apakah keluaran seperti itu dapat dieksploitasi tergantung pada program terminal, dan apa yang dilakukan terminal itu tergantung pada kode pelarian yang dikirim. Saya tidak mengetahui program terminal memiliki fitur yang dapat dieksploitasi, dan satu-satunya masalah sekarang adalah jika ada buffer overflow yang tidak diketahui atau sesuatu seperti itu, yang dapat dieksploitasi.
Dengan beberapa
hardware
terminal yang lebih lama, ini bisa menjadi masalah ketika Anda memprogram mis. Tombol fungsi dengan jenis urutan pelarian ini, dengan menyimpan urutan perintah untuk kunci tersebut dalam perangkat keras. Anda masih memerlukan penekanan tombol fisik untuk mengaktifkannya.Tapi selalu ada (seperti Hauke yang ditandai dengan sangat tajam sebagai 'braindead') orang yang mau menambahkan fitur seperti itu jika itu memecahkan masalah bagi mereka, tidak memahami celah yang mereka buat. Dalam pengalaman saya dengan perangkat lunak open source adalah bahwa, karena banyak mata melihat kode, ini lebih kecil kemungkinannya terjadi seperti halnya dengan sumber tertutup. (Saya ingat bahwa dalam program surat pada Silicon Grahpics 'Irix, pada pertengahan ninetees, Anda dapat menyertakan perintah yang akan dieksekusi pada mesin penerima, jalur nyata ke executable, ....)
sumber
write
perintah - sehingga menjalankan perintah / skrip sebagai pengguna yang memiliki terminal. Seharusnya alasan mengapa banyak merekomendasikan mematikan pesanmesg -n
untuk pengguna sebagian besar waktu, dan untukroot
selalu . AFAIK, ini sebenarnya dilakukan - walaupun saya tidak tahu apakah itu pernah dieksploitasi. Jadi teks acak daricat
executable ted, bisa mungkin akan dieksekusi.Kebanyakan emulator terminal akan mengirimkan kembali beberapa respons, jika mereka menerima urutan pelarian tertentu (lihat dokumentasi urutan kontrol xterm ). Misalnya, Anda dapat mengirim
\e[0c
ke emulator mirip VT100 dan itu akan mengirim kembali atribut perangkat, seperti\e[?1;2c
(Ini mungkin apa yang diamati Keith.) Tetapi jawaban ini bukan string acak. Namun, memiliki executable yang bernama di2c
suatu tempat di sistem Anda yang melakukan sesuatu yang fatal adalah ide yang buruk.Pembaruan: Risiko sebenarnya lebih besar dari yang saya kira, karena kemungkinan untuk mengatur judul jendela xterm dan mengirim kembali judul menggunakan urutan pelarian yang sesuai ( http://www.securityfocus.com/bid/6940/ ) . Berbeda dengan contoh di atas, judul dapat berupa string yang hampir sewenang-wenang.
sumber
Ini mengubah judul terminal di Terminal GNOME 3.6.1, kecuali diganti oleh sesuatu seperti PS1 :
Sekarang buka jendela Terminal GNOME baru untuk menguji
cat
versinya:Yap, ini juga menentukan judul terminal.
Dulu ada masalah keamanan dengan kode pelarian yang menghasilkan judul yang dicetak ke baris perintah , sehingga Anda dapat secara efektif membuat file, yang ketika
cat
ed akan dicetak (saya tidak yakin apakah Anda bisa meletakkan baris baru di sana) perintah sewenang-wenang. Aduh!sumber
Meskipun menggunakan
cat
mungkin tidak menghasilkan eksekusi kode, kode melarikan diri akan diproses sehingga Anda dapat dengan mudah disesatkan sehingga menganggap skrip tidak berbahaya padahal sebenarnya itu berbahaya.Berikut adalah contoh perintah yang dapat Anda jalankan yang akan membuat skrip shell "jahat":
Saat Anda memeriksa file, tampaknya tidak cukup berbahaya:
Tetapi jika Anda benar-benar menjalankannya ...
Skrip bekerja dengan memasukkan kode pelarian mentah untuk menggerakkan kursor ke atas beberapa baris, sehingga skrip lainnya ditulis di atas kode berbahaya, menyembunyikannya.
Hampir semua program lain akan mengungkapkan skrip untuk apa itu. Hanya program yang tidak memproses konten file (seperti
cat
,more
danless -r
) yang akan menghasilkan output yang menyesatkan.Perhatikan itu
tail
danhead
juga hasilkan keluaran menyesatkan yang sama. Oleh karena itu, menggunakan "less + F" lebih aman daripada "tail -f".sumber
echo $(cat demo.sh)
,cat demo.sh | grep . --color=yes
(Catatan:--color=yes
adalah apa yang menunjukkan kode "jahat" di sini) atau bawaancat -v demo.sh
.cat
dalam menampilkan konten file .cat
file sewenang-wenang, seperti pertanyaan yang diajukan!Saya benar-benar mengalami
xterm
memasukkan karakter sewenang-wenang ke dalam dirinya sendiri seolah-olah saya telah mengetiknya. Dan kadang-kadang ini rupanya termasuk karakter baris baru, sehingga saya mendapatngwerm:0riu: command not found
tanggapan. Saya tidak melihat alasan mengapa seseorang tidak dapat membuat file yang akan mengirim perintah spesifik dan berbahaya. Jadi ya, setidaknya beberapa terminal rentan terhadap serangan dengan dampak sewenang-wenang.sumber
Emulator terminal pada dasarnya hanya mencetak karakter yang dikirim ke sana.
Apa pun selain hanya mencetak karakter pada posisi saat ini, seperti mengatur posisi baru, mengubah warna, mengubah judul, dll., Dilakukan dengan urutan melarikan diri.
Himpunan urutan pelarian yang didukung biasanya terdiri dari standar yang didefinisikan dengan baik seperti ANSI , yang tidak menentukan cara untuk memulai proses lain. Meskipun mungkin untuk mengimplementasikan urutan seperti itu, saya tidak mengetahui adanya emulator terminal yang sengaja membiarkan hal-hal seperti itu.
Secara teori, bug seperti buffer overflow dapat digunakan untuk memicu fungsi sewenang-wenang. Tetapi ini juga bisa dilakukan di hampir semua biner lainnya.
sumber
Secara umum biasanya tidak ada risiko untuk melakukan capping file arbitrer. Metode biasa saya untuk menganalisis file adalah dengan melakukan hal berikut:
Di atas memungkinkan saya untuk menentukan jenis file melalui
file
perintah danstrings
perintah memungkinkan saya untuk membuang string yang dapat diidentifikasi dari file biner calon yang saya tidak yakin tentang garis keturunan mereka.contoh
keluaran file output stringsumber