0x00 前言
最近在对公司的资产进行梳理,发现了很多端口对外开放了,如ldap389、rsync873、ssh22、mysql3306和一些不常见的端口,以及内网大量的hadoop、redis、ftp、mongodb等存在未授权访问,从网上收集了一些文章总结一下常见的未授权访问漏洞
0x01 参考
常见未授权访问漏洞总结
【脉搏沉淀系列】未授权访问漏洞总结
混在运维部的安全员说“端口与口令安全”
PortVulnerabilityAnalysis
Redis的一些漏洞复现利用
Hadoop Yarn REST API未授权漏洞利用挖矿分析
0x02 总结
LDAP未授权访问漏洞
漏洞介绍及危害
轻量级目录访问协议,最近几年随着ldap的广泛使用被发现的漏洞也越来越多。但是毕竟主流的攻击方式仍旧是那些,比如注入,未授权等等;这些问题的出现也都是因为配置不当而造成的。
测试
JXplorer、LdapAdmin等可视化工具连接
防御手段
- 密码策略配置
NFS未授权访问漏洞
漏洞介绍及危害
NFS(Network FileSystem)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
测试
showmount -e 10.0.0.1
防御手段
限制IP
Redis未授权访问漏洞
漏洞简介及危害
Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器、添加计划任务、写入Webshell等操作。
测试
redis-cli -h 10.0.0.1
防御手段
- 禁止使用root权限启动redis服务。
- 对redis访问启动密码认证,并设置复杂密码。redis默认没有开启密码认证,打开/etc/redis/redis.conf配置文件, (requirepass 密码)可设置认证密码,保存redis.conf,重启redis(/etc/init.d/redis-serverrestart)之后,需要执行(auth 密码)。。
- 添加IP访问限制,并更改默认6379端口。
MongoDB未授权访问漏洞
漏洞简介以及危害
开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增、删、改、查高危动作)而且可以远程访问数据库。
造成未授权访问的根本原因就在于启动 Mongodb 的时候未设置 –auth 也很少会有人会给数据库添加上账号密码(默认空口令),使用默认空口令这将导致恶意攻击者无需进行账号认证就可以登陆到数据服务器。
测试
nmap -p 27017 –script mongodb-info 10.0.0.1
防御手段
- 为MongoDB添加认证:MongoDB启动时添加–auth参数、为MongoDB添加用户
- MongoDB 自身带有一个HTTP服务和并支持REST接口。在2.6以后这些接口默认是关闭的。mongoDB默认会使用默认端口监听web服务,一般不需要通过web方式进行远程管理,建议禁用。修改配置文件或在启动的时候选择 –nohttpinterface 参数 nohttpinterface=false
- 使用安全组防火墙或本地操作系统防火墙对访问源IP进行控制,如果仅对内网服务器提供服务,建议禁止将MongoDB服务发布到互联网上。
- 启动时加入参数–bind_ip 127.0.0.1 或在/etc/mongodb.conf文件中添加以下内容:bind_ip = 127.0.0.1
Jenkins未授权访问漏洞
漏洞简介以及危害
默认情况下 Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令,攻击者可通过未授权访问漏洞或者暴力破解用户密码等进入后台管理服务,通过脚本执行界面从而获取服务器权限。
测试
访问http://10.0.0.1:8080/manage 可以看到没有任何限制可以直接访问
防御手段
- 升级版本。
- 添加认证,设置强密码复杂度及账号锁定。
- 禁止把Jenkins直接暴露在公网。
Memcached 未授权访问漏洞
漏洞简介以及危害
Memcached 是一套常用的 key-value 分布式高速缓存系统,由于 Memcached 的安全设计缺陷没有权限控制模块,所以对公网开放的Memcache服务很容易被攻击者扫描发现,攻击者无需认证通过命令交互可直接读取 Memcached中的敏感信息。
测试
telnet 10.0.0.1 11211
nc -vv 10.0.0.1 11211
nmap -p 11211 –script memcached-info 10.0.0.1
防御手段
- 设置Memchached只允许本地访问。
- 禁止外网访问Memcached 11211端口。
- 配置访问控制策略。
- 最小化权限运行。
- 修改默认端口等。
JBOSS 未授权访问漏洞
漏洞简介以及危害
JBoss是一个基于J2EE的开放源代码应用服务器,代码遵循LGPL许可,可以在任何商业应用中免费使用;JBoss也是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3规范。,默认情况下访问 http://ip:8080/jmx-console 就可以浏览 JBoss 的部署管理的信息不需要输入用户名和密码可以直接部署上传木马有安全隐患。
测试
http://10.0.0.1:8080/jmx-console/ 无需认证进入控制页面
防御手段
- 对jmx控制页面访问添加访问验证。
- 进行JMX Console 安全配置。
VNC 未授权访问漏洞
漏洞简介以及危害
VNC 是虚拟网络控制台Virtual Network Console的英文缩写。它是一款优秀的远程控制工具软件由美国电话电报公司AT&T的欧洲研究实验室开发。VNC是基于 UNXI 和 Linux 的免费开源软件由 VNC Server 和 VNC Viewer 两部分组成。VNC 默认端口号为 5900、5901。VNC 未授权访问漏洞如被利用可能造成恶意用户直接控制target主机。
测试
vncviewer 10.0.0.1
防御手段
漏洞简介以及危害
Docker 是一个开源的引擎可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署包括 VMs、bare metal、OpenStack 集群和其他的基础应用平台Docker。
Docker Remote API 是一个取代远程命令行界面(rcli)的REST API。存在问题的版本分别为 1.3 和 1.6因为权限控制等问题导致可以通过 docker client 或者 http 直接请求就可以访问这个 API,通过这个接口,我们可以新建 container,删除已有 container,甚至是获取宿主机的 shell。
测试
docker -H tcp://10.0.0.1:2375 version
防御手段
- 简单粗暴的方法,对2375端口做网络访问控制,如ACL控制,或者访问规则。
- 修改docker swarm的认证方式,使用TLS认证:Overview Swarm with TLS 和 Configure Docker Swarm for TLS这两篇文档,说的是配置好TLS后,Docker CLI 在发送命令到docker daemon之前,会首先发送它的证书,如果证书是由daemon信任的CA所签名的,才可以继续执行。
ZooKeeper 未授权访问漏洞
漏洞简介以及危害
zookeeper是分布式协同管理工具,常用来管理系统配置信息,提供分布式协同服务。Zookeeper的默认开放端口是2181。Zookeeper安装部署之后默认情况下不需要任何身份验证,造成攻击者可以远程利用Zookeeper,通过服务器收集敏感信息或者在Zookeeper集群内进行破坏(比如:kill命令)。攻击者能够执行所有只允许由管理员运行的命令。
测试
echo envi|nc 10.0.0.1 2181
利用zookeeper可视化管理工具进行连接,下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
防御手段
- 修改 ZooKeeper 默认端口,采用其他端口服务。
- 添加访问控制,配置服务来源地址限制策略。
- 增加 ZooKeeper 的认证配置。
Rsync 未授权访问漏洞
漏洞简介以及危害
Rsync(remote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件,也可以同步本地硬盘中的不同目录。Rsync 默认允许匿名访问,如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患。Rsync 的默认端口为 837。
测试
rsync rsync://10.0.0.1:873/
rsync 10.0.0.1::
防御手段
- 账户认证:正确配置认证用户名及密码。
- 权限控制:使用合理的权限。
- 网络访问控制:控制接入源ip。
- 数据加密传输等
Atlassian Crowd 未授权访问漏洞
漏洞简介以及危害
Atlassian Crowd和Atlassian Crowd Data Center都是澳大利亚Atlassian公司的产品。Atlassian Crowd是一套基于Web的单点登录系统。该系统为多用户、网络应用程序和目录服务器提供验证、授权等功能。Atlassian Crowd Data Center是Crowd的集群部署版。Atlassian Crowd和Crowd Data Center在其某些发行版本中错误地启用了pdkinstall开发插件,使其存在安全漏洞。攻击者利用该漏洞可在未授权访问的情况下对Atlassian Crowd和Crowd Data Center安装任意的恶意插件,执行任意代码/命令,从而获得服务器权限。
测试
进行上传一个标准的插件,来自atlassian-bundled-plugins中的applinks-plugin-5.4.12.jar
curl –form “[email protected]” http://10.0.0.1:8095/crowd/admin/uploadplugin.action -v
防御手段
- 设置访问/crowd/admin/uploadplugin.action的源ip。
- 升级最新版本(3.5.0以上)。
CouchDB 未授权访问漏洞
漏洞简介以及危害
Apache CouchDB是一个开源数据库,专注于易用性和成为”完全拥抱web的数据库”。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序),默认会在5984端口开放Restful的API接口,如果使用SSL的话就会监听在6984端口,用于数据库的管理功能。其HTTP Server默认开启时没有进行验证,而且绑定在0.0.0.0,所有用户均可通过API访问导致未授权访问。
在官方配置文档中对HTTP Server的配置有WWW-Authenticate:Set this option to trigger basic-auth popup on unauthorized requests,但是很多用户都没有这么配置,导致漏洞产生。
测试
curl http://10.0.0.1:5984
curl http://10.0.0.1:5984/_config
nmap -p 5984 –script “couchdb-stats.nse” 10.0.0.1
防御手段
- 绑定指定ip。
- 设置访问密码。
Elasticsearch 未授权访问漏洞
漏洞简介以及危害
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。Elasticsearch的增删改查操作全部由http接口完成。由于Elasticsearch授权模块需要付费,所以免费开源的Elasticsearch可能存在未授权访问漏洞。该漏洞导致,攻击者可以拥有Elasticsearch的所有权限。可以对数据进行任意操作。业务系统将面临敏感数据泄露、数据丢失、数据遭到破坏甚至遭到攻击者的勒索。
Elasticsearch服务普遍存在一个未授权访问的问题,攻击者通常可以请求一个开放9200或9300的服务器进行恶意攻击。
测试
curl http://10.0.0.1:9200/_nodes #查看节点数据
防御手段
- 访问控制策略,限制IP访问,绑定固定IP。
- 架设nginx反向代理服务器,并设置http basic认证来实现elasticsearch的登录认证。
- 在config/elasticsearch.yml中为9200端口设置认证等。
Hadoop 未授权访问漏洞
漏洞简介以及危害
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,由于服务器直接在开放了 Hadoop 机器 HDFS 的 50070 web 端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。
测试
访问 http://10.0.0.1:8088/cluster
防御手段
- 如无必要,关闭 Hadoop Web 管理页面。
- 开启身份验证,防止未经授权用户访问。
- 部署Knox、Nginx之类的反向代理系统,防止未经授权用户访问;
- 设置“安全组”访问控制策略,将 Hadoop 默认开放的多个端口对公网全部禁止或限制可信任的 IP 地址才能访问包括 50070 以及 WebUI 等相关端口。
Jupyter Notebook 未授权访问漏洞
漏洞简介以及危害
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。
如果管理员未为Jupyter Notebook配置密码,将导致未授权访问漏洞,游客可在其中创建一个console并执行任意Python代码和命令。
测试
访问 http://10.0.0.1:8888
防御手段
- 开启身份验证,防止未经授权用户访问。
- 访问控制策略,限制IP访问,绑定固定IP。