Compare commits
18 Commits
Author | SHA1 | Date |
---|---|---|
|
e3436ffd83 | 2 years ago |
|
896c96ff5b | 2 years ago |
|
0c176b740f | 2 years ago |
|
f5f2f8ef2b | 2 years ago |
![]() |
ee255d4cd0 | 2 years ago |
|
5c20105473 | 2 years ago |
|
deb9ef500b | 2 years ago |
|
670408a8cb | 2 years ago |
|
35fc8da793 | 2 years ago |
|
05b07b56c2 | 2 years ago |
|
1d48c14d22 | 2 years ago |
|
b30f38a4ae | 2 years ago |
|
3cf19979e5 | 2 years ago |
|
fadfd5c333 | 2 years ago |
|
dcbf9f5569 | 2 years ago |
|
e5edfe881d | 2 years ago |
|
1b50ac0ec3 | 2 years ago |
![]() |
66c9aba0de | 2 years ago |
@ -1,2 +1,39 @@
|
||||
# tp-juggling-smuggling
|
||||
# TP Type Juggling et Request Smuggling
|
||||
|
||||
## Mise en place
|
||||
|
||||
Lancer VDN et cloner le dépôt git sur la machine virtuelle.\
|
||||
Pensez à désactiver le proxy avec les commandes : `unset http_proxy` et `unset https_proxy`
|
||||
|
||||
## Exercice 1 : Type Juggling
|
||||
|
||||
A la racine du dépôt, exécutez les commandes suivantes :\
|
||||
`docker build -t juggling type_juggling/`\
|
||||
`docker run -it juggling`
|
||||
|
||||
Puis, depuis un navigateur, rendez-vous sur : http://127.17.0.2/index.php\
|
||||
*Si l'adresse ne fonctionne pas, vérifiez l'adresse IP de votre conteneur Docker.*
|
||||
|
||||
Votre but est de vous connecter en tant qu'administrateur.
|
||||
|
||||
> Note : Vous devez devinez la fonction de hachage utilisée
|
||||
|
||||
## Exercice 2 : Request Smuggling
|
||||
|
||||
### Mise en place
|
||||
|
||||
A la racine du dépôt, exécutez les commandes suivantes :\
|
||||
`docker-compose -f request_smuggling/docker-compose.yaml build`\
|
||||
`docker-compose -f request_smuggling/docker-compose.yaml up`
|
||||
|
||||
Le docker compose que vous venez d'exécuter, à créer deux serveurs dont un proxy.
|
||||
|
||||
Gentil serveur qui héberge l'application web cible : `128.11.0.5`\
|
||||
Proxy très sécurisé qui bloque les méchants attaquants : `128.11.0.6`
|
||||
|
||||
### Exercice
|
||||
|
||||
Votre mission si vous l'acceptez, est de récupérer le message très secret contenu dans le fichier : `secret_file.txt`
|
||||
|
||||
Pour cela vous devez construire une requête HTTP qui vous permettra de contourner la sécurité du proxy.\
|
||||
Vous trouverez dans le dépôt un script python qui vous aidera dans la construction de votre requête.
|
||||
|
@ -0,0 +1,3 @@
|
||||
FROM php:8.2-apache
|
||||
|
||||
COPY ./public_html/ /var/www/html/
|
@ -0,0 +1,50 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Login</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h2>Connexion</h2>
|
||||
|
||||
<form method="post" action="">
|
||||
<label for="username">Nom d'utilisateur :</label>
|
||||
<input type="text" id="username" name="username" required><br><br>
|
||||
|
||||
<label for="password">Mot de passe :</label>
|
||||
<input type="password" id="password" name="password" required><br><br>
|
||||
|
||||
<input type="submit" value="Se connecter">
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<?php
|
||||
function readUsersFile($filename) {
|
||||
$users = [];
|
||||
$file = fopen($filename, "r");
|
||||
if ($file) {
|
||||
while (!feof($file)) {
|
||||
$line = fgets($file);
|
||||
list($username, $password) = explode(':', trim($line));
|
||||
$users[$username] = $password;
|
||||
}
|
||||
fclose($file);
|
||||
}
|
||||
return $users;
|
||||
}
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
$username = $_POST['username'];
|
||||
$password = $_POST['password'];
|
||||
$users = readUsersFile('users.txt.lock');
|
||||
if (isset($users[$username]) && $users[$username] == md5($password) ){
|
||||
echo "Bienvenue, $username ! Vous êtes connecté.";
|
||||
} else {
|
||||
echo "Identifiants invalides. Veuillez réessayer.";
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@ -0,0 +1 @@
|
||||
Admin:0e904310212375757042757551233487
|
@ -1,3 +0,0 @@
|
||||
FROM httpd:alpine3.18
|
||||
|
||||
COPY ./public_html/ /usr/local/apache2/htdocs/
|
@ -1,29 +0,0 @@
|
||||
<?php
|
||||
|
||||
function readUsersFile($filename) {
|
||||
$users = [];
|
||||
$file = fopen($filename, "r");
|
||||
if ($file) {
|
||||
while (($line = fgets($file)) !== false) {
|
||||
list($username, $password) = explode(':', trim($line));
|
||||
$users[$username] = $password;
|
||||
}
|
||||
fclose($file);
|
||||
}
|
||||
return $users;
|
||||
}
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
$username = $_POST['username'];
|
||||
$password = $_POST['password'];
|
||||
|
||||
$users = readUsersFile('users.txt.lock');
|
||||
|
||||
if (isset($users[$username]) && $users[$username] ==md5($password) ){
|
||||
echo "Bienvenue, $username ! Vous êtes connecté.";
|
||||
} else {
|
||||
echo "Identifiants invalides. Veuillez réessayer.";
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@ -1,22 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Login</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h2>Connexion</h2>
|
||||
|
||||
<form method="post" action="index.php">
|
||||
<label for="username">Nom d'utilisateur :</label>
|
||||
<input type="text" id="username" name="username" required><br><br>
|
||||
|
||||
<label for="password">Mot de passe :</label>
|
||||
<input type="password" id="password" name="password" required><br><br>
|
||||
|
||||
<input type="submit" value="Se connecter">
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -1 +0,0 @@
|
||||
Admin:hello9323512300
|
Loading…
Reference in new issue