常见WEB安全漏洞及整改建议_第1页
常见WEB安全漏洞及整改建议_第2页
常见WEB安全漏洞及整改建议_第3页
常见WEB安全漏洞及整改建议_第4页
常见WEB安全漏洞及整改建议_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

常见 WEB 安全漏洞及整改建议 1 HTML 表单没有 CSRF 保护 1 1 问题描述 CSRF Cross site request forgery 中文名称 跨站请求伪造 也被称为 one click attack session riding 缩写为 CSRF XSRF CSRF 攻击 攻击者盗用了你的身份 以你的名义发送恶意请求 CSRF 能够做的事 情包括 以你名义发送邮件 发消息 盗取你的账号 甚至于购买商品 虚拟货币转 账 造成的问题包括 个人隐私泄露以及财产安全 1 2 整改建议 CSRF 的防御可以从服务端和客户端两方面着手 防御效果是从服务端着手效果比 较好 现在一般的 CSRF 防御也都在服务端进行 有以下三种方法 1 Cookie Hashing 所有表单都包含同一个伪随机值 2 验证码 3 One Time Tokens 不同的表单包含一个不同的伪随机值 1 3 案例 1 服务端进行 CSRF 防御 服务端的 CSRF 方式方法很多样 但总的思想都是一致的 就是在客户端页面增加 伪随机数 1 3 1 Cookie Hashing 所有表单都包含同一个伪随机值 这可能是最简单的解决方案了 因为攻击者不能获得第三方的 Cookie 理论上 所 以表单中的数据也就构造失败 构造加密的 Cookie 信息 value DefenseSCRF setcookie cookie value time 3600 在表单里增加 Hash 值 以认证这确实是用户发送的请求 hash md5 COOKIE cookie 然后在服务器端进行 Hash 值验证 if isset POST check hash md5 COOKIE cookie if POST check hash doJob else else 这个方法已经可以杜绝 99 的 CSRF 攻击了 那还有 1 由于用户的 Cookie 很 容易由于网站的 XSS 漏洞而被盗取 这就另外的 1 一般的攻击者看到有需要算 Hash 值 基本都会放弃了 某些除外 所以如果需要 100 的杜绝 这个不是最好的 方法 1 3 2 验证码 这个方案的思路是 每次的用户提交都需要用户在表单中填写一个图片上的随机字 符串 这个方案可以完全解决 CSRF 但在易用性方面似乎不是太好 还有是验证码图 片的使用涉及了一个被称为 MHTML 的 Bug 可能在某些版本的微软 IE 中受影响 1 3 3 One Time Tokens 不同的表单包含一个不同的伪随机值 在实现 One Time Tokens 时 需要注意一点 就是 并行会话的兼容 如果用 户在一个站点上同时打开了两个不同的表单 CSRF 保护措施不应该影响到他对任何表 单的提交 考虑一下如果每次表单被装入时站点生成一个伪随机值来覆盖以前的伪随 机值将会发生什么情况 用户只能成功地提交他最后打开的表单 因为所有其他的表 单都含有非法的伪随机值 必须小心操作以确保 CSRF 保护措施不会影响选项卡式的 浏览或者利用多个浏览器窗口浏览一个站点 以下实现 1 先是令牌生成函数 gen token function gen token 这是贪方便 实际上单使用 Rand 得出的随机数作为令牌 也是不安全的 这个可以参考写的 Findbugs 笔记中的 Randomobject created and used only once token md5 uniqid rand true return token 2 然后是 Session 令牌生成函数 gen stoken function gen stoken pToken if SESSION STOKEN NAME pToken 没有值 赋新值 SESSION STOKEN NAME gen token else 继续使用旧的值 3 WEB 表单生成隐藏输入域的函数 function gen input gen stoken echo value SESSION STOKEN NAME 4 WEB 表单结构 session start include functions php 5 服务端核对令牌 2 jQuery 跨站脚本漏洞 2 1 问题描述 jQuery 是继 prototype 之后又一个优秀的 Javascr pt 框架 jQuery 1 6 3 之前版本中存在跨站脚本漏洞 当使用 location hash 选择元素时 通过特制的标签 远程攻击者利用该漏洞注入任意 web 脚本或 HTML 2 2 整改方法 目前厂商已经发布了升级补丁以修复此安全问题 补丁获取链接 2 3 整改案例 升级 jQuery 版本 3 跨站脚本编制 3 1 问题描述 跨站脚本攻击是通过在网页中加入恶意代码 当访问者浏览网页时恶意代码会被执 行或者通过给管理员发信息的方式诱使管理员浏览 从而获得管理员权限 控制整个 网站 攻击者利用跨站请求伪造能够轻松地强迫用户的浏览器发出非故意的 HTTP 请 求 如诈骗性的电汇请求 修改口令和下载非法的内容等请求 风险等级 高 风险范围 任何存在输入 输出方法 包括 GET 与 POST 的页面皆可能存在恶意符号输入缺 陷 主要影响应用包括留言板 在线通讯信息 文章发布页面等 3 2 整改建议 对用户输入的参数执行严格检测 1 对产生漏洞模块的传入参数进行有效性检测 int 类型的只允许 0 9 的整型数字 string 等字符类型的只允许 1 9 a z A Z 的英文字母 2 当客户端输入限定值意外的字符后 立即转向自定义的错误页 而不能使用服 务器默认的错误输出方式 3 对穿入参数进行危险字符过滤 禁止 等 特 殊字符的传入 3 3 案例 加固范例 一 将 login jsp 中 String u request getParameter u 替换为如下内容 String u request getParameter u u u replace u u replace u u replace u u replace u u replace u u replace u u replace u u replace u u replace u u replace 加固范例 二 更积极的方式是利用正则表达式只允许输入指定的字符 在 String u request getParameter u 后代入以下 isValidInput 函数作辨别 public boolean isValidInput Stringstr if str matches a z0 9 return true else return false 4 URL 重定向钓鱼 4 1 3 1 问题描述 通过构建 URL 攻击者可以使用户重定向到任意 URL 利用这个漏洞可以诱使用户 访问某个页面 挂马 密码记录 下载任意文件等 常被用来钓鱼 4 2 3 2 整改建议 对输入参数进行做处理 建议过滤出所有以下字符 1 竖线符号 2 分号 4 美元符号 5 百分比符号 6 at 符号 7 单引号 8 引号 9 反斜杠转义单引号 10 反斜杠转义引号 11 尖括号 12 括号 13 加号 14 CR 回车符 ASCII 0 x0d 15 LF 换行 ASCII 0 x0a 16 逗号 17 反斜杠 4 3 3 3 案例 对输入参数进行做处理 加固范例 一 将 login jsp 中 String u request getParameter u 替换为如下内容 String u request getParameter u u u replace u u replace u u replace u u replace u u replace u u replace u u replace u u replace u u replace u u replace 加固范例 二 更积极的方式是利用正则表达式只允许输入指定的字符 在 String u request getParameter u 后代入以下 isValidInput 函数作辨别 public boolean isValidInput String str if str matches a z0 9 returntrue else return false 5 不安全存储 5 1 问题描述 不安全存储 在页面上显示密码 5 2 整改建议 加密密码或不在页面及源码上显示密码 5 3 案例 一切涉及敏感信息读写操作的页面 如登陆页面 登陆处理页面等 风险范例 Add user jsp String sql sql insert into user username password values Username Password Statement sm cn createStatement sm executeUpdate sql sm close 加固范例 在生成 sql 变量内容前加入对 Password 变量的加密处理 public String byte2hex byte b 二行制转字符串 Stringhs Stringstmp for int n 0 n b length n stmp java lang Integer toHexString b n if stmp length 1 hs hs 0 stmp elsehs hs stmp if n b length 1 hs hs returnhs toUpperCase java security MessageDigestalg java security MessageDigest getInstance SHA 256 alg update Password getBytes byte digest alg digest Password byte2hex digest 6 错误的页面信息 6 1 问题描述 错误 警告消息 可能会泄露敏感信息 6 2 整改建议 在编码阶段开发者对敏感页面缺乏授权保护 导致相关 URL 页面敏感信息泄露 建议修改错误信息 一切敏感或需要权限方可浏览的页面 包括 敏感信息中转处理页面 上传页面 管理平台页面 用户自管理页面等 6 3 案例 风险范例 风险范例为一切需要敏感但编码阶段没有进行授权鉴别的页面 加固范例 if session getValue UserName null session getValue UserClass null session getValue UserClass equals 系统管理员 response sendRedirect err jsp id 14 return 7 已解密的登陆请求 7 1 问题描述 用户名 密码输入字段未经加密即进行了传递 7 2 整改建议 确保所有登录请求都以 https 加密方式发送到服务器 7 3 案例 方法一 配置 SSL 加密传输 概念理解 keystore 是一个密码保护的文件 用来存储密钥和证书 1 生成一个 keystore 文件 包含证书 文件位置 usr local tomcat conf keystore cd usr local jdk bin keytool genkey alias tomcat keyalg RSA keystore usr local tomcat conf keystore 输入密码 提供你的信息即可 如果不是用来 玩 的话 请如实的填写自己以及 单位的信息吧 注意 它会在前后问你两次密码 第二次直接回车就行了 如果两个密码不一样 将会出现 java io IOException 错误 详情请见 url http issues apache org bugzilla show bug cgi id 38217 url 2 修改 tomcat conf server xml 启用这一段 maxThreads 150 scheme https secure true clientAuth false sslProtocol TLS 并修改为 maxThreads 150 scheme https secure true keystoreFile usr local tomcat conf keystore keystorePass snailwarrior clientAuth false sslProtocol TLS 3 重启 Tomcat usr local tomcat bin shutdown sh usr local tomcat bin startup sh 4 防火墙开启 8443 端口 浏览器输入 url https 192 168 32 50 8443 url 方法二 把 text password 这个用其他的代替 就可以解决已解密的登录请求 仅共参考 密 码 nkeypress javascript hiddenPass event onkeyup this value this value replace g js 代码 functionhiddenPass e e e e window event var kcode e which e which e keyCode var pass document getElementByIdx x password1 var j pass document getElementByIdx x password if kcode 8 var keychar String fromCharCode kcode j pass value j pass value keychar j pass value j pass value substring 0 pass length 获取密码 document getElementByIdx x password value 8 HTTP 拒绝服务 8 18 1 问题描述问题描述 HTTP 存在 DOS 漏洞 如果远程攻击者使用发包工具向 Apache 服务器发送了不完整的 HTTP 请求 服务 器会打开连接等待接受完整的头 但如果发包工具不再继续发送完整请求而是发送无 效头的话 就会一直保持打开的连接 这种攻击所造成的影响很严重 因为攻击者不 需要发送很大的通讯就可以耗尽服务器上的可用连接 也就是说 即使低带宽的用户 也可以攻击大流量的服务器 8 28 2 整改方法整改方法 临时解决方法 更改默认的 TimeOut 选项少于 7000ms 或使用 mod limitipconn 模块限制单个 IP 地址的连接数 厂商补丁 Apache Group 目前厂商还没有提供补丁或者升级程序 我们建议使用此软件的用户随时关注厂商 的主页以获取最新版本 http www apache org 8 38 3 案例案例 关于 HTTP 版本低漏洞信息 如下 1 漏洞的描述 2 TOMCAT 官网说这个不是一个漏洞 没有打算出补丁 只有缓解方法 详细可以看 http tomcat apache org security 6 html Not a vulnerability in Tomcat 查找 CVE 2012 5568 会看到官网说明 缓解方法 通过 server xml 内定义的连接器的 connectionTimeout 属性 配置一个合适的 超时时间 3 但 CVE 的漏洞还是所有版本也存在 下面是一个 CVE 的详细信息地址 此页 面最后更新为 2013 03 07 当时 6 0 35 为最新版本 Stringfilter flt split for int i 0 i content replace filter i return content 参考信息 http www owasp org index php Top 10 2010 A1 12 HTTP 版本过低 12 112 1 问题描述问题描述 Apache IIS 等版本过低存在众多安全漏洞 12 212 2 整改建议整改建议 升级 Apache IIS 等到最新版本 13 微软 IIS 波状目录枚举 13 113 1 问题描述问题描述 攻击者可以利用 字符猜解或遍历服务器中的文件名 或对 IIS 服务器中的 Net Framework 进行拒绝服务攻击 13 213 2 整改建议整改建议 升级 netframework 至 4 0 以上版本 14 未加密的 VIEWSTATE 的参数 14 114 1 问题描述问题描述 可能会收集有关 Web 应用程序的敏感信息 如用户名 密码 机器名和 或敏感 文件位置 14 214 2 整改建议整改建议 在 Web Config 文件的 元素之下 添加下面这一行 15 Unicode 转换问题 15 115 1 问题描述问题描述 Unicode 编码未指定 15 215 2 整改建议整改建议 在源码内指定编码类型即可解决如 UTF 8 16 证书泄漏 16 116 1 问题描述问题描述 发现 SSL 证书信息 16 216 2 整改建议整改建议 使用公认第三方如 CA 的签名证书 17 目录列表 17 117 1 问题描述问题描述 可能会查看和下载特定 Web 应用程序虚拟目录的内容 其中可能包含受限文件 17 217 2 整改建议整改建议 1 将 Web 服务器配置成拒绝列出目录 2 根据 Web 服务器或 Web 应用程序上现有的问题来下载特定安全补丁 部分 已知的目录列表问题列在这个咨询的 引用 字段中 3 利用 CERT 咨询中的变通方法 在这项咨询的 引用 字段中 来修订短文 件名 8 3 DOS 格式 问题 a 想要完全由 Web 服务器来保护的文件仅用 8 3 标准短文件名 在 FAT 文件系 统 16 位 上 您可以启用 Win31FileSystem 注册表键 设为 1 注册表路径 HKEY LOCAL MACHINE System CurrentControlSet Control FileSystem 来强 制这一点 b 在 NTFS 32 位 上 您可以启用 NtfsDisable8dot3NameCreation 注册 表键 设为 1 注册表路径 HKEY LOCAL MACHINE System CurrentControlSet Control FileSystem 来禁 用创建长文件名文件的 8 3 标准短文件名 不过 这个步骤可能会引起与 16 位应用 程序的兼容性问题 c 使用基于 NTFS 的 ACL 目录或文件级别的访问控制表 来扩增或替换基于 Web 服务器的安全 18 备份文件 18 118 1 问题描述问题描述 存在不必要的备份残留文件 可能会被信息采集进入步深入渗透 18 218 2 整改建议整改建议 删除不必要的备份文件 19 ASP NET padding oracl 攻击 19 119 1 问题描述问题描述 使用 NETFramework 所编译的 ASP Net 应用中没有正确地实现加密 攻击者可以 解密并篡改敏感数据 如果要理解这个漏洞 首先要了解加密系统中的提示机制 当你提出问题时提示机 制会给出某种形式的答案 此漏洞涉及到 ASP NET 对加密信息中填充数据的提示 攻 击者可以通过向 Web 服务器发送特定的密文文本 然后通过检查所返回的出错代码来 判断数据是否被正确解密 通过反复上述操作 攻击者就可以收集到足够的信息用来 解密剩余部分的密文文本 19 219 2 整改建议整改建议 打上 MS10 070 漏洞补丁 20 用户得凭证信息以明文发送 20 120 1 问题描述问题描述 不安全明文传输登录请求 20 220 2 整改建议整改建议 使用 SSL 加密 21 Web 应用防火墙检测从 HTTP HTTPS 后不安全的 过渡形式 21 121 1 问题描述问题描述 不安全明文传输方式 21 221 2 整改建议整改建议 使用所以页面通过 SSL 加密 22 struts2 漏洞 22 122 1 问题描述问题描述 struts2 框架版本过低 存在远程任意命令执行漏洞 22 222 2 整改建议整改建议 升级 struts2 框架到最新版本 23 弱口令 23 123 1 问题描述问题描述 使用如 123456 test 等弱口令 23 223 2 整改建议整改建议 按电信密码规范要求配置口令 24 文件包含 24 124 1 问题描述问题描述 可能会在 Web 服务器上运行远程命令 这通常意味着完全破坏服务器及其内容 24 224 2 整改建议整改建议 假定所有输入都是恶意的 使用 接受已知善意 输入验证策略 严格遵守规范的 可接受输入的白名单 拒绝任何没有严格遵守规范的输入 或者将其转换为遵守规范 的内容 不要完全依赖于将恶意或格式错误的输入加入黑名单 但是 黑名单可帮助 检测潜在攻击 或者确定哪些输入格式不正确 以致应当将其彻底拒绝 执行输入验证时 请考虑所有潜在相关属性 包括长度 输入类型 可接受值的完 整范围 缺失或多余输入 语法 跨相关字段的一致性以及业务规则一致性 以业务 规则逻辑为例 boat 可能在语法上有效 因为它仅包含字母数字字符 但如果预 期为颜色 如 red 或 blue 那么它无效 对于文件名 请使用限制要使用的字符集的严格白名单 如果可行 请仅允许文件 名中出现单个 字符以避免 CWE 23 之类的弱点 并排除 之类的目录分隔符 以避免 CWE 36 请使用允许的文件扩展名的白名单 这有助于避免 CWE 434 25 源代码暴露 25 125 1 问题描述问题描述 源代码暴露 25 225 2 整改建议整改建议 删除源代码文件或对需要的未解析的源代码进行解析 26 SSL 证书无效 26 126 1 问题描述问题描述 SSL 证书过期或 SSL 证书不合法等 26 226 2 整改建议整改建议 重新生成配置 SSL 证书 27 SSL 加密方式弱 27 127 1 问题描述问题描述 SSL 证书加密方式弱 导致加密信息可能被解密 27 227 2 整改建议整改建议 重新生成 SSL 证书 加密算法选择如 RSA 1024 等 28 Http 请求头的额外的回车换行符注入 28 128 1 问题描述问题描述 攻击者可能注入自定义 HTTP 头 例如 攻击者可以注入会话 cookie 或 HTML 代 码 这可能会进行类似的 XSS 跨站点脚本 或会话固定漏洞 28 228 2 整改建议整改建议 这种现象往往表现在带有参数传递的网页 只要合理的过滤好就 OK 啦 提供 PHP 代码 post trim post 2 post strip tags post 清除 HTML 如 等代码 3 post ereg replace t post 去掉制表符号 4 post ereg replace r n post 去掉回车换行符号 5 post ereg replace r post 去掉回车 6 post ereg replace n post 去掉换行 7 post ereg replace post 去掉空格 8 post ereg replace post 去掉单引号 29 CRLF 注入 HTTP 响应拆分 同上 Http 请求头的额外的回车换行符注入 30 MBean 提交密码字段中使用 GET 方法 30 130 1 问题描述问题描述 使用 GET 方法 MBean 提交密码字段 30 230 2 整改建议整改建议 更改为 POST 提交方法 31 JBoss 类漏洞 31 131 1 问题描述问题描述 发现 JBoss 框架登录管理后台等信息 31 231 2 整改建议整改建议 限制 JBOSS 控制台等目录访问权限 32 Apache Tomcat 版本低 32 132 1 问题描述问题描述 Apache Tomcat 版本过低 32 232 2 整改建议整改建议 升级 ApacheTomcat 到最新版本 33 Apache Tomcat 类漏洞 33 133 1 问题描述问题描述 发现存在 ApacheTomcat 的示例文件 控制台等信息 33 233 2 整改建议整改建议 删除 ApacheTomcat 的示例文件及控制台相关文件 34 临时应急加固方法 35 非公众访问类 35 135 1 问题描述问题描述 发现系统 数据库类等漏洞没法加固或暂时无法加固 35 235 2 整改建议整改建议 关闭不必要的应用或使用系统防火墙限制非公众使用的端口进行来源绑定访问 36 WEB 类 36 136 1 问题描述问题描述 发现 XSS SQL 等漏洞的应急加固办法 36 236 2 整改建议整改建议 apache commons lang 工具包里的类 可以在工程中写一个过滤器 使用该工具 类去实现敏感字符的过滤 过滤器示例 1 参考地址 过滤器示例 2 如下 使用 JAVA 过滤器对攻击特征进行过滤如 一 写一个过滤器 代码如下 package com liufeng sys filter import java io IOException import java io PrintWriter import javax servlet Filter import javax servlet FilterChain import javax servlet FilterConfig import javax servlet ServletException import javax servlet ServletRequest import javax servlet ServletResponse importjavax servlet http HttpServletRequest importjavax servlet http HttpServletResponse public class IllegalCharacterFilterimplements Filter private String characterParams null private boolean K true public void destroy TODO Auto generated method stub 此程序块主要用来解决参数带非法字符等过滤功能 public void doFilter ServletRequest request ServletResponse response FilterChain arg2 throwsIOException

温馨提示

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

最新文档

评论

0/150

提交评论