.NET项目

.NET是一个开源(MIT License)、免费、跨平台的开发平台框架,用于生成多种类型的应用程序。.NET 可以运行使用多种语言(C#、Visual Basic、F#)编写的程序,其中C#是最常用的语言。C#和JAVA很类似,是为了防止JAVA的垄断局面而孕育而生的

DLL文件反编译

DLL为动态连接库,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件,在Windows上,一个软件中出现最多的就是DLL文件

image-20240529162445002

DLL文件可以类比为JAVA的jar包,存放各类函数的实现过程,当程序需要调用函数时先载入DLL,然后取得函数地址,最后进行调用,使用DLL的好处是不需要在运行之初加载所有代码,只需要在某个函数的时候从DLL中取出即可

DLL的文件格式与视窗EXE文件一样——也就是说,等同于32位视窗的可移植执行文件(PE)和16位视窗的New Executable(NE)。作为EXE格式,DLL可以包括源代码、数据和资源的多种组合(wiki百科)

其中,bin目录下的文件代表的是可执行文件,.net项目中的dll文件中的核心代码是一个实例化的过程

web.config是网站的配置文件

dll反编译工具:ILSpy,直接将dll文件拖入工具中就可以实现反编译

image-20240529195237417

aspx的核心代码被分装到dll文件中,具体哪个dll文件,可以看inherits参数

03fdd8c8d8bd6c6e1bcfe0c7068f22af

如图,我们就可以在HdhCms下的admin下的activity中去寻找

image-20240529195724061

Web.config信息泄露

web.config中有一项customErrors mode 参数,该参数有OnOff两种状态

Off状态:关闭就会爆默认错误,默认错误就会爆出一些中间件类型、文件路径等,造成一定的泄露

f4d3b59026eca92899d53cfb37b3d5ce

On状态:开启将会由网站管理员定义如何报错,报什么错,可以报页面不存在或者404页面

image-20240529201621382

身份验证未授权登录

未授权访问:后台需要登录才能访问,但是未登录就看到了后台的内容;普通用户可以访问会员用户的都算未授权访问

后端判断用户身份的方式:
在每个文件中添加判断代码
创建一个文件专门用来判断用户身份,其他文件包含调用该文件
如何利用未授权访问漏洞:
找文件没有包含验证代码的文件
验证代码文件是否可以绕过

相关实例:

如果我们要绕过登录界面,首先要找到登录验证代码,我们可以通过反编译进行代码审计

5d079eda3e1711cf054e179c488988b7

首先这里有一个判断,如果GetUserId <= 0,就跳转到login界面,否则进入主页面,所以我们的主要目标在GetUserId上,我们可以点击跳转到GetUserId

image-20240529205942393

从代码分析后可知,我们可以看到首先userinfo不能为空,倘如uesrinfo不为空,则返回userinfo下的userid的整数值,所以我们只需要在Cookie中加上userid即可

0ebeea254a6ea627c7d50bed0b458704

发现可以成功绕过,存在未授权访问