常见漏洞以及修复方法_第1页
常见漏洞以及修复方法_第2页
常见漏洞以及修复方法_第3页
常见漏洞以及修复方法_第4页
常见漏洞以及修复方法_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

常见漏洞以及修复方法文:政府事业本部 第一事业部劳动人事开发部 刘世涛目录(一)前言3(二)常见漏洞及原理分析31.sql脚本注入32.跨站点脚本编制33.不安全的HTTP方法及登录验证相关44.跨站点请求伪造45.危险性较低的开发及配置问题4(三)系统防御原理51.sql脚本注入52.跨站点脚本编制53.不安全的HTTP方法及登录验证相关64.跨站点请求伪造65.危险性较低的开发及配置问题6(四)结语7(一) 前言在做互联网的项目中,由于网络用户数量大、环境更加复杂,对系统安全的考虑要更加慎重和全面。我在部门中参与了多个互联网项目,以此为基础,并结合IBM AppScan安全工具,介绍一下我们遇到的几个安全方面的问题及其原理和解决方案。我们的项目使用的技术主要包括:spring、spring MVC、freemarker、hibernate。本文主要站在软件系统的构建者和开发者的角度出发,类似网络环境、服务器配置等,可以参考其他资料。(二) 常见漏洞及原理分析1. sql脚本注入后台执行sql语句时,使用字符串拼接的方式,并且该字符串是使用浏览器提交的数据时。攻击者将提交的数据就行修改,可以达到执行希望的sql的目的。该攻击比较危险,可能会造成数据破坏和数据盗取的后果。例如:用户提交username和password两个字段,系统后台判断语句为String sql = “select * from user where name=”+username+” and password=”+password+”;后台通过判断查询结果是否为空,来决定用户的账号和密码是否正确。如果用户将username的值写为 admin or 1 or ,并且存在账号名称为admin的管理员用户,则可以直接以admin登录成功。以上例子只是很简单的一种状况,如果某些功能处理不好,有可能会造成大量数据被盗取的严重后果。2. 跨站点脚本编制攻击者在浏览器向服务端提交的数据中,加入危险的内容,如js脚本等。如果服务器端没有响应的防御措施,则会被注入跨站脚本。典型的攻击分为两类:持久型:例如攻击者在某博客内留言,该留言内容中嵌有一段获取用户账号cookie的JS脚本。该博客被某个登录用户访问时,脚本会在用户未知的情况下运行,就会被盗取账号等个人信息。非持久型:攻击者在查询的请求内,使用URL参数的方式添加html语法内容和非法js脚本,并且将该URL发送给登录用户。登陆用户点击连接之后,脚本会在用户未知的情况下运行,就有可能被盗取账号等个人信息。3. 不安全的HTTP方法及登录验证相关针对现有的常见漏洞进行解释:1. 已解密的登录请求、启用了不安全的 HTTP 方法:如果没有使用https协议,攻击者可以在网络层面对数据进行拦截。针对登录、注册等功能,账户等主要信息会被法拦截。2. 不充分帐户封锁:攻击者可能会使用穷举法对密码进行暴力破解。3. 会话标识未更新:用户在未登录和登录后的sessionid没有进行更新,则攻击者仿造一个带有自定义的jsessionid参数的URL发送给被攻击者,通常为登录页面,如果被攻击者点击链接之后,进行了登录操作,jsessionid未更新,并且攻击者拥有这个jsessionid,则可以使用这个sessionid作为攻击者自身的信息,进入系统后,就拥有了被攻击者的权限。4. 跨站点请求伪造在某个非法网站的页面内嵌入允许跨站点的标签,例如js、img标签。标签的src属性为某个操作的请求,例如转账、授权等等。当用户在登录被攻击网站之后,如果访问该非法页面,则会自动向被攻击网站发送一条请求,此时网站认为该请求是用户本人的操作,攻击成功。5. 危险性较低的开发及配置问题1. Bash Shell 历史记录文件检索服务器配置2. Robots.txt 文件 Web 站点结构暴露3. 会话 cookie 中缺少 HttpOnly 属性会话cookie没有HttpOnly属性,则在浏览器端可以使用js等手段进行修改4. 自动填写未对密码字段禁用的 HTML 属性自动记录密码功能5. HTML 注释敏感信息泄露注释信息中含有某些关键字,如password等等6. 发现电子邮件地址模式注释或代码中存在邮件格式的信息,可能会有信息泄露7. 发现内部 IP 泄露模式返回信息中,带有内部IP信息,可能会有信息泄露8. 客户端(JavaScript)Cookie 引用浏览器端运行的js文件对cookie进行了引用,可能会被攻击者利用。(三) 系统防御原理1. sql脚本注入要求所有的人员在开发过程中,杜绝食用字符串直接拼接sql语句的方式,而使用预编译或命名参数的方式。例如:String sql = “select * from a where b=”+name+”; /name为浏览器请求的参数1. 预编译的sql在jdbc中的体现为preparedstatement。查询语句应为:select * from a where b=? ,时候使用preparedstatement.setXXX的方法进行变量设置。2. 命名参数在常用的orm框架中都有对应的方法,以spring的jdbctemplate为例:String sql =” select * from a where b=:name”;jdbctemplate.query(sql, new Objectname, )3. 通常使用hibernate等orm框架,使用其对应的java bean进行增删改查操作都是安全的。 现在处理漏洞方法:使用过滤器来过滤非法字符,解决该漏洞!但是在程序开发中,请不要使用直接拼接sql语句!过滤器代码:2. 跨站点脚本编制该漏洞的核心原因是未针对用户提交的数据中含有html语义的内容进行替换,从而造成用户提交的数据可以被客户端执行造成的。解决办法就是针对用户提交的数据进行处理,将其中的特殊字符替换为用于显示的html实体。例如:小于号()替换为 <等等。如果你使用用于页面展示的模板引擎,那恭喜你。这些模板引擎通常有自带的处理方法,可以方便的将特殊子图替换掉。如果没有,那就需要自己进行替换,建议使用正则表达式,方便效率。下面以我们项目为例,介绍我的处理方法。1. 数据库层面:添加系统级配置管理模块,对系统库表和字段进行配置。针对需要进行替换的数据库表和字段,在管理模块内配置为需要替换。系统会在该字段被修改和保存时,通过hibernate拦截器。对数据内的html语义字符替换为html实体,如小于号()等。该操作可以防御危险性较高的持久型跨站点脚本攻击。2. 页面显示层:添加系统级配置管理模块,对用户请求页面进行配置。针对需要进行替换的页面,将页面动态显示内容(freemarker变量内容,例如动态显示的用户名称、展示数据等)进行替换,对数据内的html语义字符替换为html实体。该操作可以防御所有的跨站点脚本攻击。例如:攻击者使用伪造请求数据的方法,提交了非法的js脚本,该请求数据在freemarker渲染页面时,作为语句开发的 会被替换为 script 该内容只会被作为普通文本进行解释,而不会被浏览器作为脚本解释。附:freemarker内置处理方法:使用自定义TemplateLoader,在每个页面载入时添加一行代码这样,所有的动态变量中的特殊字符都会被html实体替换。velocity也有类似的方法进行全局设置。现在处理漏洞方法:使用过滤器来过滤非法字符,解决该漏洞!3. 不安全的HTTP方法及登录验证相关1. 已解密的登录请求、启用了不安全的 HTTP 方法:根据用户的安全要求进行配置,根据项目情况安排2. 不充分帐户封锁:通常为进行测试,系统去掉了原有的验证码,出现了此漏洞。针对重要的请求,可以使用验证码,可以有效的防止暴力破解。根据用户的安全要求,可以增加对登录次数的限制。例如:如果连续登录失败10次,则一天之内不允许再登录。3. 会话标识未更新:用户每次登陆成功之后,对用户的相关标识进行更新。例如cookieid、jsessionid等。这样,攻击者无法获取正确的会话标识。4. 跨站点请求伪造该漏洞属于中级漏洞,常见网站往往不会进行处理。但是对于安全性要求较高的内容,例如设计转账、重要的权限等,需要进行处理。防御方法:1. 针对安全要求高的请求,判断请求的来源,对于来源非本站的请求进行处理。即request.getHeader(refer);判断来源页面是否是本站内部的页面。可以防御简单的跨站点请求伪造。但是,使用http客户端软件或者js脚本可以修改Header中的refer属性,就要使用下面的方法了。2. 在系统内设计一个算法,在生成请求页面时,生成一个不规则的随机码。之后在用户点击这个页面内请求时,附带这个随机码。之后再系统端对提交的随机码和下方的随机码进行比对,如果不符合,则说明该请求时伪造的。现在处理漏洞方法:使用过滤器来判断request.getHeader(refer)是否是指定ip或者域名,解决该漏洞!5. 危险性较低的开发及配置问题1. Bash Shell 历史记录文件检索修改服务器配置2. Robots.txt 文件 Web 站点结构暴露3.系统内含有用于seo的robots.txt文件。但是robots文件只是一个声明类的文件,并不能增加站内敏感内容的安全性。相反的是,如果在robots内添加了敏感内容结构的声明,会将站点结构暴露给攻击者。所以,使用robots文件要小心,该文件只是起到“防君子不防小人”的目的。例如之前某不良公司违反robots协议,造成用户信息泄露的问题。4. 会话 cookie 中缺少 HttpOnly 属性开发时针对cookie操作,添加httponly属性,由于该方法属于servlet3.0规范,根据项目要求配置。5. 自动填写未对密码字段禁用的 HTML 属性开发时,针对password文本框添加autocomplete=off的属性6. HTML 注释敏感信息泄露要求开发中,避免在注释内出现危险的词汇信息。但是有时使用的开源组件内部会有此问题,需要衡量。7. 发现电子邮件地址模式要求开发中,避免出现危险的email信息。但是有时使用的开源组件内部会有此问题,需要衡量。8. 发现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论