Une faille PHP permet d'exécuter du code via Wordpress

Une faille PHP permet d’exécuter du code via WordPress

Une faille PHP permet d'exécuter du code via Wordpress

À la conférence Black Hat USA début août, le chercheur Sam Thomas a révélé une vulnérabilité ouvrant un large champ de possibilités. Elle réside dans la désérialisation de PHP, destinée à décoder des données, qui permet aussi d'initialiser des classes PHP via une chaine de caractères.

Elle concerne notamment Wordpress, le CMS le plus utilisé dans le monde. L'attaque consiste à créer une archive PHP (Phar), dont on change les 100 premiers octets pour obtenir un fichier JPEG valide. Ce dernier est ensuite mis en ligne sur un blog Wordpress, avec les identifiants d'un utilisateur.

La fonction de Wordpress qui génère les vignettes est ensuite appelée. En tentant de décoder le contenu de cette fausse image (en réalité un fichier Phar), elle exécute les potentiels appels vers les classes PHP présentes dans le logiciel.

La mise en ligne du faux fichier JPEG nécessite d'avoir les droits d'édition sur le blog Wordpress, ce qui passe par un compte Auteur (ou supérieur), dont il faut obtenir les identifiants.

La vulnérabilité a été signalée en février 2017, via la plateforme HackerOne. Elle ne serait pas encore corrigée.

D'autres CMS sont concernés, dont Typo3. Avertis le 9 juin, les développeurs ont rapidement comblé la faille dans les versions 7.6.30, 8.7.17 et 9.3, publiées trois jours plus tard. Pour The Register, le risque n'est pas si élevé que suggéré. La compromission complète du système ne serait pas envisageable par ce biais.

Commentaires (12)


Faille PHP ou faille WordPress ?

 








Faith a écrit :



Faille PHP ou faille WordPress ?

 





Ben ça m’a l’air d’être un peu des deux. WordPress met en place le contexte permettant d’exploiter une faille de PHP.



La source mentionne que la configuration par défaut de PHP n’est pas respectée dans ce cadre :

“the issue works against the default configuration of WordPress and PHP,

[as far as I know] it is not dependent on network or system setup”.

 

WordPress ne devrait pas non plus être en mesure d’outrepasser les droits accordés par PHP…



En fervent non-utilisateur de Wordpress, la question que je me pose, c’est surtout : Est-ce que ça concerne les sites “faits mains” ?


Quel langage de merde sérieux… continuer à le développer c’est vraiment mettre du maquillage sur un cochon.

Et wordpress n’arrange rien, c’est une plateforme dans le même état d’esprit, hétérogène, fouillie, lourde, avec plein de failles découvertes chaque mois.



Un beau combo. Ceux qui continue a s’en servir sont soit forcés de le faire, soit n’ont jamais daigné essayé utiliser autre chose pour faire du web (Node, python, ruby, go, les options sont nombreuses).


@Antwan, soit tout simplement on a l’époque passé du temps à apprendre à maîtriser ce langage, et pour maintenir et conserver de grosses réalisations, et par ce qu’on a autre chose à faire, on continuer à utiliser cela.



Quand j’ai débuté en PHP, aucun de tes langages (excepté python) n’existaient, ils n’ont commencé à apparaître que 1015 ans plus tard.



Et vu que maintenant je ne fais plus justement que de maintenir des sites crées il y a longtemps ou justement installer quelques wordpress (car je sais faire pour les retravailler), je n’ai ni le temps, ni l’envie de recommencer tout sur un autre langage, et surtout pour entendre dans 10 ans un petit jeune me dire qu’ils sont nuls et qu’il y a mieux <img data-src=" />


Ou peut-être que plein de failles sont trouvées justement parce que c’est le CMS le plus utilisé au monde ? Si ça se trouve, plusieurs autres CMS “sérieux” ont tout autant de failles ou plus encore, mais on ne le sait pas <img data-src=" />



Ah et sans oublier les extensions, grosses sources de vulnérabilités (ce qui n’est pas propre à Wordpress) !


Vu comment fonctionne la désérialisation, elle ne doit pas être utilisée avec une entrée utilisateur (c’est pareil en Java par exemple). Il faut l’implémenter soi-même par exemple en JSON, ce qui en plus rend les données portables si on veut porter l’application dans un autre langage sans perdre de données (donc les sessions de PHP ne sont pas biens non plus évidemment).


Si tu “faits mains”, tu dois avoir les compétences pour prendre en charge la sécurité de ton code. Plus de détail lahttps://cdn2.hubspot.net/hubfs/3853213/us-18-Thomas-It’s-A-PHP-Unserializati…








Antwan a écrit :



Quel langage de merde sérieux… continuer à le développer c’est vraiment mettre du maquillage sur un cochon. Et wordpress n’arrange rien, c’est une plateforme dans le même état d’esprit, hétérogène, fouillie, lourde, avec plein de failles découvertes chaque mois.



Un beau combo. Ceux qui continue a s’en servir sont soit forcés de le faire, soit n’ont jamais daigné essayé utiliser autre chose pour faire du web (Node, python, ruby, go, les options sont nombreuses).





L’avantage de ce langage de “merde” c’est les librairies / documentation / tutoriaux disponibles sur le net, et l’avantage de wordpress c’est la rapidité à déployer un site en faisant le moins de développement possible en utilisant un maximum de plugins payants / gratuit la encore disponibles un peu partout.



Il y à 15 ans je tenais un discours plus ou moins identique au tiens, je ne prônais que le combo php + sql + html + js + css à la mano et mes premier sites tournaient sur un cms maison. Ça permet d’apprendre un langage sous tout ces aspect et c’était possible car j’avais beaucoup de temps.



Mais quand tu commence à produire pour les autres tu te rend vite compte que le code à la mano n’est plus possible à moins de facturer une fortune pour bien souvent avoir un résultat bien plus mauvais qu’un cms à la wordpress…



Par contre le gros avantage de connaitre tous les langages web avant de ce lancer dans du wordpress c’est que par la suite si tu veut modifier le code de wordpress, c’est possible et très facile.



@Daweb

Classique illustration de ta situation. <img data-src=" />



@skankhunt42

Les autres python/go/ruby ont aussi foison de librairies et documentation et permettent de développer bien plus rapidement et efficacement que PHP. Cet argument ne tient pas vraiment, il est typique de ceux qui ne sont pas vraiment penchés sur des langages modernes.



@nextinpact

SVP fixez le crash de commentaire impossible a poster quand vous citez une réponse, c’est exaspérant de perdre tout un message…


@Antwan… Heu non pas du tout. Justement le peu que je fais encore me prend 5 minutes. Le truc si tu veux comparer, c’est que j’ai quasiment rien à transporter, juste quelques kilo, et la roue ne me servirait à rien dans mon cas.



avec l’expérience j’ai appris que bien souvent on peut perdre du temps en pensant en gagner (linverse étant vrai aussi <img data-src=" />)



Maintenant, si tu me paye 6 mois de salaires pour prendre un salarié pour tenir ma boite, promis je passe les 6 mois à apprendre les langages modernes :)


Mouais y’a pas vraiment de comparaisons possibles entre WordPress et d’autres CMS en terme d’écosystème de plugin (même drupal). On trouve tout, tout le temps. Ça rend accessible beaucoup de choses simplement et à tout le monde. Certes il faut faire un tri, mais le choix est énorme. Ça dépend largement du besoin client finalement. Pour un petit site vitrine, institutionnel, e-commerce leger, la question ne se pose pas, partir “from scratch” c’est se tirer une balle dans le pied.

Après PHP on aime ou pas, quand on sait coder proprement, avec un framework adapté ça reste un outil sur lequel on peut pérenniser, et ou la communauté est énorme. Il y a certes des alternatives intéressantes pour qui veut se lancer, mais ce n’est pas une nécessité.

Après on peut critiquer la sécurité de WordPress, avec plus de 30% de parts de marché globale, ce n’est pas étonnant qu’il soit la cible privilégiée. C’est un peu comme dire Mac c’est plus sécurisé que Windows… Quand on est pas une cible, on ne trouve pas de faille.

Bref, je suis d’accord que c’est assez fun d’essayer d’autres langages, framework etc… De là à dire que PHP c’est de la merde, et qu’il faut tout faire à la main, c’est manquer cruellement de recul…


Fermer