Как я сломал регулярку ManageEngine и прикрутил Telegram к ADAudit за 5 минут

в 6:15, , рубрики: ADAudit Plus, ManageEngine, telegram, webhook, Мониторинг ИБ, оповещения, регулярное выражение

ADAudit Plus умеет отправлять алерты по SMS. Telegram — это почти SMS, если закрыть глаза. Осталось убедить в этом сам ADAudit. Спойлер: ему всё равно, что отправлять, лишь бы URL проходил валидацию. А валидация там — та ещё боль.

Если вы когда-нибудь пытались настроить Telegram-оповещения в ADAudit, то знаете: готового решения нет. Есть форумы, где люди годами просят вендора добавить Webhook. Есть костыли с Python-скриптами, батниками и планировщиками. А есть способ, за который не стыдно.

Никаких внешних скриптов. Никаких «запустить программу». Только нативная настройка SMS-шлюза и одна правка в клиентском JavaScript.


❌ Почему Telegram нельзя вставить просто так

Вы заходите в Admin (Server Settings) → SMS Configuration, выбираете Custom-провайдер, вводите URL:

https://api.telegram.org/bot7443611865:AAHSmw.../sendMessage

И видите:

«Enter valid HTTP URL»

Форма не принимает URL. Почему? Потому что фронтенд ADAudit проверяет введённую строку регулярным выражением, которое не разрешает двоеточие в пути запроса.

Вот оно, то самое регулярное выражение из файла emberapp-auditplus.js:

js

var regexp = /^(ftp|http|https)://([a-zA-Z0-9._-~])+(:+([0-9]+))*([a-zA-Z0-9._-~/!*])+(([a-zA-Z0-9._-~!*/]))$/i;
Как я сломал регулярку ManageEngine и прикрутил Telegram к ADAudit за 5 минут - 1

Оно ожидает, что после хоста может идти только порт (:8443), а не строка вида :AAHSmw.... В результате легитимный URL Telegram API не проходит валидацию.

Разработчики просто не предусмотрели, что кто-то будет использовать их SMS-шлюз не по назначению. Но мы это исправим.


✅ Лечим заменой одной строки

Открываем файл:

C:Program FilesManageEngineADAudit Pluswebappsadapassetsemberapp-auditplus.js

Находим 19401 строку (или просто ищем regexp = /^(ftp|http|https)).

Заменяем содержимое на это:

js

var regexp = /^(ftp|http|https)://[a-zA-Z0-9._-~]+(:[0-9]+)?(/[a-zA-Z0-9._-~!*',;:@&=+$/%-]*)?$/i;
Как я сломал регулярку ManageEngine и прикрутил Telegram к ADAudit за 5 минут - 2

Что изменилось:

  • Разрешены любые символы в пути (@, :, =, &, ;)

  • Убрана привязка к порту как единственному месту с двоеточием

  • Всё остальное осталось безопасным

Важно: Регулярка живёт на клиенте. После сохранения файла достаточно обновить страницу в браузере (Ctrl+F5). Перезагружать сервер не нужно.


📲 Настраиваем SMS-шлюз на Telegram

Теперь форма примет любой URL. Заходим в Admin (Server Settings)→ SMS Configuration и выставляем:

Параметр

Значение

SMS Provider

Custom

Send SMS via

HTTP

HTTP Method

POST

HTTP URL

https://api.telegram.org/bot<ТОКЕН_БОТА>/sendMessage

HTTP Parameters

chat_id=<ID_ЧАТА>&text=%message%&dummyMob=%mobNo%

Select Response Type

Success

Разбор полёта:

  • %message% — это тело СМС. Сюда будет подставляться текст алерта.

  • %mobNo% — номер телефона. Мы его не используем, но параметр обязателен. Уходит в dummyMob и игнорируется Telegram.

  • chat_id — может быть отрицательным (для каналов и групп).

При желании можно добавить &parse_mode=HTML прямо в строку параметров — Telegram будет форматировать сообщение.


🔔 Создаём правило оповещения

Идём в Alerts → Create New Alert.

  • Выбираем событие (например, User Added to Privileged Group)

  • В блоке Action указываем Send SMS

  • В выпадающем списке выбираем только что созданный SMS-провайдер

  • Поле Mobile Number — любой текст (например, 111)

  • Поле Message — сам текст уведомления

Пример сообщения:

text

🚨 ADAudit ALERT
Событие: %eventname%
Инициатор: %caller%
Объект: %objectname%
Как я сломал регулярку ManageEngine и прикрутил Telegram к ADAudit за 5 минут - 3

Макросы работают точно так же, как в email-оповещениях. Полный список можно подсмотреть при создании почтового правила.


🤔 А что с обновлениями?

При обновлении ADAudit файл emberapp-auditplus.js перезаписывается. Регулярка сбрасывается.

Вариантов два:

  1. Включить замену регулярки в процесс обновления (Ansible, PowerShell, chocolatey).

  2. Ждать, когда вендор официально включит фикс в релиз.

Хорошая новость: на форуме ManageEngine представитель вендора ответил, что они рассмотрят возможность добавить поддержку Telegram в будущих версиях. Наш тикет не остался незамеченным.


💀 Итог: ни одного костыля

Мы получили:

  • Нативную интеграцию без скриптов и батников

  • Поддерживаемую — при обновлении ломается только регулярка, а не вся схема

  • Гибкую — можно использовать любые макросы ADAudit

  • Быструю — сообщения уходят мгновенно, без очередей SMTP

Никакого Python. Никакого curl. Никаких задач в планировщике.

Только одна правка в JS-файле и пять минут времени.


Пробовали прикрутить Telegram к другим продуктам ManageEngine? Делитесь способами в комментариях. Безопасность не терпит задержек, а мессенджеры — лучший способ достучаться до дежурного инженера в 3 часа ночи.

P.S. Если вам помогла эта статья — нажмите «плюс» в профиле и оставьте комментарий на форуме вендора. Там это действительно читают.

Автор: TakezoKensay

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js