国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 系統(tǒng)教程 操作系統(tǒng) SFTP端口轉(zhuǎn)發(fā):?jiǎn)⒂靡种乒δ?/span>

SFTP端口轉(zhuǎn)發(fā):?jiǎn)⒂靡种乒δ?/h1> Mar 17, 2025 am 09:43 AM


SFTP Port Forwarding: Enabling Suppressed Functionality

引言

SSH協(xié)議支持三大類遠(yuǎn)程服務(wù)器活動(dòng):a) 命令執(zhí)行(包括登錄shell),b) 網(wǎng)絡(luò)轉(zhuǎn)發(fā)和操作,以及c) 文件傳輸。

OpenSSH維護(hù)者已確定sftp和scp對(duì)端口轉(zhuǎn)發(fā)(通過(guò)-L和-R選項(xiàng))沒(méi)有合法用途。在使用這些實(shí)用程序進(jìn)行文件傳輸期間,一個(gè)明確禁用這些功能的標(biāo)志會(huì)被無(wú)條件地傳遞給子SSH可執(zhí)行文件。

某些用戶可能確實(shí)需要這些功能。一個(gè)明顯的子集是滲透測(cè)試人員,他們的任務(wù)是驗(yàn)證此功能是否在公共SFTP服務(wù)器上被明確禁用。

以下是兩種啟用這些被抑制功能的技術(shù),方法是修改sftp二進(jìn)制文件本身的字符串,或通過(guò)能夠輕松編輯命令行的shell進(jìn)行重定向。根據(jù)平臺(tái)的功能,可能需要任一技術(shù)才能實(shí)現(xiàn)此目標(biāo)。

抑制細(xì)節(jié)

首先,重要的是找到感興趣的運(yùn)行進(jìn)程。下面的shell函數(shù)將顯示與shell模式匹配的PID(請(qǐng)注意,這不是正則表達(dá)式)。這在Debian dash(和大多數(shù)其他常用shell)下運(yùn)行,并依賴于BSD的ps選項(xiàng):

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

啟動(dòng)一個(gè)傳統(tǒng)的SFTP會(huì)話,以檢查與其相關(guān)的進(jìn)程:

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

我們假設(shè)上面的本地UNIX用戶在遠(yuǎn)程SFTP服務(wù)器上擁有相同用戶名帳戶。

會(huì)話運(yùn)行后,對(duì)用戶名進(jìn)行本地進(jìn)程搜索將顯示由SFTP生成的子SSH進(jìn)程:

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

上面的ClearAllForwardings yes參數(shù)將抑制任何轉(zhuǎn)發(fā)嘗試,而無(wú)需采取任何措施來(lái)破壞它。

-L和-R端口轉(zhuǎn)發(fā)標(biāo)志并非作為SFTP命令行的有效選項(xiàng)存在,但我們可以使用-S選項(xiàng)明確觸發(fā)它們以指定自定義SSH處理程序,在本例中為郵件服務(wù)器:

<code>$ cat portssh
#!/bin/sh

exec ssh -L2525:smtp.victimandum.com:25 "$@"</code>

如果轉(zhuǎn)發(fā)抑制沒(méi)有到位,則此SFTP調(diào)用足以建立轉(zhuǎn)發(fā)連接:

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

現(xiàn)在可以在子SSH進(jìn)程中看到轉(zhuǎn)發(fā)嘗試:

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

但是,由于顯式覆蓋,嘗試通過(guò)本地轉(zhuǎn)發(fā)端口聯(lián)系遠(yuǎn)程郵件服務(wù)器是不成功的:

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

此無(wú)條件抑制在源代碼中可見(jiàn):

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

這些靜態(tài)字符串在編譯后的二進(jìn)制文件中也可見(jiàn):

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

最后,文檔清楚地說(shuō)明了這種抑制是有意的,并給出了合理的理由:

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

更改編譯后的字符串

對(duì)于那些希望禁用默認(rèn)的ClearAllForwardings yes配置的人來(lái)說(shuō),一個(gè)選項(xiàng)是使用sed直接編輯SFTP二進(jìn)制文件中的字符串(假設(shè)平臺(tái)的sed是二進(jìn)制安全的):

<code>$ sed 's/AllForwardings yes/AllForwardings no /'  sftp.noclearforward</code>

這種直接修改比編譯新的二進(jìn)制文件要容易得多。

我們可以確認(rèn)字符串已成功修改:

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

雖然修改后的SFTP的內(nèi)容和校驗(yàn)和將不同,但任何存在的Linux BuildID sha1都將保持不變(但在使用編輯后的SFTP時(shí),請(qǐng)不要提交支持工單):

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

可以調(diào)用修改后的SFTP二進(jìn)制文件來(lái)啟用端口轉(zhuǎn)發(fā):

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

現(xiàn)在可以在子進(jìn)程中看到修改后的設(shè)置:

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

該功能在遠(yuǎn)程服務(wù)器上已啟用并可運(yùn)行,并且可以在單獨(dú)的shell中驗(yàn)證連接:

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

當(dāng)服務(wù)器上禁用轉(zhuǎn)發(fā)功能時(shí),客戶端將在連接嘗試時(shí)收到指示此狀態(tài)的通知:

<code>channel 3: open failed: administratively prohibited: open failed</code>

分配不受信任帳戶的SFTP管理員應(yīng)該可能驗(yàn)證服務(wù)器配置是否明確禁用了轉(zhuǎn)發(fā)和命令執(zhí)行。

超越POSIX Shell

雖然dash和POSIX標(biāo)準(zhǔn)提供set --作為重置命令行參數(shù)的方法,但bash和ksh93中提供了更高級(jí)的功能:

<code>$ cat ynargs
#!/bin/bash

echo "${@//yes/no}"</code>

快速測(cè)試確認(rèn)成功編輯:

<code>$ ./ynargs -oForwardX11 no -oPermitLocalCommand yes -oClearAllForwardings yes -oForwardAgent no
-oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings no -oForwardAgent no</code>

請(qǐng)注意,上面的${@//.../...}不是有效的POSIX,并且在dash或任何從pdksh派生的shell(mksh,oksh)中都不能運(yùn)行。許多平臺(tái)沒(méi)有捆綁具有此功能的shell(例如Android和OpenBSD,盡管有添加它們的方法);對(duì)于受限平臺(tái),二進(jìn)制編輯技術(shù)可能更直接,而不是安裝替代shell。

要利用具有功能強(qiáng)大的shell的此功能,我們創(chuàng)建一個(gè)目錄,然后在其中創(chuàng)建一個(gè)清除問(wèn)題設(shè)置的SSH包裝器:

<code>$ cat ~/switcharoo/ssh
#!/bin/bash

exec /usr/bin/ssh "${@//yes/no}"</code>

然后在$PATH中設(shè)置系統(tǒng)SSH之前的目錄:

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

$ which ssh
~/switcharoo/ssh</code>

然后,我們?cè)谶@種修改后的環(huán)境下調(diào)用系統(tǒng)SFTP:

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

我們觀察到shell重置了問(wèn)題參數(shù):

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

再次確認(rèn)了到轉(zhuǎn)發(fā)端口的本地連接:

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

作為最終演示,可以使用以下腳本進(jìn)行完整的SMTP交換:

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

我們可以使用該腳本將自身郵件發(fā)送到目標(biāo)SMTP服務(wù)器可以訪問(wèn)的遠(yuǎn)程收件人:

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

在高度受控的環(huán)境中,這些功能的存在并非最佳。

服務(wù)器限制

可以理解的是,SFTP管理員不希望允許其用戶在服務(wù)器的幫助下進(jìn)行任意TCP連接,這可能會(huì)使敏感網(wǎng)絡(luò)面臨風(fēng)險(xiǎn)。限制此活動(dòng)是一種謹(jǐn)慎的安全設(shè)置。

常見(jiàn)的限制性配置是將不受信任的SFTP用戶添加到組中,然后在sshd_config中約束此組的活動(dòng):

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

此推薦配置通常足以阻止所有轉(zhuǎn)發(fā)嘗試。

建議添加DisableForwarding yes:

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

這留給管理員練習(xí)。

結(jié)論

過(guò)于嚴(yán)格的SFTP客戶端設(shè)置可能會(huì)導(dǎo)致某種程度的服務(wù)器管理盲目性。SFTP客戶端限制很容易通過(guò)多種方法規(guī)避。

對(duì)于SFTP服務(wù)器管理員來(lái)說(shuō),了解哪些地方受到限制以及在哪里限制非常重要,并且不要依賴客戶端來(lái)保護(hù)服務(wù)器免受任意TCP控制??蛻舳耸苡脩艨刂?,如果配置錯(cuò)誤,則很難實(shí)現(xiàn)對(duì)服務(wù)器的TCP命令。任何測(cè)試都應(yīng)該在用戶ssh_config中沒(méi)有廣泛設(shè)置轉(zhuǎn)發(fā)的情況下進(jìn)行,注意文檔中的警告。

雖然這種功能可能有可以想象的合法用途,但濫用行為將很少見(jiàn)。

這些問(wèn)題并非新鮮事物,因?yàn)檎军c(diǎn)exec的變體幾十年來(lái)一直存在于明文FTP中。SFTP并不是明文文件傳輸?shù)暮?jiǎn)單替代品,它本身也具有許多易于利用的功能。

希望管理員能夠使用這些方法驗(yàn)證其服務(wù)器的安全性,以免措手不及。

以上是SFTP端口轉(zhuǎn)發(fā):?jiǎn)⒂靡种乒δ艿脑敿?xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

在RHEL,Rocky和Almalinux中安裝LXC(Linux容器) 在RHEL,Rocky和Almalinux中安裝LXC(Linux容器) Jul 05, 2025 am 09:25 AM

LXD被描述為下一代容器和虛擬機(jī)管理器,它為在容器內(nèi)部或虛擬機(jī)中運(yùn)行的Linux系統(tǒng)提供了沉浸式的。 它為有支持的Linux分布數(shù)量提供圖像

如何在Linux中安裝R編程語(yǔ)言 如何在Linux中安裝R編程語(yǔ)言 Jun 23, 2025 am 09:51 AM

R是一種廣泛使用的編程語(yǔ)言和軟件環(huán)境,旨在在數(shù)據(jù)科學(xué)中開(kāi)發(fā)統(tǒng)計(jì)和圖形計(jì)算工具。它與S編程語(yǔ)言和環(huán)境非常相似,R是替代方案

在Linux桌面中加快Firefox瀏覽器的7種方法 在Linux桌面中加快Firefox瀏覽器的7種方法 Jul 04, 2025 am 09:18 AM

Firefox瀏覽器是大多數(shù)現(xiàn)代Linux分布(例如Ubuntu,Mint和Fedora)的默認(rèn)瀏覽器。最初,它的性能可能令人印象深刻,但是隨著時(shí)間的流逝,您可能會(huì)注意到瀏覽器的快速和響應(yīng)不佳

清晰的Linux發(fā)行版 - 針對(duì)性能和安全性進(jìn)行了優(yōu)化 清晰的Linux發(fā)行版 - 針對(duì)性能和安全性進(jìn)行了優(yōu)化 Jul 02, 2025 am 09:49 AM

Clear Linux OS是人們想要最小,安全和可靠的Linux分布的理想操作系統(tǒng) - Ahem System Admins。它針對(duì)英特爾體系結(jié)構(gòu)進(jìn)行了優(yōu)化,這意味著在AMD SYS上運(yùn)行Clear Linux OS

如何在Linux中隱藏文件和目錄 如何在Linux中隱藏文件和目錄 Jun 26, 2025 am 09:13 AM

您有時(shí)會(huì)與家人,朋友或同事共享Linux桌面?如果是這樣,您可能需要隱藏一些個(gè)人文件和文件夾。挑戰(zhàn)是弄清楚如何在Linux系統(tǒng)上隱藏這些文件。在本指南中,我們將瀏覽

如何使用OpenSSL創(chuàng)建自簽名的SSL證書? 如何使用OpenSSL創(chuàng)建自簽名的SSL證書? Jul 03, 2025 am 12:30 AM

創(chuàng)建自簽名SSL證書的關(guān)鍵步驟如下:1.生成私鑰,使用命令opensslgenrsa-outselfsigned.key2048生成一個(gè)2048位的RSA私鑰文件,可選參數(shù)-aes256實(shí)現(xiàn)密碼保護(hù);2.創(chuàng)建證書請(qǐng)求(CSR),運(yùn)行opensslreq-new-keyselfsigned.key-outselfsigned.csr并填寫相關(guān)信息,特別是“CommonName”字段;3.自簽名生成證書,通過(guò)opensslx509-req-days365-inselfsigned.csr-signk

如何提取.tar.gz或.zip文件? 如何提取.tar.gz或.zip文件? Jul 02, 2025 am 12:52 AM

在Windows上解壓.zip文件可右鍵選擇“全部提取”,而.tar.gz文件需借助7-Zip或WinRAR等工具;在macOS和Linux上,.zip文件可雙擊或使用unzip命令解壓,.tar.gz文件可用tar命令或直接雙擊解壓。具體步驟為:1.Windows處理.zip文件:右鍵→“全部提取”;2.Windows處理.tar.gz文件:安裝第三方工具→右鍵解壓;3.macOS/Linux處理.zip文件:雙擊或運(yùn)行unzipfilename.zip;4.macOS/Linux處理.tar

Linux中的系統(tǒng)日志在哪里? Linux中的系統(tǒng)日志在哪里? Jun 24, 2025 am 12:15 AM

Linux系統(tǒng)中的日志通常存儲(chǔ)在/var/log目錄中,該目錄包含多種關(guān)鍵日志文件,如syslog或messages(記錄系統(tǒng)日志)、auth.log(記錄認(rèn)證事件)、kern.log(記錄內(nèi)核消息)、dpkg.log或yum.log(記錄軟件包操作)、boot.log(記錄啟動(dòng)信息);可通過(guò)cat、tail-f或journalctl等命令查看日志內(nèi)容;應(yīng)用日志也常位于/var/log下的子目錄,如Apache的apache2或httpd目錄、MySQL的日志文件等;同時(shí)需注意日志權(quán)限通常需要s

See all articles