




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EMAEMA 服务管理平台二期扩容安全验收服务管理平台二期扩容安全验收 漏洞修复总结漏洞修复总结 2011 年 5 月 目目 录录 1WEB 安全介绍安全介绍 1 2SQL 注入 盲注注入 盲注 1 2 1SQL 注入 盲注概述 1 2 2安全风险及原因 2 2 3APPSCAN扫描建议 2 2 4应用程序解决方案 4 3会话标识未更新会话标识未更新 7 3 1会话标识未更新概述 7 3 2安全风险及原因分析 7 3 3APPSCAN扫描建议 8 3 4应用程序解决方案 8 4已解密登录请求已解密登录请求 8 4 1已解密登录请求概述 8 4 2安全风险及原因分析 8 4 3APPSCAN扫描建议 9 4 4应用程序解决方案 9 5跨站点请求伪造跨站点请求伪造 11 5 1跨站点请求伪造概述 11 5 2安全风险及原因分析 12 5 3APPSCAN扫描建议 12 5 4应用程序解决方案 12 6不充分账户封锁不充分账户封锁 13 6 1不充分账户封锁概述 13 6 2安全风险及原因分析 13 6 3APPSCAN扫描建议 13 6 4应用程序解决方案 13 7启用不安全启用不安全 HTTP 方法方法 14 7 1启用不安全 HTTP 方法概述 14 7 2安全风险及原因分析 14 7 3APPSCAN扫描建议 15 7 4应用程序解决方案 15 8HTTP 注释敏感信息注释敏感信息 16 8 1HTTP 注释敏感信息概述 16 8 2安全风险及原因分析 16 8 3APPSCAN扫描建议 16 8 4应用程序解决方案 16 9发现电子邮件地址模式发现电子邮件地址模式 16 9 1发现电子邮件地址模式概述 16 9 2安全风险及原因分析 17 9 3APPSCAN扫描建议 17 9 4应用程序解决方案 17 10通过框架钓鱼通过框架钓鱼 20 10 1通过框架钓鱼概述 20 10 2安全风险及原因分析 20 10 3APPSCAN扫描建议 20 10 4应用程序解决方案 23 11检查到文件替代版本检查到文件替代版本 25 11 1检查到文件替代版本概述 25 11 2安全风险及原因分析 25 11 3APPSCAN扫描建议 25 11 4应用程序解决方案 26 1Web 安全介绍安全介绍 目前很多业务都依赖于互联网 例如说网上银行 网络购物 网游等 很多恶意攻击者出于不良的目的对Web 服务器进行攻击 想方设法通过各 种手段获取他人的个人账户信息谋取利益 正是因为这样 Web 业务平台 最容易遭受攻击 同时 对 Web 服务器的攻击也可以说是形形色色 种类繁 多 常见的有挂马 SQL 注入 缓冲区溢出 嗅探 利用 IIS 等针对 Webserver 漏洞进行攻击 一方面 由于 TCP IP 的设计是没有考虑安全问题的 这使得在网络上 传输的数据是没有任何安全防护的 攻击者可以利用系统漏洞造成系统进程 缓冲区溢出 攻击者可能获得或者提升自己在有漏洞的系统上的用户权限来 运行任意程序 甚至安装和运行恶意代码 窃取机密数据 而应用层面的软 件在开发过程中也没有过多考虑到安全的问题 这使得程序本身存在很多漏 洞 诸如缓冲区溢出 SQL 注入等等流行的应用层攻击 这些均属于在软件 研发过程中疏忽了对安全的考虑所致 另一方面 用户对某些隐秘的东西带有强烈的好奇心 一些利用木马或 病毒程序进行攻击的攻击者 往往就利用了用户的这种好奇心理 将木马或 病毒程序捆绑在一些艳丽的图片 音视频及免费软件等文件中 然后把这些 文件置于某些网站当中 再引诱用户去单击或下载运行 或者通过电子邮件 附件和 QQ MSN 等即时聊天软件 将这些捆绑了木马或病毒的文件发送给用 户 利用用户的好奇心理引诱用户打开或运行这些文件 2SQL 注入 盲注注入 盲注 2 1 SQL 注入 盲注概述注入 盲注概述 Web 应用程序通常在后端使用数据库 以与企业数据仓库交互 查询数据 库事实上的标准语言是 SQL 各大数据库供应商都有自己的不同版本 Web 应用程序通常会获取用户输入 取自 HTTP 请求 将它并入 SQL 查询中 然 后发送到后端数据库 接着应用程序便处理查询结果 有时会向用户显示结果 如果应用程序对用户 攻击者 的输入处理不够小心 攻击者便可以利用这种 操作方式 在此情况下 攻击者可以注入恶意的数据 当该数据并入 SQL 查 询中时 就将查询的原始语法更改得面目全非 例如 如果应用程序使用用户 的输入 如用户名和密码 来查询用户帐户的数据库表 以认证用户 而攻击 者能够将恶意数据注入查询的用户名部分 和 或密码部分 查询便可能更改 成完全不同的数据复制查询 可能是修改数据库的查询 或在数据库服务器上 运行 Shell 命令的查询 2 2 安全风险及原因安全风险及原因 高风险漏洞 攻击者可能会查看 修改或删除数据库条目和表 原因 未对用户输入正确执行危险字符清理 2 3 AppScan 扫描建议扫描建议 若干问题的补救方法在于对用户输入进行清理 通过验证用户输入未包含危险字符 便可能防止恶意的用户导致应用程序执行 计划外的任务 例如 启动任意 SQL 查询 嵌入将在客户端执行的 Javascript 代码 运行各种操作系统命令 等等 建议过滤出所有以下字符 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 反斜杠 以下部分描述各种问题 问题的修订建议以及可能触发这些问题的危险字符 SQL 注入和 SQL 盲注 A 确保用户输入的值和类型 如 Integer Date 等 有效 且符合应用程序 预期 B 利用存储过程 将数据访问抽象化 让用户不直接访问表或视图 当使用存 储过程时 请利用 ADO 命令对象来实施它们 以强化变量类型 C 清理输入以排除上下文更改符号 例如 1 单引号 2 引号 3 反斜线转义单引号 4 反斜杠转义引号 5 结束括号 6 分号 跨站点脚本编制 A 清理用户输入 并过滤出 JavaScript 代码 我们建议您过滤下列字符 1 尖括号 2 引号 3 单引号 4 百分比符号 5 分号 6 括号 7 分号 执行 shell 命令 A 绝不将未检查的用户输入传递给 eval open sysopen system 之类的 Perl 命令 B 确保输入未包含恶意的字符 例如 1 美元符号 2 百分比符号 3 at 符号 XPath 注入 清理输入以排除上下文更改符号 例如 1 单引号 2 引号 等 LDAP 注入 A 使用正面验证 字母数字过滤 A Z a z 0 9 适合大部分 LDAP 查询 B 应该过滤出或进行转义的特殊 LDAP 字符 1 在字符串开头的空格或 字符 2 在字符串结尾的空格字符 3 逗号 4 加号 5 引号 6 反斜杠 7 尖括号 8 分号 9 括号 MX 注入 应该过滤出特殊 MX 字符 1 CR 回车符 ASCII 0 x0d 2 LF 换行 ASCII 0 x0a 记录伪造 应该过滤出特殊记录字符 1 CR 回车符 ASCII 0 x0d 2 LF 换行 ASCII 0 x0a 3 BS 退格 ASCII 0 x08 ORM 注入 A 确保用户输入的值和类型 如 Integer Date 等 有效 且符合应用程序 预期 B 利用存储过程 将数据访问抽象化 让用户不直接访问表或视图 C 使用参数化查询 API D 清理输入以排除上下文更改符号 例如 1 单引号 2 引号 3 反斜线转义单引号 4 反斜杠转义引号 5 结束括号 6 分号 2 42 4 应用程序解决方案应用程序解决方案 1 我们为了调试方便 在页面上会抛出数据库异常信息 如果入侵工具获取了 这些信息 就可以获取系统的一些配置信息 如 web 系统框架 采用的数据库 等 从而找出系统漏洞 所以不要在页面上抛出异常的详细信息 这些信息对 客户并没有用 只是方便技术人员调试罢了 处理方法是在异常处理页面把打 印异常代码删除即可 2 新建一个过滤器 通过过滤器过滤 SQL 注入特殊字符 配置成功后 重启 服务 用 Appsan 工具扫描 漏洞得到解决 通过过滤器可以解决 SQL 注入 跨站点脚本编制及通过框架钓鱼等问题 具体实现方式如下 1 在 在 web xml 文件中配置过滤器文件中配置过滤器 requestEncodingFilter InjectFilter com sitech ismp util context InjectFilter 2 过滤器过滤代码 过滤器过滤代码 public class InjectFilter extends IsmpServletFilter private String failPage loginout jsp 发生注入时 跳转页面 public void doFilter ServletRequest request ServletResponse response FilterChain filterchain throws IOException 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 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 attributeName equals co nfirmPassword attributeName equals PASSWORD attributeName equals password attributeName equals PASSWOR D2 attributeName equals valiPassword continue attributeValues request getParameterValues attributeName for int i 0 i attributeValues length i if attributeValues i null attributeValues i equals continue inj injectChar attributeValues i if inj equals return inj return inj 判断字符串中是否含有注入攻击字符 param str return public String injectChar String str String inj str String inj stra inj str split for int i 0 i 0 return inj stra i return 3会话标识未更新会话标识未更新 3 1 会话标识未更新概述会话标识未更新概述 会话固定 是一种攻击技术 会强制用户的会话标识变成显式值 固定会 话标识值的技术有许多种 会随着目标 Web 站点的功能而不同 从利用 跨站 点脚本编制 到向 Web 站点密集发出先前生成的 HTTP 请求 都在这些技术 范围内 用户的会话标识固定之后 攻击者会等待用户登录 然后利用预定义 的会话标识值来假定用户的联机身份 一般而言 对于标识值的会话管理系统有两种类型 第一种类型是 宽容 系 统 可让 Web 浏览器指定任何标识 第二种类型是 严格 系统 只接受服务 器端生成的值 当使用宽容系统时 不需要联系 Web 站点 便可以维护任何 会话标识 在严格系统中 攻击者需要维护 陷阱会话 并且必须定期联系 Web 站点 才能防止闲置超时 对于会话固定 倘若没有活动保护 使用会话来识 别已认证的用户的任何 Web 站点都可能受到攻击 使用会话标识的 Web 站 点通常都是基于 cookie 的站点 但也会使用 URL 和隐藏的表单字段 不幸 的是 基于 cookie 的会话最容易受到攻击 目前已识别的大多数攻击方法都 是针对 cookie 的固定 相对于在用户登录 Web 站点之后 再窃取用户的会 话标识 会话固定提供的机会多得多 在用户登录之前 攻击的活动部分便已启动 会话固定攻击过程通常由三个步骤组成 1 安装会话 攻击者针对目标 Web 站点设下 陷阱会话 并获取这个会话的标识 攻击者 也可以选择攻击中所用的任意会话标识 在某些情况下 必须反复联系 Web 站点 才能维护确定好的陷阱会话值 2 固定会话 攻击者将陷阱会话值引进用户的浏览器中 固定用户的会话标识 3 进入会话 用户登录目标 Web 站点之后 当使用固定会话标识值时 攻击者便可加以接 管 修改修改 对于这类问题解决方案为在用户进入登录页面时清空对于这类问题解决方案为在用户进入登录页面时清空 session 让让 cookie 过期过期 request getSession true invalidate 清空session Cookie cookie request getCookies 0 获取cookie cookie setMaxAge 0 让 cookie 过期 另外一种方式利用 JSP 的一些特性 不让登录页面产生 Session 3 2 安全风险及原因分析安全风险及原因分析 高风险漏洞 可能会窃取或操纵客户会话和 cookie 它们可能用于模仿合法用户 从而使黑客能够以该用户身份查看或变更用户记录以及执行事务 原因 Web 应用程序编程或配置不安全 3 3 AppScan 扫描建议扫描建议 始终生成新的会话 供用户成功认证时登录 防止用户操纵会话标识 请勿接受用户浏览器登录时所提供的会话标识 3 4 应用程序解决方案应用程序解决方案 会话标识未更新 Appscan给出的描述是建议用户每次登录时需使用新的会话 标识 应用程序实现上就是在登录模块 添加以下代码 即用户登录后 重新 生成会话 HttpSession session request getSession falsefalse ifif session nullnull 让cookie过期 session invalidate Cookie cookie request getCookies 0 获取cookie cookie setMaxAge 0 让cookie过期 request getSession truetrue 生成新会话 经过测试 这段代码只在 weblogic 和 tomcat 下才有效 在公司中间件 webspeed 及 jboss6 0 下问题都依然存在 但从扫描的结果信息分析看 漏洞 已经解决 分析判断应该只是 session 处理机制不同 AppScan 工具仍认为存 在漏洞风险 在与电信沟通中我们存在一个经验教训大家一定要吸取 不能过 渡迷信流行的自动化测试工具 尤其是对于 Appscan 这种判断防御行为的复杂 软件 仅靠有限的规则设置就当做是 web 安全的唯一标准这显然不太合理 这 种情况一定要与测试方沟通解释 另一方面 对于公司的产品 webspeed 也想提点建议 商务项目采用公司的 产品为公司节约了不少成本 但是我们产品后续升级维护也必须重视起来 当 确认出是 webspeed 本身问题后 联系 vasg 相关人员进行协调解决 根本没有 非常了解该产品技术人员支持 只是一个刚入职的同事在配合测试 调试了一 周时间仍不能解决 最后只能作为一个遗留问题搁置 公司一直在向产品化转 变 但是自身的产品维护 升级 管理仍然需要改进 4已解密登录请求已解密登录请求 4 1 已解密登录请求概述已解密登录请求概述 在应用程序测试过程中 检测到将未加密的登录请求发送到服务器 由于登 录过程所用的部分输入字段 例如 用户名 密码 电子邮件地址 社会保险 号码 等等 是个人敏感信息 建议通过加密连接 如 SSL 将其发送到服务 器 任何以明文传给服务器的信息都可能被窃 稍后可用来电子欺骗身份或伪 装用户 此外 若干隐私权法规指出 用户凭证之类的敏感信息一律以加密方 式传给网站 4 2 安全风险及原因分析安全风险及原因分析 安全风险中 可能会窃取诸如用户名和密码等未经加密即发送了的用户登录信 息 原因 诸如用户名 密码和信用卡号之类的敏感输入字段未经加密即进行了传 递 4 3 AppScan 扫描建议扫描建议 1 确保所有登录请求都以加密方式发送到服务器 2 请确保敏感信息 例如 用户名 密码 社会保险号码 信用卡号码 驾照号码 电子邮件地址 电话号码 邮政编码 一律以加密方式传给服务器 4 4 应用程序解决方案应用程序解决方案 已解密的登录请求 要求就是数据要加密传输 最简单有效的解决方式采用 SSL 加密协议传输 但是由于 EMA 服务管理平台业务的特殊性 采用 SSL 加密 方式对现有的业务影响太大 所以最终没有采用此种方式解决该问题 但个人 在进行测试过程中也尝试在 tomcat 和 jboss 下 SSL 方式配置 写下来供参考 Jboss 内核也是 tomcat 所以两者配置基本都是一样 都是在生成证书文件后 在 service xml 进行配置 1 进入到 cmd 进入到 jdk bin 目录下执行 keytool genkey alias tomcat keyalg RSA keystore webspeed keystore 生成证书 2 在 service xml 配置 SSL 这样配置后虽然可以通过 https 访问 但仍然还可以通过 8080 使用普通的 http 访问 所以还必须禁止普通模式登录 所以还得在 web xml 添加配置 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 SSL jsp action CONFIDENTIAL 22 23 24 25 26 27 28 29 30 31 CLIENT CERT Client Cert Users only Area 应注意 由于项目的一些组件无法通过 https 因此 url pattern 字段只对 jsp 和 action 进行了限制 如果不做特定限制 则系统默认是全部使用 https 传输 而且上述设置一旦在某个工程中出现 那么当前 tomcat 将全局采用这一 配置 5跨站点请求伪造跨站点请求伪造 5 1 跨站点请求伪造概述跨站点请求伪造概述 跨站点伪造请求 CSRF 攻击可让黑客以受害者的名义在易受攻击的站 点上运行操作 当易受攻击的站点未适当验证请求来源时 便可能出现这个攻 击 这个漏洞的严重性取决于受影响的应用程序的功能 例如 对搜索页面的 CSRF 攻击 严重性低于对转帐页面或概要更新页面的 CSRF 攻击 这项攻击的执行方式 是强迫受害者的浏览器向易受攻击的站点发出 HTTP 请 求 如果用户目前已登录受害者站点 请求会自动使用用户的凭证 如会话 Cookie 用户的 IP 地址 以及其他浏览器认证方法 攻击者利用这个方法来 伪造受害者的身份 再代替他来提交操作 换句话来说 易受攻击的站点未采 取适当措施来验证用户实际是否想执行特定操作 强迫受害者发送非预期的请求 方法有许多种 通过电子邮件向受害者发送易受攻击应用程序的恶意链接 在黑客的 Web 页面上 放置一个易受攻击的 Web 站点的热链接 如图像或帧 在公共论 坛中 张贴易受攻击站点的链接 利用站点 或另一个站点 的 跨站点脚本编制 或 链接注入 漏洞 将 浏览器自动重定向到易受攻击的站点 如果攻击者利用易受攻击的站点本身的 链接注入 漏洞 可以增加用户通过 站点认证的可能性 进而增加攻击成功的可能性 例如 攻击者可以利用上述任何选项来诱惑受害者查看含有下列条目的页面 这会使受害者的浏览器自动请求 URL 及浏览器的当前凭证 如果这个银行业站 点易受到 CSRF 攻击 它会根据应用程序逻辑 从受害者的帐户中 将 1000 美元转账到 John 的银行帐户 跨站点伪造请求 攻击也称为 CSRF 发音为 C Serf XSRF 跨站点伪造引用 单键攻击 以及 会话骑乘 您可以利用下列方式来验证您的应用程序是否易受到 CSRF 攻击 1 检查易受攻击的链接 请求是否未包括攻击者难以猜中的参数 2 检查易受攻击的链接 请求是否会执行只应自愿执行的操作 含有用户在不知不觉中提交的请求所能直接访问的敏感操作的应用程序 被视 为很容易遭受 CSRF 攻击 CSRF 也可能出现在登录页面和注销页面上 由于攻 击者可以伪造来自受害者的连续注销请求 因此 CSRF 可能导致服务拒绝 在 登录页面上 CSRF 可以允许攻击者使用包含攻击者用户名和密码的伪造请求来 将客户机登录到攻击者的账户中 登录 CSRF 攻击会带有严重的后果 这取决 于其他站点行为 例如 如果站点保留了用户操作的历史记录 例如搜索历史 记录 那么攻击者将能够在易受攻击的站点上查看受害者之前执行的操作 5 2 安全风险及原因分析安全风险及原因分析 安全风险中 可能会窃取或操纵客户会话和 cookie 它们可能用于模仿合法 用户 从而使黑客能够以该用户身份查看或变更用户记录以及执行事务 原因 应用程序使用的认证方法不充分 5 3 AppScan 扫描建议扫描建议 如果要避免 CSRF 攻击 每个请求都应该包含唯一标识 它是攻击者所无法 猜测的参数 建议的选项之一是添加取自会话 cookie 的会话标识 使它成为 一个参数 服务器必须检查这个参数是否符合会话 cookie 若不符合 便废弃 请求 攻击者无法猜测这个参数的原因是应用于 cookie 的 同源策略 因 此 攻击者无法伪造一个虚假的请求 让服务器误以为真 攻击者难以猜测且 无法访问的任何秘密 也就是无法从其他域访问 都可用来替换会话标识 这可以防止攻击者设计看似有效的请求 5 4 应用程序解决方案应用程序解决方案 已解密的登录请求 要求就是数据要加密传输 最简单有效的解决方式采用 SSL 加密协议传输 但是由于 EMA 服务管理平台业务的特殊性 采用 SSL 加密 方式对现有的业务影响太大 所以最终没有采用此种方式解决该问题 但个人 在进行测试过程中也尝试在 tomcat 和 jboss 下 SSL 方式配置 写下来供参考 6不充分账户封锁不充分账户封锁 6 1 不充分账户封锁概述不充分账户封锁概述 蛮力攻击是指恶意用户发送大量可能的密码和 或用户名以访问应用程序的 尝试 由于该技术包含大量登录尝试 未限制允许的错误登录请求次数的应用 程序很容易遭到这类攻击 因此 强烈建议您对帐户限制允许的错误登录尝试 次数 超过该次数 便锁定该帐户 样本利用 下列请求说明密码猜测请求 http site login asp username EXISTING USERNAME 如果用户连续登录失败次数超过配置值则将其锁定 int loginLockTimes this getLoginLockTimes if this getLoginFailTimes userCode loginLockTimes this lockUser userCode throw new MySecurityException 密码不正确 用户 userCode 7启用不安全启用不安全 HTTP 方法方法 7 1 启用不安全启用不安全 HTTP 方法概述方法概述 似乎 Web 服务器配置成允许下列其中一个 或多个 HTTP 方法 动词 DELETE SEARCH COPY MOVE PROPFIND PROPPATCH MKCOL LOCK UNLOCK 这些方法可能表示在服务器上启用了 WebDAV 可能允许未授权的用户对其进行利用 7 2 安全风险及原因分析安全风险及原因分析 安全风险中 可能会在 Web 服务器上上载 修改或删除 Web 页面 脚本和 文件 原因 Web 服务器或应用程序服务器是以不安全的方式配置的 7 3 AppScan 扫描建议扫描建议 如果服务器不需要支持 WebDAV 请务必禁用它 或禁止不必要的 HTTP 方法 动词 7 4 应用程序解决方案应用程序解决方案 修改 web 工程中 web xml 增加安全配置信息 禁用不必要 HTTP 方法 HtmlAdaptor test jsp do GET POST PUT DELETE HEAD OPTIONS TRACE JBossAdmin 8HTTP 注释敏感信息注释敏感信息 8 1 HTTP 注释敏感信息概述注释敏感信息概述 很多 Web 应用程序程序员使用 HTML 注释 以在需要时帮助调试应用程 序 尽管添加常规注释有助于调试应用程序 但一些程序员往往会遗留重要数 据 例如 与 Web 应用程序相关的文件名 旧的链接或原非供用户浏览的链 接 旧的代码片段等 8 2 安全风险及原因分析安全风险及原因分析 安全风险低 能会收集有关 Web 应用程序的敏感信息 如用户名 密码 机器 名和 或敏感文件位置 原因 程序员在 Web 页面上留下调试信息 8 3 AppScan 扫描建议扫描建议 1 请勿在 HTML 注释中遗留任何重要信息 如文件名或文件路径 2 从生产站点注释中除去以前 或未来 站点链接的跟踪信息 3 避免在 HTML 注释中放置敏感信息 4 确保 HTML 注释不包括源代码片段 5 确保程序员没有遗留重要信息 8 4 应用程序解决方案应用程序解决方案 虽然这个漏洞为低级别漏洞 但电信方也是要求必须修复 要修改此漏洞需 要检查工程中的每一个 jsp 页面 工作量还是挺大 所以在后续开发过程中注 释尽量写英文注释 尽量不要遗留敏感注释信息在 jsp 代码中 养成良好的编 码习惯才是解决问题根本 9发现电子邮件地址模式发现电子邮件地址模式 9 1 发现电子邮件地址模式概述发现电子邮件地址模式概述 Spambot 搜寻因特网站点 开始查找电子邮件地址来构建发送自发电子邮件 垃圾邮件 的邮件列表 AppScan 检测到含有一或多个电子邮件地址的响应 可供利用以发送垃圾邮件 而且 找到的电子邮件地址也可能是专用电子邮件 地址 对于一般大众应是不可访问的 9 2 安全风险及原因分析安全风险及原因分析 安全风险低 能会收集有关 Web 应用程序的敏感信息 如用户名 密码 机器 名和 或敏感文件位置 原因 Web 应用程序编程或配置不安全 9 3 AppScan 扫描建议扫描建议 从 Web 站点中除去任何电子邮件地址 使恶意的用户无从利用 9 4 应用程序解决方案应用程序解决方案 根据扫描建议删除注释中出现 email 地址信息 如果页面中要显示 mail 地址 转为图片形式展示 如 ema 服务管理平台首页需要展示客户联系方式 并且 联系方式 email 等信息 这些信息用户都是可以自行修改的 因为包含了 email 地址 所以联系方式就转为图片形式 运营中心联系方式 List typeList List request getAttribute typeList out clear out pageContext pushBody response setContentType image jpeg response addHeader pragma NO cache response addHeader Cache Control no cache response addDateHeader Expries 0 int rowheight 20 int width 135 height rowheight typeList size TB SYS SUPPORT STAFFDao dao new TB SYS SUPPORT STAFFDao String ty String mob for int i 0 i typeList size i HashMap hm HashMap typeList get i ty String hm get TYPE ID List sta List dao findSupportStaffByTypeId ty for int k 0 k sta size k HashMap map HashMap sta get k mob String map get MOBILE height 3 rowheight if mob null height rowheight BufferedImage image new BufferedImage width height BufferedImage TYPE INT RGB Graphics g image getGraphics g setColor Color white g fillRect 0 0 width height g setColor Color BLUE Font font new Font 宋体 Font PLAIN 13 g setFont font int row 0 String typeid String typename String name String tel String mail String mobile for int i 0 i typeList size i HashMap hm HashMap typeList get i typeid String hm get TYPE ID typename String hm get TYPE NAME row g drawString typename 0 row 1 rowheight 10 List staffs List dao findSupportStaffByTypeId typeid for int k 0 k 10 通过框架钓鱼通过框架钓鱼 10 1 通过框架钓鱼概述通过框架钓鱼概述 网络钓鱼是一个通称 代表试图欺骗用户交出私人信息 以便电子欺骗身份 攻击者有可能注入 frame 或 iframe 标记 其中含有类似受攻击之网站的恶意 属性 不小心的用户有可能浏览它 但并不知道他正在离开原始网站 冲浪到 恶意的网站 之后 攻击者便可以诱惑用户重新登录 然后获取他的登录凭证 伪造的网站嵌入在原始网站中 这个情况对攻击者有帮助 因为他的网络钓鱼 企图会披上更可信赖的外表 样本利用 如果参数值未经适当清理 便反映在响应中 下列请求 http SERVER script aspx parameter 会使响应含有通往这个邪恶站点的框架 10 2 安全风险及原因分析安全风险及原因分析 安全风险中 可能会劝说初级用户提供诸如用户名 密码 信用卡号 社会保 险号等敏感信息 原因 对用户输入正确执行危险字符清理 10 3 AppScan 扫描建议扫描建议 若干问题的补救方法在于对用户输入进行清理 通过验证用户输入未包含危险字符 便可能防止恶意的用户导致应用程序执行 计划外的任务 例如 启动任意 SQL 查询 嵌入将在客户端执行的 Javascript 代码 运行各种操作系统命令 等等 建议过滤出所有以下字符 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 反斜杠 以下部分描述各种问题 问题的修订建议以及可能触发这些问题的危险字符 SQL 注入和 SQL 盲注 A 确保用户输入的值和类型 如 Integer Date 等 有效 且符合应用程序 预期 B 利用存储过程 将数据访问抽象化 让用户不直接访问表或视图 当使用存 储过程时 请利用 ADO 命令对象来实施它们 以强化变量类型 C 清理输入以排除上下文更改符号 例如 1 单引号 2 引号 3 反斜线转义单引号 4 反斜杠转义引号 5 结束括号 6 分号 跨站点脚本编制 A 清理用户输入 并过滤出 JavaScript 代码 我们建议您过滤下列字符 1 尖括号 2 引号 3 单引号 4 百分比符号 5 分号 6 括号 7 分号 执行 shell 命令 A 绝不将未检查的用户输入传递给 eval open sysopen system 之类的 Perl 命令 B 确保输入未包含恶意的字符 例如 1 美元符号 2 百分比符号 3 at 符号 XPath 注入 清理输入以排除上下文更改符号 例如 1 单引号 2 引号 等 LDAP 注入 A 使用正面验证 字母数字过滤 A Z a z 0 9 适合大部分 LDAP 查询 B 应该过滤出或进行转义的特殊 LDAP 字符 1 在字符串开头的空格或 字符 2 在字符串结尾的空格字符 3 逗号 4 加号 5 引号 6 反斜杠 7 尖括号 8 分号 9 括号 MX 注入 应该过滤出特殊 MX 字符 1 CR 回车符 ASCII 0 x0d 2 LF 换行 ASCII 0 x0a 记录伪造 应该过滤出特殊记录字符 1 CR 回车符 ASCII 0 x0d 2 LF 换行 ASCII 0 x0a 3 BS 退格 ASCII 0 x08 ORM 注入 A 确保用户输入的值和类型 如 Integer Date 等 有效 且符合应用程序 预期 B 利用存储过程 将数据访问抽象化 让用户不直接访问表或视图 C 使用参数化查询 API D 清理输入以排除上下文更改符号 例如 1 单引号 2 引号 3 反斜线转义单引号 4 反斜杠转义引号 5 结束括号 6 分号 这适用于 SQL 高级查询语言可能需要不同的清理机制 10 4 应用程序解决方案应用程序解决方案 新建一个过滤器 通过过滤器过滤 SQL 注入特殊字符 配置成功后 重启服 务 用 Appsan 工具扫描 漏洞得到解决 具体实现方式如下 1 在 在 web xml 文件中配置过滤器文件中配置过滤器 requestEncodingFilter InjectFilter com sitech ismp util context InjectFilter 2 过滤器过滤代码 过滤器过滤代码 public class InjectFilter extends IsmpServletFilter private String failPage loginout jsp 发生注入时 跳转页面 public void doFilter ServletRequest request ServletResponse response FilterChain filterchain throws IOException ServletException 判断是否有注入攻击字符 HttpServletRequest req HttpSer
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新解读《GB-T 31313-2014萤石 粒度的筛分测定》
- 产品品牌代理合同范本大全6篇
- 2025水产采购合同3篇
- 黑芝麻收购合同范本
- 电梯改造施工合同范本
- 保养合同范本模板
- 私人墙绘合同范本
- 建材供应合同范本简易
- 冷库货物装卸合同范本
- 商业房产托管合同范本
- 2025年三级仓储管理员(图书管理)职业技能鉴定《理论知识》考试真题(后附答案及解析)
- 2025至2030中国电动和手动工具行业市场深度研究与战略咨询分析报告
- 0-6岁儿童心理行为发育问题预警征象筛查表条目及释义
- 安全生产管理人员考核试题(答案)
- (高清版)DB31∕T 1596-2025 《电子材料共享应用技术规范》
- 初升高家长会课件
- 2025年福建中考历史试题答案讲解及备考指导课件
- 弹药入库堆垛方案模板
- 资源人脉入股协议书模板
- 提高住院患者围手术期健康宣教知晓率品管圈活动报告
- 不健康食品课件:健康成长远离垃圾食品
评论
0/150
提交评论