Newspaper est un thème populaire de chez themeforest créé par Tagdiv, avec environ 95,000 ventes.
Reflected XSS
Nous avons trouvé dans le fichier functions.php
une vulnérabilité de type XSS, permettant à un attaquant d’ajouter du code JavaScript dans le tableau de bord de l’administration.
Voyez le code :
[pastacode lang=”php” manual=”add_action(%20’current_screen’%2C%20function()%20%7B%0A%20%20%20%20%24current_screen%20%3D%20get_current_screen()%3B%0A%0A%20%20%20%20if%20(%20’update-core’%20%3D%3D%3D%20%24current_screen-%3Eid%20%26%26%20isset(%20%24_REQUEST%5B’update_theme’%5D%20))%20%7B%0A%0A%20%20%20%20%20%20%20%20add_action(‘admin_head’%2C%20function()%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%24theme_name%20%3D%20%24_REQUEST%5B’update_theme’%5D%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20ob_start()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%3F%3E%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cscript%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jQuery(window).ready(function()%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20’use%20strict’%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20%24formUpgradeThemes%20%3D%20jQuery(‘form%5Bname%3D%22upgrade-themes%22%5D’)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(%20%24formUpgradeThemes.length%20)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20%24input%20%3D%20%24formUpgradeThemes.find(‘input%5Btype%3D%22checkbox%22%5D%5Bvalue%3D%22%3C%3Fphp%20echo%20%24theme_name%20%3F%3E%22%5D’)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(%24input.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24input.attr(%20’checked’%2C%20true%20)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24formUpgradeThemes.submit()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fscript%3E%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%3Fphp%0A%20%20%20%20%20%20%20%20%20%20%20%20echo%20ob_get_clean()%3B%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%0A%7D)%3B” message=”” highlight=”8,20″ provider=”manual”/]
La ligne 8 (383 dans functions.php) va juste lire le paramètre update_theme
depuis l’URL du navigateur, puis en ligne 21 (395 dans functions.php) l’imprime tel quel, sans aucun échappement ni désinfection.
https://themeforest.net/item/newspaper/5489609
La version 10.3.4 corrige la faille, tenez vous à jour et vous êtes OK.