参考文章1:二十八种未授权访问漏洞合集(CSDN)
参考文章2:28种未授权访问漏洞(知乎)
参考文章3:未授权访问漏洞总结(freebuf)
参考文章4:常见未授权访问漏洞总结(先知社区)
未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷导致其他用户可以直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露。
未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷导致其他用户可以直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露。
开启MongoDB
服务时不添加任何参数,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作【增、删、改、查高危动作】而且可以远程访问数据库。
造成未授权访问的根本原因就在于启动 Mongodb
的时候未设置 --auth
,也很少会有人会给数据库添加上账号密码【默认空口令】,使用默认空口令这将导致恶意攻击者无需进行账号认证就可以登陆到数据服务器。
漏洞复现
为MongoDB
添加认证:MongoDB
启动时添加--auth
参数、为MongoDB
添加用户。
MongoDB
自身带有一个HTTP
服务和并支持REST
接口。在2.6
以后这些接口默认是关闭的。mongoDB
默认会使用默认端口监听web
服务,一般不需要通过web
方式进行远程管理,建议禁用。修改配置文件或在启动的时候选择 –nohttpinterface
参数 nohttpinterface=false
。
限制绑定IP
:启动时加入参数--bind_ip 127.0.0.1
或在/etc/mongodb.conf
文件中添加内容bind_ip = 127.0.0.1
。
Redis
默认情况下,会绑定在 0.0.0.0:6379
,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip
访问等,这样将会将 Redis
服务暴露到公网上;如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis
以及读取 Redis
的数据。攻击者在未授权访问 Redis
的情况下,利用 Redis
自身的提供的config
命令,可以进行写文件操作,攻击者可以成功将自己的ssh
公钥写入目标服务器的 /root/.ssh
文件夹的authotrized_keys
文件中,进而可以使用对应私钥直接使用ssh
服务登录目标服务器、添加计划任务、写入Webshell
等操作。
漏洞复现
设置 Redis
访问密码在 redis.conf
中找到 “requirepass
” 字段在后面填上强口令,redis
客户端也需要此密码来访问 redis
服务。
添加IP
访问限制:配置 bind
选项限定可以连接 Reids
服务器的 IP
并修改默认端口 6379
。
重启 Redis
服务。
清理系统中存在的后门木马。
禁止使用root
权限启动redis
服务。
默认情况下, Jenkins
面板中用户可以选择执行脚本界面来操作一些系统层命令,攻击者可通过未授权访问漏洞【未设置密码】或者暴力破解用户密码等进入后台管理服务,通过脚本执行界面从而获取服务器权限。
漏洞复现
升级版本。
添加身份认证,设置强密码复杂度及账号锁定。
禁止把Jenkins
直接暴露在公网。
Memcached
是一套分布式高速缓存系统,它以 Key - Value
的形式将数据存储在内存中,这些数据通常是会被频繁地应用、读取的。正因为内存中数据的读取速度远远大于硬盘的读取速度所以可以用来加速应用的访问, Memcached
的安全设计缺陷客户端连接 Memcached
服务器后无需认证就可读取、修改服务器缓存内容,所以对公网开放的Memcache
服务很容易被攻击者扫描发现,攻击者无需认证通过命令交互可直接读取 Memcached
中的敏感信息。
漏洞复现
IP
、端口和指定访问者IP
;Memcached 11211
端口。;memcached
监听本地回环地址 127.0.0.1
。只允许本地访问;JBoss
也是一个管理EJB
【企业java beans
】的容器和服务器,支持EJB 1.1
、EJB 2.0
和EJB3
规范。,默认情况下访问 http://ip:8080/jmx-console
就可以浏览 JBoss
的部署管理的信息,不需要输入用户名和密码可以直接部署上传木马有安全隐患。
漏洞复现
JMX
控制页面身份认证,控制页面访问,添加访问验证。;JMX Console
安全配置;jmx-console
和web-console
。VNC
是基于 UNXI
和 Linux
的免费开源软件,由 VNC Server
和 VNC Viewer
两部分组成。VNC
默认端口号为 5900
、5901
。VNC
未授权访问漏洞如被利用可能造成恶意用户直接控制受控主机危害相当严重。
漏洞复现
VNC
客户端登录口令认证并配置符合密码强度要求的密码;Docker Remote API
是一个取代远程命令行界面的REST API
。存在问题的版本分别为 1.3
和 1.6
。因为权限控制等问题导致可以通过 docker client
或者 http
直接请求就可以访问这个 API
,通过这个接口,我们可以新建 container
,删除已有 container
,甚至是获取宿主机的 shell
。该未授权访问漏洞是因为Docker API
可以执行Docker
命令,该接口是目的是取代Docker
命令界面,通过URL
操作Docker
。
漏洞复现
先用 nmap
扫描查看端口开放情况,2375
为 docker
端口。如果存在漏洞会有以下情况:url
输入 ip:2375/version
就会列出基本信息也可以执行目标服务器容器命令如 container
、image
等。
简单粗暴的方法,对2375
端口做网络访问控制,如ACL
控制,或者访问规则。
修改docker swarm
的认证方式,使用TLS
认证:Overview Swarm with TLS
和 Configure Docker Swarm for TLS
这两篇文档,说的是配置好TLS
后,Docker CLI
在发送命令到docker daemon
之前,会首先发送它的证书,如果证书是由daemon
信任的CA
所签名的,才可以继续执行。
zookeeper
是分布式协同管理工具,常用来管理系统配置信息,提供分布式协同服务。Zookeeper
的默认开放端口是2181
。Zookeeper
安装部署之后默认情况下不需要任何身份验证,造成攻击者可以远程利用Zookeeper
,通过执行 envi 命令获得系统大量的敏感信息包括系统名称Java
环境或者在Zookeeper
集群内进行破坏【比如:kill
命令)】,攻击者能够执行所有只允许由管理员运行的命令。
漏洞复现
修改 ZooKeeper
默认端口,采用其他端口服务。
添加访问控制,配置服务来源地址限制策略。
增加 ZooKeeper
的认证配置。
Rsync
是一个远程数据同步工具,可通过 LAN/WAN
快速同步多台主机间的文件,也可以同步本地硬盘中的不同目录。Rsync
默认允许匿名访问,如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患,Rsync
的默认端口为 837
。
漏洞复现
账户认证:正确配置认证用户名及密码,只允许指定的用户利用指定的密码使用 rsync
服务。
权限控制:使用合理的权限,不需要写入权限的 module
的设置为只读 Read only = true
。
网络访问控制:控制接入源ip
,使用安全组策略或白名单限制,只允许必要访问的主机访问:hosts allow = 123.123.123.123
。
隐藏 module
信息:修改配置文件 list =false
。
数据加密传输:Rsync
默认没有直接支持加密传输,如果需要 Rsync
同步重要性很高的数据,可以使用 ssh
。