Nah, seperti yang didokumentasikan dalam Wikipedia dan netcat
dokumentasi, ada -e
opsi yang menyebabkannya menelurkan ( e xecute) program setelah menerima koneksi, melampirkan soket ke stdin, stdout, dan stderr dari proses. Contoh penggunaan:
nc -l -p
port_number -e
program_name
Contoh umum menunjukkan /bin/sh
atau bash
digunakan sebagai program_name . Penggunaan opsi ini tidak disarankan karena pada dasarnya membuka portal akses anonim dan tanpa kata sandi ke mesin Anda. Tentu saja, ini dikurangi dengan menggunakan program dengan daya yang lebih kecil dari shell (yang tidak memiliki kemampuan untuk melarikan diri ke shell), meminimalkan penggunaan Anda, dan merahasiakannya. Meskipun demikian, pengembang asli netcat
merasa cukup kuat bahwa opsi ini adalah ide yang buruk bahwa mereka menonaktifkannya secara default, dan mengkondisasinya di bawah opsi kompilasi "GAPING_SECURITY_HOLE". Ini disebutkan secara singkat dalam Tutorial NetCat ini dan netcat
dokumentasi lainnya .
Pencarian Google membawa saya ke diskusi tentang masalah ini di situs Stack Exchange lainnya: Stack Overflow dan Server Fault . Banyak kontributor menawarkan teknik berikut untuk melakukan hal yang sama tanpa menggunakan -e
opsi (yaitu, dalam versi netcat
yang memiliki -e
opsi dinonaktifkan):
Di server:
mkfifo
pipe_name
nc -l -p
port_number <
pipe_name |
program_name >
pipe_name
Pada klien:
nc
server_machine_name
port_number
Beberapa catatan:
- Pada beberapa versi
netcat
, -l
tersirat -p
, jadi Anda harus mengatakan adil -l
dan kemudian nomor port.
- Anda mungkin ingin membungkus solusi Anda dalam satu
while true
lingkaran.