TGViewer
Codeby Codeby @codeby_sec · 37K subscribers
Post #10343 3.08K
POST-параметр → exec() → shell: как одна строка кода превращает админку CMS в точку входа на сервер

Представьте: вы администратор CMS, нажимаете кнопку «Обновить ядро», а браузер отправляет POST-запрос с параметром php. Значение этого параметра — путь к PHP-бинарнику — без какой-либо фильтрации конкатенируется в строку и уходит прямиком в exec(). Ни escapeshellarg(), ни allowlist, ни regex. Голый пользовательский ввод в shell-команде. 2026 год на дворе.

Именно это обнаружилось при анализе патча baserCMS 5.2.3. Уязвимости присвоены сразу два CVE — CVE-2026-21861 и CVE-2026-30877 — обе с оценкой CVSS 9.1 (CRITICAL). CISA подтвердила наличие концептуального PoC.

🔎Почему это опаснее, чем кажется?

Типичная реакция: «Атакующий уже админ, что ему ещё нужно?» Ответ кроется в CVSS-флаге Scope: Changed. Администратор CMS управляет контентом — страницами, медиафайлами, плагинами. OS command injection выводит атакующего за рамки приложения на уровень операционной системы:

• Чтение DB-credentials из конфигов CakePHP, SSH-ключей, API-токенов
• Запись PHP-шелла в webroot — сессия протухнет, а шелл останется
• Reverse shell для pivot'а к базе данных, очередям сообщений, внутренним API
• Полный контроль от имени www-data: чтение /etc/passwd, запуск произвольных бинарников

Для атакующего, получившего админ-аккаунт через credential stuffing или фишинг, это мост от «могу редактировать сайт» к «выполняю любые команды на сервере».

➡️Как устроен вектор атаки?

Контроллер PluginsController, метод get_core_update(). Параметр php извлекается из POST-данных и попадает в shell-команду дважды — как путь к бинарнику в начале и как аргумент после --php. Спецсимволы ;, |, &&, обратные кавычки и $() проходят без фильтрации. Подставляем в параметр что-то вроде php;id — и получаем выполнение произвольной команды.

«Но ведь есть CSRF-защита!» — скажете вы. Не поможет. Атакующий с легитимной admin-сессией получает валидный CSRF-токен штатным образом. Запрос формально легитимен: правильный endpoint, правильный метод, валидный токен. Скрытие кнопки обновления в UI бесполезно — endpoint доступен через curl или Burp Repeater.

👉Что делать прямо сейчас?

Если используете baserCMS — обновляйтесь до 5.2.3 немедленно. Обе уязвимости закрыты в одном релизе. Два CVE, один diff — скорее всего, два разных injection-вектора, найденных при одном аудите.

В полной статье — воспроизводимая цепочка эксплуатации, конкретные правила детектирования для WAF, хоста и SIEM, а также детальный разбор CVSS-вектора. Читайте на форуме.

https://codeby.net/threads/cve-2026-21861-basercms-uyazvimost-os-command-injection-cherez-funktsiyu-obnovleniya-yadra.94977/
  • ❤ 7
  • 👍 2
  • 🔥 2
More from @codeby_sec
  1. Sep 23, 2026Ваш терминал выполняет чужие команды — и вы этого не видите Представьте: вы читаете логи н…
  2. Sep 22, 2026Post #10458
  3. Sep 22, 2026https://youtube.com/shorts/B-JlepDLJP0?feature=share Идеальный курс по ИБ MS SQL, ADCS, AD…
  4. Sep 22, 2026PwnEye PwnEye - это относительно новый инструмент, который пока не получил должного вниман…
  5. Sep 21, 2026377 вакансий в ИБ. И всего 63 резюме. Это не опечатка, это текущий счёт на доске «Карьера…
  6. Sep 21, 20261️⃣Атаки прячут за запросами к нейросетям Злоумышленники нашли новый способ обходить защит…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →