【Web安全攻防从入门到精通】未授权访问漏洞
未授权访问漏洞
未授权访问,顾名思义是指在不进行请求授权的情况下对需要权限的功能进行访问执行。通常是由于认证页面存在缺陷、无认证,或安全配置不当导致。常见于服务端口,如接口无限制开放,网页功能通过链接无限制用户访问,低权限用户越权访问高权限功能等。
原理
由于系统对用户限制不全或无限制,以致任意用户或限制访问用户可以访问内部敏感信息,而导致的信息泄露以及系统功能的执行。越权漏洞产生的原因是未对访问功能权限做严格的校验,或者限制不全,导致对用户的限制只能局限于某一个功能上
危害
通常会泄露用户信息、系统信息在某些服务和系统中,未授权访问还可以执行系统命令,操作系统文件,导致系统的整体安全遭到破坏。
未授权访问漏洞的分类
未授权访问漏洞一般是由空口令/弱口令/权限验证缺省导致的漏洞、
- Redis未授权访问漏洞
防御:
- 禁止使用root权限启动redis服务
- 对Redis访问启动密码认证
- 添加IP访问限制,并更改默认端口
- MongoDB未授权访问漏洞
防御:
- 为MongoDB添加认证:MongoDB启动时添加参数—auth参数,为MongoDB添加用户
- MongoDB自身带有一个HTTP服务并支持RESET接口。在2.6版本以后这些接口是默认关闭的,MongoDB默认会使用默认端口监听Web服务,一般不需要同过Web方式进行远程管理,建议禁用。修改配置文件或在启动时选择-nohttpinterface参数nohttpinterface=false、
- 启动时加入参数—bind_ip 127.0.0.1或者在/etc/mongodb.conf文件中添加以下的内容:bind_ip=127.0.0.1
- Jenkins未授权访问漏洞
防御:
- 升级版本
- 添加认证,设置强密码复杂度及账号绑定
- 禁止把Jenkins直接暴露在公网
- Memcached未授权访问漏洞
防御:
- 设置Memcached只允许本地访问
- 禁止外网访问Memcached11211端口
- 配置访问控制策略
- 最小化权限运行
- 修改默认端口
- JBoss未授权访问漏洞
防御:
- 对JMX控制页面添加访问验证
- 进行JMXconsole安全配置
- VNC未授权访问漏洞
防御:
- 配置VNC客户端登陆口令认证,并配置符合密码强度要求的密码
- 以最小普通权限身份运行操作系统
- Docker未授权访问漏洞
防御:
- 对2375端口做网络访问控制,如ACL控制或者访问规则
- 修改DockerSwarm的认证法师,使用TLS认证,即配置好TLS后,DockerCLI在发送命令到docker daemon之前,会首先发送它的证书,如果证书室友daemon新人的CA所签名的,才可以继续执行。
- ZooKeeper未授权访问漏洞
防御:
- 修改ZooKeeper默认端口,采用其他端口服务
- 添加访问控制,配置服务来源地址限制策略
- 增加Zookeeper的认证配置
- Rsync未授权访问漏洞
防御:
- 账户认证:正确配置认证用户名和密码
- 权限控制:使用合理的权限
- 网络访问控制:控制接入源IP
- 数据加密传输
- AtlassianCrowd未授权访问漏洞
防御:
- 设置访问/crowd/admin/uploadplugin.action的源IP
- 升级最新版本
- CouchDB未授权访问漏洞
防御:
- 绑定指定IP
- 设置访问密码
- Elasticsearch未授权访问漏洞
防御:
- 访问控制策略,限制IP访问,绑定固定IP
- 在config/elasticsearch.yml中为9200端口设置认证
- Hadoop未授权访问漏洞
防御:
- 如无必要,关闭HadoopWeb管理页面
- 开启身份验证,防止未经授权用户访问
- 设置”安全组“访问控制策略,将Hadoop默认开放的多个端口对公网全部禁止,或限制可信任的IP地址才能访问包括50070及WebUI等在内的相关端口
- JupyterNotebook未授权访问漏洞
防御:
- 开启身份验证,防止未经授权用户访问
- 访问控制策略,限制IP访问,绑定固定IP
漏洞修复
如果企业内部存在安全设备如防火墙或IPS等设备,通用防御方法如下
- 通过安全设备设置防火墙白名单策略,针对固定IP访问
- 关闭免口令登陆功能,设置登陆密钥
- 端口关闭对外开放,如需开放,建议在安全组限制只允许指定IP才能访问该业务端口
- 使用Ngix搭建反向代理,通过配置Ngix实现对业务应用的认证
- 针对各类业务应用禁止使用默认口令和弱口令
- 部分业务应用需要升级到最新版本解决未授权访问漏洞