了解TiDB数据库的人可能并不多,今天记录下TiDB-PD未授权漏洞主要原因有:

  • TiDB目前应用越来越广泛,特别是目前k8s和各类云快速发展
  • 网上baidu甚至google对TiDB-PD漏洞基本文章很少
  • 扫到TiDB-PD端口服务很容易将其和etcd混淆

ps:漏洞本身比较简单,文章就简单记录下

TiDB简介

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,主要特性如下:

  • 高度兼容mysql协议,迁移成本低,支持ACID事务
  • 故障自恢复的高可用,可水平线性弹性扩展
  • TiDB同 k8s深度耦合,支持公有云等,部署、配置和维护十分简单

TiDB由三个组件构成:

  • TiDB Server
    TiDB Server 负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果。 TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展
  • PD Server
    Placement Driver (简称 PD) 是整个集群的管理模块,其主要工作有三个: 一是存储集群的原信息;二是对 TiKV 集群进行调度和负载均衡;三是分配全局唯一且递增的事务 ID
  • TiKV Server
    TiKV Server 负责存储数据,TiKV 是一个分布式的提供事务的 Key-Value 存储引擎,存储数据的基本单位是 Region

TiDB-PD未授权利用

  1. PD服务默认开在2379端口(和etcd服务一样),服务起来后一般用于客户端通过2379的http服务进行通信。
  2. 扫描器如果扫到了,很容易将其和etcd混淆
    在这里插入图片描述
  3. 通过PD的API和服务端进行交互,如调用pd/api/v1/config接口,查看服务端集群配置,一般不会只有1台,这边是有3台
    在这里插入图片描述
  4. 查看标签
    在这里插入图片描述
  5. 还有很多其他api,可以对服务端进行增删改操作,如对Schedule进行更新和删除、对PD成员设置优先级和对region进行删除等,具体API详情见官网:https://download.pingcap.com/pd-api-doc.html
    在这里插入图片描述

修复建议

  1. 关闭TiDB-PD的2379端口对公网访问
  2. 配置启用身份验证:https://docs.pingcap.com/zh/tidb/stable/enable-tls-between-clients-and-servers
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐