CVE-2020-9483 apache skywalking SQL注入漏洞

漏洞概述

当使用H2 / MySQL / TiDB作为Apache SkyWalking存储时,通过GraphQL协议查询元数据时,存在SQL注入漏洞,该漏洞允许访问未指定的数据。 Apache SkyWalking 6.0.0到6.6.0、7.0.0 H2 / MySQL / TiDB存储实现不使用适当的方法来设置SQL参数。

环境搭建

拉取vulhub

git clone https://github.com/vulhub/vulhub.git

搭建镜像

cd /vulhub/skywalking/8.3.0-sqli
docker-compose up -d

在这里插入图片描述
访问8080端口
在这里插入图片描述

漏洞复现

在首页刷新即可抓到报文。
在这里插入图片描述

输入payload

{"query":"query queryLogs($condition: LogQueryCondition) {queryLogs(condition: $condition) {totallogs {serviceIdserviceNameisErrorcontent}}
}
","variables":{"condition":{"metricName":"INFORMATION_SCHEMA.USERS union all select h2version())a where 1=? or 1=? or 1=? --","endpointId":"1","traceId":"1","state":"ALL","stateCode":"1","paging":{"pageSize":10}}}
}

查看返回结果
在这里插入图片描述
在这里插入图片描述

漏洞复现成功

漏洞原理

源码:https://github.com/apache/skywalking/releases/tag/v8.3.0
graphql是skywalking的一种查询协议,如果请求以下列JSON给出:

{bookById(id: "book-1"){idnamepageCountauthor {firstNamelastName}}
}

则返回结果为:

{"bookById": {"id":"book-1","name":"Harry Potter and the Philosopher's Stone","pageCount":223,"author": {"firstName":"Joanne","lastName":"Rowling"}}
}

通常,graphql中会对对象类型进行定义:

type Query {bookById(id: ID): Book
}type Book {id: IDname: StringpageCount: Intauthor: Author
}type Author {id: IDfirstName: StringlastName: String
}

此次产生漏洞的queryLogs为:
oap-server\server-query-plugin\query-graphql-plugin\src\main\resources\query-protocol\log.graphqls:
(这里不知道为什么下载的源码中没有,只能跑到github上看)
在这里插入图片描述

oap-server\server-query-plugin\query-graphql-plugin\src\main\java\org\apache\skywalking\oap\query\graphql\resolver\LogQuery.java
在这里插入图片描述

oap-server\server-storage-plugin\storage-jdbc-hikaricp-plugin\src\main\java\org\apache\skywalking\oap\server\storage\plugin\jdbc\h2\dao\H2LogQueryDAO.java
在这里插入图片描述

采取了直接拼接的方式。

5、修复方法
修复后使用了占位符,即预编译。

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

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

相关文章

GPIO基本原理

名词解释 高低电平:GPIO引脚电平范围:0V~3.3V(部分引脚可容忍5V)数据0就是0V,代表低电平;数据1就是3.3V,代表高电平; STM32是32位的单片机,所以内部寄存器也都是32位的…

用于细胞定位的指数距离变换图--Exponential Distance Transform Maps for Cell Localization

论文:Exponential Distance Transform Maps for Cell Localization Paper Link: Exponential Distance Transform Maps for Cell Localization Code(有EDT Map的生成方式): https://github.com/Boli-trainee/MHFAN 核…

网络编程 - TCP协议

一,TCP基本概念 TCP的特性: TCP是有连接的:TCP想要通信,就需要先建立连接,之后才能通信 TCP是可靠传输:网络上进行通信,A给B发消息,这个消息是不可能做到100%送达的,所以…

树模型(三)决策树

决策树是什么?决策树(decision tree)是一种基本的分类与回归方法。 长方形代表判断模块 (decision block),椭圆形成代表终止模块(terminating block),表示已经得出结论,可以终止运行。从判断模块引出的左右箭头称作为分支(branch)…

【AI视野·今日CV 计算机视觉论文速览 第268期】Mon, 16 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Mon, 16 Oct 2023 Totally 61 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Vision-by-Language for Training-Free Compositional Image Retrieval Authors Shyamgopal Karthik, Karsten Roth, Massi…

ESP RainMaker 客户案例 #2|PitPat

PitPat 是美国领先的健身品牌,致力于通过游戏化的方式改变人们的锻炼习惯,增强健康。该品牌通过智能设备和相关的移动应用程序为从事家庭锻炼的个人提供虚拟跑步体验。目前,PitPat 针对不同受众群体,开发了Superun,Dee…

从入门到进阶 之 ElasticSearch 文档、分词器 进阶篇

🌹 以上分享 ElasticSearch 文档、分词器 进阶篇,如有问题请指教写。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有需要,请👍点赞💖收藏&#…

【Electron】Not allowed to load local resource

问题描述 使用 audio 标签播放音频文件,控制台报错 Not allowed to load local resource。 原因分析 通常是安全策略所引起的。Electron 默认情况下禁止加载本地资源,以防止潜在的安全风险。 解决方案 在 main.js 中找到创建 BrowserWindow 实例的代码…

latex:使用中文字体

解决方案 我这里使用的是gbsn(其他的字体我不知道,如果有补充请评价),详细说明如下:

Python学习基础笔记七十二——IDE集成开发环境

集成开发环境,英文缩写是IDE。 IDE可以帮你更高效地开发项目代码。因为它提供了非常实用的功能,比如项目文件管理、语法高亮、代码导航、自动补齐代码、语法静态检查、调试、版本控制等等。 两款IDE:Pycharm和VSCode。 pycharm中的代码文件都…

万界星空科技/生产制造执行MES系统/开源MES/免费MES

开源系统概述: 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、免费MES、免费智能制造系统、免费排产系统、免费排班系统、免费质检系统、免费生产计划系统、免费数字化大屏。 万界星空开源MES制造执行系统的Java开源版本。开源mes…

Qtday2

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {//窗口设置ui->setupUi(this);this->setWindowTitle("原神");this->setWindowIcon(QIcon(":/picture/genshi…

在数组中合并相同id数据,并且数据中某一字段不一致也统一合并进去

封装的合并的函数 function formateArray(data:any){// ts-ignorelet res data.reduce((ac,a) > {// ts-ignorelet index ac.findIndex(x > x.id a.id);index -1 ? ac.push({...a}) : ac[index] {...ac[index],...a};return ac;},[])return res;}使用 allData 原始…

【jmeter】接口测试流程

1、Jmeter简介 Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试。 Jmeter具备高移植性,可以实现跨平台运行。 Jmeter可以实现分布式负载。 Jmeter采用多线程,允许通过多个线程并发取样或通过独…

Cron表达式每隔两小时执行一次

Cron表达式每隔两小时执行一次 0 0 */2 * * ?验证正确性

算法刷题总结(全)

刷题总结 by lds 2023-9-5 文章目录 1.数组/字符串1.1 合并两个有序数组【easy】1.2 移除元素【easy】1.3 删除有序数组中的重复项【easy】1.4 删除有序数组中的重复项II【mid】1.5 多数元素【easy】1.6 大数相加---【美团面试手撕题目】1.7 轮转数组【mid】1.8 买卖股票的最佳…

掌握C++魔法:深入解析类与对象(上篇)

W...Y的主页 😊 代码仓库分享 💕 🍔前言: 之前我们学习了从C语言转到C后我们需要知道的一些关键改动与变化。今天我们就要学习C独有的类与对象。在谈论类与对象之前我们先说一下什么是面向对象的C,什么是面向过程的C语…

NSDT孪生编辑器助力智慧城市

技术有能力改变城市的运作方式,提高效率,为游客和居民提供更好的体验,实现更可持续的运营和更好的决策。 当今城市面临的主要挑战是什么,成为智慧城市如何帮助克服这些挑战? 我们生活在一个日益城市化的世界&#xf…

【复盘】记录一次数据库连接资源占用完毕

背景 因为历史原因项目使用的是JDBC原始SQL,然后进行拉去三方数据进行解析分析。跑了一会之后发现影响到了线上业务,连接错误。 一查看其实就是刚才跑的定时导致的,分析了下没有及时释放数据库连接。导致资源耗尽。数据库异常。 所以这里其实…

Java身份证OCR识别 - 阿里云API【识别准确率超过99%】

1. 阿里云API市场 https://market.aliyun.com/products/57124001/cmapi00063618.html?spm5176.28261954.J_7341193060.41.60e52f3drduOTh&scm20140722.S_market%40%40API%E5%B8%82%E5%9C%BA%40%40cmapi00063618._.ID_market%40%40API%E5%B8%82%E5%9C%BA%40%40cmapi0006361…