
🫖 PoC di validazione RCE CVE-2026-60004 Gitea a bersaglio singolo diretto
Uno strumento di validazione diretto e a bersaglio singolo per la vulnerabilità di esecuzione remota di codice tramite Git-hook
diffpatchdi Gitea.
Questo repository contiene il validatore AfterDark mirato: uno script, un bersaglio, una singola esecuzione. Non sono presenti sottocomandi di discovery, ricognizione, verifica o altri.
Questo progetto è fornito solo per test di sicurezza autorizzati, validazione difensiva, ricerca e formazione. Utilizzalo esclusivamente su sistemi di tua proprietà o per i quali disponi di esplicita autorizzazione scritta.
Gli autori e i contributori non sono responsabili di uso improprio, danni, interruzioni di servizio, perdita di dati o conseguenze legali. Sei responsabile del rispetto delle leggi applicabili, dei contratti, delle regole di ingaggio e dei requisiti di divulgazione.
Questa è una proof of concept attiva di RCE. Crea un account, crea un repository privato, scrive un marcatore contrattuale ed esegue un comando come utente del sistema operativo di Gitea. Trattalo di conseguenza. 🛡️
CVE-2026-60004 interessa il flusso di lavoro diffpatch dei repository di Gitea. Un attaccante con accesso in scrittura al repository può inviare contenuti di patch controllati che installano e attivano un Git hook, determinando l'esecuzione di comandi come account di servizio di Gitea.
| Elemento | Dettaglio |
|---|---|
| Prodotto | Gitea |
| Versioni interessate | >= 1.17.0, < 1.27.1 |
| Versione corretta | 1.27.1 |
| Impatto | Esecuzione remota di comandi come utente OS di Gitea |
| Advisory upstream | GHSA-rcr6-4jqh-j84m |
Forgejo e altri fork richiedono una revisione manuale dell'implementazione e non sono automaticamente considerati interessati.
Ogni esecuzione svolge un flusso di lavoro fisso:
post-index-change predisposto tramite diffpatch.id per impostazione predefinita.Lo strumento accetta solo un singolo bersaglio. Non dispone di modalità di elenco bersagli, wildcard, scansione di massa o discovery passiva.
PATHLo script utilizza solo la libreria standard di Python. Non è richiesto alcun pip install.
git clone https://github.com/InfoSec-DB/CVE-2026-60004-Gitea-RCE-PoC.git
cd CVE-2026-60004-Gitea-RCE-PoC
python3 scanner.py --help
python3 scanner.py \
--contract-number ENG-2026-001 \
--username audit-eng-2026-001 \
--password 'use-a-unique-disposable-password' \
https://gitea.example
Sono disponibili anche le opzioni brevi:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
https://gitea.example
🚨 La password viene fornita tramite riga di comando e visualizzata nel pannello dei risultati finali. Utilizza solo una credenziale di test unica e usa-e-getta. Tieni presente che gli argomenti della riga di comando possono essere conservati nella cronologia della shell o temporaneamente visibili agli strumenti locali di ispezione dei processi.
Il comando predefinito è id. È possibile fornire un comando personalizzato con ambito ristretto tramite --cmd:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--cmd 'uname -a' \
https://gitea.example
I comandi personalizzati non hanno intenzionalmente alcun timeout. Il validatore attende che il comando remoto termini, quindi evita comandi interattivi o di lunga durata a meno che l'engagement non lo richieda specificamente.
Per impostazione predefinita, ogni esecuzione scrive in:
afterdark-results/<contract>/<UTC timestamp>/
Puoi selezionare una directory root diversa o una directory di esecuzione esatta:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--results-root ./engagement-evidence \
https://gitea.example
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--output-dir ./engagement-evidence/run-01 \
https://gitea.example
Ogni esecuzione crea file privati 0600 e rifiuta di sovrascrivere risultati esistenti:
confirmation.json — bersaglio, risultato della versione, nome account, timestamp, comando, codice di ritorno e artefatti acquisiticonfirmation.command-output.txt — output completo del comando remotoLe prove possono contenere informazioni sensibili dell'engagement. Non committarle in Git. Il .gitignore incluso esclude i percorsi dei risultati predefiniti e i nomi di file di prova comuni.
Il validatore non elimina automaticamente gli artefatti lato server. Dopo la valutazione, un amministratore autorizzato dovrebbe:
afterdark-* generato/tmp/gitea-validation-<contract>/client.txt1.27.1 o successivaUn risultato positivo dimostra l'esecuzione di comandi come account di servizio di Gitea. Di per sé non dimostra accesso root, persistenza, movimento laterale o compromissione completa dell'host.
idI test esercitano il parsing e la costruzione del PoC senza effettuare richieste di rete:
python3 -m unittest discover -s tests -v
Sono benvenuti miglioramenti che rendano il validatore più sicuro, più affidabile o più facile da pulire. Non inviare dettagli di bersagli reali, credenziali, prove private o payload distruttivi.
Per vulnerabilità in questo strumento, segui SECURITY.md.
Costruito per una validazione di sicurezza attenta e vincolata al contratto. 🫖🛡️