Validation côté client
Dans ce chapitre, nous allons apprendre comment la validation aide dans Python Pentesting.
L'objectif principal de la validation est de tester et de s'assurer que l'utilisateur a fourni les informations nécessaires et correctement formatées nécessaires pour mener à bien une opération.
Il existe deux types de validation différents -
- validation côté client (navigateur Web)
- validation côté serveur
Validation côté serveur et validation côté client
La validation d'entrée utilisateur qui a lieu côté serveur lors d'une session de post-back est appelée server-side validation. Les langages tels que PHP et ASP.Net utilisent la validation côté serveur. Une fois le processus de validation côté serveur terminé, les commentaires sont renvoyés au client en générant une nouvelle page Web dynamique. Avec l'aide de la validation côté serveur, nous pouvons obtenir une protection contre les utilisateurs malveillants.
D'autre part, la validation d'entrée utilisateur qui a lieu côté client est appelée validation côté client. Les langages de script tels que JavaScript et VBScript sont utilisés pourclient-side validation. Dans ce type de validation, toute la validation d'entrée de l'utilisateur est effectuée uniquement dans le navigateur de l'utilisateur. Ce n'est pas aussi sûr que la validation côté serveur, car le pirate peut facilement contourner notre langage de script côté client et soumettre des entrées dangereuses au serveur.
Paramètre côté client de trempe: contournement de validation
Le passage de paramètres dans le protocole HTTP peut être effectué à l'aide des méthodes POST et GET. GET est utilisé pour demander des données à une ressource spécifiée et POST est utilisé pour envoyer des données à un serveur pour créer ou mettre à jour une ressource. Une différence majeure entre ces deux méthodes est que si un site Web utilise la méthode GET, les paramètres de passage sont affichés dans l'URL et nous pouvons modifier ce paramètre et le transmettre au serveur Web. Par exemple, la chaîne de requête (paires nom / valeur) est envoyée dans l'URL d'une requête GET:/test/hello_form.php?name1 = value1&name2 = value2. En revanche, les paramètres ne sont pas affichés lors de l'utilisation de la méthode POST. Les données envoyées au serveur avec POST sont stockées dans le corps de la requête HTTP. Par exemple, POST/test/hello_form.php HTTP/1.1 Host: ‘URL’ name1 = value1&name2 = value2.
Module Python pour le contournement de la validation
Le module Python que nous allons utiliser est mechanize. Il s'agit d'un navigateur Web Python, qui permet d'obtenir des formulaires Web dans une page Web et facilite également la soumission des valeurs d'entrée. Avec l'aide de Mechanize, nous pouvons contourner la validation et tempérer les paramètres côté client. Cependant, avant de l'importer dans notre script Python, nous devons l'installer en exécutant la commande suivante -
pip install mechanize
Exemple
Voici un script Python, qui utilise Mechanize pour contourner la validation d'un formulaire Web à l'aide de la méthode POST pour transmettre le paramètre. Le formulaire Web peut être extrait du lien et peut être utilisé dans n'importe quel site Web factice de votre choix.
Pour commencer, importons le navigateur Mechanize -
import mechanize
Maintenant, nous allons créer un objet nommé brwsr du navigateur mécaniser -
brwsr = mechanize.Browser()
La ligne de code suivante montre que l'agent utilisateur n'est pas un robot.
brwsr.set_handle_robots( False )
Maintenant, nous devons fournir l'url de notre site Web factice contenant le formulaire Web sur lequel nous devons contourner la validation.
url = input("Enter URL ")
Maintenant, les lignes suivantes définiront certains parents sur true.
brwsr.set_handle_equiv(True)
brwsr.set_handle_gzip(True)
brwsr.set_handle_redirect(True)
brwsr.set_handle_referer(True)
Ensuite, il ouvrira la page Web et imprimera le formulaire Web sur cette page.
brwsr.open(url)
for form in brwsr.forms():
print form
La prochaine ligne de codes contournera les validations sur les champs donnés.
brwsr.select_form(nr = 0)
brwsr.form['name'] = ''
brwsr.form['gender'] = ''
brwsr.submit()
La dernière partie du script peut être modifiée en fonction des champs du formulaire web sur lesquels on souhaite contourner la validation. Ici, dans le script ci-dessus, nous avons pris deux champs -‘name’ et ‘gender’ qui ne peut pas être laissé vide (vous pouvez le voir dans le codage du formulaire Web) mais ce script contournera cette validation.