FTP后門漏洞復現
0x01 漏洞簡述
vsftpd-2.3.4 手工觸發漏洞:當進行FTP認證時,如果用戶名USER中包含:),那么直接就觸發監聽6200埠的連接的shell,
0x02 風險等級
漏洞評定結果如下:
評定方式 等級
威脅等級 嚴重
影響面 廣泛
0x03 漏洞詳情
FTP是檔案傳輸協議(File Transfer Protocol)的縮寫,是用于在網路上進行檔案傳輸的一套標準協議,它作業在 OSI 模型的第七層, TCP 模型的第四層, 即應用層, 使用 TCP 傳輸的, 客戶在和服務器建立連接前要經過一個“三次握手”的程序, 保證客戶與服務器之間的連接是可靠的, 而且是面向連接, 為資料傳輸提供可靠保證,
FTP允許用戶以檔案操作的方式(如檔案的增、刪、改、查、傳送等)與另一主機相互通信,然而,用戶并不需要真正登陸到自己想要存取的計算機上面而成為完全用戶,可用FTP程式訪問遠程資源,實作用戶往返傳輸檔案、目錄管理以及訪問電子郵件等等,即使雙方計算機可能配有不同的作業系統和檔案存盤方式,
如果目標使用了含有漏洞的vsftpd2.3.4開啟FTP服務,通過FTP來訪問開放的目錄和檔案來進行資訊收集進行下一步的攻擊,
0x04 知識拓展
FTP作業原理?
FTP基于TCP協議服務,是互聯網中進行檔案傳輸的協議,默認使用20、21號兩個埠,一個資料埠和一個命令埠,埠20是資料埠,用于檔案在客戶端和服務器之間傳輸資料流,埠21是命令埠,用于傳輸控制流,接受客戶端發出的相關FTP命令與引數,
FTP客戶端在計算機網路中向FTP服務器發送服務請求,FTP服務器接收與回應FTP客戶機的請求,并向FTP客戶機提供所需的檔案傳輸服務,根據TCP協議的規定,FTP服務器使用熟知埠號20、21來提供服務,FTP客戶機使用臨時埠號來發送請求,FTP協議為控制連接與資料連接規定不同的熟知埠號,為控制連接規定的熟知埠號是21,為資料連接規定的熟知埠號為20,FTP協議采用的是持續連接的通信方式,它所建立的控制連接的維持時間通常較長,

ftp基本模型
0x05 影響版本
含有漏洞的vsftpd2.3.4
0x06 漏洞環境搭建
測驗環境
FTP版本:vsftpd2.3.4
靶機:Centos 7 IP: 192.168.3.2
攻擊機:Kali IP: 192.168.3.22
靶機:Centos里安裝vsftpd2.3.4
一、永久關閉網路管理(因為剛安裝完Centos后我發現網卡丟失了所以關閉了網路管理)

二、查看當前是否默認安裝vsftpd

三、卸載當前已安裝的vsftpd

四、查看是否移除默認安裝版本

五、將含有漏洞的vsftpd2.3.4解壓放入CentOS中,cd進入該目錄,查看builddefs.h檔案
六、編輯builddefs.h檔案

七、確認打開所有權限

八、編輯opts.c檔案并解決編碼問題



九、編譯安裝發現沒有gcc,安裝gcc


十、安裝完gcc后編譯安裝又報錯

解決方法:install tcp_wrappers
install tcp_wrappers-devel

解決辦法:yum install openssl*

十一、再次編譯安裝


十二、測驗一下編譯結果

十三、vsftp預設配置需要“nobody”用戶,如果系統中沒有就先創建(system default have create this useraccount)
vsftpd預設配置需要目錄“/usr/share/empty”,沒有該目錄的話就創建一個(system default have create this directory)
這里顯示目錄已經存在
十四、匿名檔案傳輸協議(anonymous FTP)需要創建用戶“ftp”,創建一個主目錄(屬主不能是用戶ftp,且用戶ftp不可寫)

用戶ftp已存在,轉至下面的命令(更改ftp目錄的屬主、陣列及權限):

將配置樣例拷貝到etc目錄下

十五、編輯/etc/vsftpd.conf,在底部增加“listen=YES”(作用是讓vsftpd不從inetd啟動)


十六、運行vsftpd

十七、關閉防火墻(與Linux版本有關,我這里是CentOS 7)

十八、隨便復制幾個檔案到“/var/ftp”目錄下,然后鏈接FTP
安裝一下FTP命令

至此環境搭建成功
0x07 漏洞驗證
一、首先用nmap腳本掃描目標21號埠漏洞(應該用nmap –script vuln -p 21 xxx.xxx.xxx.xxx),關閉匿名登錄:

手工觸發:當ftp驗證時,攻擊者登錄輸入用戶名后加笑臉,(密碼任意輸)后觸發6200埠獲得shell,連接目標6200埠:

利用msf腳本觸發:

0x08 修復建議
不同 FTP 服務軟體可能有不同的防護程式,本修復方案以Linux 中的vsftpd服務為例,您可參考以下方案對您的 FTP 服務進行安全加固,
請確保您的 FTP 服務軟體為官方最新版本,同時,建議您不定期關注官方發布的補丁,并及時進行更新,
強烈建議不要將此型別的服務在互聯網開放,您可以使用 VPN 等安全接入手段連接到 FTP 服務器端,同時使用 安全組 來控制訪問源IP,
Linux 系統 vsftpd 服務安全加固
1)及時安裝更新補丁
在安裝更新補丁前,備份您的 vsftp 應用配置,從 VSFTPD官方網站 獲取最新版本的 vsftp 軟體安裝包,完成升級安裝,或者,您可以下載最新版 vsftp 原始碼包,自行編譯后安裝更新,您也可以執行yum update vsftpd命令通過 yum 源進行更新,
2)禁止匿名登錄服務
A.添加一個新用戶(test),并配置強密碼,例如,執行useradd -d /home -s /sbin/nologin test命令:
其中,/sbin/nologin引數表示該用戶不能登錄 Linux shell 環境,
test為用戶名,
通過passwd test命令,為該用戶配置強密碼,密碼長度建議八位以上,且密碼應包括大小寫字母、特殊字符、數字混合體,且不要使用生日、姓名拼音等常見字串作為密碼,
B.修改組態檔 vsftpd.conf,執行#vim /etc/vsftpd/vsftpd.conf命令:
anonymous_enable=NO,將該引數配置為 NO 表示禁止匿名登錄,必須要創建用戶認證后才能登錄 FTP 服務
3)禁止顯示 banner 資訊
修改 VSFTP 組態檔 vsftpd.conf,設定ftpd_banner=Welcome,重啟 vsftp 服務后,即不顯示 banner 資訊,
4)限制FTP登錄用戶
在 ftpusers 和 user_list 檔案中列舉的用戶都是不允許訪問 FTP 服務的用戶(例如 root、bin、daemon 等用戶),除了需要登錄 FTP 的用戶外,其余用戶都應該添加至此拒絕串列中,
5)制FTP用戶目錄
A.修改 VSFTP 組態檔 vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
B.新建 /etc/vsftpd/chroot_list 檔案,并添加用戶名,例如,將 user1 添加至該檔案,則 user1 登錄 FTP 服務后,只允許在 user1 用戶的 home 目錄中活動,
6)修改監聽地址和默認埠
7)啟用日志記錄
修改 VSFTP 組態檔 vsftpd.conf,啟用日志記錄,
xferlog_enable=YES
xferlog_std_format=YES
如果您需要自定義日志存放位置,可以修改xferlog_file=/var/log/ftplog,
8)其他安全配置
修改 VSFTP 組態檔 vsftpd.conf,
#限制連接數
max_clients=100
max_per_ip=5
#限制傳輸速度
anon_max_rate=81920
local_max_rate=81920
0x09 學習鏈接
https://blog.csdn.net/qq_34412985/article/details/86737163
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299613.html
標籤:其他
上一篇:ctfshow-萌新-web15( 人為什么要活著?難道埃塞俄比亞再無我阿呆容身之處?)
下一篇:開學第一周學習week01
