IBM AppScan 安全漏洞问题修复(.net)

按问题类型分类的问题

  1. 使用 SQL 注入的认证旁路2
  2. 已解密的登录请求3
  3. 登录错误消息凭证枚举1
  4. 会话标识未更新2
  5. 跨站点请求伪造1
  6. Missing "Content-Security-Policy" header 9
  7. Missing "X-Content-Type-Options" header 9
  8. Missing "X-XSS-Protection" header 9
  9. 查询中接受的主体参数1
  10. 启用了 Microsoft ASP.NET 调试2
  11. 缺少跨帧脚本编制防御1
  12. 已解密的 __VIEWSTATE 参数1
  13. 检测到应用程序测试脚本1
  14. 应用程序错误9
  15. 整数溢出3

问题修复

1.使用 SQL 注入的认证旁路

答: 登录、注册页面输入信息,过滤sql关键字或关键字符;

提交表单页面、查询页面的输入项,过滤sql关键字或关键字符。

// 关键字

string StrKeyWord = @"select|insert|delete|from|count\(|drop table|update|truncate|asc\(|mid\(|char\(|xp_cmdshell|exec master|netlocalgroup administrators|:|net user|""|or|and";

//关键字符

string StrRegex = @"[-|;|,|/|\(|\)|\[|\]|}|{|%|\@|*|!|‘]";

2.已解密的登录请求

答:一种说法是使用SSL证书,暂时没有解决。

3.登录错误消息凭证枚举

答:用户登录时,如果输入错误的用户信息,最好提示同一个错误消息提醒,比如:你的用户名或密码输入错误。提供枚举提示,容易被暴力破解。

4.会话标识未更新

答:登录之后更改会话标识符,主要用于登录页面。

参考方案: http://www.2cto.com/Article/201302/190228.html 测试没有效果

http://blog.itpub.net/12639172/viewspace-441971/ 测试ok

在登录页面,添加红线加粗部分

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

Session.Abandon();

//清除SessionId

Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

txt_Fileld1.Focus();

}

}

5.跨站点请求伪造

答:每个页面请求时,判断主机和端口与配置文件信息是否一致。

网上参考方法:

1,利用referer判断,

但是用户有可能设置浏览器使其在发送请求时不提供 Referer,这样的用户也将不能访问网站。

2,在请求中添加 token 并验证

关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中,

可以在服务器端生成一个随机码,然后放在form的hidden元素中,form提交的时候在服务器端检查。

6.Missing "Content-Security-Policy" header

答: 在web.config 配置文件中添加如下响应头

<system.webServer>

<httpProtocol>

<customHeaders>

<add name="X-Content-Type-Options" value="nosniff"/>

<add name="X-XSS-Protection" value="1;mode=block"/>

<add name="X-Frame-Options" value="SAMEORIGIN"/>

<add name="Content-Security-Policy" value="default-src ‘self‘"/>

</customHeaders>

</httpProtocol>

</system.webServer>

7.Missing "X-Content-Type-Options" header

答: 在web.config 配置文件中添加如下响应头,添加节点见 第6 个问题

<add name="X-Content-Type-Options" value="nosniff"/>

8.Missing "X-XSS-Protection" header

答: 在web.config 配置文件中添加如下响应头,添加节点见 第6 个问题<add name="X-XSS-Protection" value="1;mode=block"/>

9.查询中接受的主体参数

答:未解决

10.启用了 Microsoft ASP.NET 调试

答:应用程序发布后,修改配置文件节点compilation 的属性 debug为 false。<compilation debug="false" targetFramework="4.0"/>

11.缺少跨帧脚本编制防御

答:在web.config 配置文件中添加如下响应头,添加节点见 第6 个问题<add name="Content-Security-Policy" value="default-src ‘self‘"/>

注意,添加之后,可能会出现不同浏览器,出现兼容性问题,会有不同的反应。比如,极速模式会出现页面内部css无效。

12.已解密的 __VIEWSTATE 参数

答:在web.config 配置文件中添加 pages 的属性viewStateEncryptionMode 为Always。<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" viewStateEncryptionMode="Always" />

13.检测到应用程序测试脚本

答: 在系统开发过程中,添加的测试页面,在程序发布前需要“从项目中排除”后再发布。

14.应用程序错误

答:出现应用程序错误页面。如 :Server Error in ‘/‘ Application.

一是解决属于开发人员的应用程序错误问题,二是在配置文件添加默认出错页面

<customErrors mode="On" defaultRedirect="~/error.html" />15.整数溢出

答:情况一:针对请求的url中的参数, 检查其数据类型及边界范围。

如 /ApplyShow.aspx?id=99999999999999999999

情况二:登录页面按钮参数,在请求正文里,未找到原因???

http://localhost:83/login.aspx 实体: ImgbtnDl.y (Parameter)

16.WebResource.axd

WebResources.axd?d=xyz。WebResource.axd有一个特点,便是会对错误的密文(即d=xyz中的xyz)产生500错误,而对正确的密文产生404错误,这便形成了足够的提示

参考资料:http://www.2cto.com/Article/201009/75162.html

http://pan.baidu.com/share/link?shareid=3851057069&uk=2164275402

http://www.cnblogs.com/JeffreyZhao/archive/2010/09/25/things-about-padding-oracle-vulnerability-in-asp-net.html

http://www.cnblogs.com/shanyou/archive/2010/09/25/1834889.html Padding Oracle Attack 检测工具

解决方法: http://www.cnblogs.com/shanyou/archive/2010/09/24/1833757.html  中文版http://weblogs.asp.net/scottgu/important-asp-net-security- vulnerability   英文版

1.添加配置节点

.net 3.5 及以前版本,添加配置节点

<customErrors mode="On" defaultRedirect="~/error.html" />

.net 3.5 SP1 或 .net 4.0添加如下配置节点,注意加粗部分必须

<customErrors mode="On" defaultRedirect="~/error.aspx" redirectMode="ResponseRewrite" />

2.添加默认错误页面

<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Threading" %>
<script runat="server">
   void Page_Load() {
    byte[] delay = new byte[1];
    RandomNumberGenerator prng = new RNGCryptoServiceProvider();
    prng.GetBytes(delay);
    Thread.Sleep((int)delay[0]);
    IDisposable disposable = prng as IDisposable;
    if (disposable != null) { disposable.Dispose(); }
  }
</script>
<html>
<head runat="server">
  <title>Error</title>
</head>
<body>
  <div>
    An error occurred while processing your request.
  </div>
</body>
</html>

如果谁有更好的解决方法 ,谢谢提供!

转载自:http://www.tuicool.com/articles/Ajqa2uj

时间: 2024-08-05 19:28:31

IBM AppScan 安全漏洞问题修复(.net)的相关文章

IBM appscan 9.0破解版分享

简介:IBM AppScan该产品是一个领先的 Web 应用安全测试工具,曾以 Watchfire AppScan 的名称享誉业界.Rational AppScan 可自动化 Web 应用的安全漏洞评估工作,能扫描和检测所有常见的 Web 应用安全漏洞,例如 SQL 注入(SQL-injection).跨站点脚本攻击(cross-site scripting).缓冲区溢出(buffer overflow)及最新的 Flash/Flex 应用及 Web 2.0 应用曝露等方面安全漏洞的扫描. 下载

Appscan安全漏洞扫描使用(转)

这里主要分享如何使用AppScan对一大项目的部分功能进行安全扫描. ------------------------------------------------------------------------ 其实,对于安全方面的测试知道的甚少.因为那公司每个月要求对产品进行安全扫描.掌握了一人点使用技巧,所以拿来与大家分享. 因为产品比较大,功能模块也非常之多,我们不可能对整个产品进行扫描.再一个每个测试员负责测试的模块不同.我们只需要对自己负责测试的模块扫描即可. 扫描工具自然是IBM

水平权限漏洞的修复方案

水平权限漏洞一般出现在一个用户对象关联多个其他对象(订单.地址等).并且要实现对关联对象的CRUD的时候.开发容易习惯性的在生成CRUD表单(或AJAX请求)的时候根据认证过的用户身份来找出其有权限的被操作对象id,提供入口,然后让用户提交请求,并根据这个id来操作相关对象.在处理CRUD请求时,往往默认只有有权限的用户才能得到入口,进而才能操作相关对象,因此就不再校验权限了.可悲剧的是大多数对象的ID都被设置为自增整型,所以攻击者只要对相关id加1.减1.直至遍历,就可以操作其他用户所关联的对

启用了不安全的HTTP方法解决办法 IBM APPSCAN

启用了不安全的HTTP方法解决办法  IBM APPSCAN 安全风险: 可能会在Web 服务器上上载.修改或删除Web 页面.脚本和文件. 可能原因: Web 服务器或应用程序服务器是以不安全的方式配置的. 修订建议: 如果服务器不需要支持WebDAV,请务必禁用它,或禁止不必要的HTTP 方法. 方法简介: 除标准的GET和POST方法外,HTTP请求还使用其他各种方法.许多这类方法主要用于完成不常见与特殊的任务.如果低权限用户可以访问这些方法,他们就能够以此向应用程序实施有效攻击.以下是一

Windows Server中的IIS漏洞以及修复方法

Windows Server中的IIS漏洞以及修复方法 我可以有把握地说,对于Windows服务器管理员来说普遍的目标是拥有适当弹性的系统.世界上有很多网络安全威胁,你最不希望发生的是在世界的另一头,或者在你的组织内部有人利用了IIS或者Windows的漏洞,而这一切都是本来可以避免的. 你可能无法触及应用层面的漏洞,但是在服务器层面你有很多事情可以做到使基于IIS的系统更加安全.通过回顾我多年的网站安全评估项目,可以指出以下最影响Windows服务器的IIS漏洞. 未处理异常(HTTP 500

linux glibc 安全漏洞 CVE-2015-7547 修复与检测方法

参考链接:http://toutiao.com/i6253272495634252289/ 漏洞信息:https://rhn.redhat.com/errata/RHSA-2016-0175.html 如下为具体操作方法:(在centos 6.5 环境下测试) ##################################################### 1. 如下为查看操作系统版本及glibc 版本[[email protected] ~]# cat /etc/redhat-rel

struts2漏洞与修复

步骤: 1.下载struts-2.3.16.3-all, D:\TEST\struts2.3.16.3 2.替换jar,参考 http://blog.csdn.net/spyjava/article/details/13766335 3.修改web.xml     <filter>         <filter-name>struts2</filter-name>         <filter-class>org.apache.struts2.dispa

验证码的三个常见漏洞和修复方法

把验证码存储在Cookie中 一般来说,我们会把验证码的值用Session存储起来,通过对比用户提交的验证码和Session中的验证码,就可以知道输入是否正确.由于Session会占用服务器资源,我曾经想过是否可以把验证码的值加密后存储在Cookie中.不过事实证明,这只是异想天开罢了. 假设验证码的值是a,通过sha1加密后得到的值为b = sha1(a),并且把b存储在Cookie中.而用户提交的验证码值为c,通过判断sha1(c)是否与b相等,可以知道输入的验证码是否正确.然而,Cooki

android提权漏洞CVE-2010-EASY修复【转】

本文转载自: http://blog.csdn.net/lhj0711010212/article/details/9351131 android提权漏洞CVE-2010-EASY修复 linux系统由udev提供系统设备的管理,比如提供热拔插usb设备等等.而Android把udev的工作移交给init进程.而linux中版本号小于1.4.1的udev不会检查是由内核还是用户发送热拔插信息.因此用户可以发送恶意的信息让内核加载定义的恶意程序从而取得root权限.该代码如下. 程序执行的顺序用(