De la réinitialisation du mot de passe à Getshell et autres vulnérabilités emballées

avant-propos

Il y a quelques jours, je prévoyais d'obtenir des points edusrc, donc j'allais utiliser le Nday que je n'avais pas brossé pour continuer à obtenir des points, et puis j'ai eu le cas d'aujourd'hui :

collecter des messages

Lorsque je creusais le certificat d'une école de sport auparavant, j'ai trouvé une faille dans les étapes de modification du mot de passe en modifiant le fichier html

Je suis donc prêt à étudier et cartographier cet atout et continuer à voir s'il peut être noté

Choisissez-en un à ouvrir :

Il n'y a pas d'image de fond, mais c'est toujours le même atout, car il y a un compte lors du test d'une académie sportive, vous pouvez donc entrer directement ce compte pour passer à l'opération suivante, mais cet atout n'a pas de compte, donc je prévois de collecter une carte d'étudiant

Pour vous aider à étudier la cybersécurité, vous pouvez recevoir gratuitement un ensemble complet d'informations :
① Carte mentale du parcours d'apprentissage et de croissance de la cybersécurité
② Plus de 60 boîtes à outils classiques de cybersécurité
③ Plus de 100 rapports d'analyse SRC
④ Plus de 150 livres électroniques sur les techniques d'attaque et de défense en matière de cybersécurité
⑤ Le guide d'examen de certification CISSP le plus faisant autorité + Banque de questions
⑥ Plus de 1800 pages de manuel de compétences pratiques CTF
⑦ Collection des dernières questions d'entretien des entreprises de sécurité réseau (y compris les réponses)
⑧ Guide de test de sécurité du client APP (Android + IOS)

Le numéro d'étudiant n'est rien, et alors que j'étais sur le point de penser à d'autres points d'entrée, j'ai soudainement découvert

L'exigence pour cette pièce est d'entrer les 5 derniers chiffres du numéro d'étudiant, et le numéro d'étudiant est généralement régulier, je suis donc allé générer un dictionnaire FUZZ

Le programme de sortie des dictionnaires de 00000 à 99999 en Python est :

dictionnaire = {} 
​for
i in range(100000): 
​key
= str(i).zfill(5) 
​value
= \"Valeur \" + key 
​dictionary
\[key\] = value 
​with
open(\' dict.txt\', \'w\') comme fichier :
pour
la clé, valeur dans le dictionnaire.items() :
file.write
(clé + \'\\n\')

Après avoir chargé le dictionnaire, vous devez régler l'heure

Enfin obtenu quelques comptes avec succès

EDUSRC n'accepte pas les vulnérabilités de dynamitage, donc cette carte d'étudiant ne peut pas être considérée comme une vulnérabilité, mais la carte d'étudiant est finalement sortie

Entrez ensuite directement le numéro d'étudiant à 5 chiffres de FUZZ

https://1.test.edu.cn/passworf/find1_html

Après que find1_html a été changé en find2_html

Entrez directement le mot de passe que nous voulons réinitialiser et connectez-vous en arrière-plan une fois le changement réussi :

Continuez à parcourir les points de fonction pour trouver des points décisifs :

Trouvé un point d'ajout actif

Il n'y a pas de point de téléchargement mais il y a une fonction de description. Essayez de construire directement la charge utile xss :

<Script>alerte("1)</Script>

XSS+1 stocké

Charge utile ici : <Script>alert("1)</Script>

By-pass avec étui

Plus tard, un autre point de téléchargement d'informations a été trouvé :

Ces quelques points sont transparents et n'ont pas ouvert BP, et puis je prévois d'ouvrir BP pour voir si je peux obtenir des percées

Cliquez sur le premier point sous le titre [Ajouter des informations sur le CV] dans ce bloc

On constate qu'il s'agit d'une interface d'édition d'informations, mais elle saute par une petite fenêtre, donc je ne l'ai pas remarqué lorsque j'ai ouvert BP pour capturer des paquets :

Après avoir cliqué sur Modifier le paquet de capture à droite :

Lorsque la valeur de l'identifiant est trouvée, fermez-la avec des guillemets simples pour afficher :

Côté navigateur :

Trouvé que l'instruction sql a été exécutée

Et s'est avéré être une requête GET :

Tirez donc le chemin de ce bloc vers le navigateur pour un accès direct

De cette façon, vous n'avez pas à vous soucier des formulaires anti-sqlmap, et c'est plus rapide sans emballer les paquets de données

Sqlmap a exécuté avec succès les données !

Injection SQL +1

Continuez ensuite vers [Inscription des membres]

Entourez directement la recherche de guillemets simples :

L'instruction de requête a été exécutée avec succès

F12 appelle le réseau et constate qu'il s'agit également d'une méthode de requête GET, copiez l'URL de la requête et affichez directement l'écho

Exécution directe de sqlmap

Injection SQL +2

Cliquez ensuite sur les trois mots [Administrateur] dans le coin supérieur droit

Au début, je n'ai pas trouvé que ces trois mots pouvaient être cliqués. Après avoir cliqué, j'ai trouvé le point de téléchargement de l'information :

Cette pièce peut télécharger des fichiers et essayer de télécharger d'abord un php

L'invite ne peut télécharger que les types de fichiers répertoriés ci-dessus. Lorsque j'étais sur le point de penser à d'autres moyens de le contourner, j'ai soudainement découvert que les types de fichiers autorisés à être téléchargés incluaient pdf, alors essayez de télécharger directement un pdf-xss :

Importez-le avec succès, puis essayez d'y accéder dans un navigateur :

Mais le navigateur indique qu'il n'y a pas de fichier, puis examine attentivement l'écho de téléchargement du fichier :

Le chemin de uploadfile/16893293978.pdf ici est suivi du paramètre ?value=, et une fois ce paramètre donné, un autre paramètre est suivi :

? file=url=uploadfile/16893293978.pdf, puis revenez aux paramètres dans le package de requête :

Trouvé qu'il y a un paramètre &field=url ici, essayez de changer le paramètre à 1

Le navigateur indique que "1" n'existe pas, donc c'est clair. Le paramètre qui doit être connecté après le paramètre &field= est le chemin après le téléchargement du fichier. Parce que nous entrons 1 dans ce bloc, le fichier 1 n'existe pas , donc l'écho NotFound est clair. Essayons donc ce fichier :

Emballage:

Déclenchez XSS avec succès

Magasin xss+2

Mais la tâche de cette pièce est getshell, alors continuez à essayer de télécharger des fichiers

Modifiez les informations MIME et contournez le segment php5, mais il indique toujours qu'il ne peut pas être téléchargé, et l'image est téléchargée mais ne peut pas être analysée

Ce téléchargement doit être écrit à mort, alors continuez à trouver d'autres percées, vérifiez les paramètres et trouvez qu'il y a "nom de fichier"

Paramètre de problème, ajoutez rapidement une commande de délai pour essayer :

`dormir 7`

Délai de réussite à l'écho :

Commande exécutée avec succès ! Approfondissement :

Commande curl pour sonder ngrok.io

Écho réussi !

Exécution de la commande +1, et enfin utiliser la commande correspondante pour obtenir le shell

Résumer

La difficulté globale est modérée, mais cette fois, il y a trop de fonctions d'arrière-plan dans le test, ce qui nécessite une observation et des tests minutieux. Une fois la collecte des informations d'arrière-plan terminée, la difficulté de Getshell diminue en un instant.

Je suppose que tu aimes

Origine blog.csdn.net/qq_38154820/article/details/131900703
conseillé
Classement