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

代码审计必备知识点:

1、代码审计开始前准备:

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

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

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

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

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

4、代码审计展开计划:

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

代码审计两种方法

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

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

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

 

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

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

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等

代码执行:

eval assert preg_replace  call_user_func  call_user_func_array等

命令执行:

system exec 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是一般处理程序,主要用于写web handler,可以理解成不会显示的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。点击盘点单——新建,复制地址

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

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

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

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

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

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

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

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

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

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

抓包修改值:Cookie:userinfo=userid=1

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/39696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web framework-Gin

一、Gin Go Web--Go Module 软件框架&#xff08;software framework&#xff09;&#xff0c;通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范&#xff0c;也指为了实现某个软件组件规范时&#xff0c;提供规范所要求之基础功能的软件产品。 框架就是&#…

机器学习|Softmax 回归的数学理解及代码解析

机器学习&#xff5c;Softmax 回归的数学理解及代码解析 Softmax 回归是一种常用的多类别分类算法&#xff0c;适用于将输入向量映射到多个类别的概率分布。在本文中&#xff0c;我们将深入探讨 Softmax 回归的数学原理&#xff0c;并提供 Python 示例代码帮助读者更好地理解和…

HarmonyOS NEXT新能力,一站式高效开发HarmonyOS应用

2023年8月6日华为开发者大会2023&#xff08;HDC.Together&#xff09;圆满收官&#xff0c;伴随着HarmonyOS 4的发布&#xff0c;华为向开发者发布了汇聚所有最新开发能力的HarmonyOS NEXT开发者预览版&#xff0c;并分享了围绕“一次开发&#xff0c;多端部署” “可分可合&a…

代码随想录算法训练营第60天|动态规划part17| 647. 回文子串、516.最长回文子序列、动态规划总结篇

代码随想录算法训练营第60天&#xff5c;动态规划part17&#xff5c; 647. 回文子串、516.最长回文子序列、动态规划总结篇 647. 回文子串 647. 回文子串 思路&#xff1a; 暴力解法 两层for循环&#xff0c;遍历区间起始位置和终止位置&#xff0c;然后还需要一层遍历判断…

【mysql】—— 表的增删改查

目录 序言 &#xff08;一&#xff09;Create操作 1、单行数据 全列插入 2、多行数据 指定列插入 3、插入否则更新 4、直接替换 &#xff08;二&#xff09;Retrieve操作 1、SELECT 列 1️⃣全列查询 2️⃣指定列查询 3️⃣查询字段为表达式 4️⃣为查询结果指定…

数据结构——堆

数据结构——堆 堆堆简介堆的分类 二叉堆过程插入操作 删除操作向下调整&#xff1a; 增加某个点的权值实现参考代码&#xff1a;建堆方法一&#xff1a;使用 decreasekey&#xff08;即&#xff0c;向上调整&#xff09;方法二&#xff1a;使用向下调整 应用对顶堆 其他&#…

Python Flask+Echarts+sklearn+MySQL(评论情感分析、用户推荐、BI报表)项目分享

Python FlaskEchartssklearnMySQL(评论情感分析、用户推荐、BI报表)项目分享 项目背景&#xff1a; 随着互联网的快速发展和智能手机的普及&#xff0c;人们越来越倾向于在网上查找餐厅、购物中心、酒店和旅游景点等商户的点评和评分信息&#xff0c;以便做出更好的消费决策。…

YOLOv8 : 网络结构

一. YOLOv8网络结构 1. Backbone YOLOv8的Backbone同样参考了CSPDarkNet-53网络&#xff0c;我们可以称之为CSPDarkNet结构吧&#xff0c;与YOLOv5不同的是&#xff0c;YOLOv8使用C2f(CSPLayer_2Conv)代替了C3模块(如果你比较熟悉YOLOv5的网络结构&#xff0c;那YOLOv8的网络…

【GitHub】Pycharm本地项目打包上传到Github仓库的操作步骤

文章目录 1、Pycharm端的设置操作2、Github端的设置操作3、Pycharm上配置Github4、Git本地项目至GitHub仓库5、前往Github中查看确认6、常见报错 1、Pycharm端的设置操作 通过CtrlAltS快捷组合键的方式&#xff0c;打开设置&#xff0c;导航到版本控制一栏中的Git&#xff0c;…

Gin安装解决国内go 与 热加载

get 方式安装超时问题&#xff0c;国内直接用官网推荐的下面这个命令大概率是安装不成功的 go get -u github.com/gin-gonic/gin 可以在你的项目目录下执行下面几个命令&#xff1a; 比如我的项目在E:\Oproject\zl cmd E:\Oproject\zl>就在目录下执行 go env -w GO111…

回归预测 | MATLAB实现GRU门控循环单元多输入多输出

回归预测 | MATLAB实现GRU门控循环单元多输入多输出 目录 回归预测 | MATLAB实现GRU门控循环单元多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现GRU门控循环单元多输入多输出&#xff0c;数据为多输入多输出预测数据&#xff0c;输入10个…

pytorch安装VAE项目详解

安装VAE项目 一、 基本环境二、代码来源三、搭建conda环境四、下载数据集五、启动项目六、其他相关问题 一、 基本环境 工具版本号OSwin 11pycharm2020.1GPU3050 二、代码来源 github地址为&#xff1a; https://github.com/AntixK/PyTorch-VAE/blob/8700d245a9735640dda458d…

ZooKeeper的应用场景(集群管理、Master选举)

5 集群管理 随着分布式系统规模的日益扩大&#xff0c;集群中的机器规模也随之变大&#xff0c;因此&#xff0c;如何更好地进行集群管理也显得越来越重要了。 所谓集群管理&#xff0c;包括集群监控与集群控制两大块&#xff0c;前者侧重对集群运行时状态的收集&#xff0c;后…

08 - 追加commit和修改最新的commit message

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. 追加提交2. 修改最新的commit message 1. 追加提交 将改动追加到上一次的commit 现在我已经修改了Readme文件并且已经add、commit操作&#xff0c;但是还没有push到远程仓库&#x…

【左神算法刷题班】第17节:在有序二维数组中查找目标值、等于目标字符串的子序列个数

第17节 题目1&#xff1a;在有序二维数组中查找目标值 给定一个每一行有序、每一列也有序&#xff0c;整体可能无序的二维数组 再给定一个数num&#xff0c; 返回二维数组中有没有num这个数 例子 数组如下&#xff0c;找 6 是否存在。 1 3 5 7 2 4 6 13 3 9 14 …

“心理健康人工智能产学研创新联盟”揭牌成立|深兰科技

8月14日上午&#xff0c;“2023树洞救援年会”在上海举行&#xff0c;会上举行了“心理健康人工智能产学研创新联盟”的签约和揭牌仪式。“树洞行动救援团”创始人深兰科技科学院智能科学首席科学家、荷兰阿姆斯特丹自由大学人工智能系终身教授黄智生&#xff0c;深兰科技集团创…

Git 常用操作

一、Git 常用操作 1、Git 切换分支 git checkout命令可以用于三种不同的实体&#xff1a;文件&#xff0c;commit&#xff0c;以及分支。checkout的意思就是对于一种实体的不同版本之间进行切换的操作。checkout一个分支&#xff0c;会更新当前的工作空间中的文件&#xff0c;…

68 # 中间层如何请求其他服务

前端 ajax 有跨域问题&#xff0c;可以先访问中间层&#xff0c;在通过 node 去请求别的服务端口&#xff0c;可以解决跨域问题 编写中间层调用 // 中间层的方式const http require("http");// http.get 默认发送 get 请求 // http.request 支持其他请求格式 postl…

Java基础知识实际应用(学生信息管理系统、猜拳小游戏、打印日历)

一、Java学生信息管理系统 这个系统包含了添加、修改、删除、查询和显示所有学生信息等功能。您可以在此基础上进行修改和完善&#xff0c;以适应您的需求。 import java.util.Scanner;public class StudentManagementSystem {private static Scanner scanner new Scanner(S…

haproxy负载均衡

1、配置环境 作用环境windows测试  192.168.33.158 172.25.0.11 haproxy负载均衡haproxy&#xff1a;2.8.1&#xff0c;centos7172.25.0.31web服务器1--rs1Apache&#xff1a;2.4&#xff0c;redhat9172.25.0.32web服务器2--rs2Apache&#xff1a;2.4 &#xff0c; redhat9 2、…