声明:本篇文章只是用于记载学习笔记,学习交流,不可用作其他违规用途。
未授权访问可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。
目前主要存在未授权访问漏洞有:NFS服务,Samba服务,LDAP,Rsync,FTP,GitLab,Jenkins,MongoDB,Redis,ZooKeeper,ElasticSearch,Memcache,CouchDB,Docker,Solr,Hadoop,Duboo等。
Redis默认情况下,会绑定在0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等,这样会将redis服务暴露到公网上,如果在没有设置密码认证的情况下,会导致任意用户在可以访问模板服务器的情况下未授权访问Redis以及读取Redis的数据,攻击者在未授权访问Redis的情况下,利用Redis自身提供的config命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的/root/.ssh文件夹的authotrized_keys文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器。
漏洞的产生条件有以下两点:
环境:vulhub/redis/4-unacc
可以直接连接执行命令,不需要认证,证明存在未授权漏洞。
此处不做介绍。
开启MongoDB服务时不添加任何参数时,默认是没有权限认证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增删改查高危动作)而且可以远程访问数据库。
造成未授权访问的根本原因就在于启动Mongodb的时候未设置–auth也很少会有人会给数据库添加上账号密码,使用默认空口令这将导致恶意攻击者无需进行账号认证就可以登录到数据服务器。
1、为MongoDB添加认证:MongoDB启动时添加–auth参数、为MongoDB添加用户。
2、MongoDB自身带有一个HTTP服务和并支持REST接口,在2.6以后这些接口默认是关闭的,mongoDB默认会使用默认端口监听web服务,一般不需要通过web方式进行远程管理,建议禁用,修改配置文件或在启动的时候选择-nohttpinterface参数,nohttpinterface=false。
3、启动时加入参数–bind_ip 127.0.0.1或在/etc/mongodb.conf文件中添加以下内容:–bind_ip=127.0.0.1。
Memcached是一套常用的key-value分布式高速缓存系统,由于Memcached的安全设计缺陷没有权限控制模块,所以对公网开放的Memcache服务很容易被攻击者扫描发现,攻击者无需认证通过命令交互可直接读取Memcached中的敏感信息。
直接使用Telnet探测
zookeeper是分布式协同管理⼯具,常⽤来管理系统配置信息,提供分布式协同服务。
Zookeeper的默认开放端⼝是2181。Zookeeper安装部署之后默认情况下不需要任何身份验
证,造成攻击者可以远程利⽤Zookeeper,通过服务器收集敏感信息或者在Zookeeper集群内
进⾏破坏(⽐如:kill命令)。攻击者能够执⾏所有只允许由管理员运⾏的命令。
ElasticSearch是⼀个基于Lucene的搜索服务器。它提供了⼀个分布式多⽤户能⼒的全⽂搜索引擎,基于RESTful web接⼝。Elasticsearch是⽤Java开发的,并作为Apache许可条款下的开放源码发布,是当前流⾏的企业级搜索引擎。Elasticsearch的增删改查操作全部由http接⼝完成。由于Elasticsearch授权模块需要付费,所以免费开源的Elasticsearch可能存在未授权访问漏洞。该漏洞导致,攻击者可以拥有Elasticsearch的所有权限。可以对数据进⾏任意操作。业务系统将⾯临敏感数据泄露、数据丢失、数据遭到破坏甚⾄遭到攻击者的勒索。
Elasticsearch服务普遍存在⼀个未授权访问的问题,攻击者通常可以请求⼀个开放9200或9300的服务器进⾏恶意攻击。
Kibana如果允许外⽹访问且没有做安全登录认证,就会被外部任意访问,查看所有数据,造成数据泄露。在默认配置下,Kibana就可以访问Elasticsearch中的所有数据。
Docker是⼀个开源的应⽤容器引擎,让开发者可以打包他们的应⽤以及依赖包到⼀个可移植的容器中,然后发布到任何流⾏的LINUX机器上,也可以实现虚拟化。 Docker swarm 是⼀个将docker集群变成单⼀虚拟的docker host⼯具,使⽤标准的 DockerAPI,能够⽅便docker集群的管理和扩展,由docker官⽅提供。Docker Remote API如配置不当可导致未授权访问,被攻击者恶意利⽤。攻击者⽆需认证即可访问到Docker数据,可能导致敏感信息泄露,⿊客也可以删除。Docker上的数据,直接访问宿主机上的敏感信息,或对敏感⽂件进⾏修改,最终完全控制服务器。
Kubernetes 的服务在正常启动后会开启两个端⼝:Localhost Port (默认8080)、Secure Port(默认6443)。这两个端⼝都是提供 Api Server 服务的,⼀个可以直接通过 Web 访问,另⼀个可以通过 kubectl 客户端进⾏调⽤。如果运维⼈员没有合理的配置验证和权限,那么攻击者就可以通过这两个接⼝去获取容器的权限。
Hadoop是⼀个由Apache基⾦会所开发的分布式系统基础架构,由于服务器直接在开放了Hadoop 机器 HDFS 的 50070 web 端⼝及部分默认服务端⼝,⿊客可以通过命令⾏操作多个⽬录下的数据,如进⾏删除,下载,⽬录浏览甚⾄命令执⾏等操作,产⽣极⼤的危害。
默认情况下 Jenkins⾯板中⽤户可以选择执⾏脚本界⾯来操作⼀些系统层命令,攻击者可通过未授权访问漏洞或者暴⼒破解⽤户密码等进⼊后台管理服务,通过脚本执⾏界⾯从⽽获取服务器权限。
ActiveMQ是⼀款流⾏的开源消息服务器。默认情况下,ActiveMQ服务是没有配置安全参数。恶意⼈员可以利⽤默认配置弱点发动远程命令执⾏攻击,获取服务器权限,从⽽导致数据泄露。
RabbitMQ是⽬前⾮常热⻔的⼀款消息中间件,基于AMQP协议的,可以在发布者和使⽤者之间交换异步消息。消息可以是⼈类可读的JSON,简单字符串或可以转换为JSON字符串的值列表。
Actuator 是 springboot 提供的⽤来对应⽤系统进⾏⾃省和监控的功能模块,借助于Actuator 开发者可以很⽅便地对应⽤系统某些监控指标进⾏查看、统计等。在 Actuator 启⽤
的情况下,如果没有做好相关权限控制,⾮法⽤户可通过访问默认的执⾏器端点(endpoints)来获取应⽤系统中的监控信息,从⽽导致信息泄露甚⾄服务器被接管的事件发⽣。
FTP 弱⼝令或匿名登录漏洞,⼀般指使⽤ FTP 的⽤户启⽤了匿名登录功能,或系统⼝令的⻓度太短、复杂度不够、仅包含数字、或仅包含字⺟等,容易被⿊客攻击,发⽣恶意⽂件上传或更严重的⼊侵⾏为。
禁止匿名登录
JBoss是⼀个基于J2EE的开放源代码应⽤服务器,代码遵循LGPL许可,可以在任何商业应⽤中免费使⽤;JBoss也是⼀个管理EJB的容器和服务器,⽀持EJB 1.1、EJB 2.0和EJB3规范。,默认情况下访问 http://ip:8080/jmx-console 就可以浏览 JBoss 的部署管理的信息不需要输⼊⽤户名和密码可以直接部署上传⽊⻢有安全隐患。
LDAP中⽂全称为:轻型⽬录访问协议(Lightweight Directory Access Protocol),默认使⽤389, LDAP 底层⼀般使⽤ TCP 或 UDP 作为传输协议。⽬录服务是⼀个特殊的数据库,是⼀种以树状结构的⽬录数据库为基础。未对LDAP的访问进⾏密码验证,导致未授权访问。
Rsync(remote synchronize)是⼀个远程数据同步⼯具,可通过 LAN/WAN 快速同步多台主机间的⽂件,也可以同步本地硬盘中的不同⽬录。Rsync 默认允许匿名访问,如果在配置⽂件中没有相关的⽤户认证以及⽂件授权,就会触发隐患。Rsync 的默认端⼝为 837。
VNC 是虚拟⽹络控制台Virtual Network Console的英⽂缩写。它是⼀款优秀的远程控制⼯具软件由美国电话电报公司AT&T的欧洲研究实验室开发。VNC是基于 UNXI 和 Linux 的免费开源软件由 VNC Server 和 VNC Viewer 两部分组成。VNC 默认端⼝号为 5900、5901。VNC 未授权访问漏洞如被利⽤可能造成恶意⽤户直接控制target主机。
Dubbo是阿⾥巴巴公司开源的⼀个⾼性能优秀的 服务框架,使得应⽤可通过⾼性能的 RPC实现服务的输出和输⼊功能,可以和 Spring框架⽆缝集成。dubbo 因配置不当导致未授权访问漏洞。
Network File System(NFS),是由SUN公司研制的UNIX表示层协议(pressentation layer protocol),能使使⽤者访问⽹络上别处的⽂件就像在使⽤⾃⼰的计算机⼀样。服务器在启⽤nfs服务以后,由于nfs服务未限制对外访问,导致共享⽬录泄漏。
apt install nfs-common 安装nfs客户端
showmount -e x.x.x.x 查看nfs服务器上的共享⽬录
mount -t nfs x.x.x.x:/grdata /mnt 挂载到本地
umount /mnt/ 卸载共享⽬录
公网上大部分都拒绝访问。
利用iptables限制端口2049和20048端口的访问,禁止外部访问。
当开发者配置不当时就可能造成未授权访问下⾯给出常⻅Druid未授权访问路径:
/druid/websession.html
/system/druid/websession.html
/webpage/system/druid/websession.html(jeecg)
漏洞特征:
http://www.xxxx.com/druid/index.html
google语法:inurl:/druid/websession.html
访问相关的路径。
Apache CouchDB是⼀个开源数据库,专注于易⽤性和成为"完全拥抱web的数据库"。它是⼀个使⽤JSON作为存储格式,JavaScript作为查询语⾔,MapReduce和HTTP作为API的NoSQL数据库。应⽤⼴泛,如BBC⽤在其动态内容展示平台,Credit Suisse⽤在其内部的商品部⻔的市场框架,Meebo,⽤在其社交平台(web和应⽤程序)。
在业务逻辑漏洞里讲到过。
配置密码:配置访问密码,在/etc/couchdb/local.ini中找到admins字段配置密码。
Atlassian Crowd和Atlassian Crowd Data Center都是澳⼤利亚Atlassian公司的产品。Atlassian Crowd是⼀套基于Web的单点登录系统。该系统为多⽤户、⽹络应⽤程序和⽬录服务器提供验证、授权等功能。Atlassian Crowd Data Center是Crowd的集群部署版。AtlassianCrowd和Crowd Data Center在其某些发⾏版本中错误地启⽤了pdkinstall开发插件,使其存在安全漏洞。攻击者利⽤该漏洞可在未授权访问的情况下对Atlassian Crowd和Crowd Data Center安装任意的恶意插件,执⾏任意代码/命令,从⽽获得服务器权限。
Jupyter Notebook(此前被称为 IPython notebook)是⼀个交互式笔记本,⽀持运⾏ 40 多种编程语⾔。如果管理员未为Jupyter Notebook配置密码,将导致未授权访问漏洞,游客可在其中创建⼀个console并执⾏任意Python代码和命令,默认端⼝:8888。
RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的⼀个应⽤层协议,该协议定义了⼀对多应⽤程序如何有效地通过IP⽹络传送多媒体数据,被⼴泛⽤于视频直播领域,为⽅便⽤户远程监控摄像头内容,许多摄像头⼚商会在摄像头或NVR中开启RTSP服务器。攻击者可通过VLC等视频播放软件打开rtsp地址进⾏摄像头画⾯的实时查看。
Apache Spark是⼀款集群计算系统,其⽀持⽤户向管理节点提交应⽤,并分发给集群执⾏。如果管理节点未启动访问控制,攻击者可以在集群中执⾏任意代码。该漏洞的本质是未授权⽤户可以向Master节点提交⼀个应⽤,Master节点会分发给Slave节点执⾏应⽤。如果应⽤中包含恶意代码,会导致任意代码执⾏,威胁Spark集群整体的安全性。开放:6066、8081、8082 端⼝则很有可能存在漏洞。
Weblogic是Oracle公司推出的J2EE应⽤服务器,CVE-2020-14882允许未授权的⽤户绕过管理控制台的权限验证访问后台。CVE-2020-14883允许后台任意⽤户通过HTTP协议执⾏任意命令。使⽤这两个漏洞组成的利⽤链,可通过⼀个GET请求在远程Weblogic服务器上以未授权的任意⽤户身份执⾏命令。
下载补丁程序并安装更新。
zabbix是⼀款服务器监控软件,默认服务开放端⼝为10051,其由server、agent、web等模块组成,其中web模块由PHP编写,⽤来显示数据库中的结果。
Solr是⼀个⾼性能,采⽤Java开发,基于Lucene的全⽂搜索服务器。solr的管理界⾯通常包含如下信息:solr的配置信息(包括路径,⽤户名,系统版本信息),数据库的配置信息(地址,⽤户名,密码),数据库搜索数据等。solr未授权访问的危害很⼤,轻则可查询所有数据库信息,重则可读取系统任意⽂件,甚⾄getshell。
Swagger 是⼀个规范且完整的框架,⽤于⽣成、描述、调⽤和可视化 RESTful ⻛格的 Web 服务。
设置访问权限。
Harbor未授权添加任意管理员漏洞。攻击者可通过构造特定的字符串,在未授权的情况下直接创建管理员账号,从⽽接管Harbor镜像仓库。
找到注册页面。
点击注册抓包,改包,在最后数据包加上:“has_admin_role”:true
修改成功,成功添加账号密码,并登录成功。
尽快升级到最新版。