首 页IT知识库翔宇问吧收藏内容
当前位置:算搜IT乐园IT知识库电脑基础安全防护

Apache SkyWalking SQL注入漏洞复现分析

减小字体增大字体作者:本站  来源:本站整理  发布时间:2020-07-03 21:47:34

本文转自:百度安全>安全社区,原文链接地址:https://anquan.baidu.com/article/1097

1、前言

Apache SkyWalking 是一款开源的应用性能监控系统,包括指标监控,分布式追踪,分布式系统性能诊断等。近日,百度云安全团队监测到国内某厂商发布了Apache SkyWalking SQL注入漏洞的风险通告,漏洞编号为CVE-2020-9483。当SkyWalking使用H2、MySQL或者TiDB作为存储方案时,攻击者可通过默认未授权的GraphQL接口构造恶意请求,从而获取敏感数据。本文主要由github上的漏洞补丁分析而来,若有不正确的地方还请及时指正。

2、调试环境搭建

漏洞影响6.0.0-6.6.0、7.0.0版本,根据github上项目文档,直接利用IDEA调试需要先进行编译。本文为了简单使用远程调试的方式,在官网下载编译好的6.5.0版本

编辑oapServ ice.sh加入如下调试命令并运行。

1.png

下载6.5.0源码

(https://www.apache.org/dyn/closer.cgi/skywalking/6.5.0/apache-skywalking -apm-6.5.0-src.tgz)

导入IDEA,添加Remote Configuration,并设置module classpath为oap-server。至此,远程调试环境搭建完成。

2.png

3、漏洞分析

由于openwall上对该漏洞描述很简单,我们还是到github上寻找最近的issue。

经过寻找我们发现了下面的pull request

(https://github.com/apache/skywalking/pull/4639/commits /2b6aae3b733f9dbeae1d6eff4f1975c723e1e7d1),

作者为wu-sheng和openwall上漏洞作者相印证,基本确定该处文件修改为漏洞成因。

修改涉及getLinearIntValues、getMultipleLinearIntValues、getThermodynamic等多个方法但修复手法类似,本文以getLinearIntValues为例进行分析。

3.png

可以看到ids参数由原先的直接拼接sql改为利用”?”进行占位预编译,这是典型的SQL注入修复方法。我们向上搜索getLinearIntValues方法在哪里调用,

找到了org/apache/skywalking/oap/server/core/query/MetricQueryService.java的getLinearIntValues方法。

继续向上追踪getLinearIntValues,在org/apache/skywalking/oap/query/graphql/resolver /MetricQuery.java有了发现,并且MetricQuery类实现了GraphQLQueryResolver接口.

5.png

查询文档可知,支持GraphQL的查询服务要实现GraphQLQueryResolver接口,该接口仅仅是一个声明接口,没有任何方法。同时,在schema配置文件metric.graphqls中,我们发现getLinearIntValues方法的查询配置。

6.png

对GraphQL语法不熟悉的师傅可以通过如下例子进行熟悉:

7.png

HeroNameAndFriends是操作名称,可用可不用,方便回溯查询记录。

$episode声明一个变量,它的类型是Episode,默认值为JEDI。$withFriends同理。变量在后面通过JSON传递值。

firsthero是别名。为了避免冲突,可以取别名。

hero后面的(episode: $episode)表示参数,可以限定查询的条件,参数的值可以为常量。

...on Droid和...on Human在整个查询中,我们查询的主题是hero(主角),而根据Query定义,hero返回的值由getHero函数和传入参数episode决定,该函数返回一个对象,对象的type可能是Human或者Droid。这部分语法就是根据查询返回对象的不同类型而输出不同的结果。

通过上述知识我们可以构造如下请求,通过Union注入获取当前用户。

8.png

通过Debug发现ids参数引入恶意语句直接拼接到SQL语句中。同样的,漏洞不仅仅只是存在getLinearIntValues方法,有多个方法可被利用,并且由于GraphQL接口默认是未授权的,漏洞危害较大建议用户及时修复。

9.png

4、安全产品解决方案

百度安全智能一体化产品已支持CVE-2020-9483检测和拦截,有需要的用户可以访问anquan.baidu.com联系我们。

参考链接:

https://github.com/apache/skywalking/commit/4ce2e9e87398efcee4b646af1143f4dc2ae10dc7

https://www.openwall.com/lists/oss-security/2020/06/15/1

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名:查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2020 suansuo.cn. All Rights Reserved.
周换手率怎么看,为什么选股之前一定要看一眼换手率?献给目前还在亏损的散户,少走10年弯路_婷咏股票网如何理解市净率这个指标,市盈率高但是市净率并不高说明什么问题?_姣荔股票网市盈率是什么除以什么,股票的市盈率是高好,还是低好?扣非净利润同比增长是利好吗,营业收入同比增长VS净利润同比增长哪个优先考量?利润和毛利的区别,米线的毛利怎么样,利润高吗,一碗能赚多少钱,求解答?净利润和扣非净利润是什么意思,智能按摩器公司轻松发布上市后首份半年报,扣非后净利润同比增长377.68%股票卖点如何把握,不了解股票的人想了解股票,如何入门?股市里的转债怎么交易,可转债打新中了,明天上市,开盘是几点?换手和实际换手率参考哪个更准确,单个交易日50%以上的换手率代表什么?换手率app,换手率App上的免费Level2是怎么用的,一直不明白这个有啥用?可转债每次申购多少手,多伦转债认购能赚260??大盘指数跟基金有什么关系,基金知识普及:怎么判断大盘的牛熊——巴菲特指数板块指数与大盘指数知识,指数型基金投资的基本知识大盘股票行情走势图怎么看,A股:一览本周大盘走势,下周大盘趋势前瞻!阳线阴线是什么意思,股市不骗人的“黄金铁律”:线上阴线买,线下阳线抛实时基金大盘走势行情分析,张历辉:5.19大盘继续回落深不见底?比特币,以太坊,狗狗币,柴犬币,柚子币,FIL,波卡,莱特币分析行情及操作建议a股大盘什么意思,再次确认底部,a股市场企稳的逻辑分析趋势面分析的目的,交易老手至深感悟:趋势 形态只分析三个要素,K线、均线、成交量波浪线是曲线吗,为什么一定要体验蕾丝内衣?同花顺五日均线和十日均线怎么看,午后看好同花顺300033,调整结束,反弹开始,短期多头走强,盯紧负债高房贷没批怎么解决,属于「知乎官方指南」的问答有哪些?负债率超过90的企业,据中科《科学》:一汽、蔚来助力业绩快速增长,负债率远超同行个人资产负债率计算公式,一建经济公式太多了,背不下来,谁有什么好的办法。谢谢?中国十大房地产企业负债排行榜图片,放榜②|11家房企净负债率逆势上涨,嘴上称高负债影响不大的建发转头狂降173.9个百分点资产负债表的填制,属于「知乎官方指南」的问答有哪些?负债与有息负债的区别,什么是负债房地产企业净负债率应低于?,43家上市房企有息负债高达4.7万亿!每年光利息就得还几千亿!预计负债最佳估计数的确定方法,信用卡、网贷相关高负债应对方法综述债务资本成本率的计算,ACF104 公司资本成本及其计算方法净资产收益率计算方法,股票净资产收益率ROE、总资产收益率ROA