Rumah Tutorial sistem LINUX Pemajuan port SFTP: Membolehkan fungsi ditindas

Pemajuan port SFTP: Membolehkan fungsi ditindas

Mar 17, 2025 am 09:43 AM

Pemajuan port SFTP: Membolehkan fungsi ditindas

Pengenalan

Protokol SSH menyokong tiga kategori utama aktiviti pelayan jauh: a) Pelaksanaan arahan (termasuk shell login), b) Pemajuan dan operasi rangkaian, dan c) Pemindahan fail.

Penyelenggara OpenSSH telah menentukan bahawa SFTP dan SCP tidak mempunyai tujuan undang -undang untuk penghantaran pelabuhan (melalui pilihan -L dan -R). Semasa pemindahan fail menggunakan utiliti ini, bendera yang secara eksplisit melumpuhkan ciri -ciri ini diluluskan tanpa syarat kepada SSH Executable Child.

Sesetengah pengguna mungkin memerlukan ciri -ciri ini. Subset yang jelas ialah penguji penembusan yang tugasnya mengesahkan bahawa ciri ini secara jelas dilumpuhkan pada pelayan SFTP awam.

Berikut adalah dua teknik untuk membolehkan ciri -ciri yang ditindas ini dengan mengubah suai rentetan binari SFTP itu sendiri, atau mengalihkan melalui shell yang dengan mudah boleh mengedit baris arahan. Bergantung pada fungsi platform, sama ada teknologi mungkin diperlukan untuk mencapai matlamat ini.

Butiran menekan

Pertama, adalah penting untuk mencari proses minat yang berjalan. Fungsi shell di bawah akan memaparkan PID yang sepadan dengan corak shell (perhatikan bahawa ini bukan ungkapan biasa). Ini berjalan di bawah dash debian (dan kebanyakan kerang biasa lain) dan bergantung pada pilihan PS BSD:

 <code>pps () { local a= b= c= IFS=$'\r'; ps ax | while read -ra do [ "$b" ] || c=1; for b; do case "$a" in *"$b"*) c=1;; esac; done; [ "$c" ] && printf '%s\n' "$a" && c=; done; }</code>
Salin selepas log masuk

Mulakan sesi SFTP tradisional untuk menyemak proses yang berkaitan dengannya:

 <code>$ id uid=1001(aturing) gid=1001(aturing) groups=1001(aturing)... $ sftp aturing@sftp.victimandum.com aturing@sftp.victimandum.com's password: Connected to sftp.victimandum.com. sftp></code>
Salin selepas log masuk

Kami mengandaikan bahawa pengguna UNIX tempatan di atas mempunyai akaun nama pengguna yang sama pada pelayan SFTP jauh.

Selepas sesi dijalankan, proses proses tempatan untuk nama pengguna akan memaparkan proses SSH kanak -kanak yang dihasilkan oleh SFTP:

 <code>$ pps aturing PID TTY STAT TIME COMMAND 9666 pts/0 S 0:00 sftp aturing@sftp.victimandum.com 9667 pts/0 S 0:00 /usr/bin/ssh -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings yes -oForwardAgent no -l aturing -s -- sftp.victimandum.com sftp</code>
Salin selepas log masuk

Parameter Clearallforwardings Ya di atas akan menindas sebarang percubaan penghantaran tanpa mengambil tindakan untuk memecahkannya.

Bendera pemajuan port -l dan -r tidak wujud sebagai pilihan yang sah untuk baris arahan SFTP, tetapi kita boleh menggunakan pilihan -s untuk mencetuskan mereka secara jelas untuk menentukan pengendali SSH tersuai, dalam hal ini pelayan mel:

 <code>$ cat portssh #!/bin/sh exec ssh -L2525:smtp.victimandum.com:25 "$@"</code>
Salin selepas log masuk

Sekiranya penindasan penghantaran tidak disediakan, panggilan SFTP ini mencukupi untuk mewujudkan sambungan penghantaran:

 <code>$ sftp -S ./portssh -oClearAllForwardings\ no aturing@sftp.victimandum.com aturing@sftp.victimandum.com's password: Connected to sftp.victimandum.com. sftp></code>
Salin selepas log masuk

Sekarang anda dapat melihat percubaan penghantaran dalam proses SSH kanak -kanak:

 <code>$ pps aturing PID TTY STAT TIME COMMAND 9897 pts/0 S 0:00 sftp -S ./portssh -oClearAllForwardings no aturing@sftp.victimandum.com 9898 pts/0 S 0:00 ssh -L2525:smtp.victimandum.com:25 -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings yes -o ClearAllForwardings no -oForwardAgent no -l aturing -s -- sftp.victimandum.com sftp</code>
Salin selepas log masuk

Walau bagaimanapun, cuba menghubungi pelayan mel jauh melalui port pemajuan tempatan tidak berjaya kerana mengatasi eksplisit:

 <code>$ nc localhost 2525 $</code>
Salin selepas log masuk

Penindasan tanpa syarat ini dapat dilihat dalam kod sumber:

 <code>$ sed -n /X11/,/Forwardings/p openssh-8.7p1/sftp.c addargs(&args, "-oForwardX11 no"); addargs(&args, "-oPermitLocalCommand no"); addargs(&args, "-oClearAllForwardings yes");</code>
Salin selepas log masuk

Rentetan statik ini juga dapat dilihat dalam fail binari yang disusun:

 <code>$ strings /usr/bin/sftp | grep [-]o[CFP] -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings yes -oForwardAgent no -oPort %d</code>
Salin selepas log masuk

Akhirnya, dokumentasi dengan jelas menyatakan bahawa penindasan ini disengajakan dan memberikan alasan yang munasabah:

 <code>$ man ssh_config | sed -n /ClearAllForwardings/,/default/p ClearAllForwardings Specifies that all local, remote, and dynamic port forwardings specified in the configuration files or on the command line be cleared. This option is primarily useful when used from the ssh(1) command line to clear port forwardings set in configura‐ tion files, and is automatically set by scp(1) and sftp(1). The argument must be yes or no (the default).</code>
Salin selepas log masuk

Perubahan rentetan yang disusun

Bagi mereka yang ingin melumpuhkan konfigurasi Clearallforwardings Ya, satu pilihan adalah menggunakan SED untuk mengedit rentetan dalam binari SFTP secara langsung (dengan asumsi Platform Sed adalah binari selamat):

 <code>$ sed 's/AllForwardings yes/AllForwardings no /' sftp.noclearforward</code>
Salin selepas log masuk

Pengubahsuaian langsung ini lebih mudah daripada menyusun fail binari baru.

Kami dapat mengesahkan bahawa rentetan telah diubah suai dengan jayanya:

 <code>$ strings ./sftp.noclearforward | grep [-]o[CFP] -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings no -oForwardAgent no -oPort %d</code>
Salin selepas log masuk

Walaupun kandungan dan cek SFTP yang diubahsuai akan berbeza, mana -mana Linux BuildID SHA1 yang sedia ada akan tetap sama (tetapi tidak mengemukakan tiket sokongan apabila menggunakan SFTP yang diedit):

 <code>$ file /usr/bin/sftp ./sftp.noclearforward /usr/bin/sftp: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=d7e77e24d5fac0fdc89e62a4c9c656091f2c4a33, for GNU/Linux 3.2.0, stripped ./sftp.noclearforward: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=d7e77e24d5fac0fdc89e62a4c9c656091f2c4a33, for GNU/Linux 3.2.0, stripped $ sha1sum /usr/bin/sftp ./sftp.noclearforward d8bdaf0b4642b9c324f9c2e0aeee2d9578fbe383 /usr/bin/sftp b12dda8ecfd7bd2847919b5531aea7c03364c123 ./sftp.noclearforward $ sha256sum /usr/bin/sftp ./sftp.noclearforward 986eecdfc654c9b3ff3fd0dce59690d47cf56be96a4b98a04a3682aef95d3f52 /usr/bin/sftp c8f99ce33fc129250c11dc6dbb8a01112e01124e470a92d0acefb955fd17d670 ./sftp.noclearforward</code>
Salin selepas log masuk

Anda boleh menghubungi binari SFTP yang diubah suai untuk membolehkan penghantaran port:

 <code>$ chmod 755 sftp.noclearforward $ ./sftp.noclearforward -S ./portssh aturing@sftp.victimandum.com aturing@sftp.victimandum.com's password: Connected to sftp.victimandum.com. sftp></code>
Salin selepas log masuk

Sekarang anda dapat melihat tetapan yang diubah suai dalam proses kanak -kanak:

 <code>$ pps aturing PID TTY STAT TIME COMMAND 9991 pts/0 S 0:00 ./sftp.noclearforward -S ./portssh aturing@sftp.victimandum.com 9992 pts/0 S 0:00 ssh -L2525:smtp.victimandum.com:25 -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings no -oForwardAgent no -l aturing -s -- sftp.victimandum.com sftp</code>
Salin selepas log masuk

Ciri ini diaktifkan dan dijalankan pada pelayan jauh dan dapat mengesahkan sambungan dalam shell yang berasingan:

 <code>$ nc localhost 2525 220 smtp.victimandum.com Microsoft ESMTP MAIL Service, Version: 1.2.3456.78901 ready at Sun, 1 Jan 2023 01:23:45 -0100 ^C</code>
Salin selepas log masuk
Salin selepas log masuk

Apabila penghantaran dilumpuhkan pada pelayan, pelanggan akan menerima pemberitahuan yang menunjukkan status ini apabila sambungan cuba:

 <code>channel 3: open failed: administratively prohibited: open failed</code>
Salin selepas log masuk

Pentadbir SFTP yang diberikan akaun yang tidak dipercayai sepatutnya mengesahkan bahawa konfigurasi pelayan secara eksplisit melumpuhkan pemajuan dan pelaksanaan perintah.

Beyond Posix Shell

Walaupun piawaian Dash dan Posix menyediakan set - sebagai cara untuk menetapkan semula parameter baris perintah, ciri -ciri yang lebih canggih disediakan dalam Bash dan KSH93:

 <code>$ cat ynargs #!/bin/bash echo "${@//yes/no}"</code>
Salin selepas log masuk

Ujian cepat mengesahkan penyuntingan yang berjaya:

 <code>$ ./ynargs -oForwardX11 no -oPermitLocalCommand yes -oClearAllForwardings yes -oForwardAgent no -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings no -oForwardAgent no</code>
Salin selepas log masuk

Perhatikan bahawa di atas $ {@// .../...} bukanlah POSIX yang sah dan tidak boleh berjalan di Dash atau mana -mana shell (MKSH, OKSH) yang diperoleh dari PDKSH. Banyak platform tidak mengikat kerang dengan ciri ini (seperti Android dan OpenBSD, walaupun ada cara untuk menambahnya);

Untuk memanfaatkan ciri ini dengan shell yang kuat, kami membuat direktori dan kemudian membuat pembalut SSH di dalamnya untuk membersihkan tetapan masalah:

 <code>$ cat ~/switcharoo/ssh #!/bin/bash exec /usr/bin/ssh "${@//yes/no}"</code>
Salin selepas log masuk

Kemudian tetapkan direktori sebelum Sistem SSH dalam $ Path:

 <code>$ export PATH=~/switcharoo:$PATH $ which ssh ~/switcharoo/ssh</code>
Salin selepas log masuk

Kemudian, kami memanggil sistem SFTP dalam persekitaran yang diubah suai ini:

 <code>$ /usr/bin/sftp -S ./portssh aturing@sftp.victimandum.com aturing@sftp.victimandum.com's password: Connected to sftp.victimandum.com. sftp></code>
Salin selepas log masuk

Kami melihat bahawa shell menetapkan semula parameter masalah:

 <code>$ pps aturing PID TTY STAT TIME COMMAND 10058 pts/0 S 0:00 /usr/bin/sftp -S ./portssh aturing@sftp.victimandum.com 10059 pts/0 S 0:00 /usr/bin/ssh -L2525:smtp.victimandum.com:25 -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings no -oForwardAgent no -l aturing -s -- sftp.victimandum.com sftp</code>
Salin selepas log masuk

Mengesahkan semula sambungan tempatan ke port pemajuan:

 <code>$ nc localhost 2525 220 smtp.victimandum.com Microsoft ESMTP MAIL Service, Version: 1.2.3456.78901 ready at Sun, 1 Jan 2023 01:23:45 -0100 ^C</code>
Salin selepas log masuk
Salin selepas log masuk

Sebagai demonstrasi akhir, pertukaran SMTP lengkap boleh dilakukan menggunakan skrip berikut:

 <code>$ cat awkmail #!/bin/gawk -f BEGIN { smtp="/inet/tcp/0/localhost/2525"; ORS="\r\n"; r=ARGV[1]; s=ARGV[2]; sbj=ARGV[3]; # /bin/awkmail to from subj 0) print |& smtp print "." |& smtp; smtp |& getline j; print j print "quit" |& smtp; smtp |& getline j; print j close(smtp) } # /inet/protocol/local-port/remote-host/remote-port</code>
Salin selepas log masuk

Kami boleh menggunakan skrip ini untuk menghantar surat kami sendiri ke penerima jauh yang boleh diakses oleh pelayan SMTP:

 <code>$ ./awkmail jatanasoff@victimandum.com aturning@localhost awkmail Queued mail for delivery</code>
Salin selepas log masuk

Dalam persekitaran yang sangat terkawal, kehadiran fungsi ini tidak optimum.

Sekatan pelayan

Adalah difahami bahawa pentadbir SFTP tidak mahu membenarkan pengguna mereka membuat sambungan TCP sewenang -wenang dengan bantuan pelayan, yang boleh meletakkan rangkaian sensitif berisiko. Mengehadkan aktiviti ini adalah tetapan keselamatan yang berhati -hati.

Konfigurasi yang sama adalah untuk menambah pengguna SFTP yang tidak dipercayai kepada kumpulan dan kemudian menghalang aktiviti kumpulan ini dalam sshd_config:

 <code>Match Group sftponly ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no</code>
Salin selepas log masuk

Konfigurasi yang disyorkan ini biasanya mencukupi untuk mencegah semua percubaan penghantaran.

Adalah disyorkan untuk menambah Disableforwarding Ya:

 <code>$ man sshd_config | sed -n /DisableForwarding/,/configurations/p DisableForwarding Disables all forwarding features, including X11, ssh-agent(1), TCP and StreamLocal. This option overrides all other forwarding- related options and may simplify restricted configurations.</code>
Salin selepas log masuk

Ini ditinggalkan kepada pentadbir untuk amalan.

kesimpulannya

Terlalu ketat tetapan klien SFTP boleh membawa kepada beberapa tahap kebutaan pengurusan pelayan. Sekatan pelanggan SFTP mudah dielakkan melalui pelbagai kaedah.

Bagi pentadbir pelayan SFTP, adalah penting untuk mengetahui di mana ia terhad dan di mana ia terhad, dan tidak bergantung kepada pelanggan untuk melindungi pelayan dari kawalan TCP sewenang -wenangnya. Pelanggan dikawal oleh pengguna, dan jika konfigurasi itu salah, sukar untuk melaksanakan arahan TCP ke pelayan. Sebarang ujian perlu dilakukan tanpa penghantaran yang luas dalam pengguna ssh_config, perhatikan amaran dalam dokumen.

Walaupun ciri ini mungkin mempunyai tujuan undang -undang yang boleh dibayangkan, penyalahgunaan akan jarang berlaku.

Isu -isu ini tidak baru, kerana varian Exec Tapak telah hadir dalam Plaintext FTP selama beberapa dekad. SFTP bukanlah alternatif mudah untuk pemindahan fail plaintext, ia juga mempunyai banyak ciri yang mudah digunakan.

Semoga pentadbir dapat menggunakan kaedah ini untuk mengesahkan keselamatan pelayan mereka agar tidak ditangkap.

Atas ialah kandungan terperinci Pemajuan port SFTP: Membolehkan fungsi ditindas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Untuk apa yang paling baik digunakan oleh Linux? Untuk apa yang paling baik digunakan oleh Linux? Apr 03, 2025 am 12:11 AM

Linux paling baik digunakan sebagai pengurusan pelayan, sistem tertanam dan persekitaran desktop. 1) Dalam pengurusan pelayan, Linux digunakan untuk menjadi tuan rumah laman web, pangkalan data, dan aplikasi, menyediakan kestabilan dan kebolehpercayaan. 2) Dalam sistem tertanam, Linux digunakan secara meluas di rumah pintar dan sistem elektronik automotif kerana fleksibiliti dan kestabilannya. 3) Dalam persekitaran desktop, Linux menyediakan aplikasi yang kaya dan prestasi yang cekap.

Apakah 5 komponen asas Linux? Apakah 5 komponen asas Linux? Apr 06, 2025 am 12:05 AM

Lima komponen asas Linux adalah: 1. Kernel, menguruskan sumber perkakasan; 2. Perpustakaan sistem, menyediakan fungsi dan perkhidmatan; 3. Shell, antara muka pengguna untuk berinteraksi dengan sistem; 4. Sistem fail, menyimpan dan menganjurkan data; 5. Aplikasi, menggunakan sumber sistem untuk melaksanakan fungsi.

Apakah Pentadbiran Linux Asas? Apakah Pentadbiran Linux Asas? Apr 02, 2025 pm 02:09 PM

Pengurusan Sistem Linux memastikan kestabilan sistem, kecekapan dan keselamatan melalui konfigurasi, pemantauan dan penyelenggaraan. 1. Perintah Shell Master seperti Top dan Systemctl. 2. Gunakan apt atau yum untuk menguruskan pakej perisian. 3. Tulis skrip automatik untuk meningkatkan kecekapan. 4. Kesilapan debug biasa seperti masalah kebenaran. 5. Mengoptimumkan prestasi melalui alat pemantauan.

Bagaimana untuk belajar asas Linux? Bagaimana untuk belajar asas Linux? Apr 10, 2025 am 09:32 AM

Kaedah untuk pembelajaran asas Linux dari awal termasuk: 1. Memahami sistem fail dan antara muka baris perintah, 2. Master arahan asas seperti LS, CD, MKDIR, 3.

Apakah yang paling banyak digunakan Linux? Apakah yang paling banyak digunakan Linux? Apr 09, 2025 am 12:02 AM

Linux digunakan secara meluas dalam pelayan, sistem tertanam dan persekitaran desktop. 1) Dalam bidang pelayan, Linux telah menjadi pilihan yang ideal untuk menganjurkan laman web, pangkalan data dan aplikasi kerana kestabilan dan keselamatannya. 2) Dalam sistem tertanam, Linux popular untuk penyesuaian dan kecekapan yang tinggi. 3) Di persekitaran desktop, Linux menyediakan pelbagai persekitaran desktop untuk memenuhi keperluan pengguna yang berbeza.

Apakah peranti Linux? Apakah peranti Linux? Apr 05, 2025 am 12:04 AM

Peranti Linux adalah peranti perkakasan yang menjalankan sistem operasi Linux, termasuk pelayan, komputer peribadi, telefon pintar dan sistem tertanam. Mereka mengambil kesempatan daripada kuasa Linux untuk melaksanakan pelbagai tugas seperti hosting laman web dan analisis data besar.

Apakah kelemahan Linux? Apakah kelemahan Linux? Apr 08, 2025 am 12:01 AM

Kelemahan Linux termasuk pengalaman pengguna, keserasian perisian, sokongan perkakasan, dan keluk pembelajaran. 1. Pengalaman pengguna tidak mesra seperti Windows atau MacOS, dan ia bergantung pada antara muka baris arahan. 2. Keserasian perisian tidak sebaik sistem lain dan tidak mempunyai versi asli banyak perisian komersial. 3. Sokongan perkakasan tidak begitu komprehensif seperti Windows, dan pemandu boleh dikumpulkan secara manual. 4. Keluk pembelajaran adalah curam, dan menguasai operasi baris arahan memerlukan masa dan kesabaran.

Adakah Internet berjalan di Linux? Adakah Internet berjalan di Linux? Apr 14, 2025 am 12:03 AM

Internet tidak bergantung pada sistem operasi tunggal, tetapi Linux memainkan peranan penting di dalamnya. Linux digunakan secara meluas dalam pelayan dan peranti rangkaian dan popular untuk kestabilan, keselamatan dan skalabiliti.

See all articles