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!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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)

Topik panas

Tutorial Java
1673
14
Tutorial PHP
1278
29
Tutorial C#
1257
24
Apakah gaji Pentadbir Linux? Apakah gaji Pentadbir Linux? Apr 17, 2025 am 12:24 AM

Purata gaji tahunan pentadbir Linux ialah $ 75,000 hingga $ 95,000 di Amerika Syarikat dan € 40,000 hingga € 60,000 di Eropah. Untuk meningkatkan gaji, anda boleh: 1. Secara berterusan mempelajari teknologi baru, seperti pengkomputeran awan dan teknologi kontena; 2. Mengumpulkan pengalaman projek dan menubuhkan portfolio; 3. Mewujudkan rangkaian profesional dan mengembangkan rangkaian anda.

Apakah tugas utama pentadbir sistem Linux? Apakah tugas utama pentadbir sistem Linux? Apr 19, 2025 am 12:23 AM

Tugas utama pentadbir sistem Linux termasuk pemantauan sistem dan penalaan prestasi, pengurusan pengguna, pengurusan pakej perisian, pengurusan keselamatan dan sandaran, penyelesaian masalah dan resolusi, pengoptimuman prestasi dan amalan terbaik. 1. Gunakan alat atas, HTOP dan lain -lain untuk memantau prestasi sistem dan menyesuaikannya. 2. Menguruskan akaun pengguna dan keizinan melalui arahan USERADD dan arahan lain. 3. Gunakan APT dan YUM untuk menguruskan pakej perisian untuk memastikan kemas kini sistem dan keselamatan. 4. Konfigurasi firewall, memantau log, dan lakukan sandaran data untuk memastikan keselamatan sistem. 5. menyelesaikan masalah dan menyelesaikan melalui analisis log dan penggunaan alat. 6. Mengoptimumkan parameter kernel dan konfigurasi aplikasi, dan ikuti amalan terbaik untuk meningkatkan prestasi sistem dan kestabilan.

Apakah tujuan utama Linux? Apakah tujuan utama Linux? Apr 16, 2025 am 12:19 AM

Penggunaan utama Linux termasuk: 1. Sistem Operasi Pelayan, 2. Sistem Terbenam, 3. Linux cemerlang dalam bidang ini, menyediakan kestabilan, keselamatan dan alat pembangunan yang cekap.

Apakah perbezaan sokongan virtualisasi antara Linux dan Windows? Apakah perbezaan sokongan virtualisasi antara Linux dan Windows? Apr 22, 2025 pm 06:09 PM

Perbezaan utama antara Linux dan Windows dalam sokongan virtualisasi adalah: 1) Linux menyediakan KVM dan XEN, dengan prestasi dan fleksibiliti yang luar biasa, sesuai untuk persekitaran penyesuaian yang tinggi; 2) Windows menyokong virtualisasi melalui Hyper-V, dengan antara muka yang mesra, dan disepadukan dengan ekosistem Microsoft, sesuai untuk perusahaan yang bergantung pada perisian Microsoft.

Adakah sukar untuk belajar Linux? Adakah sukar untuk belajar Linux? Apr 18, 2025 am 12:23 AM

Pembelajaran Linux tidak sukar. 1.Linux adalah sistem operasi sumber terbuka berdasarkan UNIX dan digunakan secara meluas dalam pelayan, sistem tertanam dan komputer peribadi. 2. Memahami sistem fail dan pengurusan kebenaran adalah kunci. Sistem fail adalah hierarki, dan keizinan termasuk membaca, menulis dan melaksanakan. 3. Sistem pengurusan pakej seperti APT dan DNF menjadikan pengurusan perisian mudah. 4. Pengurusan proses dilaksanakan melalui PS dan arahan teratas. 5. Mula belajar dari arahan asas seperti MKDIR, CD, Touch dan Nano, dan kemudian cuba penggunaan lanjutan seperti skrip shell dan pemprosesan teks. 6. Kesilapan umum seperti masalah kebenaran dapat diselesaikan melalui sudo dan chmod. 7. Cadangan Pengoptimuman Prestasi termasuk menggunakan HTOP untuk memantau sumber, membersihkan fail yang tidak perlu, dan menggunakan SY

Masa Depan Perisian Linux: Adakah Flatpak dan Snap Menggantikan Apl Desktop Asli? Masa Depan Perisian Linux: Adakah Flatpak dan Snap Menggantikan Apl Desktop Asli? Apr 25, 2025 am 09:10 AM

Selama bertahun -tahun, pengedaran perisian Linux bergantung pada format asli seperti DEB dan RPM, yang mendalam dalam setiap ekosistem pengedaran. Walau bagaimanapun, Flatpak dan Snap telah muncul, menjanjikan pendekatan sejagat untuk pembungkusan aplikasi. Artikel ini Examin

Alat 7 atas untuk membandingkan fail di Linux (dengan contoh) Alat 7 atas untuk membandingkan fail di Linux (dengan contoh) Apr 28, 2025 am 09:21 AM

Panduan ini meneroka pelbagai kaedah untuk membandingkan fail teks di Linux, tugas penting untuk pentadbir sistem dan pemaju. Kami akan meliputi alat baris arahan dan alat diff visual, menonjolkan kekuatan dan kes penggunaan yang sesuai. Mari kita anggap

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).

See all articles