zookeeper未授權訪問滲透測試及修復方法




zookeeper未授權訪問危害

服務器信息泄露、集群被破壞



一、 四字命令未授權使用

1.1 測試

工具:netcat ,Linux或Windows都可以測

命令行輸入echo envi | nc 10.10.10.10 2181即可查看服務器信息

命令有:envi stat ruok等



1.2 修復:

不想泄露信息可以修改zookeeper/conf/zoo.cfg(zookeeper為安裝目錄),注釋掉 4lw.commands.whitelist 相關的行。四字命令用於查詢狀態,zookeeper默認不開放這些命令,只有在白名單中才能運行。



二、 未授權連接及節點操作

2.1 測試

Linux下安裝zookeeper ,輸入

zookeeper/bin/zkCli.sh -server 10.10.10.10:2181

即可連接,可使用get /node watchset /node 1等命令去操作節點,如果成功,則證明此節點存在未授權訪問。




Windows也可以安裝zookeeper來測試

Windows下使用Java8運行zktools >>工具作者<<

作者用的百度雲,可能有點慢,我給出藍湊的下載地址,也呼吁大家不要用百度雲分享了 : https://wws.lanzous.com/iIlZvjdutij

如果Java8不是環境變量的話,首先編輯 bin 目錄下的 java-start.cmd 文件修改Java為你Java8安裝的地址,然后雙擊啟動

只要zktools連接成功,則證明所有節點存在未授權訪問。值得注意的是,如果某個節點有權限控制,那么zktools就無法連接成功,無法訪問其他未授權節點了。但是Linux下zkCli.sh仍可訪問其他未授權節點。



### 2.2 修復:

2.2.1 ip ACL授權策略

可以使用下列操作限制訪問節點的IP

setAcl -R /node ip:127.0.0.1:cdrwa,ip:10.10.11.11:cdrwa 
#-R為遞歸,cdrwa為權限



2.2.2 auth ACL授權策略

即用戶模式,制定策略后,訪問者必須使用addauth digest user:passwd登錄才能進行節點操作。

策略制定方法為,用zkCli.sh連接后,在其中運行addauth digest user:passwd(digest是固定的)來注冊用戶,可以有多個用戶。然后運行setAcl /node auth::cdrwa(auth是固定的),之后可運行getAcl /node查看,能發現之前注冊的用戶都被配入了節點的權限中。使用quit退出,再連接,可發現只有在使用addauth登錄之后才能操作節點。



2.2.3 digest Acl授權策略

不難發現策略2中,所有用戶對節點的權限都是一致的,只能統一設置,若想使不同用戶對節點的權限不同,可以使用digest Acl授權策略,參見 https://blog.csdn.net/u014630623/article/details/103749103



2.2.4 防火牆策略

使用以上策略限制節點后,任意用戶仍可登錄並用ls / 查看節點名字,但是無法獲得詳細信息和進行操作。若想不讓任意用戶訪問2181端口,可以配置防火牆。

(๑•̀ㅂ•́)و✧

往期精彩文章推薦:

《動態svg圖片簡單制作》

《使用博客園的第一件事 - 自定義主題》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM