未授权访问漏洞是一个在企业内部非常常见的问题,这种问题通常都是由于安全配置不当、认证页面存在缺陷,或者压根就没有认证导致的。当某企业对外的服务端口、功能无限制开放,并且对用户的访问没有做任何限制的时候,可能会泄露出某些用户信息、敏感信息甚至可以执行系统命令,操作系统文件,导致系统的整体安全遭到破坏。
1、Redis未授权访问漏洞总结
2、Zookeeper未授权访问漏洞总结
3、SOLR未授权访问漏洞总结
4、MongoDB未授权访问漏洞总结
5、Elasticsearch未授权访问漏洞总结
6、Jenkins未授权访问漏洞总结
7、Hadoop未授权访问漏洞总结
8、Memcache未授权访问漏洞总结
9、JBoss未授权访问漏洞总结
Redis未授权访问漏洞总结
01
应用简介
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。和Memcached类似,它支持存储的value类型相对更多,包括 string(字符串)、list (链表)、set(集合)、zset(sorted set–有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与Memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
02
漏洞介绍
Redis因配置不当可以导致未授权访问,被攻击者恶意利用。当前流行的针对Redis未授权访问的一种新型攻击方式,在特定条件下,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器,可导致服务器权限被获取和数据删除、泄露或加密勒索事件发生,严重危害业务正常服务。
部分服务器上的Redis 绑定在 0.0.0.0:6379,并且没有开启认证(这是Redis 的默认配置),以及该端口可以通过公网直接访问,如果没有采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,将会导致 Redis 服务直接暴露在公网上,可能造成其他用户可以直接在非授权情况下直接访问Redis服务并进行相关操作。
03
漏洞复现
目标机ip:192.168.210.38
攻击机ip:192.168.210.102
Redis版本:6.0.5
在攻击机直接连接目标机上的Redis即可连接成功,使用info命令可以查看敏感信息。
在攻击机上连接目标机的Redis服务,然后添加一个计划任务文件,写入一个“每一分钟向攻击机发起一起TCP连接请求”的命令,然后执行。
在攻击机上开启监听特定端口,等待1分钟左右,目标机执行计划任务,攻击机可以获得一个反弹Shell,获得目标机控制权。
04
修复加固建议
① 禁用一些高危命令
修改redis.conf文件,禁用远程修改DB文件地址或修改高危命令的名称。
rename-commandFLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""
② 以低权限运行Redis服务
为Redis服务创建单独的用户和家庭目录,并且配置禁止登陆
groupadd -r redis && useradd -r -g redis redis。
③ 为Redis设置访问密码
修改redis.conf文件,找到Requirepass字段,在后面添加
Requirepassmypassword。
④ 禁止外网访问Redis服务
在redis.conf文件中,找到# bind 127.0.0.1,把前面的注释符号去掉,让其监听在本地。
⑤ 修改默认端口
在redis.conf文件中,找到Port字段,将其后面的默认端口6379修改为其他数值。
⑥ 升级Redis版本
在Redis升级到3.2版本之后,新增了一个Protected-Mode参数,这个参数被启用后将禁止外网访问Redis,只能通过本地或者白名单中的IP进行访问。
Zookeeper未授权漏洞访问总结
01
应用简介
Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
02
漏洞简介
Zookeeper 的默认开放端口是2181。Zookeeper 安装部署之后默认情况下不需要任何身份验证,造成攻击者可以远程利用 Zookeeper,通过服务器收集敏感信息或者在 Zookeeper 集群内进行破坏(比如:kill命令)。攻击者能够执行所有只允许由管理员运行的命令。
03
漏洞复现
攻击机:192.168.210.38
目标机:192.168.210.102
Zookeeper版本:3.6.1
目标机对外开启了zookeeper服务,如下图。
在攻击机端使用zookeeper客户端,直接连接目标机./zkCli.sh -server
192.168.210.102:2181
在没有经过认证授权的情况下直接连接成功,可以输入version查看服务版本或使用kill命令进行危险操作等。
04
修复加固建议
① 禁止把Zookeeper直接暴露在公网
② 添加访问控制,根据情况选择对应方式(认证用户、用户名密码、指定IP)
③ 修改默认端口,将2181端口关闭或者添加诱饵
④ 绑定指定IP访问
SOLR未授权访问漏洞总结
01
应用简介
Solr全称是Search On Lucene Replication,是由Apache开发的一个开源的基于Lucene的全文搜索服务器。文档通过Http利用XML加到一个搜索集合中。其集合的配置方法(config路径)可以增加和修改监听器,通过RunExecutableListener执行任意系统命令。查询该集合也是通过http收到一个XML/JSON响应来实现。他的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。
02
漏洞简介
Solr的管理界面通常包含如下信息:Solr的配置信息(包括路径,用户名,系统版本信息),数据库的配置信息(地址,用户名,密码),数据库搜索数据等。Solr未授权访问的危害很大,轻则可查询所有数据库信息,重则可读取系统任意文件,甚至getshell.
03
漏洞复现
目标机上开启了Solr服务,版本是3.4.0,攻击机直接可以未授权访问到其Solr服务。
进一步访问可以获得大量敏感配置信息,以及文件信息等等。
04
修复加固建议
① 禁止外网访问到Solr服务,让其只监听在本地。
② 修改默认端口、或修改部分接口默认名称。
③ 对Solr.RunExecutableListener做访问控制,阻止未经过认证与授权的用户调用。
MongoDB未授权访问漏洞总结
01
应用简介
MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系型数据库和非关系型数据库之间的产品。MongoDB的默认端口是27017,MongoDB在启动的时候提供了很多参数,如日志记录到哪个文件夹,是否开启认证等。
02
漏洞简介
MongoDB服务在安装后默认未开启权限验证,默认是空口令,这就导致了任何人无需进行账号认证就可以登陆到数据服务器,对数据库进行任意操作(增、删、改、查等高危动作)
3.0之前版本的MongoDB,默认监听在0.0.0.0,3.0及之后版本默认监听在127.0.0.1。
3.0之前版本,如未添加用户管理员账号及数据库账号,使用--auth参数启动时,在本地通过127.0.0.1仍可无需账号密码登陆访问数据库,远程访问则提示需认证;
3.0及之后版本,使用--auth参数启动后,无账号则本地和远程均无任何数据库访问权限。
03
漏洞复现
攻击机:192.168.210.102
目标机:192.168.20.35
MongoDB版本:3.4.0
首先目标机(192.168.20.35)在27017端口上开启MongoDB服务,但启动时并未加 --auth参数启动认证。
其次攻击机(192.168.210.102)扫描到目标机在27017端口上开启了MongoDB服务,尝试直接连接,命令如下:Mongo 192.168.20.35:27017攻击者可以直接连接成功,获得了数据库权限,可以查看数据库账号、表名、敏感数据等。
04
修复加固建议
① 禁止外网访问MongoDB,只监听在本地,使用如下命令配置
mongod.exe --bind_ip127.0.0.1 --dbpath /xxx/xxx
或在配置文件中指定监听IP
net:
port: 27017
bindIp: 127.0.0.1
② 限制访问源
在主机上通过防火墙限制访问源IP,例如在Linux上可以使用iptables进行限制,如下;
iptables-A INPUT -s <ip-address> -p tcp --destination-port 27017 -m stat --stateNEW,ESTABLISHED -j ACCEPT
iptables-A OUTPUT -d <ip-address> -p tcp --source-port 27010 -m state ESTABLISHED-j ACCEPT
其中<ip-address>替换成需访问MongoDB服务的IP。
③ 启动认证授权功能 --auth
MongoDB自3.0版本以上版本启动时,添加--auth参数可以开启认证访问功能。
在服务端使用如下命令开启MongoDB服务:Mongod --auth -dbpath XXX/XXX
在攻击端直接再次使用未授权访问连接服务端,由于目前服务端还未添加一个真正的账户,所以攻击端还是可以直接连接到服务端的MongoDB中去的,但是已经做不了任何的危险操作了。
添加账户:
在服务端本地,连接MongoDB,创建一个系统管理员账户如下:
注意:3.0版本之前使用db.addUser的方法创建用户。
重启服务端,使用auth参数启动,攻击端需提供用户名和密码才可以获得数据库访问权限。
Elasticsearch未授权访问漏洞总结
01
应用简介
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elasticsearch采用JAVA语言开发,作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎。
02
漏洞简介
Elasticsearch未授权访问可导致ES中存储的数据被任意查看,主要的危害是数据泄漏。除了未授权访问,历史上还出现过 ⼏ 个漏洞, ⽐ 如远程命令执 ⾏ 、任意 ⽂ 件读取、写webshell等。
03
漏洞复现
目标机:192.168.20.35
攻击机:192.168.210.102
服务版本:Elasticsearch 5.5.0
Elasticsearch默认运行端口是9200,使用攻击机直接访问目标机上的9200端口如下:
可以成功访问,证明存在未授权访问漏洞。以下是一些能够获取敏感数据资产的方式:
http://ip:9200/_cat/indices/
http://ip:9200/_plugin/head/
http://ip:9200/_nodes
http://ip:9200/_nodes?prettify
http://ip:9200/_status
http://ip:9200/_search?pretty
http://ip:9200/zjftu/
http://ip:9200/_mapping?pretty
http://ip:9200/Index/Type/Id
例如,在攻击机上访问http://192.168.20.35:9200
/_cat/indices?v即可查看所有索引Index(数据库)。
访问http://192.168.20.35:9200/_mapping?pretty
=true即可查看所有数据表(Type)。
04
修复加固建议
① 限制IP访问,绑定固定IP,修改默认端口
打开配置文件config/elasticsearch.yml,修改network.host字段,将其改成192.168.0.1将其监听在本地,同时修改http.port字段,将其运行在其他端口上。
② 添加认证功能与白名单模式
修改配置文件config/elasticsearch.yml,将端口设置认证如下:
http.basic.enabledtrue #开关,开启会接管全部HTTP连接
http.basic.user“admin” #账号
http.basic.password“password” #密码
http.basic.ipwhitelist[“localhost”,”127.0.0.1”] #白名单内的IP访问不需要通过账号和密码认证,支持IP和主机名,不支持IP区间或正则
http.basic.trusted_proxy_chains[] #信任代理列表
http.basic.logfalse #把无授权的访问事件添加到ES的日志
http.basic.xforward“” #记载代理路径的header字段名。
Jenkins未授权访问漏洞总结
01
应用简介
Jenkins是一个开源的、提供友好操作界面的持续集成工具,起源于Hudson。主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)构建工具结合使用。Jenkins官网:https://jenkins.io/官方文档:https://jenkins.io/doc/。
02
漏洞简介
Jenkins的默认配置是允许所有人都可以访问平台上的所有页面,攻击者可以利用平台中的scripts页面执行系统命令漏洞,获取服务器权限,造成服务器被入侵,从而导致敏感数据泄露等安全事件。
03
漏洞复现
攻击机:192.168.210.102
目标机:192.168.20.35
服务版本:Jenkins 1.403
Jenkins默认端口是8080,在攻击机上打开浏览器直接访问http://192.168.20.35:8080/manage就可以直接在未授权的情况下进入到目标机开放的Jenkins服务当中。
选中脚本命令行,即可执行系统代码,如下:例如执行 Println “ipconfig”.
execute().text ,即可获得目标服务器上的IP信息。
亦或者通过以下命令向服务器写入小马文件,newFile(“xxx/xxx/xxx.php”).
write(‘<?php @eval($_POST[“shell”]);?>’);
文件传入完成后再使用蚁剑等连接工具,连接小马即可获得WebShell。
04
修复加固建议
① 添加Jenkins访问密码
进入Jenkins首页,点击系统管理进入系统设置,勾选启用安全,在安全域选项下选择Jenkinis专有用户数据库并勾选允许用户注册。
返回系统管理,进入管理用户,新建一个使用者如下;
在返回系统设置,在授权策略下勾选登录用户可以做任何事,保存并重启Jenkins即可。
② 限制IP访问
不要将管理后台开放到互联网上。可以使用ESC安全组策略设置访问控制,默认策略为拒绝所有通信。我们可以根据业务发布情况仅开放需要对外用户提供的服务,并做好对访问源IP的访问控制。
Hadoop未授权访问漏洞总结
01
应用简介
Hadoop是由Apache基金会所开发的分布式系统基础架构。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS具有高容错性、高吞吐量的特点、适合那些有着超大数据集的应用程序。HDFS放宽了POSIX的要求,可以以流数据的形式访问文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce为海量的数据提供了计算。
02
漏洞简介
互联网上暴露的Hadoop服务器如果没有进行访问认证配置均会受到未授权访问漏洞的影响,攻击者可以针对HDFS发动攻击,删除大多数目录、数据,亦或者备份某些业务数据后在服务器上删除这些数据,并留下一些勒索信息或勒索邮件来索要赎金。
03
漏洞复现
目标机:192.168.210.102
攻击机:192.168.20.35
服务版本:Hadoop 2.10.0
Hadoop的默认管理页面在8088开放,攻击机直接访问目标机的8088端口即可未授权登录进目标机的Hadoop服务中。http://192.168.210.102:8088/
或者攻击者可以通过命令行操作多个目录下的数据,进行删除操作等。
Curl -I -X DELETE “http://ip:50070/webhdfs/v1
/tmp?op=DELETE&recursive=true”
Curl -I -X PUT “http://ip:50070/webhdfs/v1/
NODATA4U?op=MKDIRS”
04
修复加固建议
① 关闭Hadoop Web管理页面或不要开放在公网上
② 开启服务级别身份验证,如Kerberos认证
③ 部署Knox、Nginx之类的反向代理系统,防止未经授权的用户访问
④ 设置“安全组”访问控制策略,将Hadoop默认开放的多个端口对公网全部禁止或限制可信任的IP地址才能访问。
Memcache未授权访问漏洞总结
01
应用简介
Memcache是一个高性能的分布式的内存对象缓存系统,由LiveJournal的Brad Fitzpatrick开发,通过在内存中维护一个统一的巨大的hash表来实现。Memcache能够用来存储各种格式的数据、包括图像、视频、文件以及数据库检索的结果等。捡来的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
02
漏洞简介
Memcache的默认端口是11211,他以Key-Value(键值对)的形式将数据存储在内存中,由于Memcache的设计存在安全缺陷,客户端连接Memcache服务器后无需认证就可以读取、修改服务器缓存内容。
除了在Memcache中的数据可以被直接读取造成泄露和修改外,由于Memcache中的数据也会被后端代码处理,当处理代码时存在的缺陷又会导致不同类型的安全问题,例如:XSS漏洞、SQL注入、命令执行漏洞、CRLF漏洞等等。
03
漏洞复现
目标机:192.168.210.38
攻击机:192.168.20.35
服务版本:Memcached 1.6.6
目标机使用如下命令开启Memcached服务:./memcached -d -l 192.168.210.38 -p 11211-m 2048 -u root。在攻击端使用telnet 尝试连接目标机的11211端口并输入stats,可以在未授权的情况下连接进目标机开放的Memcached服务中,并获取相应敏感信息,如下:
04
修复加固建议
① 限制访问源
由于Memcache无权限控制功能,所以只能对访问来源做严格限制。
如果memcache没有在外网开放的必要,可以在memcache启动的时候指定绑定的ip地址为127.0.0.1,例如:
Memcached -d -m 2048 -u root -l 127.0.0.1-p 11211
② 利用iptables对端口和访问源做访问控制
如果memcache服务需要对外提供服务,则可以通过iptables进行访问控制,下面是只允许192.168.20.35对11211进行访问
//accept
#iptables -A INPUT -p tcp -s 192.168.20.35--dport 11211 -j ACCEPT
#iptables -A INPUT -p udp -s 192.168.20.35--dport 11211 -j ACCEPT
//drop
#iptables -l INPUT -p tcp –drop 11211 -jDROP
#iptables -l INPUT -p udp –dport 11211 -jDROP
#service iptables save
#service iptables restart
JBoss未授权访问漏洞总结
01
应用简介
JBoss是一个基于J2EE的开放源代码的应用服务器。由于JBoss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得JBoss广为流行。JBoss将具有革命性的JMX微内核服务作为其总线结构,并具有统一的类装载器,因此JBoss具有高度模块化和松耦合的特性。JBoss应用服务器也因此具有健壮的、高质量的良好性能。
02
漏洞简介
JBoss服务默认运行在8080端口,默认情况下JBoss是可以被外网其他用户直接访问到,甚至直接访问http://ip:8080/jmx-console目标地址,可以在未授权的情况下浏览JBoss的部署管理信息而不需要用户名和密码。攻击者可以在JBoss管理页面直接部署上传木马、恶意软件等,具有严重的安全隐患。
03
漏洞复现
目标机:192.168.210.102
攻击机:192.168.20.35
服务版本:JBoss 6.1.0
目标机默认对外开放了JBoss服务,从攻击机直接访问目标机的8080端口,即可直接进入JBoss管理页面,如下:
http://192.168.210.102:8080/
http://192.168.210.102:8080/jbossws/
04
修复加固建议
① 对JMX控制页面添加访问验证
② 不要将JBoss管理页面暴露在外网上
③ 对JMX Console进行安全配置
关于美创科技
杭州美创科技有限公司 ,敏感数据保护和数据安全领域的拓荒者和领导者,由国内多名数据库资深专家携手于2005年成立,产品及服务覆盖数据安全、数据管理、容灾备份、智能运维等四大领域,广泛应用于医疗、教育、金融、政府、人社、电力能源、物流交通、企业等众多行业。多年来,凭借卓越的技术创新与良好的用户口碑,美创多次入围全国网络安全50强,并参与多项国家及行业标准的编写,引领数据安全领域的规范发展。 目前,美创科技已全面推动全国市场化发展战略,相继在北京、广州、成都、南京、上海、宁波等地设立分公司,致力于为更多的客户提供专业的安全解决方案。