Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2023-45503 — Справочник CVE-2023-45503 | Kitploit
Инструменты/GitHubGitHub/ally-petitt/cve-2023-45503
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеБезопасность Баз Данных
GitHubally-petitt/cve-2023-45503

CVE-2023-45503

Справочник CVE-2023-45503

Репозиторий
2 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2023-45503 Детали уязвимости

Обзор

В Macrob7 Macs Framework Content Management System (CMS) версиях 1.1.4f и более ранних, небезопасная обработка пользовательского ввода приводит к 16 уязвимостям SQL-инъекций. Возможность выполнения произвольных SQL-запросов может привести к утечке приватных данных, включая хеши паролей пользователей, а также к возможности изменения учётных данных и уровня привилегий других пользователей. Воздействие может включать повышение привилегий и потенциальное удалённое выполнение кода (RCE).

Таблица с описанием каждого затронутого конечного пункта, уязвимого параметра и уязвимых функций доступна по этой ссылке.

Классификация CWE: CWE-89: Неправильная нейтрализация специальных элементов, используемых в SQL-команде ('SQL-инъекция')

Сообщил: Элли Петит

Затронутый продукт: Macrob7 Macs CMS

Затронутые версии: 1.1.4f и более ранние

Технические детали

В 16 случаях, которые я заметил, пользовательский ввод принимался без надлежащей санитизации или параметризации. Например, в функциональности «Забыли пароль» этой CMS запрашивается адрес электронной почты.

Application/plugins/CMS/controllers/CMS.php:224

root@kitploit:~
    public function forgotPasswordProcess()
    {
      $this->loadModels();
      $emailAddress = Post::getByKey('emailAddress');

      $user = $this->usersModel->getUserByEmailAddress($emailAddress);

Затем адрес электронной почты передаётся в метод getUserByEmailAddress(), который передаёт email в selectSingle() — метод, не обеспечивающий надлежащую защиту от внедряемых SQL-запросов.

Application/plugins/CMS/models/Users_Model.php:41

root@kitploit:~
    public function getUserByEmailAddress($emailAddress)
    {
       return $this->selectSingle( $this->getCMSTableNameUsers(), array('EmailAddress'=>$emailAddress));
    }

Затем selectSingle() вызывает select() с переданным пользовательским вводом.

Application/core/DB.php:200

root@kitploit:~
    public function selectSingle($tableName, array $where = array(), array $fields = array('*'))
    {
      $return = $this->select($tableName, $where, $fields);

      $single = NULL;

      if( count($return) > 0 )
        $single = $return[0];

      return $single;
    }

Уязвимая функция select() конкатенирует переданные ей параметры в SQL-запрос, который затем выполняется.

Application/core/DB.php:186

root@kitploit:~
    public function select($tableName, array $where = array(), array $fields = array('*'))
    {      
      $fieldsString = $this->generatePair($fields, ',');
      $whereString = $this->generateKeyValuePair($where, '=', 'AND');

      $sql = 'SELECT '.$fieldsString.' FROM '.$tableName;

      if($whereString !='')
        $whereString = ' WHERE '.$whereString;

      $sql = $sql.' '.$whereString.';';     
      return $this->execute($sql)->fetchAll($this->returnType, $this->className);
    }

Из-за отсутствия санитизации ввода, проверки и параметризации эта функция остаётся уязвимой для атак с помощью SQL-инъекций.

Смягчение

К сожалению, отсутствие сопровождения этой CMS означает, что исправленное обновление недоступно. Отдельные пользователи могут изменить код, чтобы использовать параметризованные SQL-запросы вместо того, чтобы полагаться на конкатенацию при передаче пользовательского ввода в базу данных. Подготовленные выражения являются примером меры смягчения, которая может этого добиться.

Скачать инструмент