J'suis pas certain qu'on se couvre de partout avec ça :

if (((isset($_GET['buttonText']) && strpos($_GET['buttonText'],'<') !==
false) ||
    (isset($_GET['movieName']) && strpos($_GET['movieName'],';') !==
false)) &&
    strpos($_GET['pf'],'swfupload.swf') !== false) {
    {
        header('Content-Type: text/plain');
        http::head(403,'Forbidden');
        exit;
    }
}



Franck


Le 13 mars 2013 14:59, Franck Paul <[email protected]> a écrit :

> Et faire pareil (ou compléter) pour 'movieName' je suppose.
>
> Franck
>
>
> Le 13 mars 2013 14:56, Dsls <[email protected]> a écrit :
>
> Ca ne marchera pas, le bouton est défini par le js. Il faut détecter
>> du code malveillant dedans :
>>
>> En rustine quick&dirty qui colmate la brèche, il faut ajouter dans
>> load_plugin_file.php un truc du genre :
>>
>> +if (isset($_GET['buttonText']) && strpos($_GET['buttonText'],'<') !==
>> false && strpos($_GET['pf'],'swfupload.swf') !== false) {
>> +       header('Content-Type: text/plain');
>> +       http::head(403,'Forbidden');
>> +       exit;
>> +}
>>
>> Le 13 mars 2013 14:44, Franck Paul <[email protected]> a
>> écrit :
>> > Bon, va falloir un klingon (en tout cas plus que moi) la dessus.
>> >
>> > J'ai testé avec ça dans inc/load_plugin_file.php (ligne 52) :
>> >
>> > if (($pf == 'swfupload.swf') && (count($_GET) > 1)) {
>> >     if (isset($_GET['buttonText']) || isset($_GET['movieName']))    //
>> <--
>> > Suis pas certain que ce soit utile
>> >     {
>> >         http::redirect('index.php?pf=swfupload.swf');
>> >         exit;
>> >     }
>> > }
>> >
>> > Ça a l'air de fonctionner mais en fait je me demande s'il ne vaudrait
>> pas
>> > mieux renvoyer sur l'accueil de l'admin, voire sur une 404
>> >
>> >
>> > Franck
>> >
>> >
>> > Le 13 mars 2013 14:28, Franck Paul <[email protected]> a
>> écrit :
>> >
>> >> Oui ça serait plus sage en effet, mais il faut que je vois si ça ne
>> pose
>> >> pas des problèmes d'effet de bord.
>> >>
>> >> Franck
>> >>
>> >>
>> >> Le 13 mars 2013 14:26, Julien Wajsberg <[email protected]> a écrit :
>> >>
>> >>> je dirais qu'il faut faire une redirection vers"
>> >>> /admin/index.php?pf=swfupload.swf" dès que tu détectes d'autre
>> paramètres.
>> >>>
>> >>>
>> >>> 2013/3/13 Franck Paul <[email protected]>
>> >>>>
>> >>>> Et $_GET['movieName'] également puisqu'une faille est possible via ce
>> >>>> paramètre.
>> >>>>
>> >>>> Franck
>> >>>>
>> >>>>
>> >>>> Le 13 mars 2013 14:23, Franck Paul <[email protected]> a
>> >>>> écrit :
>> >>>>
>> >>>>> Nope, le pf est tout seul dans le $_GET['pf'], c'est dans les autres
>> >>>>> qu'il faut éventuellement filtrer :
>> >>>>>
>> >>>>> /admin/index.php?pf=swfupload.swf&buttonText=<a
>> >>>>> href='javascript:alert(document.cookie)'>Click me</a>
>> >>>>>
>> >>>>>
>> >>>>> Donne :
>> >>>>>
>> >>>>> $_GET['pf'] = 'swfupload.swf'
>> >>>>> $_GET['buttonText'] = '<a
>> >>>>> href='javascript:alert(document.cookie)'>Click me</a>'
>> >>>>>
>> >>>>> Cela dit on pourrait explicitement vider $_GET['buttonText']
>> puisque la
>> >>>>> faille vient de là.
>> >>>>>
>> >>>>> Franck
>> >>>>>
>> >>>>>
>> >>>>> Le 13 mars 2013 14:19, Julien Wajsberg <[email protected]> a écrit :
>> >>>>>
>> >>>>>> ben c'est surtout le "pf" que tu dois filtrer je pense, non ?
>> >>>>>>
>> >>>>>>
>> >>>>>> 2013/3/13 Franck Paul <[email protected]>
>> >>>>>>>
>> >>>>>>> T'as une idée du comment ?
>> >>>>>>>
>> >>>>>>> Parce qu'à part faire un unset de tous les $_GET une fois
>> récupéré le
>> >>>>>>> $_GET['pf'], je ne vois pas.
>> >>>>>>>
>> >>>>>>> Franck
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Le 13 mars 2013 09:28, Dsls <[email protected]> a écrit :
>> >>>>>>>
>> >>>>>>>> Le 13 mars 2013 09:25, Julien Wajsberg <[email protected]> a
>> écrit :
>> >>>>>>>> > vu qu'on est déjà sur du jQuery, je pense que ça a l'air bien
>> >>>>>>>> > ouaip.
>> >>>>>>>> >
>> >>>>>>>> > Le hack avec swfupload a l'air mineur et on pourrait attendre
>> de
>> >>>>>>>> > convertir
>> >>>>>>>> > swfupload à jquery file upload, non ?
>> >>>>>>>>
>> >>>>>>>> On peut aussi filtrer ce qui est envoyé à swfupload.swf.
>> L'avantage
>> >>>>>>>> dans dc est qu'il est accessible uniquement via index.php?pf=
>> >>>>>>>> _______________________________________________
>> >>>>>>>> Dev mailing list - [email protected] -
>> >>>>>>>> http://ml.dotclear.org/listinfo/dev
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> _______________________________________________
>> >>>>>>> Dev mailing list - [email protected] -
>> >>>>>>> http://ml.dotclear.org/listinfo/dev
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> _______________________________________________
>> >>>>>> Dev mailing list - [email protected] -
>> >>>>>> http://ml.dotclear.org/listinfo/dev
>> >>>>>
>> >>>>>
>> >>>>
>> >>>>
>> >>>> _______________________________________________
>> >>>> Dev mailing list - [email protected] -
>> >>>> http://ml.dotclear.org/listinfo/dev
>> >>>
>> >>>
>> >>>
>> >>> _______________________________________________
>> >>> Dev mailing list - [email protected] -
>> >>> http://ml.dotclear.org/listinfo/dev
>> >>
>> >>
>> >
>> >
>> > _______________________________________________
>> > Dev mailing list - [email protected] -
>> > http://ml.dotclear.org/listinfo/dev
>> _______________________________________________
>> Dev mailing list - [email protected] -
>> http://ml.dotclear.org/listinfo/dev
>>
>
>
_______________________________________________
Dev mailing list - [email protected] - http://ml.dotclear.org/listinfo/dev

Répondre à