• 政务公开系统专栏首页的跨站攻击漏洞


    概述

         前段时间,顺义区对我们的专栏系统进行了扫描,扫描出了几个漏洞,大部分是因为我们使用了默认配置,没有对一些安全选项进行设置。比如jmx-console、web-console等的默认不用密码就能登录,查看系统配置等。还有就是普元的EOS配置的项目中有一个axis和axis2两个Web模块,这两个模块中都有一个happyaxis.jsp的页面,这两个页面也会显示系统的配置信息。这些错误只需要将对应的页面删掉,或者去掉这些web模块就可以了。一个比较明显的漏洞就是跨站攻击的漏洞。

    问题分析

         这个跨站攻击的漏洞是访问一个地址,参数中包含了一些js脚本,因为参数错误,会转到错误页面,在错误页面中执行了对应的js脚本。

         原来在EOS的错误页面中会显示错误信息,将错误堆栈都显示出来了。这个错误信息客户早就提出来说应该更友好一些,我们考虑的也就是把错误信息隐藏起来,开始想的是为了方便开发人员获得错误信息,加了一个按钮“显示详细错误信息”,点击该该按钮,显示错误错误堆栈。

         这个错误堆栈是通过普元的eos:error标签显示的,后来发现是因为这个标签没有对输出的内容进行过滤,而是直接将错误内容显示在页面上,而造成了跨站攻击的错误,形成现象如下:

         在输入参数中有一个值的后面被加上了如下代码:<img%20src%3D%26%23x6a;%26%23x61;%26%23x76;%26%23x61;%26%23x73;%26%23x63;%26%23x72;%26%23x69;%26%23x70;%26%23x74;%26%23x3a;alert(27944)>

         在错误提示页面中会提示输入的某个参数值是xxx(其中包含了上面的脚本),因此在页面上就执行alert脚本了。

    解决方案

         要解决该问题有两个解决方案:

         1. 在错误页面上只提示系统发生了错误,而不要将错误信息显示出来。

         2. 改造普元的eos:error标签,将异常信息进行过滤。

              2.1 普元公司改造自己的标签

              2.2 扩展普元的标签,用自己的标签来替换

         因为发生错误都是通过分析日志,而且客户看到错误信息根本没用,因此我们选中了第一个解决方案。

    经验总结

         使用自定义标签或者编写servlet往页面上输出内容的时候,不能直接将某些变量的值直接输出到out中,而应该对内容进行过滤,然后输出到页面上。

  • 相关阅读:
    AtCoder Beginner Contest 167
    AtCoder Beginner Contest 166
    AtCoder Beginner Contest 165
    AtCoder Beginner Contest 164
    AtCoder Beginner Contest 163
    AtCoder Beginner Contest 162
    AtCoder Beginner Contest 161
    AtCoder Beginner Contest 160
    AtCoder Beginner Contest 159
    自定义Mybatis自动生成代码规则
  • 原文地址:https://www.cnblogs.com/liwp_Stephen/p/1260154.html
Copyright © 2020-2023  润新知