Git and SVN Pentesting

Git and SVN pentesting techniques for identifying, exploiting source code repository services, enumeration, attack vectors and post-exploitation insights.

port 9418port 3690port 80port 443

Git and SVN

Default Ports: 9418 (Git), 3690 (SVN), 80/443 (HTTP/HTTPS)

Git and SVN are source code version control systems. In pentests, exposed repositories can leak source code, commit history, credentials, deployment scripts, CI configs, and internal architecture.

Connect​

Using Git​

Use Git clients to test clone and ls-remote access.

git ls-remote git://target.com/project.git  
git clone git://target.com/project.git  
git clone https://target.com/project.git  

Using SVN​

Use SVN clients to list repositories and checkout accessible paths.

svn list svn://target.com/  
svn checkout svn://target.com/project  
svn list https://target.com/svn/project  

Using curl​

HTTP checks reveal exposed .git, SVN, cgit, GitWeb, or repository portals.

curl -I https://target.com/.git/  
curl -I https://target.com/.svn/  
curl -I https://target.com/git/  
curl -I https://target.com/svn/  

Recon​

Service Detection with Nmap​

Scan native Git, native SVN, and web repository ports.

nmap -p 80,443,3690,9418 -sV target.com  
nmap -p 80,443 --script http-title,http-headers target.com  
nmap -p 3690,9418 --open -sV 10.10.10.0/24  

Web Repository Discovery​

Look for common repository interfaces and leaked metadata directories.

ffuf -u https://target.com/FUZZ -w wordlist.txt -mc all  
curl -I https://target.com/.git/HEAD  
curl -I https://target.com/.svn/entries  
curl -I https://target.com/.git/config  

Git Protocol Discovery​

The Git protocol may allow unauthenticated clone or repository listing.

git ls-remote git://target.com/repo.git  
nmap -p 9418 --script git-info target.com  

SVN Discovery​

SVN may expose repository roots, branches, and revision history.

svn list svn://target.com/  
svn info svn://target.com/project  
nmap -p 3690 -sV target.com  

Enumeration​

Exposed .git Enumeration​

An exposed .git directory can allow full source recovery.

curl https://target.com/.git/HEAD  
curl https://target.com/.git/config  
git-dumper https://target.com/.git/ ./dumped-git  

Git Repository Enumeration​

After cloning, enumerate branches, tags, remotes, and logs.

git branch -a  
git tag  
git remote -v  
git log --oneline --all --decorate  

Git History Enumeration​

Secrets often appear in old commits even when removed later.

git log --all --stat  
git grep -n -I 'password\|secret\|token\|apikey' $(git rev-list --all)  
gitleaks detect --source .  
trufflehog git file://$(pwd)  

SVN Repository Enumeration​

SVN history and properties can expose old files and metadata.

svn list -R svn://target.com/project  
svn log svn://target.com/project  
svn info svn://target.com/project  
svn propget -R svn:externals svn://target.com/project  

SVN Working Copy Enumeration​

Leaked .svn directories can expose source and repository URLs.

curl https://target.com/.svn/entries  
curl https://target.com/.svn/wc.db -o wc.db  
sqlite3 wc.db 'select local_relpath, repos_path from NODES limit 20;'  

Attack Vectors​

Anonymous Clone​

Anonymous clone exposes current source and sometimes full history.

git clone git://target.com/project.git  
git clone https://target.com/project.git  
svn checkout svn://target.com/project  

Exposed Metadata Directory​

Leaked .git or .svn directories can reconstruct private code.

git-dumper https://target.com/.git/ ./dumped-git  
svn checkout https://target.com/.svn/ ./dumped-svn  

Secret Leakage​

Search source and history for credentials and tokens.

gitleaks detect --source .  
trufflehog git file://$(pwd)  
rg -n 'password|passwd|secret|token|apikey|private_key|BEGIN RSA|AWS_ACCESS_KEY' .  

Writable Repository Access​

Write access can alter code, CI configs, hooks, or release assets.

git push origin test-branch  
svn commit -m "authorized test commit"  

CI/CD Pivot​

Repository files often reveal build systems and deployment secrets.

rg -n 'Jenkinsfile|gitlab-ci|github/workflows|deploy|kubeconfig|helm|docker login|registry' .  
rg -n 'NEXUS|ARTIFACTORY|HARBOR|AWS_|AZURE_|GCP_|DOCKER_' .  

Post-Exploitation​

Repository Impact Review​

Document branches, tags, remotes, and sensitive paths.

git branch -a > branches.txt  
git tag > tags.txt  
git remote -v > remotes.txt  
git log --oneline --all > commits.txt  

Secret Validation​

Do not use secrets broadly; validate scope safely and report rotation needs.

gitleaks detect --source . --report-format json --report-path gitleaks.json  
trufflehog filesystem . --json > trufflehog.json  

Internal Mapping​

Source code reveals endpoints, hostnames, and dependencies.

rg -n 'https?://|jdbc:|mongodb://|redis://|amqp://|ldap://|kafka|s3://' .  
rg -n 'prod|staging|internal|corp|cluster|namespace|tenant' .  

Useful Tools​

Tool| Purpose
---|---
git| Git clone and history review
svn| SVN listing and checkout
git-dumper| Exposed .git recovery
curl| Metadata path checks
ffuf| Directory discovery
gitleaks| Secret scanning
trufflehog| Secret scanning
sqlite3| SVN wc.db review

Security Misconfigurations​

Misconfiguration| Risk
---|---
Anonymous Git clone| Source and history exposure
Anonymous SVN checkout| Source and revision exposure
Exposed .git directory| Full repository reconstruction
Exposed .svn directory| Working copy and source leakage
Secrets in history| Credential compromise
Writable repository access| Supply-chain compromise
CI/CD configs exposed| Build and deployment pivot
Weak repository auth| Unauthorized source access