一、.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
注:前三个通常是固定的,数据库则不一定