• ASP.NET安全隐患的临时解决方法


    前几天的一个安全会议上公布了一个ASP.NET中的安全隐患(在1.0至4.0的版本中均存在),黑客可以使用这个隐患获取到网站的web.config文件(往往保存了一些敏感信息,如数据库连接字符串等)以及获取ViewState中的加密信息。

    园子里对这个安全漏洞有相关的讨论详解ASP.NET的最新安全漏洞,Padding Oracle攻击原理及其他,下面我使用工具演示一下Padding Oracle攻击检查博客园的设置情况:

    image

    这说明博客园存在Padding Oracle攻击的漏洞,请博客园团队尽快按照采取行动。

    在微软没有推出解决方案之前,基本上可以按照scottgu的文章中给出的临时解决方法进行设置,相信微软将有一个安全修补程序可以部署到解决这个正确,使网站恢复到以前的customErrors设置:

    以下内容摘自Scottgu博客的文章:Important: ASP.NET Security Vulnerability

    如果您使用的是ASP.NET 1.0,ASP.NET 1.1,ASP.NET 2.0,ASP.NET 3.5,那么你应该按照以下步骤,启用<customErrors />和映射所有错误到一个单一的错误页:

    1)编辑你的ASP.NET应用程序的根Web.config文件。如果文件不存在,则在应用程序的根目录之一创建一个。

    2)创建或修改web.config的配置节 <customErrors />部分,添加以下内容:

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

    3)你再添加一个独立的 error.html文件到应用程序,其中包含你选择你喜欢的任何内容包含(适当的错误页)。在Web应用程序中发生错误时使用该文件将显示错误。

    注意:要将上面的customErrors设置“on”,而且所有的错误页的默认跳转到默认错误处理的页面。不设置任何每个状态代码定义的错误页面--这意味着<customErrors /> 的所有子配置节都删除掉。这样就可以避免攻击者通过不同的状态码判断服务器上的处理结果,并防止信息泄露。

    如果您使用的是ASP.NET 3.5 SP1或ASP.NET 4.0,那么你应该按照以下步骤,,启用<customErrors />和映射所有错误到一个单一的错误页:

    1)编辑你的ASP.NET应用程序的根Web.config文件。如果文件不存在,则在应用程序的根目录之一创建一个。

    2) Create or modify the <customErrors /> section of the web.config file to have the below settings.  Note the use of redirectMode=”ResponseRewrite” with .NET 3.5 SP1 and .NET 4.0: 2)创建或修改web.config文件的配置节<customErrors/>,添加以下内容 :

      <customErrors mode="On" defaultRedirect="~/error.aspx" redirectMode="ResponseRewrite" /> 
      注意要将redirectMode设置为ResponseRewrite.
    3)你再添加一个Error.aspx到应用程序,其中包含你选择你喜欢的任何内容包含(适当的错误页)。在Web应用程序中发生错误时使用该文件将显示错误。
       1: <%@ Page Language="C#" AutoEventWireup="true" %>
       2: <%@ Import Namespace="System.Security.Cryptography" %>
       3: <%@ Import Namespace="System.Threading" %>
       4:  
       5: <script runat="server">
       6:    void Page_Load() {
       7:       byte[] delay = new byte[1];
       8:       RandomNumberGenerator prng = new RNGCryptoServiceProvider();
       9:  
      10:       prng.GetBytes(delay);
      11:       Thread.Sleep((int)delay[0]);
      12:         
      13:       IDisposable disposable = prng as IDisposable;
      14:       if (disposable != null) { disposable.Dispose(); }
      15:     }
      16: </script>
      17:  
      18: <html>
      19: <head runat="server">
      20:     <title>Error</title>
      21: </head>
      22: <body>
      23:     <div>
      24:         An error occurred while processing your request.
      25:     </div>
      26: </body>
      27: </html>
    注意:我们强烈建议您阅读Microsoft 的顾问 http://www.microsoft.com/technet/security/advisory/2416728.mspx
    进一步的细节请阅读Scottgu的博客 http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx
    和文章中给出的error.aspx页例子。
    修改后,要记得重启IIS。
    微软发布了ASP.NET重要的 安全更新 解决 ASP.NET Security Vulnerability. http://www.cnblogs.com/msdnchina/archive/2010/09/29/1838161.html
     

    欢迎大家扫描下面二维码成为我的客户,为你服务和上云

  • 相关阅读:
    51Nod 1007 正整数分组(01背包)
    二叉树层次遍历(以先序输入)
    HttpContext.Current.Request.Url
    SqlDataReader和SqlDataAdapter的区别
    DataSet和DataTable详解
    DataTable和DataSet什么区别
    Git 忽略
    hack速查表
    ie6常见css bug
    详说 IE hasLayout
  • 原文地址:https://www.cnblogs.com/shanyou/p/1833757.html
Copyright © 2020-2023  润新知