ASP.NET项目究极代码审计

在针对ASP.NET开发的程序进行代码审计的时候,asp.net可以用C# ,VB.NET ,Jscript.net等等来开发,但是通常首选都是C#和VB.NET进行开发

审计ASP.NET的时候,首先得弄明白他的结构

一般来说,在asp.net应用中,需要进行观察的文件有:.aspx,.cs,.ashx,dll文件

.aspx是页面后的代码,aspx负责显示,服务器端的动作就是在.cs定义的

.cs是类文件,公共类神马的就是这个了

.ashx是一般处理程序,主要用于写web handler,可以理解成不会显示的aspx页面

.dll就是cs文件编译之后的程序集

ASP.NET中Inherits、CodeFile、CodeBehind 三个属性指向解析:

Inherits

msdn解释:定义供页继承的代码隐藏类。 它可以是从 Page 类派生的任何类。 此特性与 CodeFile 特性一起使用,后者包含指向代码隐藏类的源文件的路径。Inherits 特性在使用 C# 作为页面语言时区分大小写,而在使用 Visual Basic 作为页面语言时不区分大小写。

CodeFile

msdn解释:指定指向页引用的代码隐藏文件的路径。 此特性与 Inherits 特性一起使用,用于将代码隐藏源文件与网页相关联。 此特性仅对编译的页有效。

Codebehind

msdn解释:指定包含与页关联的类的已编译文件的名称。 该特性不能在运行时使用。此特性用于 Web 应用程序项目。

代码审计两种方法:

1.搜索关键字找敏感函数

2.根据目标功能点判断可能存在的漏洞

常见漏洞关键字:

SQL注入:

select insert update mysql_query mysqli

文件上传:

$_FILES,type="file",上传,move_uploaded_file()

XSS跨站:

print print_r echo sprintf die var_dump var_export

文件包含:

include include_once require require_once

代码执行:

evalassert preg_replace  call_user_func  call_user_func_array

命令执行:

systemexec shell_exec  ` ` passthru pcntl_exec popen proc_open

变量覆盖:

extract()parse_str() import_request_variables() $$ 

反序列化:

serialize()unserialize()  __construct   __destruct

文件读取:

fopen file_get_contents fread fgets fgetss file  fpassthru parse_ini_file readfile

文件删除:

unlink()remove()

文件下载:

download() download_file()

通用关键字:

$_GET,$_POST,$_REQUEST,$_FILES,$_SERVER

审计工具

ILSpy

预编译的原理:

简单的来说,就是在网站发布时将aspx文件进行编译,转换成dll文件。因为.NET程序在运行时会优先加载bin目录下的程序集。

即index.aspx -> /bin/index.dll

在用户访问index.aspx时,则直接由index.dll进行处理。而不是index.aspx。一旦进行预编译后,相关程序会被转换为dll存储在bin目录下。这时候,程序的访问路径和相关逻辑,都被封装成了dll。无论根目录下是否存在index.aspx,都可以正常处理特定路由下的功能。

Notepad++
使用Ctrl + F打开查找框,并切换到“替换”标签。

小工具 #用来提取路径

ListFile

可以使用这个命令,dir /s /b *.aspx > md.txt

下面是处理完的结果

使用dirsearch对接口做扫描,快速的找出可未授权访问的页面。

sublime、一款轻量级的代码编辑器。将反编译后的源码直接拖入进去即可。

反混淆

de4dot、https://github.com/de4dot/de4dot

反混淆的工具有很多,其中de4dot是目前最主流的反混淆工具。

检测混淆器类型

de4dot.exe -d f:\bin\h1z1.dll

批量反混淆

de4dot.exe -r c:\input -ru -ro c:\output

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值