Skip to content
Snippets Groups Projects
Commit 62d48116 authored by Ferhat Hocine's avatar Ferhat Hocine
Browse files

rendu final tp2

parent 2c641ef5
No related branches found
No related tags found
No related merge requests found
...@@ -78,10 +78,17 @@ curl 'http://localhost:8080/' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x8 ...@@ -78,10 +78,17 @@ curl 'http://localhost:8080/' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x8
``` ```
* Commande curl pour lire les cookies * Commande curl pour lire les cookies
```
nc -l -p 8081
```
## Question 6 ## Question 6
Rendre un fichier server_xss.py avec la correction de la Rendre un fichier server_xss.py avec la correction de la
faille. Expliquez la demarche que vous avez suivi. faille. Expliquez la demarche que vous avez suivi.
```
on a utilisé la fonction html.escape lors de l'insertion afin d'éviter les failles xss, cette fonction rends les variable contenent des balise html non vulnérable.
```
...@@ -10,7 +10,7 @@ class VulnerableApp(object): ...@@ -10,7 +10,7 @@ class VulnerableApp(object):
@cherrypy.expose @cherrypy.expose
def index(self, **post): def index(self, **post):
cursor = self.conn.cursor() cursor = self.conn.cursor(prepared=True)
if cherrypy.request.method == "POST": if cherrypy.request.method == "POST":
requete = "INSERT INTO chaines (txt,who) VALUES(%s,%s)" requete = "INSERT INTO chaines (txt,who) VALUES(%s,%s)"
cursor.execute(requete, (post["chaine"],cherrypy.request.remote.ip)) cursor.execute(requete, (post["chaine"],cherrypy.request.remote.ip))
......
#!/usr/bin/env python3
import mysql.connector
import cherrypy
import config
import html
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(prepared=True)
if cherrypy.request.method == "POST":
requete = """INSERT INTO chaines (txt,who) VALUES(%s,%s)"""
cursor.execute(requete, (html.escape(post["chaine"]),cherrypy.request.remote.ip))
self.conn.commit()
chaines = []
cursor.execute("SELECT txt,who FROM chaines");
for row in cursor.fetchall():
chaines.append(row[0]+ " added by : "+ 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