shell bypass 403
<?php /** * @package akeebabackup * @copyright Copyright 2006-2025 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ namespace Akeeba\Component\AkeebaBackup\Site\Service; defined('_JEXEC') or die; use Joomla\CMS\Application\SiteApplication; use Joomla\CMS\Component\Router\RouterView; use Joomla\CMS\Component\Router\RouterViewConfiguration; use Joomla\CMS\Component\Router\Rules\MenuRules; use Joomla\CMS\Component\Router\Rules\NomenuRules; use Joomla\CMS\Component\Router\Rules\StandardRules; use Joomla\CMS\Menu\AbstractMenu; use Joomla\CMS\MVC\Factory\MVCFactory; use Joomla\CMS\MVC\Factory\MVCFactoryAwareTrait; class Router extends RouterView { use MVCFactoryAwareTrait; public function __construct(SiteApplication $app, AbstractMenu $menu, MVCFactory $factory,) { $this->setMVCFactory($factory); $apiView = new RouterViewConfiguration('api'); $apiView->setKey('task'); $this->registerView($apiView); $backupView = new RouterViewConfiguration('backup'); $backupView->setKey('task'); $this->registerView($backupView); $checkView = new RouterViewConfiguration('check'); $checkView->setKey('task'); $this->registerView($checkView); $oauth2View = new RouterViewConfiguration('oauth2'); $oauth2View->setKey('engine'); $this->registerView($oauth2View); parent::__construct($app, $menu); $this->attachRule(new MenuRules($this)); $this->attachRule(new StandardRules($this)); $this->attachRule(new NomenuRules($this)); } public function build(&$query) { if (isset($query['view']) && !empty($query['view'])) { $query['view'] = strtolower($query['view']); } return parent::build($query); } }