root@system:~# less myfile
-bash: /bin/less: Input/output error
Sistem file root sudah mati. Tapi kucingku masih hidup (dalam ingatanku):
root@system:~# cat > /tmp/somefile
C^d
root@system:~#
Tapi dia agak kesepian, semua temannya pergi:
root@system:~# mount
-bash: /bin/mount: Input/output error
root@system:~# dmesg
-bash: /bin/dmesg: Input/output error
root@system:~# less
-bash: /bin/less: Input/output error
root@system:~# chmod
-bash: /bin/chmod: Input/output error
Sistem masih berjalan, dan memenuhi tujuannya. Saya tahu, saya tahu, satu-satunya respons yang waras untuk hal ini adalah mematikan sistem dan mengganti drive root. Sayangnya itu bukan pilihan karena akan menghabiskan banyak waktu dan uang. Juga, itu akan membunuh kucing saya, dan itu akan membuat saya sedih.
Saya sudah berpikir untuk membawanya teman biasa dari donor. Saya tidak berani mencoba scp mereka, kalau-kalau ssh mencoba memuatnya dan memotong garis (biner hilang pula). Ini terdengar seperti pekerjaan untuk sepupu kucing saya:
root@system:~# netcat -l 1234 > /tmp/less
-bash: netcat: command not found
Sayangnya dia sudah lama pergi.
Sekarang, saya dapat mencoba menipu kucing saya untuk melakukan ritual untuk membangkitkannya:
cat > netcat < /dev/tcp/localhost/9999
Dan semacam itu berhasil. Dia hampir hidup:
root@system:/tmp# /tmp/netcat
-bash: /tmp/netcat: Permission denied
Dia hanya membutuhkan percikan kecil kehidupan. +x
Mantra sihir kecil yang tidak bisa saya baca saat ini.
Bisakah Anda membantu saya membawa teman kucing saya kembali?
sumber
/lib/ld-linux.so.2 ./netcat
(atau setara dengan sistem Anda) dan menjalankan sesuatu?Jawaban:
Ada beberapa kemungkinan, semua tergantung pada parameter yang tepat dari situasi Anda saat ini. Saya akan menganggap Linux dalam contoh-contoh berikut di mana berlaku, tetapi fungsi serupa ada pada platform lain dalam banyak kasus.
Anda mungkin bisa mendapatkan loader dinamis untuk menjalankan executable untuk Anda. Dengan asumsi
cat
terkait secara dinamis, platform Anda yang setara dengan/lib/ld-linux.so.2
kemungkinan juga ada di memori dan dengan demikian dapat digunakan untuk menjalankan biner:Anda mungkin memiliki lebih dari satu (32 dan 64-bit kemungkinan) dan mungkin ada beberapa salinan yang tersedia, atau symlink yang perlu diselesaikan. Salah satunya mungkin bekerja.
Jika Anda memiliki sistem file vfat atau NTFS yang di-mount, atau yang lain yang memperlakukan semua file sebagai 777, Anda dapat membuat executable Anda di sana.
Jika ada partisi yang dipasang yang tidak Anda pedulikan kontennya, pada drive yang sebagian besar masih berfungsi, Anda dapat mengganti konten dengan gambar baru dari tipe sistem file yang sama yang berisi file yang dapat dieksekusi yang Anda inginkan -
cat
seharusnya tidak masalah untuk ini di peran yang biasa digunakan orangdd
, dan Anda dapat memberikan gambar melalui jaringan.Yang ini masuk akal, tetapi memiliki banyak tempat untuk tidak bekerja tergantung pada apa yang sebenarnya masih ada dalam memori dari partisi itu.
Jika ada setiap file yang diakses yang memiliki izin eksekusi pada setiap filesystem dapat ditulis, Anda dapat
cat >
ke dalamnya untuk mengganti isi dengan biner yang Anda pilih.ctypes.sh
, yang menyediakan antarmuka fungsi asing ke Bash, laludlcall chmod ./netcat 511
.Anda dapat membawa file perpustakaan dinamis
foo.so
dari konstruksi Anda dan kemudiancat
memuatnya atas nama Anda dengan caraLD_PRELOAD
, memungkinkan Anda untuk mengeksekusi kode sewenang-wenang.Jika Anda mencegat, misalnya
open
:maka Anda dapat melakukan apa pun yang perlu Anda lakukan di sana.
Saran saya adalah membawa
busybox
executable yang terhubung secara statis sebagai item pertama (atau benar-benar, satu-satunya item) sehingga Anda memiliki berbagai perintah yang tersedia tanpa menggunakan kembali hack apa pun yang membuat Anda sampai pada titik kelelahan.sumber
busybox
": Catatan yangsash
secara khusus dirancang untuk jenis penggunaan ini dan mungkin lebih mudah tersedia dalam keadaan darurat (mis. Anda dapat menginstalnya terlebih dahulu, dan membiarkan salinannya berjalan di suatu tempat sehingga tersimpan di memori ketika sistem istirahat ... atau Anda bisa membuang hewan peliharaan Anda dan membeli sekelompok sapi sebagai gantinya, saya kira).