隨著分散式應用系統的發展,Zookeeper作為一個分散式協調服務框架被廣泛應用。然而,由於維護和管理的不當,很多Zookeeper被暴露在了公網上且未設置授權策略,這就意味著攻擊者可以通過它進行遠程命令執行、重要數據泄露等攻擊行為。本文將從多個方面全面介紹Zookeeper未授權訪問漏洞的風險及其驗證方法,以及如何預防和修復此漏洞。
一、Zookeeper未授權訪問漏洞怎麼驗證
在Zookeeper未授權訪問漏洞的驗證過程中,需要知道Zookeeper默認埠為2181。攻擊者可以使用nmap等工具對目標IP的埠進行掃描來判斷目標主機是否運行了Zookeeper服務。
nmap -p 2181 IP地址
如果掃描結果顯示2181埠處於打開狀態,則有可能存在Zookeeper未授權訪問漏洞。此時,可使用telnet命令連接到該埠,如果連接成功,則可以正常操作Zookeeper服務。
telnet IP地址 2181
如果連接成功,就可以使用以下命令測試是否存在Zookeeper未授權訪問漏洞。
ls /
如果返回結果為「Node does not exist」或「Connection refused」等類似提示,說明無法訪問Zookeeper,不存在未授權訪問漏洞。但如果返回「AUTH FAILED」等提示,則表明存在Zookeeper未授權訪問漏洞。
二、Zookeeper未授權訪問漏洞驗證
通過驗證,可以確定目標主機存在Zookeeper未授權訪問漏洞。接下來,攻擊者可以通過以下方法進行漏洞驗證。
1. 利用ZooInspector工具驗證
ZooInspector是一個Zookeeper的圖形化管理工具,可以通過官網下載並安裝。使用該工具驗證Zookeeper未授權訪問漏洞需要進行以下步驟。
步驟一:在ZooInspector中選擇「File」 -> 「Connect」,輸入目標主機的IP地址和2181埠,點擊「Connect」按鈕。
步驟二:如果Zookeeper服務開啟了安全策略,則需要在相應的位置添加用戶名和密碼。
步驟三:如果連接成功並能夠獲得Zookeeper根節點下的數據,說明目標主機存在Zookeeper未授權訪問漏洞。
2. 利用Python編寫驗證腳本
攻擊者也可以使用Python編寫驗證腳本來檢測目標主機是否存在Zookeeper未授權訪問漏洞。
import kazoo.client as kz_client zk = kz_client.KazooClient( hosts="IP地址:2181" ) zk.start() # 獲取根節點下的數據 data, stat = zk.get("/") if data: print("存在Zookeeper未授權訪問漏洞") else: print("不存在Zookeeper未授權訪問漏洞") zk.stop()
三、Zookeeper未授權訪問漏洞利用
Zookeeper未授權訪問漏洞的危害主要表現在遠程命令執行和重要數據泄露等方面。攻擊者可以通過以下方式實現攻擊目的。
1. 遠程命令執行
攻擊者可以通過Zookeeper服務的create、delete、setData等命令來執行遠程命令。攻擊步驟如下:
步驟一:在Zookeeper服務中使用create命令生成新節點,並在節點上設置命令執行語句。
create -e /test phpinfo()
步驟二:使用getData命令獲取節點數據,從而執行遠程命令。
getData /test
步驟三:攻擊者就可以在瀏覽器中查看到phpinfo()的執行結果,進而掌握目標主機的操作系統信息和應用程序信息等敏感信息。
2. 重要數據泄露
攻擊者可以通過Zookeeper服務的get、set等命令來獲取和修改節點數據,從而達到重要數據泄露的目的。攻擊步驟如下:
步驟一:使用get命令獲取敏感數據。
get /password
步驟二:攻擊者就可以得到存放在節點中的密碼等敏感信息。
四、Zookeeper未授權訪問漏洞解決
為了防止Zookeeper未授權訪問漏洞的發生,以下是防範措施。
1. 設置授權策略
在部署Zookeeper服務時,必須設置相應的授權策略,限制只有授權用戶才能訪問Zookeeper服務。可以在conf/zoo.cfg配置文件中添加以下內容:
authProvider.1=org.apache.zookeeper.server.auth.DigestAuthenticationProvider requireClientAuthScheme=sasl jaasLoginRenew=3600000 authProvider.x509=org.apache.zookeeper.server.auth.X509AuthenticationProvider
其中,DigestAuthenticationProvider用於指定用戶名和密碼,X509AuthenticationProvider用於基於證書的認證。
2. 限制埠
必須限制Zookeeper埠的訪問權,只允許授權的用戶進行訪問。可以通過iptables等工具設置規則,例如:
iptables -A INPUT -p tcp --dport 2181 -s IP地址 -j ACCEPT iptables -A INPUT -p tcp --dport 2181 -j DROP
其中,IP地址是授權的主機IP地址。
3. 更新最新版本
為了防止利用已知漏洞攻擊Zookeeper服務,需要及時更新Zookeeper到最新版本。在更新前需要備份相關數據並測試新版本的穩定性。
4. 加強網路安全管理
建立完善的網路安全管理體系,限制管理賬戶和網路設備的訪問權,並對網路服務進行監測,及時發現和處理異常事件。
五、Zookeeper未授權訪問漏洞修復
對於已經存在Zookeeper未授權訪問漏洞的系統,建議採取以下措施進行修復。
1. 修改配置文件
根據目前存在的漏洞,推薦修改Zookeeper主機的配置文件,加上用戶認證限制。同時,關閉不必要的埠。
2. 清除無效賬號
管理員應該定期檢查並刪除沒有使用過的或已知安全問題的賬號。
3. 更新軟體版本
最新的安全程序也會更新軟體版本以保護對應系統。管理員應該在官方提供的網站上更新相應軟體。
4. 設定訪問限制
系統管理員應該限制網路和系統用戶的訪問許可權,並阻止非法用戶訪問系統。在確保系統正確運行的基礎上,將訪問授予有效的用戶。
5. 安裝安全程序
管理員可以安裝最新的安全程序以保障對應系統絕對安全。定期掃描系統並做出及時安全防範性措施,或及時更新相關的安全補丁。
原創文章,作者:KNSFW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/334791.html