之前维护公司的一个很老的CRM系统,大概是十年前开发的一套系统,由于系统中的功能设计到的业务很重要,所以客户一直在使用,但是老系统又避免不了安全问题,为了防止系统资料泄露,客户对CRM系统进行了一次安全漏洞扫描。结果只扫出了3个漏洞,这个结果着实很令人惊讶,因为十年前开发的系统到技术更新换代飞速发展的今天,只有3个,真的很不错……
这3个漏洞大概是这样的:
1, SSRF。当正常GET 请求的时候,会导致攻击者进行内网的探测;
2,反射型 XSS。当传递一些非法的脚本或参数的时候,攻击者会利用该漏洞进行SRCF 盗取 Cookie 等;
3,SQL 注入。泄露SVN 信息导致网站目录结构泄露;
安全检测商给出的三个建议:
1,针对第一个问题,是希望过滤掉非法 URL 现在访问目录;
2,删除不必要的功能;
3,删除 .SVN 的目录;
最后我们的做法:
1,由于我们的系统是使用WEBLOGIC 服务器进行部署的,之后我们也测试了安全供应商给出的测试URL(如下:)
/uddiexplorer/SearchPublicRegistries.jsp?operator=http://1127.0.0.1:80&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search HTTP/1.1 Host: crm.gtja-allianz.com Connection: Keep-alive Accept-Encoding: gzip,deflate User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21 Accept: */*
当端口开启时:
关闭时:
之后经过大量的代码调试和检查发现,原来是属于 WEBLOGIC 的漏洞问题,只需要将 WEBLOGIC 访问的目录下的页面给禁止掉或者是删除掉,那么攻击者也就访问不到这个页面了,至此这个问题的bug 算是解决了,当然了网上可能有这方面专家,对于这个问题有更好的方法,希望能够交流请教;
2,第二个问题,我们网络上找了一下,发现遇到这个问题的人很多,解决的办法也五花八门。我们系统的架构是基于 SSH 框架的,在每次系统启动的时候,会定义一个过滤器Filter,用来拦截非法的参数,这样的话,这个问题最终也迎刃而解。
Web.xml 中的配置:
<!--XSS--> <filter> <filter-name>xssfilter</filter-name> <filter-class>com.sinitek.sirm.framework.web.filter.XSSFilter</filter-class> </filter> <filter-mapping> <filter-name>xssfilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3,第三个问题就很简单了,因为在服务器上部署代码的时候,没有及时删除掉 .SVN 目录,只需要登上服务器,删除掉 .svn 目录文件夹就可以了,这个在安全检测商的建议也是这样说的。
这几个问题都是开发中经常会遇到的,把这些记下来希望能够给遇到这些问题的人提供一个思路的解决办法,解决的方法有很多,这上面的只是其中一种而已;