【网络安全】解决常见漏洞的实用指南

漏洞分类漏洞名称风险级别漏洞描述加固建议
输入与输出验证SQL注入漏洞高危当Web应用程序未对用户输入的数据进行足够的安全处理(如危险字符过滤或者语句过滤),而直接拼接SQL语句执行时,攻击者可以精心构造参数值,使服务器执行非预期的SQL语句并返回结果,造成数据库信息泄露。利用SQL注入漏洞,攻击者可获取数据库的增、删、改、查权限,甚至执行系统命令,上传后门文件等。针对SQL注入漏洞,需要对网站所有参数中提交的数据进行过滤,禁止输入"'"、"xor"、"or"、"--"、"#"、"select"、"and"等特殊字符;所有的查询语句都使用数据库提供的参数化查询接口,SQL语句使用参数化处理后的数据作为输入,而不是将用户输入变量嵌入到SQL语句中;严格限制网站用户对数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害;避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者收集这些错误信息进行判断进而执行SQL注入攻击。
输入与输出验证XSS跨站脚本漏洞高危跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行,攻击者可利用该漏洞窃取或操纵客户会话和  cookie,用来模仿合法用户,从而使攻击者获得管理员权限,控制整个网站。1.在cookie中设置了HttpOnly属性,那么通过JavaScript脚本将无法读取到cookie信息,这样能一定程度上防止XSS攻击。
   2.假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的cookie中的变量,HTTP请求头部中的变量等。
   3.不仅验证数据的类型,还要验证其格式、长度、范围和内容。
   4.过滤“<” 、“>” 将用户输入放入引号间,基本实现数据与代码隔离;过滤双引号防止用户跨越许可的标记,添加自定义标记;过滤TAB和空格,防止关键字被拆分;过滤script关键字;过滤&#,防止HTML属性绕过检查。在客户端和服务器端同时做数据的验证与过滤。
   5.对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。
   
输入与输出验证CRLF注入漏洞高危CRLF是”回车 + 换行”(\r\n)的简称。在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP 内容并显示出来。所以,一旦我们能够控制HTTP 消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码,所以CRLF Injection又叫HTTP Response Splitting,简称HRS。HRS是比XSS危害更大的安全问题。针对CRLF注入漏洞,建议过滤\r 、\n等特殊字符,避免输入的数据污染到其他HTTP头。
输入与输出验证URL重定向钓鱼高危通过构建URL,攻击者可以使用户重定向到任意URL,利用这个漏洞可以诱使用户访问某个页面,挂马、密码记录、下载任意文件等,常被用来钓鱼。1.referer的限制
   如果确定传递URL参数进入的来源,可以通过该方式实现安全限制,保证该URL的有效性,避免恶意用户自己生成跳转链接。
   2.加入有效性验证Token
   保证所有生成的链接都是来自于可信域的,通过在生成的链接里加入用户不可控的Token对生成的链接进行校验,可以避免用户生成自己的恶意链接从而被利用。
   3.URL白名单,在白名单内才进行跳转
   
输入与输出验证Host头攻击漏洞高危对开发人员来说,提取请求头中的Host参数写入当前页面是一个很不明智的选择。因为如果这样,攻击者就可以通过修改HTTP请求头中的Host字段,控制服务器返回页面中的URL。不允许读取Host字段并写入页面。如有需要,应使用服务器脚本自带的SERVER_NAME变量。
输入与输出验证框架注入漏洞高危攻击者有可能注入含有恶意内容的  frame 或 iframe  标签。如果用户不够谨慎,就有可能浏览该标签所对应的页面,但意识不到自己会离开原始站点而进入恶意的站点。之后,攻击者便可以诱导用户再次登录,然后获取其登录凭证。建议过滤以下所有字符:|  & ; $ % @ ' " \' \" <> () + CR LF , \。
输入与输出验证CSRF跨站请求伪造漏洞高危攻击者可利用该漏洞模仿合法用户,从而使攻击者能够以该用户身份查看或变更用户记录以及执行事务。1.使用验证码
   使用验证码,那么每次操作都需要用户进行互动,可简单有效的防御CSRF攻击。
   2.检测referer
   通过检查Referer的值,我们就可以判断这个请求是合法的还是非法的
   3.增加一个随机的token值
   添加一个参数Token,其值是随机的。这样攻击者因为不知道Token而无法构造出合法的请求进行攻击。
   
输入与输出验证文件上传漏洞高危验证上传文件的程序没有对上传文件作任何过滤,导致可以上传任意文件到服务器,甚至是病毒文件和木马文件。对于上传的附件,验证程序要做严格验证,使用服务器端校验,而不能仅用前端javascript验证。  
   1.建议严格限制上传文件类型和上传文件名及后缀。
   2.检查文件头和文件内容,对上传文件目录的运行权限进行严格限制。
   3.及时排查、删除服务器木马文件。
   
输入与输出验证本地文件包含漏洞高危由于程序员未对用户可控的变量进行输入检查,导致用户可以控制被包含的文件,成功利用时可以使web server将特定文件当成脚本执行,从而导致攻击者可获取一定的服务器权限;或直接读取系统文件,造成服务器敏感信息泄露。针对文件包含漏洞,建议采用“白名单”的方式,限制允许包含的文件范围。
输入与输出验证远程文件包含漏洞高危服务器通过语言的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严格,从而可以去包含一个恶意文件,攻击者就可以远程构造一个特定的恶意文件达到攻击目的。如果一定要动态包含文件,建议最好明确规定包含哪些文件,进行白名单比对。同时,也可以在包含函数中加入目录限制。
输入与输出验证SSRF(服务端请求伪造)高危很多web应用都提供了从其他的服务器上获取数据的功能。使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等。这个功能如果被恶意使用,可以利用存在缺陷的web应用作为代理攻击远程和本地的服务器,探测内网信息甚至内网入侵。SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。建议对url参数值做严格的限制。
输入与输出验证任意文件读取漏洞高危程序过滤不严,导致可以通过../../../等方式跳转到其他目录读取任意文件。1.过滤”../”的特殊字符
   2.限制读取文件的目录,不允许跨目录读取
输入与输出验证任意文件下载漏洞高危在正常下载链接的文件参数前加  ../../../../ 来跳出目录限制,下载系统文件等任意文件。该漏洞是由于后台代码未对下载路径做安全限制引起的。针对任意文件下载漏洞,建议严格限制文件下载路径。
配置管理Struts2  dev-mod命令执行漏洞高危网站封装采用Apache  Struts  xwork作为网站应用框架,且devMode为打开状态。当这个设置开启时,Struts2会提供更多的日志和调试信息来帮助开发者更快速的开发。
   然而在开发者模式下,将允许OGNL语句注入,攻击者可能利用此漏洞进行远程代码执行。
1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理S2-005命令执行漏洞高危OGNL除其他功能外,还提供了广泛的表达评估功能。该漏洞允许恶意用户绕过构建在ParametersInterceptor中的“#”  - 使用保护,从而能够利用此漏洞进行远程代码执行。1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理S2-009命令执行漏洞高危OGNL除其他功能外,还提供广泛的表达评估功能。该漏洞允许恶意用户绕过构建到ParametersInterceptor中的所有保护(正则表达式模式,拒绝方法调用),从而能够在任何公开的字符串变量中注入恶意表达式以进一步评估。
   S2-003和S2-005中已经解决了类似的行为,但事实证明,基于白名单可接受的参数名称所产生的修复只是部分地关闭了漏洞。
   正则表达式在ParametersInterceptor中匹配top ['foo'](0)作为一个有效的表达式,OGNL把它视为(top  ['foo'])(0)并且将'foo'动作参数的值作为OGNL表达式来计算。这使得恶意用户可以将任意的OGNL语句放入任何由操作暴露的字符串变量中,并将其作为OGNL表达式进行求值,并且由于OGNL语句在HTTP参数值中,攻击者可以使用黑名单字符(例如#)禁用方法执行并执行任意方法绕过了ParametersInterceptor和OGNL库的保护。
1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理S2-016命令执行漏洞高危在struts2中,DefaultActionMapper类支持以"action:"、"redirect:"、"redirectAction:"作为导航或是重定向前缀,但是这些前缀后面同时可以跟OGNL表达式,由于struts2没有对这些前缀做过滤,导致利用OGNL表达式调用java静态方法执行任意系统命令。1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理S2-017URL跳转漏洞高危在2.3.15.1之前的Struts  2中,“redirect:”或“redirectAction:”之后的信息可以很容易地被操纵,以重定向到任意位置。1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理S2-019命令执行漏洞高危Struts2的操作映射机制支持特殊参数前缀操作,这可能会在表格底部附加引导信息,在映射  "action:" 前缀操作时存在安全绕过漏洞,可被攻击者利用绕过某些安全限制访问受限制功能。Struts2的Dynamic  Method  Invocation机制是默认开启的(仅提醒用户如果可能的情况下关闭此机制)这样就存在远程代码执行漏洞,攻击者可利用此漏洞在受影响应用上下文中执行任意代码。1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理S2-032命令执行漏洞高危动态方法调用启用时,可能会传递一个恶意表达式,用于在服务器端执行任意代码。1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理S2-037命令执行漏洞高危Struts2使用Rest插件之后,ActionMapping通过org.apache.struts2.rest.RestActionMapper.java类的publicActionMappinggetMapping(HttpServl  etRequest  request,ConfigurationManagerconfigManager)的方法获取的。其中,当请求url是如下的格式:actionName/id/methodName会获取methodName  作为ActionMapping的method属性。但method属性未做任何处理,同S2-032漏洞执行流程一致,都是将ActionMapping的属性设置到ActionProxy中,从ActionProxy中获取method属性带入到ognl表达式中执行,通过OGNL表达式静态调用获取ognl.OgnlContext的DEFAULT_MEMBER_ACCESS属性并覆盖_memberAccess的方式进行绕过,进而可在受控制的服务器端执行任意代码。即攻击者在部署了REST插件的Struts  2服务器上均可利用该漏洞远程执行任意命令1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理S2-045命令执行漏洞高危使用 Jakarta 文件上传插件的 Struts,攻击者可在上传文件时通过修改HTTP请求头中的 Content-Type 值来触发该漏洞,进而执行系统命令。1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理S2-046命令执行漏洞高危使用 Jakarta 文件上传插件的 Struts,攻击者可在上传文件的大小(由 Content-Length 头指定)大于 Struts2 允许的最大大小(2GB),文件名内容构造恶意的 OGNL 来触发该漏洞,进而执行系统命令。1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理S2-052命令执行漏洞高危Struts2  REST 插件使用带有 XStream 程序的 XStream Handler 进行未经任何代码过滤的反序列化操作,这可能在反序列化XML  payloads时导致远程代码执行。任意攻击者都可以构造恶意的XML内容提升权限。1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理JDWP远程命令执行漏洞高危JDWP 是 Java Debug Wire Protocol  的缩写,它定义了调试器(debugger)和被调试的 Java 虚拟机(target  vm)之间的通信协议。当对外开启该协议的Java调试模式时,存在远程命令执行漏洞。允许攻击者远程执行代码,获得服务器权限。1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理ElasticSearch命令执行漏洞高危该漏洞存在于一个名为ElasticSearch.yml的文件,在这个文件中存在一个配置项“script.disable_dynamic”,默认为“false”。此默认配置允许服务器动态执行用户发送的任意代码。黑客只需要通过一个URL地址向服务器传送一段代码,就可以创建和执行他们自己的程序。一旦黑客获得通过,他们在服务器上的操作将不受任何限制,包括窃取网站中的用户账号及密码等敏感信息,或者留下一个后门程序。1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理Resin任意文件读取漏洞高危安装某些版本Resin服务器的网站存在可读取任意文件的漏洞,攻击者利用该漏洞可以读取网站服务器的任意文件内容。1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理GNU Bash远程命令执行高危GNU  Bash  4.3及之前版本在评估某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行shell命令。1.升级最新版本;
   2.系统如果不再使用 ,请将其下线或用防火墙屏蔽。
配置管理Unicode  转换漏洞高危在Unicode在转换时,由于超长字节序列和错误格式引起子序列的安全问题。通过特殊的编码格式绕过程序对恶意字符的检测,可以用在SQL注入、XSS等。1.升级Unicode版本至官方最新稳定版本http://www.unicode.org
   2.Unicode转化UTF-8编码后,对转换后进行安全检测,对特殊字符过滤或进行安全编码后输出。
配置管理检测到网站被黑痕迹 高危网站页面已被篡改或已有入侵痕迹。清除网站木马,全面检测网站漏洞并及时修复。
配置管理使用被弃用的SSL 2.0协议高危网站https使用了SSL 2.0协议。该协议非常老旧且已被弃用。该协议存在大量已知的安全漏洞,比如DROWN漏洞等。禁用SSL 2.0或者使用SSL 3.0 或TLS 1.0代替。
配置管理OpenSSL远程内存泄露漏洞(心脏滴血漏洞)高危OpenSSL是一款开放源码的SSL实现,用来实现网络通信的高强度加密。漏洞与OpenSSL  TLS/DTLS传输层安全协议heartbeat扩展组件(RFC6520)相关,因此漏洞又被称为“heartbleed  bug”(中文名称:“心血”漏洞)。该漏洞无需任何特权信息或身份验证,就可以获得X.509证书的私钥、用户名与密码、cookies等信息,进一步可直接从服务提供商和用户通讯中窃取聊天工具消息、电子邮件以及重要的商业文档和通信等私密数据。升级OpenSSL版本到最新的1.0.1g;使用-DOPENSSL_NO_HEARTBEATS参数重新编译低版本的OpenSSL以禁用Heartbleed模块。
配置管理JBoss  Seam参数化EL表达式远程代码执行漏洞高危JBoss Seam是一个Java  EE5框架,把JSF与EJB3.0组件合并在一起,从而为开发基于Web的企业应用程序提供一个最新的模式。
   JBoss Seam处理某些参数化JBoss  EL表达式的方式存在输入过滤漏洞( CVE-2010-1871)。如果远程攻击者能够诱骗通过认证的JBoss  Seam用户访问特制的网页,就可能导致执行任意代码
升级至4.3.0  EL4或以上更高的、确认已修复此漏洞的版本。参考链接:https://bugzilla.redhat.com/show_bug.cgi?id=615956
配置管理Weblogic  Java反序列化远程命令执行漏洞高危Weblogic存在Java反序列化漏洞,攻击者可以远程执行系统命令,获得服务器权限。及时升级官方补丁。
配置管理JBoss反序列化漏洞高危根源在CommonsCollections组件中对于集合的操作存在可以进行反射调用的方法,并且该方法在相关对象反序列化时并未进行任何校验,导致远程代码执行。利用漏洞,允许攻击者远程执行系统命令,获得服务器权限,导致服务器运行安全风险。1.针对JBoss  Java反序列化漏洞,建议更新jboss版本到最新版(http://www.jboss.org/)或 更新官方补丁。
   2.针对数据库帐号密码进行修改,要求密码长度8位数以上,密码复杂程度必须包含数字、大小写字母及特殊字符。
   3.对服务器进行全面安全检查,及时排查、清除webshell等后门文件;及时修改数据库密码等。
配置管理JBoss  JMXInvokerServlet远程命令执行漏洞高危Jboss在默认安装的时候,会安装http-invoker.sar站点,当请求invoker/JMXInvokerServlet或invoker/EJBInvokerServlet会调用org.jboss.invocation.http.servlet.InvokerServlet.class处理请求。该类对GET请求和POST请求,统一调用processRequest函数处理,因此,攻击者需要自己构造一个jboss的类,并且将其序列化,然后将序列化的数据直接提交到存在漏洞站点的invoker/JMXInvokerServlet页面,恶意代码将会被执行。建议删除或禁止访问/invoker/JMXInvokerServlet文件。
配置管理Apache ActiveMQ远程代码执行漏洞 (CVE-2016-3088)高危Apache ActiveMQ Fileserver 存在多个安全漏洞,可使远程攻击者用恶意代码替代Web应用,在受影响系统上执行远程代码(CVE-2016-3088)。1.ActiveMQ Fileserver 的功能在 5.14.0 及其以后的版本中已被移除。建议用户升级至 5.14.0 及其以后版本。
   2.通过移除 conf\jetty.xml 的以下配置来禁用 ActiveMQ Fileserver 功能
配置管理Apache Tomcat示例目录漏洞高危tomcat安装时默认的演示、文档页面,会造成信息泄露和XSS跨站脚本漏洞,攻击者可以创建、销毁或控制session。删除相关功能演示页面。
配置管理Tomcat版本过低漏洞中危Tomcat由于版本过低存在安全漏洞。升级Tomcat版本或及时打补丁。
配置管理S2-053命令执行漏洞中危Apache  Struts2 Freemarker标签如果被错误的配置使用,将会导致RCE远程代码执行漏洞。1.升级到Apache  Struts版本2.5.12或2.3.34
   2.使用只读属性来初始化value属性(仅限getter属性)
   3.Freemarker标签内容不要通过Request方式获取 
配置管理HPPT.sys远程代码执行漏洞(MS15-034)中危远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞。成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。
   影响以下版本操作系统的IIS服务器:Windows 7、Windows 8、Windows server 2008、Windows server 2012
用户安装微软官方修复补丁(3042553)。
   https://support.microsoft.com/zh-cn/kb/3042553
配置管理WebDav文件上传/信息泄露漏洞中危WebDAV是一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP  1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法。使应用程序可直接对Web Server文件进行读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。远程攻击者可能利用此漏洞非授权读写文件。通常情况下网站不需要支持额外的方法,建议禁用WebDav服务,关闭PUT、MOVE、COPY等方法。
配置管理slowhttp拒绝服务攻击中危如果远程攻击者使用发包工具向Apache服务器发送了不完整的HTTP请  求,服务器会打开连接等待接受完整的头,但如果发包工具不再继续发送完整请求而是发送无效头的话,就会一直保持打开的连接。这种攻击所造成的影响很严重,  因为攻击者不需要发送很大的通讯就可以耗尽服务器上的可用连接。也就是说,即使低带宽的用户也可以攻击大流量的服务器。1.升级到最新版的apache
   2.在httpd.conf中添加RequestReadTimeout header=20-40,MinRate=500  body=20,MinRate=500
   3.直接在 iptables 中限制每个 IP 的连接数可以解决以上绝大部分问题,除非攻击者拥有众多肉鸡,否则单 IP 的攻击将失去效果。
   iptables -A INPUT -p tcp --syn --dport 8889 -m  connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset
   
配置管理jQuery版本过低(jQuery低版本存在跨站)中危jQuery  1.6.3之前版本中存在跨站脚本漏洞。当使用location.hash选择元素时,通过特制的标签,远程攻击者利用该漏洞注入任意web脚本或HTML。升级jQuery版本。
配置管理不安全的javascript库文件中危该版本的javascript库存在多个安全漏洞升级javascript库版本。
配置管理传输层保护不足漏洞中危传输层保护不足,会暴露传输的数据,导致数据被窃听,账号被盗等,如果是管理员的账号面临这个问题,那么将会导致整个网站处于数据暴露的状态,将对网站和用户造成严重的甚至无法挽回的损失。1.对所有敏感的页面使用SSL,非SSL请求的页面应该被重定向到SSL请求的页面。
   2.对所有敏感的Cookie,设置“secure”的flag。
   3.保证SSL的提供商只支持强大的算法,这样就不能够被轻易破解。(使用标准的强算法)
   4.确保您的证书是有效的,不过期,不被撤销,并匹配这个网站使用的所有域。
   5.后台和其他的连接也应该使用SSL或其他加密技术。
   6.即使是开发者的注释也应该很好的被保护,防止信息泄露。
   
配置管理服务器启用了TRACE Method方法中危1.  恶意攻击者可以通过TRACE Method返回的信息了解到网站前端的一些信息,如缓存服务器等,从而为下一步的攻击提供便利。
   2.恶意攻击者可以通过TRACE Method进行XSS攻击
   3.即使网站对关键页面启用了HttpOnly头标记和禁止脚本读取cookie信息,那么通过TRACE  Method恶意攻击者还是可以绕过这个限制读取到cookie信息。
禁用TRACE方法。
配置管理点击劫持漏洞(X-Frame-Options头缺失)中危通过覆盖不可见的框架误导受害者点击,受害者点击的是他所看到的网页,但其实他所点击的是被黑客精心构建的另一个置于原网页上面的透明页面。设置X-Frame-Options值来防御利用iframe嵌套的点击劫持攻击。
配置管理启用了不安全的HTTP方法(启用了OPTIONS方法)中危开启了不安全的HTTP方法:DELTE/SEARCE/COPY,MOVE/PROPFIND/PROPPATCH/MKCOL/LOCK/UNLOCK/PUT,可能会在Web  服务器上上载、修改或删除Web 页面、脚本和文件。如果服务器不需要支持WebDAV,请务必禁用它,或禁止不必要的HTTP  方法。
配置管理域名访问限制不严格中危目标存在域名访问限制不严格漏洞。Http请求的Hostname字段没有严格的域名限制,导致可以绕过一些防护措施。配置WEB服务器,限制只能以域名形式访问服务器。
信息泄露SVN源代码泄露高危造成SVN源代码漏洞的主要原因是管理员操作不规范。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,黑客可以借助其中包含的用于版本信息追踪的‘entries’文件,逐步摸清站点结构。
   更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。
针对SVN信息泄露漏洞,建议删除WEB目录里的SVN文件或限制访问.svn目录,并升级SVN软件至1.7或以上更高版本
信息泄露.idea工程目录信息泄露漏洞高危.idea目录用来放置开发工程的一些配置文件,通常是.xml文件。其中workspace.xml里面存放一些开发者个人配置,比如开发路径、开发环境等。里面包含一些敏感信息。生产环境中删除.idea目录及该目录下的文件,或配置网站服务器禁止访问.idea目录。
信息泄露ASP.NET_Padding_Oracle信息泄露(MS10-070)高危 ASP.NET由于加密填充验证过程中处理错误不当,导致存在一个信息泄漏漏洞。成功利用此漏洞的攻击者可以读取服务器加密的数据,例如视图状态。  此漏洞还可以用于数据篡改,如果成功利用,可用于解密和篡改服务器加密的数据。建议将Microsoft  .NET Framework 更新至最新版本。
信息泄露.git信息泄露高危泄露网站敏感信息,攻击者可直接获取源码信息实施进一步攻击。删除.git目录。
信息泄露错误页面信息泄露(应用程序错误信息)中危攻击者可以根据错误或警告消息收集服务器信息。1.关闭web服务器错误提示;
   2.关闭运行平台的错误提示;
   3.建立错误机制,不要把真实的错误反馈给访问者。捕获后台抛出的异常,制定异常固定跳转页面,如500错误,跳转到相应页面,例如“系统异常请与管理员联系”,403异常,找不到页面等等。
信息泄露备份文件泄露中危在网站的使用过程中,往往需要对网站中的文件进行修改、升级。此时就需要对网站整站或者其中某一页面进行备份。当备份文件或者修改过程中的缓存文件因为各种原因而被留在网站web目录下,而该目录又没有设置访问权限时,便有可能导致备份文件或者编辑器的缓存文件被下载,导致敏感信息泄露,给服务器的安全埋下隐患。1.删除不必要的备份文件;
   2.设置访问权限;
   3.将备份文件放至服务器其它目录下。
信息泄露目录遍历中危攻击者通过不指定url中的具体文件,来查看某个目录下的所有文件和目录结构。针对目录遍历漏洞,建议通过修改配置文件,去除Web  容器(如Apache)的文件目录索引功能。
信息泄露IIS短文件名漏洞中危Microsoft  IIS在实现上存在文件枚举漏洞,攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。针对IIS短文件名漏洞,建议禁止url中使用“~”或它的Unicode编码,或关闭windows的8.3格式功能。
信息泄露源代码泄露漏洞中危部分或全部页面源代码泄露,攻击者可审查源代码泄露的可用信息进一步渗透。删除源代码文件或对需要的未解析的源代码进行解析。
信息泄露robots.txt文件泄露中危泄露网站敏感信息,包括网站的后台页面或其它隐私页面。1.robots.txt  文件不应用来保护或隐藏信息。
   2.应该将敏感的文件和目录移到另一个隔离的子目录,以便将这个目录排除在 Web Robot  搜索之外。如下列示例所示,将文件移到“folder”之类的非特定目录名称是比较好的解决方案: New directory structure:  /folder/passwords.txt /folder/sensitive_folder/
   New robots.txt: User-agent: * Disallow: /folder/
   3.如果您无法更改目录结构,且必须将特定目录排除于 Web Robot 之外,在 robots.txt  文件中,请只用局部名称。虽然这不是最好的解决方案,但至少它能加大完整目录名称的猜测难度。例如,如果要排除“sensitive_folder”和  “passwords.txt”,请使用下列名称(假设 Web 根目录中没有起始于相同字符的文件或目录): robots.txt: User-agent:  * Disallow: /se Disallow: /pa。
   
信息泄露敏感信息泄露中危敏感信息泄露一般包括:中间件、软件框架(cms)类型和版本信息,数据库表结构、网站架构、账号密码体系等等。这些信息一般在服务器错误信息、html注释、隐藏表单、示例文件等地方出现。攻击者得到这些信息,有助于缩小攻击范围,进行有针对性的更深层次的攻击。对于一般信息泄露,删除无用页面,或删除页面中的敏感信息即可。对于敏感报错信息泄露,需要设置代码捕获异常,并抛出异常,服务端出现异常后不在客户端回显,统一返回不包含敏感信息的错误页面。
信息泄露Github信息泄露漏洞中危开发人员使用Github进行代码管理。而免费用户在Github上的项目内容可在网站中检索到,并对所有用户开放可查看。泄露的敏感信息一般包括:软件源代码、程序账号密码等等。攻击者得到这些信息,可以进行代码审计,更有针对性的找到网站漏洞,甚至可以获得用户账号密码,直接登录获得用户权限。删除敏感的Github项目代码,对可能泄露的帐号密码及时进行修改。
信息泄露PHP探针信息泄露中危PHP探针文件会导致网站敏感信息泄露删除默认安装PHP探针文件。
信息泄露phpinfo页面泄露中危泄露网站服务器敏感信息,包括网站物理路径、PHP版本、服务器信息及环境变量等。1.通过修改服务器环境内php.ini文件,将“expose_php  = On”修改成“expose_php = Off”然后重启php即可。
   2.如果确实需要该测试信息,在测试时使用,测试完毕后将该文件删除掉。
   3.若无需要可以将一些php的危险函数禁用,打开/etc/php.ini文件,查找到  disable_functions,添加需禁用的以下函数名:phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen
信息泄露发现隐藏目录低危尝试了检测服务器上的隐藏目录,403  Forbidden 响应泄露了存在此目录,即使不允许对其进行访问,泄露网站目录结构。可对禁止的资源发布“404  - Not Found”响应状态代码,或者将其完全除去。
信息泄露内部IP地址泄露低危泄露内网IP地址禁止将内网IP置于网站页面或代码层中。
信息泄露OpenSSH CBC模式信息泄露漏洞低危配置为CBC模式,OpenSSH没有正确地处理分组密码算法加密的SSH会话中所出现的错误,导致可能泄露密文中任意块最多32位纯文本。临时解决方案:在SSH会话中仅使用CTR模式加密算法,如AES-CTR
   目前厂商已经发布了升级补丁以修复这个安全问题,补丁下载链接:
   https://downloads.ssh.com/
信息泄露未加密的登录请求低危检测中发现登录请求(例如:用户名、密码、电子邮件地址、社会安全号码等)被发送到服务器的过程中并未采用通讯加密协议或加密。恶意人员可通过数据截包实现网站管理员用户名、密码信息的截获。注册或登录时,客户发送请求敏感信息进行加密,例如密码、电话、邮件等敏感信息进行加密传输。
访问控制Memcached 未授权访问漏洞高危由于memcached安全设计缺陷,客户端连接memcached服务器后无需认证就可读取、修改服务器缓存内容。1.配置memcached监听本地回环地址127.0.0.1。
   2.当memcached配置为监听内网IP或公网IP时,使用主机防火墙(iptalbes、firewalld等)和网络防火墙对memcached服务端口进行过滤。
访问控制rsync未授权访问漏洞高危rsync是类unix系统下的数据镜像备份工具,如果配置不当,可导致攻击者匿名访问rsync程序,进一步进行增删改等操作。建议两种方式防御,一是限定访问的IP,另一个是不允许匿名访问,添加用户口令。
访问控制WebSphere绕过安全限制漏洞高危在Java端"%c0%ae"解析为"\uC0AE",最后转义为ASCCII低字符"."。通过这个方法可以绕过目录保护读取包配置文件信息,包括web-inf和meta-inf目录下的内容。攻击者还可以利用此漏洞查看或执行war包里面的文件。此漏洞影响WebSphere  Application Server 版本5.1, 6.0, 6.1 和7.0。升级WebSphere至最新版,或安装PK81387安全补丁。
   http://www-01.ibm.com/support/docview.wss?uid=swg24022456
访问控制cisco vpn未授权访问高危Cisco  Adaptive Security Appliance (ASA) Software在Clientless SSL  VPN入口自定义框架在实现上存在安全漏洞,未经身份验证的远程攻击者可利用此漏洞修改Clientless SSL  VPN入口内容,导致窃取凭证、跨站脚本及其他攻击。此漏洞源于没有正确实现Clientless SSL VPN入口自定义框架内的身份验证检查。建议升级思科最新发布的补丁:
   http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20141008-asa
访问控制DNS域传送漏洞高危DNS区域传送(DNS  zone  transfer)指的是一台备用服务器使用来自主服务器的数据刷新自己的域(zone)数据库,一般来说,DNS区域传送操作只在网络里真的有备用域名DNS服务器时才有必要用到,但许多DNS服务器却被错误地配置成只要有client发出请求,就会向对方提供一个zone数据库的详细信息。针对域传送漏洞,建议通过定义ACL(访问控制列表)来限制在域名服务器之间的区域传送,通常可编辑/etc/named.conf中allow-transfer参数。存在漏洞的是ns1.com,  如果其他ns2、ns3、ns4是备用dns服务器,那么应该只允许域传送至其他对应的地址。配置如下:
   allow-transfer { localhost; ns2的IP; ns3的IP; ns4的IP;};
访问控制Mongodb数据库未授权访问漏洞高危Mongodb在启动的时候未设置  –auth参数,造成恶意攻击者可使用默认空口令登陆到数据服务器。建议增加数据库用户校验或限制设备登录IP地址,限制未授权访问。
访问控制redis数据库未授权访问漏洞高危Redis  默认情况下会绑定在 0.0.0.0:6379,这样将会将 Redis  服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis  的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis的相关方法,可以成功在 Redis  服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器。1.配置bind选项,限定可以连接Redis服务器的IP,修改  Redis 的默认端口6379
   2.配置认证,也就是AUTH,设置密码,密码会以明文方式保存在Redis配置文件中
   3.配置rename-command 配置项 “RENAME_CONFIG”,这样即使存在未授权访问,也能够给攻击者使用config  指令加大难度
   4.好消息是Redis作者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如config等。
访问控制phpmyadmin未授权访问中危发现phpmyadmin路径,且没有密码保护,可直接登录数据库,获得数据库root权限。设置数据库密码防止未授权访问,修改phpmyadmin默认路径防止被攻击者发现。
访问控制 .htaccess文件未授权访问中危攻击者可未授权访问.htaccess文件,泄露网站敏感信息。禁止.htaccess文件被查看
访问控制弱口令漏洞高危包括但不限于:网站登录/FTP/SSH/数据库/中间件等,攻击者可猜解用户登录口令登录系统,实施进一步渗透攻击。针对弱口令漏洞,建议用户及时修改密码,加强口令强度,设置口令为8位以上大小写字母、数字、特殊符号组合,并定期更换密码,避免使用弱口令。
认证与会话管理SNMP默认团体名漏洞高危由于很多操作系统或者网络设备的SNMP代理服务存在可读默认口令。如果这些默认口令没有修改或者为弱口令,远程攻击者就可以通过SNMP代理获取系统的很多细节信息。如果攻击者得到了可写口令,它甚至可以修改系统文件或者执行系统命令。针对SNMP信息泄露漏洞,建议修改SNMP缺省口令或者关闭SNMP服务。
认证与会话管理FTP开启匿名登录高危攻击者可利用弱口令或匿名登录漏洞直接登录  FTP 服务,上传恶意文件,从而获取系统权限,并可能造成数据泄露。FTP服务为明文传输,建议使用SFTP代替,如需要继续休使用建议,禁止匿名登录,设置口令为8位以上大小写字母、数字、特殊符号组合,并定期更换密码,避免使用弱口令。
认证与会话管理会话劫持漏洞中危攻击者通过暴力破解、预测或者窃取(网络嗅探/XSS攻击)等方式获取用户Session  ID后,使用该Session ID登录目标账号的攻击方法。1.更改Session名称。PHP中Session的默认名称是PHPSESSID,此变量会保存在Cookie中,如果攻击者不分析站点,就不能猜到Session名称,阻挡部分攻击。
   2.关闭透明化Session ID。透明化Session ID指当浏览器中的Http请求没有使用Cookie来存放Session  ID时,Session ID则使用URL来传递。
   3.设置HttpOnly。通过设置Cookie的HttpOnly为true,可以防止客户端脚本访问这个Cookie,从而有效的防止XSS攻击。
   4.关闭所有phpinfo类dump request信息的页面。
   5.使用User-Agent检测请求的一致性。但有专家警告不要依赖于检查User-Agent的一致性。这是因为服务器群集中的HTTP代理服务器会对User-Agent进行编辑,而本群集中的多个代理服务器在编辑该值时可能会不一致。
认证与会话管理会话固定漏洞中危会话固定也可以看成是会话劫持的一种类型,原因是会话固定的攻击的主要目的同样是获得目标用户的合法会话,不过会话固定还可以是强迫受害者使用攻击者设定的一个有效会话,以此来获得用户的敏感信息。1.用户登录时生成新的Session  ID。如果攻击者使用的会话标识符不是有效的,那么这种方式将会非常有效。如果不是有效的会话标识符,服务器将会要求用户重新登录。如果攻击者使用的是有效的Session  ID,那么还可以通过校验的方式来避免攻击。
   2.大部分防止会话劫持的方法对会话固定攻击同样有效。如设置HttpOnly,关闭透明化Session  ID,User-Agent验证,Token校验等。
认证与会话管理会话cookie中缺少HttpOnly属性低危如不设置此属性,攻击者可配合跨站脚本盗取cookie。设置此属性,即使有跨站漏洞存在,也很难利用。在服务器端设置cookie的HttpOnly属性为真。
认证与会话管理未禁用密码表单自动完成属性低危自动填写未对密码字段禁用的  HTML 属性。将“autocomplete”属性正确设置为“off”。
认证与会话管理会话cookie中缺少secure属性低危可能会窃取在加密的会话期间发送的用户和会话信息。服务器开启了Https时,cookie的Secure属性应设为true
逻辑类未授权访问高危后台页面或者其他用户页面没有做session认证,导致可以无需登录,直接访问页面。对未授权访问页面做session认证,严格审核后台功能页面的访问权限,若为未登录用户则拒绝访问。
逻辑类越权漏洞高危水平越权:攻击者能够执行与自己同级别权限用户的操作
   垂直越权:攻击者能够执行高级别权限用户的操作,比如管理员的相关操作。
1.设计严格的权限控制系统,对于每个请求和URL都要进行校验和权限确认,防止非法请求被执行;
   2.默认情况下,应该拒绝执行所有访问权限,也就是说缺省不给用户任何权限,防止攻击者利用缺省权限执行攻击等;
   3.对于每个功能的访问,都要有明确的角色授权,防止黑客利用不完善的访问控制缺陷造成不必要的损失;
   或者是实现Web访问的IP白名单列表,或者是只允许属于管理员范围权利的指定IP访问等等。
逻辑类任意用户密码重置漏洞高危系统在处理重置密码请求时使用本地验证方法,未在服务端处理,造成用户可在本地修改数据包,绕过系统身份验证,达到重置任意账号的目的。针对任意用户密码重置漏洞,建议在服务器端加强逻辑验证。
逻辑类验证码漏洞高危验证码可以一次多用,导致可以暴力破解;
   验证码没有限定次数和时间,导致可以无限制的发送验证码。
设置验证码登录一次,变换一次,防止暴力破解;设置验证码120秒只发送一次。
逻辑类暴力破解漏洞中危登录入口没有验证码或者验证码可以一次多用,导致可以暴力破解。攻击者可能试图尝试每个可能的字母,数字和符号组合,或使用一些暴力破解工具进行猜测,直到它发现了一个正确的组合,从而进入登录页面做进一步深度非法攻击。1.增加验证码,使之登录失败一次,验证码变换一次。
   2.针对密码猜测,建议控制错误登录次数,以防止暴力破解。同一用户如果5分钟内登录失败6次,禁用此用户登录30分钟。
逻辑类用户名猜解漏洞中危通过登录信息可以判断有无此用户,可以对用户名进行猜解。使用模糊的错误登录提示,如:用户名或密码错误。
逻辑类短信轰炸漏洞中危短信轰炸是由于系统设计缺陷可无限制发送短信验证码给客户端,攻击者可利用该漏洞对任意手机号码进行短信轰炸,对公司造成不良影响和运行安全风险。建议针对发送短信验证码接口加强权限控制,在服务端限制单位时间内发送短信次数。
其它Webview远程代码执行漏洞高危WebView组件中的addJavascriptInterface方法用于实现本地Java和JavaScript的交互,但是该函数并没有对方法调用进行限制,导致攻击者可以调用任何JAVA类,最终导致JavaScript代码对设备进行任意攻击建议不使用addJavascriptInterface接口,对于Android  API  Level为17或者以上的Android系统,Google规定允许被调用的函数,必须在Java的远程方法上面声明一个@JavascriptInterface注解;在使用js2java的bridge时候,需要对每个传入的参数进行验证,避免恶意代码的攻击。
其它代码动态加载安全检测高危使用DexClassLoader或PathClassLoader动态加载dex文件、apk文件、jar文件时,如果这些文件存储在可被其他应用读写的目录中(比如sdcard),同时没有对外部加载的文件进行完整性校验,导致应用可能会被恶意代码注入并执行。将所需要动态加载的文件放置在apk内部,或应用私有目录中;如果应用必须要把所加载的文件放置在可被其他应用读写的目录中(比如sdcard),建议对不可信的加载源进行完整性校验和白名单处理,以保证不被恶意代码注入
其它应用签名未校验风险高危应用签名未校验,攻击者可伪造app程序。增加程序本地签名校验及云端的签名校验
其它篡改和二次打包风险高危对移动应用进行破解、再篡改或插入恶意代码,最后重新打包生成一个新应用的过程,恶意程序通过插入广告、木马、病毒的方式窃取用户隐私、吸资扣费、耗费流量等。增加程序本地签名校验及云端的签名校验。
其它Java代码反编译风险中危可通过反编译工具获取java源代码,攻击者可获取源码信息执行更深入的渗透攻击。1.隔离Java程序;
   2.对Class文件进行加密;
   3.代码混淆。
其它资源文件泄露风险中危泄露的js文件如果被读取,可能会造成功能逻辑泄露,如果被篡改,可能被植入钓鱼页面或恶意代码,造成用户的敏感信息泄露对资源文件(.js)进行加密保护,防止资源文件泄露。
其它Webview明文存储密码风险中危在使用WebView的过程中忽略了WebView  setSavePassword,当用户选择保存在WebView中输入的用户名和密码,则会被明文保存到应用数据目录的databases/webview.db中。如果手机被root就可以获取明文保存的密码,造成用户的个人敏感数据泄露。使用WebView.getSettings().setSavePassword(false)来禁止保存密码
其它明文数字证书风险中危明文存储的数字证书如果被篡改,可能会造成客户端与服务端之间的传输数据被截获并解密,造成用户信息泄露对数字证书文件(.cer)进行加密,避免证书文件泄露
其它应用数据任意备份风险中危Android  2.1 以上的系统可为App提供应用程序数据的备份和恢复功能,该由AndroidMainfest.xml文件中的allowBackup  属性值控制,其默认值为true。当该属性没有显式设置为false时,攻击者可通过adb backup 和adb  restore对App的应用数据进行备份和恢复,从而可能获取明文存储的用户敏感信息,如用户的密码、证件号、手机号、交易密码、身份令牌、服务器通信记录等。利用此类信息攻击者可伪造用户身份,盗取用户账户资产,或者直接对服务器发起攻击。关闭应用程序数据的备份和恢复功能。
其它AES/DES加密方法不安全使用漏洞中危使用AES/DES/DESede加密算法时,如果使用ECB模式,容易受到攻击风险,造成信息泄露使用AES/DES/DESede加密算法时,应显示指定使用CBC或CFB加密模式
其它敏感函数调用风险中危APP应用程序中调用了包含敏感行为的函数,包括发送短信、发送地理位置、拨打电话等,可能会导致用户隐私数据泄露等风险开发者审核包含敏感行为的函数调用,确保其使用是必要且限制于授权用户的
其它HTTP传输数据风险中危攻击者在自己设置的钓鱼网络中配置DNS服务器,将软件要连接的服务器域名解析至攻击者的另一台服务器在,这台服务器就可以获得用户登录信息,或者充当客户端与原服务器的中间人,转发双方数据。对敏感数据采用基于SSL/TLS的HTTPS进行传输。
其它HTTPS未校验服务器证书漏洞中危虽然使用了https通信方式,但是只是简单的调用而已,并未对SSL证书有效性做验证,攻击者以轻易获取手机用户的明文通信信息。对SSL证书进行有效性做验证
其它Activity组件导出风险中危导出的Activity组件可以被第三方APP任意调用,导致敏感信息泄露,并可能受到绕过认证、恶意代码注入等攻击风险。如果应用的Activity组件不必要导出,或者组件配置了intent  filter标签,建议显示设置组件的“android:exported”属性为false;如果组件必须要提供给外部应用使用,建议对组件进行权限控制。
其它Service组件导出风险中危导出的Service组件可以被第三方APP任意调用,导致敏感信息泄露,并可能受到权限提升、拒绝服务等攻击风险。如果应用的Service组件不必要导出,或者组件配置了intent  filter标签,建议显示设置组件的“android:exported”属性为false;如果组件必须要提供给外部应用使用,建议对组件进行权限控制。
其它Broadcast  Receiver组件导出风险中危导出的Broadcast  Receiver组件可以被第三方APP任意调用,导致敏感信息泄露,并可能受到权限绕过、拒绝服务等攻击风险如果应用的Broadcast  Receiver组件不必要导出,或者组件配置了intent  filter标签,建议显示设置组件的“android:exported”属性为false;如果组件必须要接收外部应用发送的消息,建议对组件进行权限控制。
其它系统组件本地拒绝服务检测中危导出的组件在处理Intent附加数据的时候,没有进行异常捕获,攻击者可通过向应用发送空数据、异常或畸形数据等,导致应用程序崩溃。不必要导出的组件,建议显示设置组件的“android:exported”属性为false;在使用Intent获取附加数据时,使用try  catch进行异常捕获和处理,防止抛出异常引发崩溃。
其它Content  Provider组件导出风险中危导出的Content  Provider组件可以被第三方app任意调用,导致敏感信息泄露,并可能受到目录遍历、SQL注入等攻击风险如果应用的Content  Provider组件不必要导出,建议显式设置组件的“android:exported”属性为false;如果必须要有数据提供给外部应用使用,建议对组件进行权限控制。

网络安全工程师(白帽子)企业级学习路线

第一阶段:安全基础(入门)

img

第二阶段:Web渗透(初级网安工程师)

img

第三阶段:进阶部分(中级网络安全工程师)

img

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉【整整282G!】网络安全&黑客技术小白到大神全套资料,免费分享!

学习资源分享

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网安导师小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值