Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
opentsdb_key_cmd_injection — Un exploit per OpenTSDB <= 2.4.1 iniezione di comandi (CVE-2023-36812/CVE-2023-25826) scritto in Fortran | Kitploit
Strumenti/GitHubGitHub/erikwynter/opentsdb_key_cmd_injection
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingCommand and ControlRed Teaming
GitHuberikwynter/opentsdb_key_cmd_injection

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

opentsdb_key_cmd_injection

Un exploit per OpenTSDB <= 2.4.1 iniezione di comandi (CVE-2023-36812/CVE-2023-25826) scritto in Fortran

Vedi Repository
712 anni faNon ancora revisionato

opentsdb_key_cmd_injection

Un exploit per l'iniezione di comandi in OpenTSDB <= 2.4.1 (CVE-2023-36812/CVE-2023-25826) scritto in Fortran

Informazioni

Questo è un exploit per una vulnerabilità di iniezione di comandi in OpenTSDB versioni 2.4.1 e precedenti (CVE-2023-36812/CVE-2023-25826). L'exploit è scritto in Fortran moderno e sfrutta la libreria ufficiale http-client di Fortran creata all'inizio di quest'anno.

Dettagli della vulnerabilità

OpenTSDB è un database di serie temporali open-source scritto in Java. Nel 2020, una vulnerabilità di iniezione di comandi è stata scoperta nelle versioni 2.4.0 e precedenti, che poteva essere sfruttata per ottenere l'esecuzione remota di codice sull'host con privilegi di root. Poiché OpenTSDB non supporta l'autenticazione, questa vulnerabilità, tracciata come CVE-2020-35476, poteva essere sfruttata da chiunque avesse accesso all'interfaccia web di OpenTSDB. Il problema è stato risolto nella versione 2.4.1.

Quest'anno è stato scoperto che la patch per CVE-2020-35476 era incompleta e l'iniezione di comandi è ancora possibile in OpenTSDB 2.4.1 attraverso diversi vettori.

Dettagli:

  • Tracciata come: CVE-2023-36812. Vale la pena notare che anche CVE-2023-25826 sembra descrivere la stessa vulnerabilità, ed entrambe le CVE rimandano alla stessa patch.
  • Avviso di sicurezza: https://github.com/OpenTSDB/opentsdb/security/advisories/GHSA-76f7-9v52-v2fw
  • Crediti: Gal Goldstein e Daniel Abeles di Oxeye
  • Patch: La patch sarà introdotta nella 2.4.2, che non è ancora un rilascio ufficiale. Al momento della scrittura, il rilascio più recente di OpenTSDB è la 2.4.1, quindi è probabile che la maggior parte delle istanze di OpenTSDB in produzione siano vulnerabili. Detto questo, le FAQ di OpenTSDB sottolineano che questo progetto "è stato scritto solo per uso interno" e "non è stato sottoposto a nessuna revisione di sicurezza e non include l'autenticazione."

Perché Fortran?

La versione breve è che ho visto questa conversazione: why

L'idea di scrivere un exploit in il linguaggio di programmazione usato per portare l'uomo sulla luna mi ha incuriosito così tanto che ho dovuto esplorarlo io stesso. Questo exploit è il risultato di quell'esperimento. Alla domanda se abbia avuto successo, posso rispondere solo con queste sagge e maledette parole che uniscono tutti gli sviluppatori nel sangue: Funziona sulla mia macchina. ¯\(ツ)/¯

In ogni caso, i miei principali insegnamenti da questo progetto sono:

  • Fortran è in realtà piuttosto interessante e sorprendentemente facile da imparare.
  • L'ecosistema moderno di Fortran, incluso il gestore di pacchetti fpm, mostra grande potenziale.
  • Fortran è un linguaggio fortemente tipizzato, e ho scoperto che questo è un bene perché ho incontrato pochi fastidiosi errori a runtime.
  • I progetti Fortran con dipendenze sono grandi perché fpm include il codice sorgente delle dipendenze direttamente nel tuo progetto. Il vantaggio è che evita l'inquinamento del sistema.
  • Il supporto delle librerie è relativamente limitato e caotico rispetto ai linguaggi moderni. Sfortunatamente questo non riguarda solo la libreria http-client.
  • Prevedibilmente, è più difficile trovare buona documentazione e suggerimenti per la risoluzione dei problemi rispetto alla maggior parte dei linguaggi di programmazione moderni, anche se ci sono ancora molti post utili su StackOverflow e forum dimenticati dei primi anni 2000.
  • Strumenti AI come ChatGPT e GitHub Copilot sono compagni di programmazione ancora meno affidabili rispetto ai linguaggi moderni.

Tutto sommato, non è facile immaginare che questo linguaggio acquisti davvero importanza nella sicurezza offensiva, se non altro perché ci sono così tante valide alternative moderne per qualsiasi caso d'uso immaginabile (Python, Go, Rust, Ruby, C# solo per citarne alcuni). Ma se ti piace sperimentare con diversi linguaggi di programmazione e non ti dispiace incapsulare le tue stringhe in chiamate trim() tutto il tempo (PER FAVORE PRENDI NOTA DI QUESTO, TI RISPARMIERÀ MOLTA SOFFERENZA), Fortran vale assolutamente la pena di provarlo. Sto seriamente facendo il tifo per questo linguaggio ora e potrei riconsiderarlo se continueranno a migliorare il supporto per la libreria http-client, specialmente se aggiungeranno una libreria http-server a un certo punto.

TL;DR: La libreria http-client di Fortran fa brr.

Utilizzo

  • Avvia un listener sul tuo sistema, ad esempio:
root@kitploit:~
nc -nlvp 1337
  • In una finestra separata, naviga nella directory opentsdb_key_cmd_injection
root@kitploit:~
# cd /path/to/opentsdb_key_cmd_injection/
  • Esegui il progetto tramite fpm (assicurati di averlo installato prima. Vedi le istruzioni di installazione nella sezione successiva)
root@kitploit:~
# /path/to/fpm run -- -t <target_url> -l <lhost> -p <lport> [-v]

Opzioni:

  • -t - URL TARGET: l'URL base per OpenTSDB (obbligatorio)
  • -l - LHOST: l'IP del sistema dove stai eseguendo un listener (obbligatorio)
  • -p - LPORT: la porta del listener (obbligatorio)
  • -v - VERBOSE: abilita la stampa dettagliata (opzionale)

Installazione

  • Installa gfortran. Su sistemi basati su Debian si può fare tramite:
root@kitploit:~
apt install gfortran
  • Installa fpm. Il modo più semplice è scaricare un binario per l'ultima versione stabile dai rilasci di fpm su GitHub e poi renderlo eseguibile:
root@kitploit:~
chmod +x /<path>/to/fpm

Assicurati di avere git installato sul tuo sistema prima di installare fpm.

Poc || GTFO

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

Configurare un'istanza OpenTSDB per il test

Installazione manuale (non consigliata)

Per un'installazione manuale, puoi seguire le istruzioni ufficiali qui. Questo può essere fastidioso, quindi consiglio di usare Docker.

Installazione tramite Docker (consigliata)

Per la versione 2.4.0, puoi usare l'immagine docker di vulnhub e seguire le istruzioni di installazione qui. Quell'immagine è stata creata per CVE-2020-35476, una vulnerabilità più vecchia in OpenTSDB fino alla 2.4.0.

Per la versione 2.4.1 e probabilmente qualsiasi altra versione, puoi sfruttare l'immagine vulhub per OpenTSDB 2.4.0 e modificarla per installare la versione desiderata. Ho seguito questo approccio per la 2.4.1 e ha funzionato bene.

  • Innanzitutto, prendi i file Dockerfile e docker-entrypoint.sh di vulhub OpenTSDB 2.4.0 da qui e salvali in una directory dedicata.
  • Nel Dockerfile, sostituisci tutte le occorrenze di 2.4.0 con la versione desiderata, ad esempio 2.4.1
  • Non sono necessarie modifiche per docker-entrypoint.sh
  • Crea un file docker-compose.yml con il seguente contenuto:
root@kitploit:~
version: '2'
services:
 opentsdb:
   build: ./path-to-your-dockerfile-directory
   ports:
    - "4242:4242"

Ho usato questa struttura di file:

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"
  • Infine, costruisci ed esegui l'immagine tramite docker-compose lanciando il comando seguente nella directory con il file docker-compose.yml:
root@kitploit:~
docker-compose up -d
  • Dopo alcuni secondi, OpenTSDB sarà disponibile sulla porta 4242. Non è richiesta alcuna configurazione aggiuntiva.

Una breve storia di Fortran (perché no)

Fortran è principalmente noto come un linguaggio arcaico che ha giocato un ruolo importante nella storia dell'informatica moderna, ma non può più essere considerato rilevante oggi. È stato rilasciato per la prima volta nel 1957, precedendo sia ARPANET che Unix di oltre un decennio. Basandosi su questo video sulle serie temporali è stato il linguaggio di programmazione dominante per tutti gli anni '60 e '70, ed è rimasto tra i 10 linguaggi più popolari fino alla fine degli anni '90. Ma quando Windows 98 è stato rilasciato, era chiaramente passato di moda, in favore di linguaggi più moderni come C, C++, Java e JavaScript, tutti ancora ampiamente utilizzati oggi.

A parte le anime coraggiose che mantengono sistemi legacy, dubito che molte persone in IT (figuriamoci fuori dalla nostra bolla) abbiano incontrato Fortran negli ultimi due decenni, o siano addirittura consapevoli che esista ancora. Nonostante ciò, Fortran rimane in sviluppo attivo. Come dichiarato sul sito ufficiale di Fortran, il linguaggio è stato rivisto l'ultima volta nel 2018, e speriamo di vedere un'altra revisione quest'anno (2023). In effetti, sembra che la comunità di Fortran sia stata molto attiva negli ultimi anni, pubblicando diversi progetti importanti per modernizzare l'ecosistema, tra cui:

  • stdlib: la prima libreria standard di Fortran (primo rilascio: 2021)
  • fpm: un gestore di pacchetti e sistema di build moderno chiamato fpm (primo alpha: 2020)
  • http-client: la libreria client HTTP precedentemente citata (primo rilascio: 2023).

Considerato ciò, sembra che i manutentori mirino a un ritorno in scena di Fortran, o almeno a dare al linguaggio una possibilità di sopravvivere per qualche altro decennio. Anche se il più fanatico sostenitore di Fortran probabilmente non si aspetta di vedere il linguaggio rientrare nella top 10 dei linguaggi di programmazione più popolari, la modernizzazione in corso del linguaggio e del suo ecosistema ha probabilmente reso Fortran più rilevante di quanto non lo sia stato negli ultimi uno o due decenni.

Scarica lo strumento