Плагин GamiPress для WordPress уязвим для аутентифицированного (подписчика+) SQL-инъекции через параметр «q» селектора AJAX интеграции wpForo (действие gamipress_wpforo_get_posts) в версиях до 7.9.7 включительно. Значение передается только через $wpdb->esc_like() и интерполируется непосредственно в предложение LIKE, заключенное в одинарные кавычки, без заполнителя %s. Поскольку esc_like() выполняется после основных магических кавычек WordPress, он удваивает введенную обратную косую черту (\' -> \\'), которую MySQL считывает как одну буквальную обратную косую черту, за которой следует живая закрывающая кавычка, что позволяет злоумышленнику выйти из строки и внедрить логический SQL.
Плагин wpForo должен быть активен только для регистрации обратного вызова; уязвимость wpForo не используется. Требуется учетная запись подписчика, которая может читать nonce gamipress_admin (отображается на каждой странице администратора, например /wp-admin/profile.php). Примечание.
Векторы Simple:Press исследователя (PoC 2 и 3) не воспроизводятся в текущем коде, который использует $wpdb->prepare() с заполнителями %s; подтвержден только селектор wpForo.
Показать оригинальное описание (EN)
The GamiPress plugin for WordPress is vulnerable to authenticated (Subscriber+) SQL Injection via the 'q' parameter of the wpForo integration AJAX selector (action gamipress_wpforo_get_posts) in versions up to, and including, 7.9.7. The value is passed only through $wpdb->esc_like() and interpolated directly into a single-quoted LIKE clause with no %s placeholder. Because esc_like() runs after WordPress core magic quotes, it doubles the injected backslash (\' -> \\'), which MySQL reads as one literal backslash followed by a live closing quote, allowing the attacker to break out of the string and inject boolean-based SQL. The wpForo plugin only needs to be active to register the callback; no wpForo vulnerability is used. Requires a Subscriber account, which can read the gamipress_admin nonce (exposed on every admin page, e.g. /wp-admin/profile.php). Note: the researcher's Simple:Press vectors (PoC 2 & 3) do not reproduce in current code, which uses $wpdb->prepare() with %s placeholders; only the wpForo selector is confirmed.
Характеристики атаки
Последствия
Строка CVSS v3.1