Docker未授权访问
漏洞简述:
Docker是一个开源引擎,可以轻松的为任何应用创建一个轻量级的,可移植的,自给自足的容器。开发者在终端上编译测试通过的容器可以是批量的生产环境中部包括VMs,bare metal,OpneStacke集群和其他的基础的应用平台,Docker存在问题的版本分别是1.3和1.6,由于权限等问题导致可以脱离容器拿到宿主机权限,默认端口2375
漏洞检测:
在2375端口开放的情况下,如果存在漏洞的话,url输入ip:2375/version就会列出基本信息
修复方法:
(1)使用TSL认证
(2)网络访问控制
ZooKeeper未授权访问漏洞
漏洞简述:
ZooKeeper是个分布式的开源分布式应用程序协调服务,在未经访问控制的情况下可通过执行envi命令获得大量系统敏感信息,导致任意用户进行未授权访问并读取数,甚至kill掉服务。
漏洞利用:
在2181端口开放的情况下,运行脚本通过socket连接2181端口,发送envi命令,若服务器端返回的数据中包含ZooKeeper的服务运行环境信息即可证明存在未授权访问。
检测脚本:
import socket
import sys
#设计check函数,定义ip地址,端口号,超时时间,命令四个参数
def check(ip,port,timeout,cmd):
try:
#设置默认超时时间
socket.setdefaulttimeout(timeout)
#使用tcp/ip进行通讯
s = socket.socket()
#连接目标服务的ip和port
s.connect((ip,int(port)))
#向目标发送命令
s.send(cmd)
接受目标服务器的回复
data = s.recv(1024)
断开套接字连接
s.close()
print(data)
except:
pass
#定义main函数
def main():
#对过去的参数长度进行判断
if len(sys.argv) < 3:
exit()
#将获取到第一个参数赋值给ip
ip = sys.argv[1]
#将获取到的第二个参数赋值给cmd
cmd = sys.argv[2]
#给check函数传入参数,并运行
check(ip,2183,3,cmd)
#main函数不可被引用
if __name__ == '__main__':
#运行main函数,
main()
程序运行:python Zookeeper.py 目标ip envi(命令)
修复方法:
(1)修改ZooKeeper默认端口,来源地址限制
(2)增加ZooKeeper认证配置。
Hadoop未授权访问漏洞
漏洞简述:
Hadoop开放默认端口50070,黑客可以通过命令行操作多个目录下的数据,甚至命令执行。
利用手段:
HDFS机器和MapReduce的webUI对应的服务端口,重要的是DataNode默认端口50075开放,攻击者可以通过hdsf提供的restful api对hdsf存储数据进行操作。
防御手段:
(1)无必要,关闭Hadoop Web管理页面
(2)开启身份认证
(3)设置访问控制
CouchDB未授权访问
漏洞简述:
CouchDB默认在5984端口开放Result的API接口,用于数据库的管理功能。其HTTP Server默认开启时没有进行验证,并且绑定在0.0.0.0,所有用户可通过API访问导致未授权访问。任何连接到服务器上的人,都可以调用相关API对服务器上的数据进行任意的增删改查,其中通过API修改local.ini配置文件,可进一步导致任意系统命令执行,获取服务器权限。
Elasticsearch未授权访问漏洞
漏洞简述:
Elasticsearch是一款java编写的企业级搜索服务,越来越多的公司使用ELK作为日志分析,启动此服务默认会开启9200端口,可被非法操作数据。
利用手段:
在9200端口开放的条件下,相当于一个API,任何人访问这个地址,就可以调用api,进行数据的增删改查操作。
http://ip:9200/_nodes 查看节点数据
http://ip:9200/_river
http://localhost:9200/_river/_search 查看数据库敏感信息
http://localhost:9200/_plugin/head/ web管理页面
http://localhost:9200/_cat/indices
防御手段:
禁止外网访问9200端口
使用nginx搭建反向代理,通过配置Nginx实现Elasticsearch的认证
白名单限制访问ip
config/selasticsearch.yml中为9200端口设置认证:
http.basic.enabled true #关闭,开启会接管全部的HTTP连接
http.basic.user "admin" #账号
http.basic.password "admin_pw" #密码
http.basic.ipwhitelist ["localhost","127.0.0.1"]