Injecter un compte utilisateur dans mySQL
Question
Abordant un scénario étrange ici.
Nous utilisons une application de gestion de poste de travail propriétaire qui utilise mySQL pour stocker ses données. Dans l'application, ils fournissent le nombre de rapports, tels que l'utilisateur connecté à quelle machine à quelle heure, tous les produits logiciels installés sur les machines surveillées, etc. Nous souhaitons créer un ensemble de rapports différent. Toutefois, ils ne prennent pas en charge les rapports personnalisés.
Puisque leurs données sont stockées dans MySQL, je suppose que je peux faire le reporting manuellement. Je n'ai pas d'informations d'identification valides pour me connecter au serveur MySQL cependant. Puis-je quand même créer un compte utilisateur sur le serveur MySQL? Je ne souhaite pas réinitialiser le mot de passe root ni aucun compte susceptible de s'y trouver, car cela pourrait endommager l'application.
J'ai un accès complet au serveur Windows 2003. Je peux arrêter et redémarrer des services, y compris le serveur MySQL. Sur le serveur mySQL actuel, je n’ai qu’un accès de base via l’interface graphique fournie par le logiciel. Je ne peux pas me connecter directement via CLI ou via un autre outil (en raison du manque d'informations d'identification).
Je m'excuse si cela s'est passé comme si j'essayais d'obtenir un accès non autorisé au serveur MySQL. J'ai contacté la société de logiciels et à ce jour, cela fait deux semaines sans réponse de leur part. J'ai besoin d'obtenir les données. J'ai un accès complet à la boîte physique, j'ai les privilèges d'administrateur dessus.
La solution
Vous voudrez utiliser le processus de récupération de mot de passe MySQL. Suivez ces instructions , sauf remplacer la requête de réinitialisation du mot de passe par une requête sur ajouter un nouvel utilisateur . La nouvelle requête utilisateur ressemblerait à quelque chose comme:
GRANT ALL ON *.* TO 'myuser'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
Cela créera un nouvel utilisateur " myuser " avec le mot de passe "mypassword", qui peut se connecter à MySQL via la CLI du système local. Vous pouvez ensuite utiliser l'interface utilisateur graphique de l'administrateur MySQL ( télécharger ici ) et la mettre à jour. les autorisations utilisateur afin que vous puissiez vous connecter à partir d'autres systèmes du réseau. Ou utilisez l'instruction GRANT
. de la CLI, si c'est plus votre style.
Autres conseils
Avez-vous accès au serveur MySQL en question?
Comme dans, quel accès avez-vous au-delà de ce qu'un utilisateur régulier aurait? Vous devez essayer de suivre ces itinéraires avant de "hack". votre chemin, car cela peut ou non être réalisable avec ce logiciel.
Il y a des chances que la base de données soit à l'origine de déclencheurs. Ainsi, lorsque vous vous piratez dans la base de données, ils sauront quand et comment vous l'avez fait. Pas une bonne idée.
Je suppose que je ne devrais vraiment pas répondre à cette question, mais c'est trop amusant.
Consultez la page sur les injections SQL. Cela devrait couvrir vos besoins. Cette page explique comment ajouter des comptes d'utilisateurs à mySQL.
Je voudrais saisir les informations suivantes dans des champs de saisie utilisateur aléatoires:
p'; INSERT INTO user VALUES
('localhost', 'myNewAdmin', PASSWORD ('some_pass'), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y' ',' Y ');
et ensuite
p'; FLUSH PRIVILEGES;
p '; est destiné à fermer la question régulière. par exemple - La question normale est:
"Select Adress from cusomers where custName = ' + $INPUT + ';
devient
Select Adress from cusomers where custName = 'p'; INSERT INTO user
VALUES('localhost','myNewAdmin',PASSWORD('some_pass'),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
Une chose qui vient à l’esprit est de renifler la communication de la base de données en espérant qu’elle n’est pas cryptée. S'il est crypté, essayez de changer la configuration pour ne pas utiliser SSL et redémarrez mysql. Un bon renifleur que j'utilise est le Wireshark
.De la documentation de mysql 5.0 :
MySQL prend en charge sécurisé (chiffré) les connexions entre les clients MySQL et le serveur utilisant Secure Sockets Protocole de couche (SSL). Cette section explique comment utiliser les connexions SSL. Il décrit également un moyen de configurer SSH sous Windows. Pour savoir comment obliger les utilisateurs à utiliser des connexions SSL, voir la discussion de la REQUIRE clause de la déclaration GRANT dans Section 12.5.1.3, «Syntaxe GRANT».
La configuration standard de MySQL est destiné à être aussi rapide que possible, afin les connexions chiffrées ne sont pas utilisées par défaut. Cela ferait la protocole client / serveur beaucoup plus lent. Le cryptage des données demande beaucoup de ressources de calcul opération qui nécessite l'ordinateur faire du travail supplémentaire et peut retarder autres tâches MySQL. Pour les applications qui nécessitent la sécurité fournie par connexions cryptées, le supplément le calcul est justifié.
MySQL permet d'activer le cryptage sur une base par connexion. Vous pouvez choisissez une connexion normale non chiffrée ou une connexion SSL cryptée sécurisée selon les exigences de applications individuelles.
Les connexions sécurisées sont basées sur le OpenSSL API et sont disponibles via l'API MySQL C. La réplication utilise le C API, des connexions sécurisées peuvent donc être utilisé entre les serveurs maîtres et esclaves.
Vous l’avez probablement déjà fait mais essayez quand même de chercher dans les fichiers de configuration des applications. S'il n'y a rien - essayez de chercher dans les exécutables / le code source - c'est peut-être en texte clair si vous avez de la chance.