代码审计-ASP.NET项目-未授权访问漏洞

代码审计必备知识点:

1代码审计开始前准备:

环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。

2、代码审计前信息收集:

审计目标的程序名,版本,当前环境(系统,中间件,脚本语言等信息),各种插件等。

3、代码审计挖掘漏洞根本:

可控变量及特定函数,不存在过滤或过滤不严谨可以绕过导致的安全漏洞。

4、代码审计展开计划:

审计项目漏洞原理->审计思路->完整源码->应用框架->验证并利用漏洞。

代码审计两种方法

功能点或关键字分析可能存在漏洞

抓包或搜索关键字找到代码出处及对应文件

追踪过滤或接收的数据函数,寻找触发此函数或代码的地方进行触发测试。

-常规或部分MVC模型源码可以采用关键字的搜索挖掘思路。

-框架 MVC 墨香源码一般会采用功能点分析抓包追踪挖掘思路。

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

代码审计-ASP.NET项目-未授权访问漏洞

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

代码审计-ASP.NET项目-未授权访问漏洞

常见漏洞关键字:

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等

案例:.NET项目审计启明星采购系统未授权访问漏洞

.NET项目审计介绍

asp.net可以用C# ,VB.NET ,Jscript.net等等来开发,但是通常首选都是C#和VB.NET

审计asp.net的时候,首先得弄明白他的结构,他并不像php那么单纯。

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

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

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

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

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

ASP.NETInherits、CodeFile、CodeBehind 三个属性指向解析:

Inherits

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

CodeFile

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

Codebehind

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

开始审计:

1.下载源码,搭建好网站。登录进入后台,密码:admin/123456。点击盘点单——新建,复制地址

代码审计-ASP.NET项目-未授权访问漏洞

2.退出管理员登录,再次访问地址跳转到了登录验证。说明pd.aspx文件存在登录检测代码。

代码审计-ASP.NET项目-未授权访问漏洞

3.使用Visual Sdudio Code打开源码,找到pd.aspx文件,审计发现pd.aspx文件中没有检测代码,但是代码中引用了一个purchase.Master文件,验证文件应该在其中。

代码审计-ASP.NET项目-未授权访问漏洞

4.打开purchase.Master文件发现里面还是没有检测代码,代码中Inherits指向了一个pur类,而Inherits提供的都是隐藏类(dll文件)

代码审计-ASP.NET项目-未授权访问漏洞

5.选择bin目录下的purchase.dll(因为Inherits指向的就是Purchase),使用ILSpy工具打开purchase.dll进行反编译。

ILSpy下载:https://github.com/icsharpcode/ILSpy/releases

反编译成功,根据Inherits指向的路径找到pur类,在里面成功找到检测代码。

代码审计-ASP.NET项目-未授权访问漏洞

6.检测代码表示:只要 GetUserId <= 0 就会跳转到登录验证,只要GetUserId的值>0 即可绕过验证。所以需要知道 GetUserId 的值是怎么来的。点击代码中的GetUserId成功定位到其定义代码处。

根据代码得知:GetUserId的值是由请求包中Cookies中的 userinfouserid 传递的

代码审计-ASP.NET项目-未授权访问漏洞

7.我们就可以在没有登录管理员账户的情况下访问未授权地址——进行抓包,然后修改Cookie值实现绕过检测

访问:http://192.168.92.249:44/purchase/pd.aspx

抓包修改值:Cookieuserinfo=userid=1

放包成功绕过登录验证,访问到了管理员后台页面

代码审计-ASP.NET项目-未授权访问漏洞

原文始发于微信公众号(小黑子安全):代码审计-ASP.NET项目-未授权访问漏洞

版权声明:admin 发表于 2023年12月14日 上午9:40。
转载请注明:代码审计-ASP.NET项目-未授权访问漏洞 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...