常见高危漏洞排查指引
1. 任意文件上传
漏洞描述:
一般情况下文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。文件上传本身是web中最为常见的一种功能需求,关键是文件上传之后服务器端的处理、解释文件的过程是否安全。
风险分析:
攻击者直接上传webshell到服务器,从而远程控制服务器。
处置建议:
- 验证文件名后缀,限制上传(php、jsp、aspx)等脚本程序。
- 设置上传白名单,只允许上传白名单(jpg、png、gif)等文件类型。设置文件存储目录权限,禁止文件上传目录进行脚本解析。
2. SQL注入漏洞
漏洞描述:
由于用户的输入, 也是SQL语句的一部分, 所以攻击者可以利用这部分可以控制的内容, 注入自己定义的语句, 改变SQL语句执行逻辑, 让数据库执行任意自己需要的指令。
风险分析:通过控制部分SQL语句, 攻击者可以查询数据库中任何自己需要的数据, 利用数据库的读写文件等特性, 可以直接获取数据库服务器的系统权限。
处置建议:
- 对与数据库进行交互的用户请求数据,要先做过滤,防止SQL注入。
- 对于整数,判断变量是否符合[0-9]的值;其他限定值,也可以进行合法性校验
- 对于字符串,对SQL语句特殊字符如(单引号、双引号、星号等)进行转义,关于这点,PHP有类似的转义函数mysql_escape_string和mysql_real_escape_string。
- 采用SQL语句预编译和参数化查询 ,能够有效的避免SQL注入漏洞。
3. 跨站脚本漏洞
漏洞描述:
跨站脚本攻击,它指的是恶意攻击者往Web页面里插入恶意html代码。
风险分析:当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到攻击者的特殊目的。
处置建议:
- 验证所有输入数据,有效检测攻击。
- 对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。
4. 应用逻辑漏洞
4.1弱口令
漏洞描述:
认证登录环节存在弱口令、默认口令、通用口令、长期不变口令等情况。
风险分析:攻击者可利用互联网公开的常见弱口令尝试登录管理后台,进一步发起攻击行为。
处置建议:
登录口令尽量采用大小写字母、数字、特殊符号混用的组合方式,口令长度不少于8位。同时添加限制登录失败次数的安全策略并定期更换登录口令。多台机器不要使用相同或类似的登录口令。
4.2验证码绕过
漏洞描述:
图形验证码一般是防止使用程序恶意注册、暴力破解用户名密码或者批量行为而设置的,图形验证码可被绕过,可进行执行暴力破解等操作。
风险分析:
处置建议:
- 注意验证识别后销毁验证码。
- 限制用户提交的验证码不能为空。
- 判断提交的验证码与服务器上存储的是否一致。
- 禁止将验证码明文信息发送至客户端。
4.3暴力破解
漏洞描述:
攻击者可利用该漏洞进行无限次撞库,爆破等操作,严重会导致用户名密码被攻击者获取。
风险分析:
攻击者一般会使用自动化脚本组合出常见的用户名和密码,即字典,再结合攻击工具进行暴力破解
处置建议:
- 所有账号密码登录功能,增加有效的图形验证码。
- 验证码字符串每使用一次之后必须释放,避免被重复利用。
- 增加验证码图形识别难度,避免被脚本自动识别。
- 增加多次登录失败账号锁定功能。
4.4越权
漏洞描述:
指应用在检查授权(Authorization)时存在纰漏,使得攻击者在获得低权限用户帐后后,可以利用一些方式绕过权限检查,访问或者操作到原本无权访问的高权限功能
风险分析:
目前存在着两种越权操作类型:横向越权操作和纵向越权操作。前者指的是攻击者尝试访问与他拥有相同权限的用户的资源;而后者指的是一个低级别攻击者尝试访问高级别用户的资源。
处置建议:
1)对用户操作进行权限校验,防止通过修改参数进入未授权页面及进行非法操作。
2)在服务端对请求的数据和当前用户身份做校验检查。
5. 命令执行漏洞
5.1 Apache Shiro
漏洞描述:
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。
风险分析:
Apache Shiro历史版本存在多个严重的远程代码执行漏洞,可导致服务器被黑客入侵。
处置建议:
不影响业务的前提下,升级到最新版本。下载地址:http://shiro.apache.org/download.html 。
5.2 Apache Struts2
漏洞描述:
Apache Struts2是一种国内使用非常广泛的Web应用开发框架,被大量的Web网站所使用。
风险分析:
漏洞由于框架设计缺陷会造成RCE远程代码执行,恶意攻击者可通过修改HTTP请求中的参数执行恶意代码。
处置建议:
对于使用第三方框架的应用,我们建议尽量查看官方文档,升级框架到最新版本。
5.3 Oracle Weblogic
漏洞描述:
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件。
风险分析:
Oracle Weblogic历史版本存在多个严重的远程代码执行高危漏洞,可导致服务器被黑客入侵。
处置建议:
及时获取和安装WebLogic官方补丁、升级版本。
5.4 Apereo CAS 远程代码执行漏洞
漏洞描述:
Apereo CAS在v4.x和v4.2.x版本中存在密钥硬编码导致的严重的远程代码执行漏洞,参考https://apereo.github.io/2016/04/08/commonsvulndisc。
风险分析:
攻击者可以利用该漏洞远程代码执行,进而获取服务器权限。
处置建议:
检查并升级Apereo CAS版本。下载地址:https://github.com/apereo/cas。
5.5 Fastjson
漏洞描述:
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean,由于具有执行效率高的特点,应用范围广泛,fastjson多个版本存在安全漏洞。
风险分析:
攻击者可以利用该漏洞导致受害机器上的远程代码执行。
处置建议:
将fastjson升级到最新版本,下载地址:https://repomaven.org/maven2/com/alibaba/fastjson。
5.6 WebSphere
漏洞描述:
WebSphere 是 IBM的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。WebSphere Application Server是该设施的基础,其他所有产品都在它之上运行,可以允许远程攻击者通过iiop协议传输精心构造的序列化数据,在系统上执行任意代码。
风险分析:远程攻击者可以构造恶意的认证请求,在目标服务器造成远程特权提升,并执行恶意代码,获取系统权限。
处置建议:
可以通过运行IBM Installation Manager 进行更新,根据程序提示进行补丁下载、漏洞修复的工作,也可以前往官方地址,手动进行补丁下载、漏洞修复的工作:
https://www.ibm.com/support/pages/node/6118222
https://www.ibm.com/support/pages/node/6174417
5.7 JBOSS
漏洞描述:
jboss是一个基于J2EE的开放源代码的应用服务器, jboss多个版本存在因访问控制不严导致的漏洞、反序列化漏洞进而导致攻击者可以进行远程命令执行漏洞
风险分析:
攻击者可以进行远程命令执行漏洞,获取服务器权限。
处置建议:
将Jboss更新到官方最新版本。
5.8 Spirng FrameWork
漏洞描述:
Spring Framework 是一个 Java/Java EE/.NET 的分层应用程序框架,提供了一种简易的开发方式。Spring Framework 多个版本存在安全漏洞。
风险分析:攻击者可以反射型文件下载,远程代码执行漏洞等方式获取服务器权限
处置建议:
目前官方已在新版本中修复了该漏洞,请受影响的用户升级版本进行防护,官方下载链接:https://github.com/spring-projects/spring-framework/releases
5.9 Apache Tomcat
漏洞描述:
Apache Tomcat是美国阿帕奇(Apache)软件基金会的一款轻量级Web应用服务器。该程序实现了对Servlet和JavaServer Page(JSP)的支持; Apache Tomcat多个版本存在安全漏洞。
风险分析:攻击者可以利用文件包含、远程命令执行、反序列化等漏洞获取服务器权限。
处置建议:
目前官方已在最新版本中修复了该漏洞,请受影响的用户尽快升级版本进行防护,官方下载链接:https://tomcat.apache.org/。
6. 未授权访问漏洞
Jboss 未授权访问
漏洞简介:
漏洞简述JBOSS 企业应用平台EAP是 J2EE 应用的中间件平台。默认情况下访问 http://ip:8080/jmx-console 就可以浏览 Jboss 的部署管理的信息不需要输入用户名和密码可以直接部署上传木马有安全隐患。
风险分析:JBOSS未授权访问漏洞表现为,在默认情况下无需账密就可以直接访问 http://127.0.0.1:8080/jmx-console 进入管理控制台,进而导致网站信息泄露、服务器被上传shell(如反弹shell,wget写webshell文件),最终网站被攻陷。
修复建议:
1、添加 JMX 控制页面身份认证;
2、进行JMX Console 安全配置;
3、关闭jmx-console和web-console;
Ldap未授权访问
漏洞简介:
LDAP中文全称为:轻型目录访问协议(Lightweight Directory Access Protocol),默认使用389, LDAP 底层一般使用 TCP 或 UDP 作为传输协议。目录服务是一个特殊的数据库,是一种以树状结构的目录数据库为基础。未对LDAP的访问进行密码验证,导致未授权访问。
风险分析:导致可以使用ldapbrowser直接连接,获取目录内容
修复建议:
1、修改ldap的acl,禁止匿名访问。
2、根据业务设置ldap访问白名单或黑名单;
MemCache未授权访问
漏洞简介:
Memcache是临时数据存储服务,以key-value存储格式存储数据,通过将数据块存储在缓存中,可以提高网站的整体性能,这些数据通常是应用读取频繁的。正因为内存中数据的读取远远大于硬盘,因此可以用来加速应用的访问。但由于memcached安全设计缺陷,默认的 11211 端口不需要密码即可访问,导致攻击者可直接链接memcache服务的11211端口获取数据库中信息,这可造成严重的信息泄露
风险分析:除memcached中数据可被直接读取泄漏和恶意修改外,由于memcached中的数据像正常网站用户访问提交变量一样会被后端代码处理,当处理代码存在缺陷时会再次导致不同类型的安全问题。
修复建议:
1、修改绑定的IP、端口和指定访问者IP;
2、设置防火墙策略;
3、禁止暴露在公网;
4、配置memcached监听本地回环地址 127.0.0.1。
Mongodb未授权访问
漏洞简介:
开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增、删、改、查高危动作)而且可以远程访问数据库。造成未授权访问的根本原因就在于启动 Mongodb 的时候未设置 –auth 也很少会有人会给数据库添加上账号密码(默认空口令),使用默认空口令这将导致恶意攻击者无需进行账号认证就可以登陆到数据服务器
风险分析:利用该漏洞对数据库任意操作(增、删、改、查高危动作)
修复建议:
1、限制绑定IP,启动时加入参数–bind_ip 127.0.0.1或在/etc/mongodb.conf文件中添加以下内容:bind_ip = 127.0.0.1;
2、在admin.system.users中添加用户,启动认证;
3、设置防火墙策略,限定 IP 访问服务;
4、禁用HTTP和REST端口,修改配置文件或在启动的时候选择参数nohttpinterface=false
Rsync未授权访问
漏洞简介:
rsync是Linux/Unix下的一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件和目录,默认运行在873端口。由于配置不当,导致任何人可未授权访问rsync,上传本地文件,下载服务器文件
风险分析:攻击者利用该漏洞可以读写目标服务器文件,从而达到控制主机的目的。
修复建议:
1、隐藏 module 信息:修改配置文件 list =false。
2、权限控制:不需要写入权限的 module 的设置为只读 Read only = true;
3、网络访问控制:使用安全组策略或白名单限制,只允许必要访问的主机访问;
4、账户认证:只允许指定的用户利用指定的密码使用 rsync 服务;
5、数据加密传输:Rsync 默认没有直接支持加密传输,如果需要 Rsync 同步重要性很高的数据,可以使用 ssh
Zookeeper未授权访问
漏洞简介:
ZooKeeper 是一个分布式的开放源码的分布式应用程序协调服务,ZooKeeper 默认开启在 2181 端口在未进行任何访问控制的情况下攻击者可通过执行 envi 命令获得系统大量的敏感信息包括系统名称Java 环境,任意用户在网络可达的情况下进行为未授权访问并读取数据甚至 kill 服务
风险分析:攻击者可以在默认开放的2181端口下通过执行envi命令获得大量敏感信息(系统名称、java环境)导致任意用户可以在网络不受限的情况下进行未授权访问读取数据甚至杀死服务。
修复建议:
1、为ZooKeeper配置相应的访问权限;
2、设置防火墙策略;
3、禁止把Zookeeper直接暴露在公网
Docker未授权访问
漏洞简介:
该未授权访问漏洞是因为Docker API可以执行Docker命令,该接口是目的是取代Docker命令界面,通过URL操作Docker
风险分析:Docker Remote API如配置不当可导致未授权访问,攻击者利用 docker client 或者 http 直接请求就可以访问这个 API,可能导致敏感信息泄露,黑客也可以删除Docker上的数据。 攻击者可进一步利用Docker自身特性,直接访问宿主机上的敏感信息,或对敏感文件进行修改,最终完全控制服务器。
修复建议:
1、设置ACL,只允许信任的IP端口连接对应端口
2、开启TLS,使用生成的证书进行认证
Spring Boot Actuator 未授权访问漏洞
漏洞简介:
Actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。在 Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点(endpoints)来获取应用系统中的监控信息,从而导致信息泄露甚至服务器被接管的事件发生。
风险分析:默认配置会出现接口未授权访问,部分接口会泄露网站流量信息和内存信息等,使用Jolokia库特性甚至可以远程执行任意代码,获取服务器权限
修复建议:
禁用/env接口,或者引入spring-boot-starter-security依赖
Hadoop 未授权访问漏洞
漏洞简介:
Hadoop是一款由Apache基金会推出的分布式系统框架,它通过著名的MapReduce算法进行分布式处理,Yarn是Hadoop集群的资源管理系统。
此次事件主要因HadoopYARN资源管理系统配置不当,导致可以未经授权进行访问,从而被攻击者恶意利用。
风险分析:攻击者无需认证即可通过RESTAPI部署任务来执行任意指令,最终完全控制服务器。
修复建议:
1、如无必要,关闭 Hadoop Web 管理页面。
2、开启身份验证,防止未经授权用户访问。
3、设置“安全组”访问控制策略,将 Hadoop 默认开放的多个端口对公网全部禁止或限制可信任的 IP 地址才能访问包括 50070 以及 WebUI 等相关端口。
Elasticsearch未授权访问漏洞
漏洞简介:
Elasticsearch是一款java编写的企业级搜索服务。越来越多的公司使用ELK作为日志分析,启动此服务默认会开放9200端口或者9300端口,可被非法操作数据。
风险分析:攻击者可以利用该漏洞调用api,进行数据的增删改操作。
修复建议:
1、限制IP访问,绑定固定IP
2、在config/elasticsearch.yml中为9200端⼝设置认证:
Alibaba Nacos 未授权访问漏洞
漏洞简介:
Nacos是一套帮助您发现、配置和管理微服务的程序。提供一组简单易用的特性集,能够快速的实现动态服务发现、服务配置、服务元数据以及流量管理。
在Nacos 2.0版本存在未授权访问漏洞,程序未有效对于用户权限进行判断,导致能够添加任意用户、修改任意用户密码等等问题。
风险分析:通过该漏洞,攻击者可以进行任意操作,包括创建新用户并进行登录后操作。
修复建议:
1、使用白名单的方式限制可以访问的主体;
2、升级nacos至最新版本:https://github.com/alibaba/nacos/;
swagger未授权访问漏洞
漏洞简介:
Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务,JAVA在金融机构开发语言的地位一直居高不下,而作为JAVA届服务端的大一统框架Spring,便将Swagger规范纳入自身的标准,建立了Spring-swagger项目,所以在实际测试环境中,基于spring框架的swagger-ui接口展示及调试文档页面最为常见
风险分析:通过翻查文档,得到api接口,点击parameters,即可得到该api接口的详细参数。直接构造参数发包,通过回显可以得到大量的用户信息,包含了手机号,邮箱等。
修复建议:
1.Swagger开启页面访问限制。
2.Swagger开启Authorize认证。
Redis未授权访问
漏洞简介:
redis是一个数据库,默认端口是6379,redis默认是没有密码验证的,可以免密码登录操作,攻击者可以通过操作redis进一步控制服务器。
Redis未授权访问在4.x/5.0.5以前版本下,可以使用master/slave模式加载远程模块,通过动态链接库的方式执行任意命令。
风险分析:
(1)攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据;
(2)攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件;
(3)最严重的情况,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器
修复建议:
1、登录账户设置复杂的口令;
2、修改原端口;
3、禁止公钥登陆系统;
4、设置IP白名单策略;
Jenkins未授权访问
漏洞简介:
默认情况下Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令。
风险分析:攻击者可通过未授权访问漏洞或者暴力破解用户密码等进脚本执行界面从而获取服务器权限。
修复建议:
1、后台控制页面做登录验证限制,设置强口令密码;
2、升级Jenkins至新版本;
3、禁止把Jenkins直接暴露在公网
Zabbix 未授权访问
漏洞简介:
zabbix是一款服务器监控软件,默认服务开放端口为10051,其由server、agent、web等模块组成,其中web模块由PHP编写,用来显示数据库中的结果。
风险分析:攻击者可以通过进一步构造语句进行错误型sql注射,无需获取和破解加密的管理员密码。
有经验的攻击者可以直接通过获取admin的sessionid来根据结构算法构造sid,替换cookie直接以管理员身份登陆。
修复建议:
1、设置zabbix的复杂口令,不要用默认口令或弱口令,禁用guest登录功能;
2、zabbix的server和agent都不要以root启动,不要设置AllowRoot=1;
3、禁止agent执行system.run,不要设置EnableRemoteCommands=1;
Kibana 未授权访问
漏洞简介:
Kibana如果允许外网访问,没有做安全的登录认证,也会被外部随意访问查看所有的数据,造成数据泄露。
风险分析:攻击者通过访问URL,无需登录即可登录获取信息。
修复建议:
1、设置kibana监听本地地址,并设置ElasticSearch登录的账号和密码;
2、设置防火墙策略,限定IP访问服务
未授权访问相关漏洞整改参考以下链接:
https://zhuanlan.zhihu.com/p/444864552