AppScan安全问题解决方案

来源:转载

一、 环境准备

测试通常给的是PDF文档,动辄几百页,看起来很费劲,看文档的时间可能比解决问题的时间还长。。。所以作为需要解决问题的我们来说,最好安装AppScan,请测试人员提供类型为AppScan Scan File的文件。(图片模糊掉了URL,不影响问题分析) 

二、如何分析AppScan扫描出的安全性问题AppScan扫描出的问题会一般按照严重程度分高,危,参三种类型,高危属于必须要解决的问题;低危一般属于config配置,或IIS配置问题;低的问题,一般也可能是高,低的衍生问题,高危问题造成的衍生问题特别多,故解决问题时,建议从高至低看,并且先易后难,最常见的就是SQL盲注,以SQL盲注为例分析:当收到测试的测试文件后,双击打开,以疫苗资审为例: 打开之后,分析和定位问题的话,就是看红框框出的几个地方,SQL盲注这个问题就是AppScan向测试网址发送了一个地址:/Admin/Agent/PackInfo.aspx?id=61+having+1%3D1--+,此时是将id的值由61改成了61+having+1%3D1--+,就是注入了+having+1%3D1--+,程式只要能在这个地址请求的时候,提示User,并终止当前的操作,AppScan即视为这个这个问题解决,下次扫描的时候就扫描不到了。

三、高危常见问题解决方案1.SQL盲注:主要就是通过注入SQL的关键字,来破坏原有的查询,导致页面报错a.看看几种常见的盲注方式:

b.解决方案思路:过滤关键字,在global.asax文件中的Application_BeginRequest方法中校验敏感字符/字母组合,具体参考网址http://www.jb51.net/article/34671.htm,具体文件在链接地址的SqlChecker.cs中,项目具有共性,也有特性,所以,SqlChecker.cs中的StrKeyWord,StrRegex视实际情况而定。实际解决:从上面的几种注入分析看,都含有+字符,最简单最暴力的方法就是过滤掉+字符,如果这样与代码冲突的话,可以按照攻击的方式过滤:如过滤掉+and+,+or+,’+and+’ 等等。。。2.SQL注入a.看看几种常用的SQL注入方式

b.解决方案思路:SQL注入与SQL盲注实际的攻入方式不同,但是解决思路都是通过过滤特殊字符,只是过滤的字符稍有差异。实际解决:从以上几种注入可以看出都含有%27%3B,开始解析%27%3B是什么字符,发现注入sql的是 这个字符,在vs里面过滤掉 这个字符即可。备注:SQL注入的方式很多,这只是其中的一种,还有其它的种类,比如下图,要具体问题具体分析:

3.基于跨站点的编制思路与1,2相同,解决方法也是根据测试的结果过滤掉特殊字符。

4.已解密的登录请求 解决方案:安装SSL协议,或其它安全加密协议。

5.ASP.NET表单认证旁路思路:这个问题看起来很高大上,高大上到上网查都没查到解决方案,看着这个报错也是想了很久。。。。现在我们看下这个问题的相关信息a.首先是问题信息:原始响应与测试响应对比,测试响应的Cookie中少了ASP.NET_SessionId,就是测试响应除去了cookie”ASP.NET_SessionId”(变体标识675),故猜测可能禁止修改客户端修改此cookie就可以了,在global文件中加了句代码,开始测试。

b.a的方法测试结果是问题仍然存在,于是看了下修订建议,判断此建议并不可行,因为四川九个系统都部署在一个服务器上,如果是环境问题造成的漏洞,那应该是九个报告都有。。。但是,这个问题仅仅出现在两份报告里面。 c.最后看”请求/响应”页(第一幅图),将GET 后面的地址放到浏览器中测试,地址如下: 这个地址路径在项目中并不存在,所以理论上应该报404的错误,但是打开F12查看,发现实际的状态是200,这说明有可能是StatusCode错误造成的问题,如果是这个问题的话,只需要在跳转的界面中将状态修改成404即可。基于这样的写法,我们开始找跳转的地方,发现是在Application_Error方法中(第二幅图),于是去设定跳转界面的StatusCode:HttpContext.Current.Response.StatusCode = 404;(第三幅图),再次测试,问题解决。 实际解决:在跳转的最终页面设定StatusCode。四、低危常见问题1.检测到隐藏目录这个问题是AppScan直接请求项目中存在的文件夹名称,观察项目反馈。反馈分为几种,不作说明,只要配置IIS,并且代码做管控就可以了。方法如下:a.1首先是IIS配置: a.2 相应页面代码设定,请注意这里的无权限设定,StatusCode也是404,不要设定成403。

2.启用了Mircrsoft Asp.Net调试设定webconfig中节点:compilation debug=”false” 3.已解密的_ViewStatus参数增加节点machineKey 4.自动填写未对密码字段禁用的HTML属性对密码栏位增加属性:autocomplete="off" 5.发现电子邮件地址模式删除项目所有注释中涉及到的邮件地址五、如何问题归类项目中加了check SQL盲注的代码后,确实SQL盲注,SQL注入,SQL旁路注入,跨站点脚本编制都没有了,但是出现了这么多新的问题(图一),WHY???? (图一)仔细分析每个错误,如下几个问题,报的错都是一样的,所以这些应该是一类的问题,只要解决一个地方,就可以消除这些错误。从四个红色框中的内容,尤其是最下面的一段script脚本(项目开发中自定义脚本)可以发现代码已经检测到这个请求是有问题的,也将当前页面跳转,但是StatusCode仍然是200,这显然是错误的,所以修改StatusCode状态为400,或404即可。

(图二)(图三)(图四)(图五)修改之后测试结果如下:状态是404,问题消除。

六、处理问题注意点a.首先看报告中的修订建议,如果没有明确的建议,则看请求/响应部分,目前看来,所有的问题在这里都能找到原因和答案。b.设定跳转时,请设定StatusCode,不管是global中的跳转还是代码里面由于某种校验失败而执行的跳转(非常重要)c.不要过分纠结某个问题和标题,AppScan同一个问题会造成很多的衍生问题,注意看请求/响应中的请求地址,响应状态和推理,属于同类问题的一种解决方法即可

分享给朋友:
您可能感兴趣的文章:
随机阅读: