
Exploit Python per CVE-2022-36804, che consente l'esecuzione remota di comandi e il trasferimento di file su Bitbucket Server/Data Center vulnerabili tramite richieste di archivio appositamente create.
Questo repository contiene uno script di exploit in Python per la vulnerabilità CVE-2022-36804 di Atlassian Bitbucket Server/Data Center. Il problema è una falla di command injection nel flusso dell'archivio Git, in cui parametri prefix appositamente costruiti possono essere interpretati dal server ed eseguiti come comandi shell.
CVE-2022-36804 è una vulnerabilità di esecuzione remota di comandi in Bitbucket Server/Data Center. È stata causata dalla gestione non sicura del valore prefix sull'endpoint di archivio, consentendo a dati controllati dall'attaccante di raggiungere un'invocazione della shell tramite Git. La conseguenza è l'esecuzione di comandi non autenticata o autenticata, a seconda del percorso e del modello di distribuzione.
Questo script prende di mira l'endpoint di archivio vulnerabile e utilizza una richiesta appositamente costruita per innescare l'iniezione.
Questo PoC è pensato per le build di Bitbucket Server/Data Center interessate e coperte dall'advisory Atlassian per CVE-2022-36804. In pratica, l'intervallo vulnerabile include le release 7.x/8.x precedenti di Bitbucket Server/Data Center antecedenti alle versioni corrette elencate da Atlassian. Non è destinato a build patchate o aggiornate.
Usalo solo contro sistemi di tua proprietà o per i quali sei esplicitamente autorizzato a effettuare test.
Lo script invia una richiesta a:
/rest/api/latest/projects/{project}/repos/{repo}/archive
con un parametro prefix appositamente costruito che appare così:
ax%00--exec=`<command>`%00--remote=origin
Il trucco consiste nello sfruttare il byte nullo / il percorso dei comandi Git in modo che il server finisca per eseguire un comando shell dalla richiesta di archivio. Lo script avvolge il comando in gzip + base64 quando necessario, così l'output viene restituito in modo compatto e decodificato localmente.
Lo script supporta due modalità principali:
python cve-2022-36804_v5.py <url> <username> <password> -p <project> -r <repo> -c "whoami"
Opzioni:
-c, --command: esegue un comando--no-encode: invia il comando grezzo senza avvolgimento gzip+base64-p, --project: chiave del progetto Bitbucket-r, --repo: slug del repository Bitbucketpython cve-2022-36804_v5.py <url> <username> <password> -p <project> -r <repo> -f /path/to/local.bin -o /tmp/remote.bin
Questo legge un file locale in chunk, codifica ogni chunk in base64 e usa l'exploit per ricostruirlo sul server nel percorso di destinazione.
requests.Session con autenticazione di base.verify = False) per semplificare i test contro endpoint self-signed.Questo strumento è destinato esclusivamente a ricerca sulla sicurezza autorizzata e test controllati. Usarlo contro sistemi che non possiedi o per i quali non hai il permesso di testare è illegale e non etico.