1、EMA 服务管理平台二期扩容安全验收漏洞修复总结2011 年 5 月中国电信 EMA 服务管理平台二期扩容安全验收漏洞修复总结- i - 目 录1 WEB 安全介绍 .12 SQL 注入、盲注 .12.1 SQL 注入、盲注概述 .12.2 安全风险及原因 .22.3 APPSCAN 扫描建议 .22.4 应用程序解决方案 .43 会话标识未更新 .73.1 会话标识未更新概述 .73.2 安全风险及原因分析 .73.3 APPSCAN 扫描建议 .83.4 应用程序解决方案 .84 已解密登录请求 .84.1 已解密登录请求概述 .84.2 安全风险及原因分析 .84.3 APPSCAN 扫
2、描建议 .94.4 应用程序解决方案 .95 跨站点请求伪造 .115.1 跨站点请求伪造概述 .115.2 安全风险及原因分析 .125.3 APPSCAN 扫描建议 .125.4 应用程序解决方案 .126 不充分账户封锁 .136.1 不充分账户封锁概述 .136.2 安全风险及原因分析 .136.3 APPSCAN 扫描建议 .136.4 应用程序解决方案 .137 启用不安全 HTTP 方法 .147.1 启用不安全 HTTP 方法概述 .147.2 安全风险及原因分析 .147.3 APPSCAN 扫描建议 .157.4 应用程序解决方案 .158 HTTP 注释敏感信息 .168
3、.1 HTTP 注释敏感信息概述 .168.2 安全风险及原因分析 .168.3 APPSCAN 扫描建议 .168.4 应用程序解决方案 .169 发现电子邮件地址模式 .16中国电信 EMA 服务管理平台二期扩容安全验收漏洞修复总结- ii - 9.1 发现电子邮件地址模式概述 .169.2 安全风险及原因分析 .179.3 APPSCAN 扫描建议 .179.4 应用程序解决方案 .1710 通过框架钓鱼 .2010.1 通过框架钓鱼概述 .2010.2 安全风险及原因分析 .2010.3 APPSCAN 扫描建议 .2010.4 应用程序解决方案 .2311 检查到文件替代版本 .25
4、11.1 检查到文件替代版本概述 .2511.2 安全风险及原因分析 .2511.3 APPSCAN 扫描建议 .2511.4 应用程序解决方案 .26中国电信 EMA 服务管理平台二期扩容安全验收漏洞修复总结11 Web 安全介绍目 前 很 多 业 务 都 依 赖 于 互 联 网 , 例 如 说 网 上 银 行 、 网 络 购 物 、 网 游 等 ,很 多 恶 意 攻 击 者 出 于 不 良 的 目 的 对 Web 服 务 器 进 行 攻 击 , 想 方 设 法 通 过 各种 手 段 获 取 他 人 的 个 人 账 户 信 息 谋 取 利 益 。 正 是 因 为 这 样 , Web 业 务
5、平 台最 容 易 遭 受 攻 击 。 同 时 , 对 Web 服 务 器 的 攻 击 也 可 以 说 是 形 形 色 色 、 种 类 繁多 , 常 见 的 有 挂 马 、 SQL 注 入 、 缓 冲 区 溢 出 、 嗅 探 、 利 用 IIS 等 针 对Webserver 漏 洞 进 行 攻 击 。 一 方 面 , 由 于 TCP/IP 的 设 计 是 没 有 考 虑 安 全 问 题 的 , 这 使 得 在 网 络 上传 输 的 数 据 是 没 有 任 何 安 全 防 护 的 。 攻 击 者 可 以 利 用 系 统 漏 洞 造 成 系 统 进 程缓 冲 区 溢 出 , 攻 击 者 可 能 获
6、得 或 者 提 升 自 己 在 有 漏 洞 的 系 统 上 的 用 户 权 限 来运 行 任 意 程 序 , 甚 至 安 装 和 运 行 恶 意 代 码 , 窃 取 机 密 数 据 。 而 应 用 层 面 的 软件 在 开 发 过 程 中 也 没 有 过 多 考 虑 到 安 全 的 问 题 , 这 使 得 程 序 本 身 存 在 很 多 漏洞 , 诸 如 缓 冲 区 溢 出 、 SQL 注 入 等 等 流 行 的 应 用 层 攻 击 , 这 些 均 属 于 在 软 件研 发 过 程 中 疏 忽 了 对 安 全 的 考 虑 所 致 。 另 一 方 面 , 用 户 对 某 些 隐 秘 的 东 西
7、带 有 强 烈 的 好 奇 心 , 一 些 利 用 木 马 或病 毒 程 序 进 行 攻 击 的 攻 击 者 , 往 往 就 利 用 了 用 户 的 这 种 好 奇 心 理 , 将 木 马 或病 毒 程 序 捆 绑 在 一 些 艳 丽 的 图 片 、 音 视 频 及 免 费 软 件 等 文 件 中 , 然 后 把 这 些文 件 置 于 某 些 网 站 当 中 , 再 引 诱 用 户 去 单 击 或 下 载 运 行 。 或 者 通 过 电 子 邮 件附 件 和 QQ、 MSN 等 即 时 聊 天 软 件 , 将 这 些 捆 绑 了 木 马 或 病 毒 的 文 件 发 送 给 用户 , 利 用 用
8、 户 的 好 奇 心 理 引 诱 用 户 打 开 或 运 行 这 些 文 件 、2 SQL 注入、盲注2.1 SQL 注入、盲注概述Web 应用程序通常在后端使用数据库,以与企业数据仓库交互。查询数据库事实上的标准语言是 SQL(各大数据库供应商都有自己的不同版本) 。Web 应用程序通常会获取用户输入(取自 HTTP 请求) ,将它并入 SQL 查询中,然后发送到后端数据库。接着应用程序便处理查询结果,有时会向用户显示结果。如果应用程序对用户(攻击者)的输入处理不够小心,攻击者便可以利用这种操作方式。在此情况下,攻击者可以注入恶意的数据,当该数据并入 SQL 查询中时,就将查询的原始语法更改
9、得面目全非。例如,如果应用程序使用用户的输入(如用户名和密码)来查询用户帐户的数据库表,以认证用户,而攻击中国电信 EMA 服务管理平台二期扩容安全验收漏洞修复总结2者能够将恶意数据注入查询的用户名部分(和/或密码部分) ,查询便可能更改成完全不同的数据复制查询,可能是修改数据库的查询,或在数据库服务器上运行 Shell 命令的查询。2.2 安全风险及原因高风险漏洞,攻击者可能会查看、修改或删除数据库条目和表原因:未对用户输入正确执行危险字符清理2.3 AppScan 扫描建议若干问题的补救方法在于对用户输入进行清理。 通过验证用户输入未包含危险字符,便可能防止恶意的用户导致应用程序执行计划外
10、的任务,例如:启动任意 SQL 查询、嵌入将在客户端执行的 Javascript 代码、运行各种操作系统命令,等等。 建议过滤出所有以下字符: 1 |(竖线符号)2 (分号)4 $(美元符号)5 %(百分比符号)6 (at 符号)7 (单引号)8 “(引号)9 (反斜杠转义单引号)10 “(反斜杠转义引号)11 (尖括号)2 “(引号)3 (单引号)4 %(百分比符号)5 ;(分号)6 ()(括号)7 (分号)执行 shell 命令: A. 绝不将未检查的用户输入传递给 eval()、open()、sysopen()、system() 之类的 Perl 命令。 B. 确保输入未包含恶意的字符,
11、例如: 1 $(美元符号)2 %(百分比符号)3 (at 符号)XPath 注入:清理输入以排除上下文更改符号,例如: 1 (单引号)2 “(引号) 等LDAP 注入: A. 使用正面验证。字母数字过滤(A.Z,a.z,0.9)适合大部分 LDAP 查询。 B. 应该过滤出或进行转义的特殊 LDAP 字符: 1 在字符串开头的空格或“#”字符2 在字符串结尾的空格字符3 ,(逗号)4 +(加号)5 “(引号)6 (反斜杠)中国电信 EMA 服务管理平台二期扩容安全验收漏洞修复总结47 (尖括号)8 ;(分号)9 ()(括号)MX 注入: 应该过滤出特殊 MX 字符: 1 CR(回车符,ASCI
12、I 0x0d)2 LF(换行,ASCII 0x0a)记录伪造:应该过滤出特殊记录字符: 1 CR(回车符,ASCII 0x0d)2 LF(换行,ASCII 0x0a)3 BS(退格,ASCII 0x08)ORM 注入: A. 确保用户输入的值和类型(如 Integer、Date 等)有效,且符合应用程序预期。 B. 利用存储过程,将数据访问抽象化,让用户不直接访问表或视图。 C. 使用参数化查询 API D. 清理输入以排除上下文更改符号,例如: (*): 1 (单引号)2 “(引号)3 (反斜线转义单引号)4 “(反斜杠转义引号)5 )(结束括号)6 ;(分号)2.4 应用程序解决方案1、我
13、们为了调试方便,在页面上会抛出数据库异常信息,如果入侵工具获取了这些信息,就可以获取系统的一些配置信息,如 web 系统框架、采用的数据库等,从而找出系统漏洞。所以不要在页面上抛出异常的详细信息,这些信息对客户并没有用,只是方便技术人员调试罢了,处理方法是在异常处理页面把打印异常代码删除即可;2、新建一个过滤器,通过过滤器过滤 SQL 注入特殊字符,配置成功后,重启服务,用 Appsan 工具扫描,漏洞得到解决,通过过滤器可以解决 SQL 注入、跨站点脚本编制及通过框架钓鱼等问题,具体实现方式如下:1、在 web.xml 文件中配置过滤器requestEncodingFilter/*Injec
14、tFiltercom.sitech.ismp.util.context.InjectFilter中国电信 EMA 服务管理平台二期扩容安全验收漏洞修复总结52、过滤器过滤代码public class InjectFilter extends IsmpServletFilter private String failPage = “/loginout.jsp“;/发生注入时,跳转页面public void doFilter(ServletRequest request,ServletResponse response,FilterChain filterchain)throws IOExcept
15、ion, ServletException /判断是否有注入攻击字符HttpServletRequest req = (HttpServletRequest) request;String inj = injectInput(req);if (!inj.equals(“) request.getRequestDispatcher(failPage).forward(request, response);return; else / 传递控制到下一个过滤器filterchain.doFilter(request, response);/* 判断request 中是否含有注入攻击字符* param
16、 request* return*/public String injectInput(ServletRequest request) Enumeration e = request.getParameterNames();String attributeName;String attributeValues;String inj = “;while (e.hasMoreElements() attributeName = (String)e.nextElement();/不对密码信息进行过滤,一般密码中可以包含特殊字符if(attributeName.equals(“userPassword
17、“)|attributeName.equals(“confirmPassword“)|attributeName.equals(“PASSWORD“)|attributeName.equals(“password“)|attributeName.equals(“PASSWORD2“)|attributeName.equals(“valiPassword“)continue;中国电信 EMA 服务管理平台二期扩容安全验收漏洞修复总结6attributeValues = request.getParameterValues(attributeName);for (int i = 0; i =0)r
18、eturn inj_strai;return “;3 会话标识未更新3.1 会话标识未更新概述“会话固定” 是一种攻击技术,会强制用户的会话标识变成显式值。 固定会中国电信 EMA 服务管理平台二期扩容安全验收漏洞修复总结7话标识值的技术有许多种,会随着目标 Web 站点的功能而不同。从利用 “跨站点脚本编制”到向 Web 站点密集发出先前生成的 HTTP 请求,都在这些技术范围内。用户的会话标识固定之后,攻击者会等待用户登录,然后利用预定义的会话标识值来假定用户的联机身份。 一般而言,对于标识值的会话管理系统有两种类型。第一种类型是“宽容”系统,可让 Web 浏览器指定任何标识。第二种类型是
19、 “严格”系统,只接受服务器端生成的值。当使用宽容系统时,不需要联系 Web 站点,便可以维护任何会话标识。在严格系统中,攻击者需要维护“陷阱会话”并且必须定期联系 Web 站点,才能防止闲置超时。 对于会话固定,倘若没有活动保护,使用会话来识别已认证的用户的任何 Web 站点都可能受到攻击。使用会话标识的 Web 站点通常都是基于 cookie 的站点,但也会使用 URL 和隐藏的表单字段。不幸的是,基于 cookie 的会话最容易受到攻击。 目前已识别的大多数攻击方法都是针对 cookie 的固定。 相对于在用户登录 Web 站点之后,再窃取用户的会话标识,会话固定提供的机会多得多。 在用
20、户登录之前,攻击的活动部分便已启动。 会话固定攻击过程通常由三个步骤组成: 1) 安装会话 攻击者针对目标 Web 站点设下“陷阱会话”,并获取这个会话的标识,攻击者也可以选择攻击中所用的任意会话标识。在某些情况下,必须反复联系 Web 站点,才能维护确定好的陷阱会话值。 2) 固定会话 攻击者将陷阱会话值引进用户的浏览器中,固定用户的会话标识。 3) 进入会话 用户登录目标 Web 站点之后,当使用固定会话标识值时,攻击者便可加以接管。 ”修改对于这类问题解决方案为在用户进入登录页面时清空 session 让 cookie 过期request.getSession(true).invalidate();/清空 sessionCookie cookie = request.getCookies()0;/获取cookiecookie.setMaxAge(0);/让 cookie 过期另外一种方式利用 JSP 的一些特性,不让登录页面产生 Session 3.2 安全风险及原因分析高风险漏洞,可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务