在.net开发时,一些系统的bin目录会有很多dll文件,这些dll文件相当于java中的jar包,核心代码被封装成dll中,实现调用安全。
【工具】ILSpy 反编译工具
所以不论是对dll还是jar,经常需要使用反编译。目前.net和php应用的数量相似。
与ASP相似的,我们需要学会判断.net的特征,访问后缀ASPX文件时发现代码和实现的功能不相符,可以判断很有可能引用了其他文件,可能会包含dll中的代码。在ASPX文件中根据引用的名称,找到对应的dll文件再反编译,找到核心代码。【找不到的时候看看还包含了哪些文件,也看看那些文件的代码有没有实现核心功能的】
.net有一个特性,容易造成信息泄露,因为是微软用的框架,用到IIS,跟上一篇文章(asp)提到的安全问题有相关性。
例如,在.net的web.config配置中如果customerror设置为off,会暴露出敏感信息,还可能泄露源码
再例如,不论是白盒还是黑盒,容易出现未授权访问的安全问题,原因是:跟本身特性有关,该验证的地方没有进行验证。常见是登录的未授权访问,下说一下原理:
验证也就是判断用户身份,后台本身存在多个功能页面,针对这些功能页面的验证我们可以
①在每个文件里添加判断代码
②创建一个文件专门用来判断,然后每个文件都包含调用它
那么我们找未授权的思路也可得出:
①找到不含验证代码的文件
②看验证代码文件有无绕过的可能
找到验证代码:
看验证代码的验证方式,迪总的实验中,验证代码是判断用户id<=0的话弹出登录页面,尝试让id>0绕过,这里回忆一下php的cookie的超级变量$_COOKIE,它接受cookie中的信息,迪总抓包,加上cookie:userinfo=userid=1,然后发送数据包,绕过了登陆界面进入了后台。
再者,找到了验证代码可以使用上述的思路,去找不包含包含该代码的功能页。迪哥的操作中找到了某个功能页没有包含验证代码,直接访问发现不需要登陆验证。