首页 > 其他分享 >十九——.NET 项目&DLL 反编译&未授权访问&配置调试报错

十九——.NET 项目&DLL 反编译&未授权访问&配置调试报错

时间:2023-11-17 20:45:42浏览次数:37  
标签:反编译 文件 代码 DLL 访问 报错 NET

.NET是微软推出的一种新的软件运行平台,它包括一整套应用范围广泛的技术,旨在迎接Java所带来的挑战。.NET给网站管理系统开发带来了很多新的技术,尤其是它的“混合语言”开发方式,是第一个支持多种语言混合开发的软件运行平台,下一代Windows--LongHorn的核心将会看到.NET的身影。如果读者学过Java,那么您会发现,.NET与Java实在是太象了。尤其是C#,如果给你一段代码,有的时候还真难分辨出是用Java还是C#写的。

.NET框架包括C++, VB.NET和C#等一系列语言;与JAVA虚拟机类似的一套运行时环境;以及一套倾向与WINDOWS体系的API接口。其中的运行时环境可能存在于一个浏览器、或是一个WEB SERVER、或是在操作系统中。将来也许在SQL SERVER中也可能存在这样的运行时环境。另外需要提及的是微软的SOAP协议,它在继承了DCOM的一些特性的基础上发展起来,基于XML格式通过HTTP进行传输。

.NET语言的使用范围目前与PHP相似,随着技术的进步而在逐渐减少

.NET——aspx——Windows——IIS——SQL sever

1、.NET 配置调试-信息泄露

2、.NET 源码反编译-DLL 反编译

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

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

重要文件:web.config

敏感信息文件

重要目录:bin(可执行文件父目录)

.dll文件所在地,很多代码封装在dll文件内,对dll文件实行反编译

对 DLL 文件进行反编译可以得到其中包含的源代码(或近似的源代码),以及其他与程序逻辑相关的信息。具体来说,反编译 DLL 文件可能会得到以下内容:

  1. 源代码:反编译可以将 DLL 文件中的机器代码(二进制代码)转换为类似于原始源代码的形式。这样做可以让开发人员或恶意用户查看和理解程序的实现细节、算法和逻辑。
  2. 变量和函数:反编译可以还原 DLL 文件中定义的变量、函数和类的结构和命名,使得可以查看和分析程序的内部结构和功能。
  3. 注释和调试信息:如果 DLL 文件中包含注释和调试信息,反编译可能会还原这些信息,从而提供更多关于代码和程序设计意图的上下文信息。

需要注意的是,反编译得到的源代码并不完全等同于原始的源代码。由于编译器优化、符号丢失、重命名等原因,反编译的代码可能会有一些差异、缺失或无法还原的部分。此外,反编译得到的代码可能会更难以理解和维护,因为它不是原始开发人员编写的结构化代码。

类似于java的jar包。

可用于反编译的应用:ILSpy_binaries_7.1.0.6543

在purchase这个项目文件中,打开除前端外的其他可以被解析的文件,例如打开admin目录下的任意一个aspx文件可以得到Language信息,特殊属性AutoEventWireup(这一属性决定了当前页是否自动关联某些特殊事件。)以及文件的Inherits信息。有些文件还存在MasterPageFile母版页属性image-20231117190433069

这个信息告诉我们文件是通过何种语言编写的,以及通过Inherits可以找到实现这个网页功能的dll文件,dll文件中的相应的函数。

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

文件信息包含了网站的数据库连接,网站类型,版本号等

其中customError mode:自定义错误 mode=off/true/

当为off状态时,如果出现访问错误,由系统指定页面的报错回显内容,会暴露系统版本甚至相关代码,文件路径

当为on状态时,如果出现访问错误,由自身指定页面回显的报错内容是什么,这样就可以避免信息泄露。

.NET 项目-身份验证未授权访问-安全漏洞

未授权访问:没有经过身份验证进行非法访问

  1. 前台未授权访问:未经授权的用户可以访问到应用程序的前台功能,如浏览网页、提交表单、查看内容等。这可能导致敏感信息泄露、功能被滥用或修改、用户权限被提升等安全问题。
  2. 后台未授权访问:未经授权的用户或攻击者可以直接访问到应用程序的后台管理界面、控制台或API接口。这可能导致对系统进行非法操作、敏感数据泄露、服务拒绝等安全问题。

1.由于后台本身有多个功能页面,每个页面都需要进行一次验证,在结构中有两种验证方式,第一种时每个页面都写入验证代码,第二种是将验证代码写入配置文件中,在每个页面引入配置文件进行验证,一般的开发环境中都是选择后者,这样可以省去重复臃肿的步骤。

在得到源码的情况下,依次查看每个功能页面的代码信息,找到没有进行身份验证的代码,或者对验证逻辑进行检测即可找到未授权访问漏洞的所在地。

2.在黑盒测试中,可以每个页面都进行尝试进行验证绕过,例如,修改cookie,修改返回状态码等,进而达到绕过验证的操作

总的来说就是两种思路,第一,找不进行身份验证的代码文件,第二就是看看验证的代码文件能否绕过

.NET文件中,可以利用代码的跟踪和暴露继承,引用文件特性进行效率更高的代码审计。

标签:反编译,文件,代码,DLL,访问,报错,NET
From: https://www.cnblogs.com/sowrd9/p/17839621.html

相关文章