金山终端安全系统V9.0 update_software_info_v2.php处SQL注入漏洞分析

文章目录

  • 金山终端安全系统V9.0 update_software_info_v2.php处SQL注入漏洞分析
    • 前言
    • 一、漏洞描述
    • 二、影响版本
    • 三、POC
    • 四、漏洞原理分析
    • 参考链接:

金山终端安全系统V9.0 update_software_info_v2.php处SQL注入漏洞分析

前言

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用!!!

一、漏洞描述

近期,长亭科技监测到猎鹰安全(原金山安全)官方发布了新版本修复了一处SQL注入漏洞。金山终端安全系统是一款为企业提供终端防护的安全产品,针对恶意软件、病毒和外部攻击提供防范措施,帮助维护企业数据和网络。

该漏洞是由于金山终端安全系统未对用户的输入进行有效地过滤,直接将其拼接进了SQL查询语句中,导致系统出现SQL注入漏洞。

二、影响版本

金山终端安全系统<V9.SP1.E1008

三、POC

POST /inter/update_software_info_v2.php HTTP/1.1
Host: ip:port
Content-Type: application/x-www-form-urlencoded
 
type=-1+UNION+SELECT+1,user(),3,4,5,6,7,8--&key=&pageCount=0&curPage=

四、漏洞原理分析

1.首先官网下载试用安装包。

下载网址:http://duba-011.duba.net/netversion/Package/SecManage.iso

2.解压安装居然挑环境,只能在windows sever上进行安装(自己使用的是windows sever 2016)

下载后是iso,对其解压之后SecManage.exe就是管理中心的安装包,在对应系统上安装就可以了。

在这里插入图片描述3.安装成功之后登陆界面如下,直接访问127.0.0.1:6868
在这里插入图片描述也可以直接双击金山终端安全系统V9控制台(成功安装后桌面会出现)也可以进入登陆界面。
在这里插入图片描述

4.安装过程中可以看到文件释放的位置C:\SecManage下面。
在这里插入图片描述5.安装好,也可以登录访问,接下来就是验证漏洞是否存在。
直接使用poc打(因此环境是在本机虚拟机windows sever 2016上搭建的,查看虚拟机ip地址在本机上访问)流量直接代理到Yakit上。

在这里插入图片描述发现无论怎么尝试都是返回数据格式错误。去确认下版本是V9.SP1.E1001 没错,版本是包含在漏洞版本之内的。
在这里插入图片描述6.接下来直接找到C:\SecManage\Console\inter\update_software_info_v2.php出现漏洞的文件。

出现问题的代码就在下面, 当$postdata['type'] 是否不为 null 且不为空字符串。如果满足条件,它会将 $postdata['type']的值赋给$id 变量,然后将"and type=$id"添加到 SQL 查询条件的 $where 中。而下面sql语句就是直接将$where拼接而成,猜测就是这里没有过滤导致可以触发sql注入漏洞。
在这里插入图片描述

我们再回到这段代码开头部分,首先定义了一个 $paramArr 数组,其中包含了需要检查的参数名。然后,它使用 checkParam 函数来检查这些参数。在检查后,如果 $check 数组中存在 nResult 键,那么它会意味着参数检查失败,会设置一个包含错误信息的 JSON 响应,并退出脚本。看到了返回数据格式错误字段。

在这里插入图片描述7.全局搜索checkParam函数,找到路径C:\SecManage\Console\inter\common\checksql.php文件。

checkParam函数,它用于检查传递给它的参数数组 $postData 中是否包含指定的键,以及一些其他的验证。checkParamFull 函数用于检查参数的完整性,它会遍$keyData 数组中指定的键,并检查是否都存在$postData 数组中。如果有任何一个键缺失,它将返回 false,否则返回 true。如果参数不完整,它还会记录错误日志。

在这里插入图片描述
在这里插入图片描述接下来,它调用 checksql 函数来检查 $postData 数组中的值是否包含SQL注入,如果检查到SQL注入,它返回一个包含 “nResult” 键值为25的数组,表示SQL注入检测到。

接下来返回到代码的开头:

首先,它检查传入的参数 $param 是否为数组或对象。如果是数组或对象,它会递归调用 checksql 函数,以确保所有数组元素或对象属性都经过相同的检查。

接下来,它检查是否存在名为"checkWhiteList.php"的文件,并在该文件中定义了$checkWhiteList 变量。如果文件存在并且$param的值在白名单中,它会执行一系列操作,包括添加反斜杠转义、删除一些特殊字符、处理换行符、将HTML标签转义等。这些操作旨在防止一些常见的攻击。

然后,它使用正则表达式检查$param是否包含潜在的SQL注入攻击字符串,如果匹配到,返回 true。则提示错误信息。

在这里插入图片描述在这里插入图片描述所以到这可以从代码中猜测,存在漏洞的版本应该是没有对参数做单独的sql注入检测或者检测注入的方式不对,导致存在漏洞,而现在官网下载的版本,虽然在受影响范围内,但是已经修复了该漏洞。当去掉这里的检测是可以触发该漏洞的。

参考链接:

https://blog.csdn.net/weixin_48539059/article/details/134823724
https://mp.weixin.qq.com/s/Dd6BZglv6OYXveJOAvoawA

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

idea 本身快捷键ctrl+d复制 无法像eclipse快捷键ctrl+alt+上下键,自动换行格式问题解决

问题 例如我使用ctrld 想复制如下内容 复制效果如下&#xff0c;没有自动换行&#xff0c;还需要自己在进行调整 解决 让如下快捷键第一个删除 修改成如下&#xff0c;将第二个添加ctrld 提示&#xff1a;对应想要修改的item&#xff0c;直接右键&#xff0c;remove是删…

Nginx反向代理跳过国内备案(以宝塔面板为例)

需要两台服务器&#xff0c;一台已备案或者免备案&#xff0c;一台国内主力服务器放你的项目。 先把域名解析到A服务器 然后在A服务器里配置 server {listen 80;server_name 你的域名;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_…

(3)kylin系统部署weblogic项目

一、jdk迁移 1、拷贝成功后要配置环境变量 vi /etc/profile 将jdk的目录添加进去 2、将jdk安装目录拷贝后权限会发生变化&#xff0c; 要对jdk下bin目录中的所有文件修改权限&#xff1a; chmod x ./* 回车即可 ----------------------------- 环境变量 export …

ES6原生音乐播放器(有接口)

视频展示 ES6音乐播放器 项目介绍 GutHub地址&#xff1a;GitHub - baozixiangqianchong/ES6_MusicPlayer: 音乐播放器 ES6_MusicPlayer 是基于JavaScriptES6Ajax等通过原生构建的项目。能够充分锻炼JS能力。 本项目有主页、详情页、歌单页面三部分组成 ├── assets&…

多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现RIME-…

编程学新要求:OS发布之前,都应该在各种虚拟机上测试

这几天在VirtualBox上安装ArchLinux&#xff0c;掌握了方法之后&#xff0c;非常顺利。进入桌面之后&#xff0c;又出问题了&#xff0c;如下图&#xff1a; 底部的那个工具条&#xff0c;空空如也。原因是显示错误。这怎么用&#xff1f; 所以编程学干脆提出一个新要求&#x…

leetcode 股票DP系列 总结篇

121. 买卖股票的最佳时机 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。 只能进行一次交易 很简单&#xff0c;只需边遍历边记录最小值即可。 class Solution { public:int maxProfit(vector<int>& prices) {int res …

【JavaWeb笔记】单选框,结合Servlet

各个部分的作用 jsp部分 form action"..."&#xff1a;表单标签&#xff0c;供用户提交数据。内部的submit点击之后相当于是点action的URL input type"radio"&#xff1a;输入类型为单选框。把name设置为一样的&#xff0c;这样效果上就是单选&#xff…

C++ 对象数组

对象数组用于创建同一个类的多个对象。声明对象数组的方法与声明标准类陷阱数组相同。以Stock类为例&#xff1a; class Stock { private:std::string company;int shares;double share_val;double total_val;void set_tot(){return total_val shares * share_val;} public:S…

基于Java SSM框架实现电影售票系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现电影售票系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#…

SU渲染受到电脑性能影响大吗?如何提高渲染速度

一般3d设计师们在进行设计工作前都需要提供一台高配电脑&#xff0c;那么你这知道su渲染对电脑要求高吗&#xff1f;电脑带不动su怎么解决&#xff1f;su对电脑什么配件要求高&#xff1f;今天这篇文章就详细为大家带来电脑硬件对su建模渲染的影响&#xff0c;以及su渲染慢怎么…

Flask应用基础入门总结

【1】使用migrate方式进行数据库连接 使用migrate方式进行数据库连接需要在终端分别运行三行代码&#xff1a; #init&#xff08;运行一次即可&#xff09;&#xff08;此db为自己设置的连接数据库的对象,可以修改&#xff09; flask db init #&#xff08;将orm模型生成迁移…

qt creator配置opencv库 (MSVC版本)

目录 1. MSVC版本 1.1 使用cmake编译opencv 1.2 再使用visual studio 2019生成opencv的lib,dll 1.3 配置opencv的系统环境变量 1.4 新建qt项目 1. MSVC版本 1.1 使用cmake编译opencv 1.2 再使用visual studio 2019生成opencv的lib,dll 1.3 配置opencv的系统环境变量 D:…

了解构造函数原型对象的语法特征,掌握 JavaScript 中面向对象编程的实现方式,基于面向对象编程思想实现 DOM 操作的封装。(第三天)

有什么不懂可以去看我前两天的笔记 https://blog.csdn.net/weixin_70007095/article/details/134905674 目录 有什么不懂可以去看我前两天的笔记 JavaScript 进阶 - 第3天笔记 编程思想 面向过程 面向对象 构造函数 原型对象 constructor 属性 对象原型 原型继承 原型链 JavaSc…

2021版吴恩达深度学习课程Deeplearning.ai 05序列模型 12.5

学习内容 05.序列模型 1.1 为什么用序列模型 1.序列模型常见的应用 1.2 注释 notation 1.*T_x(i)表示训练样本x(i)的序列长度&#xff0c;T_y(i)表示target(i)的序列长度2.训练集表示单词的方式*构建字典的方式*在训练集中查找出现频率最高的单词*网络搜集常用字典3.如果遇…

linux交换分区管理SWAP

概念查看当前的交换分区&#xff1a;free 6.2.5 交换分区管理SWAP 6.2.5.1 概念 作用&#xff1a; ”提升“内存容量&#xff0c;防止OOM&#xff08;out of memory&#xff0c;内存溢出&#xff09;。 ​ 对应windows中的虚拟内存。 ​ 从功能上讲&#xff0c;交换分区主要是…

Idea spring项目中 resource图标错误解决方案

1.resources错误显示示例 2.resources正确显示示例 3.解决方案 第一步&#xff1a; 第二步&#xff1a; 点击完成即可。

网络和Linux网络_12(网络其他协议和技术)DNS+ICMP+NAT/NAPT+代理服务器

目录 1. 域名解析服务DNS 1.1 DNS和域名概念 1.2 域名解析过程 2. ICMP协议 2.1 ICMP协议格式(了解) 2.2 ping命令 3. NAT和NAPT 3.1 NAT概念 3.2 NATP概念 4. 代理服务器 4.1 代理服务器概念 4.2 NAT和代理服务器 5. 相关笔试选择题 答案及解析 本篇完。 前面几…

使用Python提取PDF文件中指定页面的内容

在日常工作和学习中&#xff0c;我们经常需要从PDF文件中提取特定页面的内容。在本篇文章中&#xff0c;我们将介绍如何使用Python编程语言和两个强大的库——pymupdf和wxPython&#xff0c;来实现这个任务。 1. 准备工作 首先&#xff0c;确保你已经安装了以下两个Python库&…

1.鸿蒙应用程序开发app_hap开发环境搭建

1.下载Node.js, Javascipts的运行环境 node.js版本下载v12.18.3/https://www.cnblogs.com/txwtech/p/17865780.html 2.下载并安装DevEco Studio DevEco Studio 3.1 DevEco Studio 3.1配套支持HarmonyOS 3.1版本及以上的应用及服务开发&#xff0c;提供了代码智能编辑、低代…