作者:
Blood_Zero
·
2015/09/16 14:44
0x00 背景
NFS(Network File System):是FreeBSD支援的檔案系統中的一種,它允許網路中的計算機之間透過TCP/IP網路共享資源;
NFS配置:(宣告:以下NFS實驗是在RedHat7上完成)
首先安裝NFS(我的機子是最小化的系統,需要自己安裝):
#!bash
yum install nfs-utils.x86_64 -y
啟動服務:
#!bash
systemctl start rpcbind(如果這個服務不啟動,nfs服務會啟動失敗)
systemctl start nfs-server
systemctl enable rpcbind;systemctl enable nfs-server 開機自啟
firewall-cmd --permanent --add-service=nfs 讓防火牆透過NFS服務
firewall-cmd --permanent --add-service=rpc-bind 透過rpc服務(如果不開啟,rpcinfo就不能掃描)
firewall-cmd --permanent --add-service=mountd 透過mountd服務(如果不開啟,不能遠端showmount)
firewall-cmd --reload
配置:
mkdir /pentest(建立一個共享目錄)
vi /etc/exports
cat /etc/exports
/ *(rw,sync,no_root_squash) (注意:問題就出在這個地方,原理在文後解釋)
exportfs -r (啟動共享)
showmount -e (檢視共享)
客戶端掛載:
mount -t nfs NFS伺服器IP:/ /tmp/test (掛載到本地的/tmp/test中)
0x01 檢測
對存在NFS配置錯誤的機子進行掃描:rpcinfo -p 192.168.119.131
檢視nfs掛載新型:showmount -e 192.168.119.131
得到這些資訊,我們就可以掛載NFS,並傳輸ssh永久連線檔案
0x02 總結
其實漏洞形成的原理就是許可權不對,/etc/exports
這個檔案中的許可權設定,我們上文采用的是root
許可權,所以導致伺服器被入侵;
/etc/exports
檔案格式
<輸出目錄> [客戶端1 選項(訪問許可權,使用者對映,其他)] [客戶端2 選項(訪問許可權,使用者對映,其他)]
a. 輸出目錄:輸出目錄是指NFS系統中需要共享給客戶機使用的目錄;
b. 客戶端:客戶端是指網路中可以訪問這個NFS輸出目錄的計算機
指定ip地址的主機:192.168.0.200
指定子網中的所有主機:192.168.0.0/24 192.168.0.0/255.255.255.0
指定域名的主機:david.bsmart.cn
指定域中的所有主機:*.bsmart.cn
所有主機:*
c. 選項:選項用來設定輸出目錄的訪問許可權、使用者對映等。
設定輸出目錄只讀:ro
設定輸出目錄讀寫:rw
d. 使用者對映選項
all_squash
:將遠端訪問的所有普通使用者及所屬組都對映為匿名使用者或使用者組(nfsnobody
);
no_all_squash
:與all_squash
取反(預設設定);
root_squash
:將root
使用者及所屬組都對映為匿名使用者或使用者組(預設設定);
no_root_squash
:與rootsquash
取反;
anonuid=xxx
:將遠端訪問的所有使用者都對映為匿名使用者,並指定該使用者為本地使用者(UID=xxx
);
anongid=xxx
:將遠端訪問的所有使用者組都對映為匿名使用者組賬戶,並指定該匿名使用者組賬戶為本地使用者組賬戶(GID=xxx
);
e. 其它選項
secure
:限制客戶端只能從小於1024
的tcp/ip
埠連線nfs
伺服器(預設設定);
insecure
:允許客戶端從大於1024
的tcp/ip
埠連線伺服器;
sync
:將資料同步寫入記憶體緩衝區與磁碟中,效率低,但可以保證資料的一致性;
async
:將資料先儲存在記憶體緩衝區中,必要時才寫入磁碟;
wdelay
:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(預設設定);
no_wdelay
:若有寫操作則立即執行,應與sync
配合使用;
subtree
:若輸出目錄是一個子目錄,則nfs
伺服器將檢查其父目錄的許可權(預設設定);
no_subtree
:即使輸出目錄是一個子目錄,nfs
伺服器也不檢查其父目錄的許可權,這樣可以提高效率。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!