第一部分,.NET项目当中的dll都可以进行反编译:
在java中有很多jar包,而在.NET框架中的bin中对应有很多DLL文件,bin下面都是可执行文件,这些文件都是很多代码封装的,想要查看源码,都需要通过反编译的方式。
区分:.NET ASPX ASP
- ASP 作为技术/框架:
ASP 是一种服务器端技术或框架,用于创建动态的、交互式的 Web 页面。它允许在服务器上执行脚本代码以生成动态内容。使用脚本语言(如 VBScript 或 JScript),开发者可以在 HTML 中嵌入服务器端代码,以便在运行时生成页面。ASP 是一种早期的服务器端技术,但在随后的发展中被 ASP.NET 所取代。因此,ASP 作为技术或框架已经过时。- ASPX是.NET框架中页面文件的扩展名,只是.NET的一部分文件的扩展名,.NET是一种框架,通常使用C#所写,C#和Java的语法非常相像,具体原因有如下:
- 面向对象设计: C# 和 Java 都采用了面向对象的设计理念,包括类、对象、继承、封装和多态等概念。这使得两者的基本结构和语法在概念上非常相似。
- C# 的设计者受到了 Java 的启发: C# 是由微软设计的,而 C# 的设计者中包括了一些曾在 Sun 公司工作并参与 Java 开发的人员。这些设计者在设计 C# 时可能受到了 Java 在企业级应用和面向对象编程方面的成功经验的启发。
3 .跨平台竞争: 当 C# 设计时,Java 已经在跨平台开发方面取得了成功。为了与 Java 竞争,C# 也在一定程度上支持跨平台开发,尤其是通过 .NET Core 平台。- 开发者易用性: 微软可能希望吸引那些已经熟悉 Java 的开发者,因此在语法和结构上保持一些相似性,使得开发者更容易学习和迁移。
.NET的数量和PHP差不多,都在逐渐减少,而Java在逐渐扩大范围。
推荐使用的反编译工具ILSpy,使用方法,直接将dll文件拖进去即可查看源代码,以下以.NET的dll文件为例:
具体来看一下aspx文件和dll文件的关系:
首先随便打开一个aspx文件:
再来反编译打开dll文件,为啥子没有这个文件?这回是真不知道,按理来说,引用了这个文件,应该就是有的呀???有知道的大佬解答一下?
第二部分,web.config错误调试,容易造成信息泄露:
由于.net是微软开发的,基本上都是存在于windows上面,中间件基本上都是IIS,打开看到用.NET搭建的网站,里面常常会看到一个叫web.config 的文件,这个文件里面有个关键的地方:
这个指的是自定义错误,这里的mode有三种状态,修改之后网站的状态也不一样。
如果开启,当页面报错的时候,报错是你指定的报错信息;如果关闭,当页面报错的时候,就是网站定义的报错信息。这里可能在报错信息中造成一定的信息泄露。变成自己设置的报错信息,会比较安全。
第三部分:aspx经常出现的问题就是未授权访问,简而言之,就是没有登录/验证就可以看到一些页面。分为前台(没有登录,看到了登录后的界面)和后台(管理员界面),用脚趾头想一下,也是后面的危害更大。
用户验证的过程:
- 编写一个专门用来判断用户身份的逻辑代码;
- 其他需要判断用户身份的功能性代码进行调用该逻辑代码;
找未授权访问,就是:
- 要找那些没有包含判断用户身份逻辑代码的部分
- 找能绕过验证用户身份代码的方法
所以说,如果我们访问一个aspx的页面,发现它不存在未授权访问,还可以拿到源码的话,我们就可能跟踪逻辑,看看是否里面调用了判断用户身份的逻辑代码以及这段代码是否存在问题。有时候,这些代码不一定包含在上一层中,有可能是包含在上上层中,这个就得一直翻了,推荐使用idea进行使用,直接按住crtl的同时,点击包含的包,就可以进入到对应的代码中(涉及到代码审计)
最后分享两个常见搭配:
服务漏洞+web漏洞+操作系统漏洞+中间件(数据库)漏洞的组合方式
iis+asp+windows+access
iis+aspx+windows+sqlserver
数据库在两个里不一定是固定的,但是前三个搭配是一定的,iis的问题在asp和aspx都会受到影响。