亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 系統(tǒng)教程 Linux SFTP端口轉發(fā):啟用抑制功能

SFTP端口轉發(fā):啟用抑制功能

Mar 17, 2025 am 09:43 AM

SFTP Port Forwarding: Enabling Suppressed Functionality

引言

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

OpenSSH維護者已確定sftp和scp對端口轉發(fā)(通過-L和-R選項)沒有合法用途。在使用這些實用程序進行文件傳輸期間,一個明確禁用這些功能的標誌會被無條件地傳遞給子SSH可執(zhí)行文件。

某些用戶可能確實需要這些功能。一個明顯的子集是滲透測試人員,他們的任務是驗證此功能是否在公共SFTP服務器上被明確禁用。

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

抑制細節(jié)

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

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

啟動一個傳統(tǒng)的SFTP會話,以檢查與其相關的進程:

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

我們假設上面的本地UNIX用戶在遠程SFTP服務器上擁有相同用戶名帳戶。

會話運行後,對用戶名進行本地進程搜索將顯示由SFTP生成的子SSH進程:

 <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ù)將抑制任何轉發(fā)嘗試,而無需採取任何措施來破壞它。

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

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

如果轉發(fā)抑制沒有到位,則此SFTP調用足以建立轉發(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進程中看到轉發(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>

但是,由於顯式覆蓋,嘗試通過本地轉發(fā)端口聯(lián)繫遠程郵件服務器是不成功的:

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

此無條件抑制在源代碼中可見:

 <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)字符串在編譯後的二進製文件中也可見:

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

最後,文檔清楚地說明了這種抑制是有意的,並給出了合理的理由:

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

更改編譯後的字符串

對於那些希望禁用默認的ClearAllForwardings yes配置的人來說,一個選項是使用sed直接編輯SFTP二進製文件中的字符串(假設平臺的sed是二進制安全的):

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

這種直接修改比編譯新的二進製文件要容易得多。

我們可以確認字符串已成功修改:

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

雖然修改後的SFTP的內容和校驗和將不同,但任何存在的Linux BuildID sha1都將保持不變(但在使用編輯後的SFTP時,請不要提交支持工單):

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

可以調用修改後的SFTP二進製文件來啟用端口轉發(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)在可以在子進程中看到修改後的設置:

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

該功能在遠程服務器上已啟用並可運行,並且可以在單獨的shell中驗證連接:

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

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

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

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

超越POSIX Shell

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

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

快速測試確認成功編輯:

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

請注意,上面的${@//.../...}不是有效的POSIX,並且在dash或任何從pdksh派生的shell(mksh,oksh)中都不能運行。許多平臺沒有捆綁具有此功能的shell(例如Android和OpenBSD,儘管有添加它們的方法);對於受限平臺,二進制編輯技術可能更直接,而不是安裝替代shell。

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

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

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

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

然後,我們在這種修改後的環(huán)境下調用系統(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重置了問題參數(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>

再次確認了到轉發(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>

作為最終演示,可以使用以下腳本進行完整的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ā)送到目標SMTP服務器可以訪問的遠程收件人:

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

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

服務器限制

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

常見的限制性配置是將不受信任的SFTP用戶添加到組中,然後在sshd_config中約束此組的活動:

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

此推薦配置通常足以阻止所有轉發(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>

這留給管理員練習。

結論

過於嚴格的SFTP客戶端設置可能會導致某種程度的服務器管理盲目性。 SFTP客戶端限制很容易通過多種方法規(guī)避。

對於SFTP服務器管理員來說,了解哪些地方受到限制以及在哪裡限制非常重要,並且不要依賴客戶端來保護服務器免受任意TCP控制??蛻舳耸苡脩艨刂?,如果配置錯誤,則很難實現(xiàn)對服務器的TCP命令。任何測試都應該在用戶ssh_config中沒有廣泛設置轉發(fā)的情況下進行,注意文檔中的警告。

雖然這種功能可能有可以想像的合法用途,但濫用行為將很少見。

這些問題並非新鮮事物,因為站點exec的變體幾十年來一直存在於明文FTP中。 SFTP並不是明文文件傳輸?shù)暮唵翁娲?,它本身也具有許多易於利用的功能。

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

以上是SFTP端口轉發(fā):啟用抑制功能的詳細內容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
在RHEL,Rocky和Almalinux中安裝LXC(Linux容器) 在RHEL,Rocky和Almalinux中安裝LXC(Linux容器) Jul 05, 2025 am 09:25 AM

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

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

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

如何在Linux機器上解決DNS問題? 如何在Linux機器上解決DNS問題? Jul 07, 2025 am 12:35 AM

遇到DNS問題時首先要檢查/etc/resolv.conf文件,查看是否配置了正確的nameserver;其次可手動添加如8.8.8.8等公共DNS進行測試;接著使用nslookup和dig命令驗證DNS解析是否正常,若未安裝這些工具可先安裝dnsutils或bind-utils包;再檢查systemd-resolved服務狀態(tài)及其配置文件/etc/systemd/resolved.conf,並根據(jù)需要設置DNS和FallbackDNS後重啟服務;最後排查網(wǎng)絡接口狀態(tài)與防火牆規(guī)則,確認53端口未

您將如何調試速度慢或使用高內存使用量的服務器? 您將如何調試速度慢或使用高內存使用量的服務器? Jul 06, 2025 am 12:02 AM

發(fā)現(xiàn)服務器運行緩慢或內存佔用過高時,應先排查原因再操作。首先要查看系統(tǒng)資源使用情況,用top、htop、free-h、iostat、ss-antp等命令檢查CPU、內存、磁盤I/O和網(wǎng)絡連接;其次分析具體進程問題,通過ps、jstack、strace等工具追蹤高佔用進程的行為;接著檢查日誌和監(jiān)控數(shù)據(jù),查看OOM記錄、異常請求、慢查詢等線索;最後根據(jù)常見原因如內存洩漏、連接池耗盡、緩存失效風暴、定時任務衝突進行針對性處理,優(yōu)化代碼邏輯,設置超時重試機制,加限流熔斷,並定期壓測評估資源。

在Ubuntu中安裝用於遠程Linux/Windows訪問的鱷梨調味醬 在Ubuntu中安裝用於遠程Linux/Windows訪問的鱷梨調味醬 Jul 08, 2025 am 09:58 AM

作為系統(tǒng)管理員,您可能會發(fā)現(xiàn)自己(今天或將來)在Windows和Linux並存的環(huán)境中工作。 有些大公司更喜歡(或必須)在Windows Box上運行其一些生產服務已不是什麼秘密

如何使用Brasero在Linux中燃燒CD/DVD 如何使用Brasero在Linux中燃燒CD/DVD Jul 05, 2025 am 09:26 AM

坦率地說,我不記得上一次使用CD/DVD驅動器的PC。這要歸功於不斷發(fā)展的科技行業(yè),該行業(yè)已被USB驅動器和其他較小且緊湊的存儲媒體所取代,這些磁盤可提供更多存儲

如何在Linux中找到我的私人和公共IP地址? 如何在Linux中找到我的私人和公共IP地址? Jul 09, 2025 am 12:37 AM

在Linux系統(tǒng)中,1.使用ipa或hostname-I命令可查看私有IP;2.使用curlifconfig.me或curlipinfo.io/ip可獲取公網(wǎng)IP;3.桌面版可通過系統(tǒng)設置查看私有IP,瀏覽器訪問特定網(wǎng)站查看公網(wǎng)IP;4.可將常用命令設為別名以便快速調用。這些方法簡單實用,適合不同場景下的IP查看需求。

如何在Rocky Linux 8上安裝Nodejs 14/16&npm 如何在Rocky Linux 8上安裝Nodejs 14/16&npm Jul 13, 2025 am 09:09 AM

Node.js建立在Chrome的V8引擎上,是一種開源的,由事件驅動的JavaScript運行時環(huán)境,用於構建可擴展應用程序和後端API。 Nodejs因其非阻滯I/O模型而聞名輕巧有效,並且

See all articles