Instructeur: Dans
cette leçon, je voudrais vous montrer comment nous pouvons utiliser
des injections SQL pour lire n'importe quel
fichier sur le serveur. Ainsi, même si le fichier existe en
dehors de la racine www,
nous pourrons le lire exactement comme une divulgation
de fichier. Nous verrons également comment
l’utiliser pour écrire des fichiers et les télécharger sur
le système, tout comme une vulnérabilité d’envoi de fichier.
La première chose que nous allons examiner
est la lecture du fichier.
Et je vais tout mettre à zéro ici.
J'ai donc ma déclaration ici et
je vais en choisir un, et je
vais laisser le
deuxième parce que je vais faire des trucs là-dessus.
Et nous allons faire trois autres nulls ici.
Donc
null, null, null.
Nous avons donc sélectionné null quelque chose null, null, null.
Donc cinq parce que nous avons cinq disques
lorsque nous avons passé commande par.
Et au lieu de sélectionner quelque chose, rappelez-vous,
dans la troisième vidéo,
nous avons sélectionné la base de données, par exemple, et elle nous
montre la base de données actuelle.
Ce que je
veux faire maintenant, c'est que je veux faire une
autre fonction et que cette fonction s'appelle load_file.
Et ici, je vais définir le fichier
que je veux charger et utiliser le même
fichier que
celui que nous avons examiné dans
la vulnérabilité d’inclusion de fichier, c’est etc / passwd.
Nous essayons donc de lire
ce fichier et notre déclaration est que l'union sélectionne ce fichier et c'est tout.
Alors je vais copier ça.
Et je vais
l'injecter ici et je vais ajouter
mon% 23 qui est ma commande.
Et comme vous pouvez
le constater, nous avons réussi à lire toutes les
informations, tout le contenu de etc / passwd même s’il ne se
trouve pas dans la racine Web.
Donc, il est stocké dans etc / passwd.
Ainsi, nous pouvons lire tout ce qui se trouve sur le
serveur à partir d'autres sites
Web, à partir de fichiers situés n'importe où sur
le serveur. Nous
pouvons le lire en spécifiant le chemin complet de ce fichier.
La prochaine chose que je voudrais
vous montrer est en train d'écrire sur le serveur.
Nous allons donc écrire des choses
sur le serveur, ce qui
est très utile car vous pourrez écrire le code de votre choix.
Ainsi, par exemple, vous pouvez écrire le code d’un script PHP,
vous pouvez écrire un code de un shell, un virus ou un
code PHP pour établir d'autres connexions avec vous.
Donc, ça va fondamentalement
juste agir comme une vulnérabilité de téléchargement de fichier.
Et pour faire
cela, je vais écrire le code que
je veux faire ici et
je vais appeler cela, par exemple, exemple à titre d'exemple.
Et nous allons utiliser une fonction appelée outfile afin que nous puissions
créer un fichier outfile, puis
nous spécifierons l'emplacement
où nous voulons stocker ce fichier.
Maintenant, dans le meilleur des cas,
vous pourrez écrire à la racine de votre site
Web, ce qui signifie que vous pourrez accéder au
fichier via le navigateur et l'exécuter, ce
qui vous permettra de télécharger un fichier Weevely, de vous
y connecter et
d'effectuer des tâches. comme ça.
Essayons donc de le faire en premier.
Donc nous allons le faire dans var / www et c'est notre racine
Web afin que nous puissions accéder à
des éléments à
travers elle ou vous pouvez même le mettre var / www
et ensuite placer mutillidae après
pour le stocker là-bas.
Donc, la commande est très simple.
Encore une fois, sélectionnez Union.
Assurez-vous que tout est défini
sur null pour que rien ne soit écrit dans
le fichier, à
l'exception de ce que vous avez indiqué
ici. Je donne un exemple et il sera
stocké dans notre fichier dans var / www
/ mutillidae et rappelons cet exemple. SMS.
Essayons de l'exécuter et de voir si cela fonctionne.
Maintenant, cela n'a pas fonctionné.
Et si vous
venez ici, vous verrez que SQL ou MySQL ne sont pas
autorisés à créer ou à écrire dans ce répertoire.
Le problème est donc que nous
ne le sommes pas. Les
autorisations dont nous disposons ne nous permettent pas d'écrire à cet emplacement particulier.
Donc, juste pour tester cet
exploit, je vais changer cet emplacement en tmp qui est le temp
et vous verrez
que vous pouvez réellement écrire sur temp, donc dans la
vie réelle dans des scénarios, cela dépend,
vous pouvez l'essayer et voir si vous êtes
capable d'écrire des choses ou non.
En cela, nous essayons d'écrire dans
temp maintenant et
si nous lisons dans
temp, si nous effacons cela, puis ls et / tmp, vous
verrez que nous avons un exemple
appelé et si vous essayez
de lire cela, vous voir qu'il contient, évidemment,
il
contient le contenu de ce que nous
avons fait auparavant, à savoir la sélection normale que vous verriez.
Donc, ce que vous voyez pour mettre les éléments pour admin et ensuite,
il nous montre ce qu’il contient, un
exemple qui correspond à
ce que nous voulions écrire dans le fichier.
Maintenant, vous pouvez évidemment vous
débarrasser des éléments
admin et adminpass en mettant
simplement un mauvais nom d'utilisateur. Rien
ne sera affiché ici. La seule chose que
vous verrez est le résultat, qui est un exemple.
Mais là encore, cela n’est utile
que si vous êtes capable d’écrire sur votre
serveur Web. Vous pouvez
y accéder, utiliser
votre shell ou votre charge utile et exploiter davantage le système.