cari
RumahTutorial sistemLINUXPemajuan port SFTP: Membolehkan fungsi ditindas

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>

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>

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>

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>

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>

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>

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

 <code>$ nc localhost 2525 $</code>

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>

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>

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>

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>

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>

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>

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>

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>

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>

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>

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>

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>

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>

Kemudian tetapkan direktori sebelum Sistem SSH dalam $ Path:

 <code>$ export PATH=~/switcharoo:$PATH $ which ssh ~/switcharoo/ssh</code>

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>

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>

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>

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>

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>

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>

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>

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
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
Bagaimanakah pengurusan proses berbeza antara Linux dan Windows?Bagaimanakah pengurusan proses berbeza antara Linux dan Windows?May 04, 2025 am 12:04 AM

Perbezaan utama antara Linux dan Windows dalam pengurusan proses terletak pada pelaksanaan dan konsep alat dan API. Linux dikenali dengan fleksibiliti dan kuasa, bergantung pada alat kernel dan baris arahan; Walaupun Windows terkenal dengan keramahan dan integrasi pengguna, terutamanya proses pengurusan melalui antara muka grafik dan perkhidmatan sistem.

Apakah kes penggunaan biasa untuk Linux berbanding Windows?Apakah kes penggunaan biasa untuk Linux berbanding Windows?May 03, 2025 am 12:01 AM

Linuxisidealforcustomization,development,andservermanagement,whileWindowsexcelsineaseofuse,softwarecompatibility,andgaming.Linuxoffershighconfigurabilityfordevelopersandserversetups,whereasWindowsprovidesauser-friendlyinterfaceandbroadsoftwaresupport

Apakah perbezaan dalam pengurusan akaun pengguna antara Linux dan Windows?Apakah perbezaan dalam pengurusan akaun pengguna antara Linux dan Windows?May 02, 2025 am 12:02 AM

Perbezaan utama antara Linux dan Windows dalam Pengurusan Akaun Pengguna adalah model kebenaran dan alat pengurusan. Linux menggunakan model keizinan berasaskan UNIX dan alat baris arahan (seperti UserAdd, Usermod, UserDel), manakala Windows menggunakan model keselamatan mereka sendiri dan alat pengurusan antara muka pengguna grafik (GUI).

Bagaimanakah persekitaran baris arahan Linux menjadikannya lebih selamat daripada Windows?Bagaimanakah persekitaran baris arahan Linux menjadikannya lebih selamat daripada Windows?May 01, 2025 am 12:03 AM

Linux'sCommandLineCanbeMoresecurethanWindowsifManageRageRly, ButrequiresmoreUsererknowledy.1) linux'sopen-sourcencenatureAllowsforquicksecurityupdates.2) MisconfigurationCanLeadTovulnerBility.WindowsoManCoManToReSonToReSonToReSonToReSonToReSonToRnoShoShoShoManToRn

Cara membuat pemacu usb dipasang secara automatik di linuxCara membuat pemacu usb dipasang secara automatik di linuxApr 30, 2025 am 10:04 AM

Panduan ini menerangkan bagaimana untuk melancarkan pemacu USB secara automatik di Boot di Linux, menjimatkan masa dan usaha anda. Langkah 1: Kenal pasti pemacu USB anda Gunakan arahan LSBLK untuk menyenaraikan semua peranti blok. Pemacu USB anda mungkin akan dilabel /dev /sdb1, /dev /sdc1, dll

Aplikasi silang platform terbaik untuk Linux, Windows, dan Mac pada tahun 2025Aplikasi silang platform terbaik untuk Linux, Windows, dan Mac pada tahun 2025Apr 30, 2025 am 09:57 AM

Aplikasi silang platform telah merevolusikan pembangunan perisian, yang membolehkan fungsi lancar merentasi sistem operasi seperti Linux, Windows, dan MacOS. Ini menghapuskan keperluan untuk menukar aplikasi berdasarkan peranti anda, yang menawarkan pengalaman yang konsisten

Alat Linux Terbaik untuk AI dan Pembelajaran Mesin pada tahun 2025Alat Linux Terbaik untuk AI dan Pembelajaran Mesin pada tahun 2025Apr 30, 2025 am 09:44 AM

Kecerdasan Buatan (AI) dengan cepat mengubah banyak sektor, dari penjagaan kesihatan dan kewangan ke bidang kreatif seperti seni dan muzik. Linux, dengan sifat terbuka, kebolehsuaian, dan keupayaan prestasi, telah muncul sebagai platfo utama

5 distro linux ringan terbaik tanpa GUI5 distro linux ringan terbaik tanpa GUIApr 30, 2025 am 09:38 AM

Mencari pengedaran Linux yang cepat, minimum, dan cekap tanpa antara muka pengguna grafik (GUI)? Ringan, distros Linux GUI-Less adalah sempurna untuk perkakasan yang lebih lama atau tugas khusus seperti pelayan dan sistem tertanam. Mereka mengambil lebih sedikit res

See all articles

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

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual