小迪安全 Web安全 第十九天 - WEB攻防 - .NET项目&DLL反编译&未授权访问&配置调试报错

一、.NET项目-DLL文件反编译指向-代码特性

(一).net反编译

1、推荐反编译工具 ILSpy

(二).net项目dll反编译指向

1、在Admin目录下有一个activity.aspx的文件,该文件中指明了项目调用封装的dll文件,指向bin目录下的HdhCMS.dll文件中的HdhCMS.Admin中的activity类,其他指向文件的判断方法与此相同

二、.NET项目-Web.config错误调试-信息泄露

(一).net项目web.config错误调试

1、在.net站点的url后输入错误的页面参数,站点会显示报错信息,通过报错信息通常可以看到.net的版本信息、报错文件自身的路径、错误原因

2、.net站点的web.config文件中的customError的mode如果设置为off,则报错信息只会显示报错本身的错误,会泄露站点的.net版本信息、文件路径、源码等信息,若设置为on则可以将报错显示设置为自定义的错误显示,避免敏感信息泄露

三、.NET常见安全问题-未授权访问

(一)站点如何判断用户身份

1、由于后台本身有多个功能文件页面

2、在每个文件里面添加判断代码

3、创建一个文件专门用来判断,其他文件包含调用它

(二)如何找未授权访问漏洞

1、找哪些文件没有包含验证代码

2、验证代码文件有没有可以绕过的地方

四、白盒测试,以启明星行政办公采购系统为例,审计站点源码,实现未授权访问

(一)查看后台文件

1、登录后的后台文件为pd.aspx,在未登录状态下访问该文件会强行跳转到login.aspx登录页面

2、查看pd.aspx文件源码,没有发现跳转代码,判断该设定包含在其他文件中,查看最上面的包含文件代码,发现包含"~/purchase/purchase.Master"、"pd.aspx.cs"、"purchase.purchase.pd"三个文件,逐一查看,在封装的purchase.dll中的purchase.pd中没有发现用户判断代码,在purchase.Master中发现另一个包含文件Purchase.Purchase.pur,用ILSpy打开purchase.dll中的该文件发现如下用户判断代码,当GetUserId<=0时会导致跳转到登录页面

if (UserHelper.GetUserId <= 0)
            {
                base.Response.Redirect("../login.aspx");
                return;
            }

3、根据上述代码,确定这是后台验证用户登录的判断代码,点击GetUserId,跳转到如下位置,发现以下用户判断代码,当第二个if条件不满足时会跳转登录页面

public static int GetUserId
{
    get
    {
        if (Helper.IsUseAd && HttpContext.Current.Request.Cookies["userinfo"] == null)
        {
            UsersHelper.LoginAd(GetSamaccountName());
        }
        if (HttpContext.Current.Request.Cookies["userinfo"] != null)
        {
            return int.Parse(HttpContext.Current.Request.Cookies["userinfo"]["userid"]);
        }
        return -1;
    }
}

(二)验证漏洞

1、打开burpsuite抓包,直接访问后台url,在数据包中加入Cookie: userinfo=userid=1,然后发送,成功进入后台页面。

2、在用后台目录下的cat_move.aspx中发现没有包含验证代码,未登录状态下直接访问该文件的url发现可以显示

五、相关web漏洞

(一)黑盒测试中寻找未授权访问漏洞

1、扫描站点目录,根据扫描结果直接访问特定文件,若能够访问则存在未授权访问漏洞

(二)与asp相关的服务器-中间件-数据库-第三方软件的通常搭配

1、windows + iis + asp +access

2、windows + iis + aspx + sqlserver

注:前三个通常是固定的,数据库则不一定

 

上一篇:强化学习ACM


下一篇:第一次ACM集训题 B题