Newspaper is a famous theme from TagDiv on themeforest, with about 95,000 sells.
Reflected XSS
We found in the file functions.php
a XSS vulnerability, allowing an attacker to push JavaScript code into the admin dashboard.
Check the 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”/]
The line 8 (383 in functions.php) just read the update_theme
variable from the URL in the browser, then line 21 (395 in functions.php) will print it as is, without any escape or sanitization.
https://themeforest.net/item/newspaper/5489609
The version 10.3.4 fixed the flaw, just update and you’re good.