Пред­ставь: отправ­ляешь элек­трон­ное пись­мо и получа­ешь пол­ноцен­ный Remote Code Execution. Жер­тве не нуж­но перехо­дить по ссыл­кам или откры­вать фай­лы. Даже пись­мо не нуж­но откры­вать, глав­ное, что­бы оно дош­ло. Раз­берем с тобой уяз­вимость и напишем PoC.

CVE-2026-28289 — это уяз­вимость в опен­сор­сном help desk при­ложе­нии FreeScout. Help desk — это служ­ба под­дер­жки кли­ентов, которая занима­ется обра­бот­кой зап­росов, проб­лем и инци­ден­тов. Если прос­то — сис­тема тикетов с отсле­жива­нием сос­тояний.

FreeScout доволь­но популя­рен, более 4800 звезд на GitHub и бес­числен­ное количес­тво ска­чива­ний. А раз это кор­поратив­ный софт, зна­чит, уяз­вимость — это потен­циаль­ный вход в сеть мно­гих ком­паний, то есть лакомый кусочек для хакеров.

warning

Статья име­ет озна­коми­тель­ный харак­тер и пред­назна­чена для спе­циалис­тов по безопас­ности, про­водя­щих тес­тирова­ние в рам­ках кон­трак­та. Автор и редак­ция не несут ответс­твен­ности за любой вред, при­чинен­ный с при­мене­нием изло­жен­ной информа­ции. Рас­простра­нение вре­донос­ных прог­рамм, наруше­ние работы сис­тем и наруше­ние тай­ны перепис­ки прес­леду­ются по закону.

Уяз­вимая вер­сия FreeScout — 1.8.206. Уяз­вимость работа­ет на Apache с AllowOverride All. Ата­ка зак­люча­ется в отправ­ке вре­донос­ного пись­ма с вло­жени­ем двух фай­лов:

  • .htaccess для пере­опре­деле­ния поведе­ния веб‑сер­вера в кон­крет­ной пап­ке;
  • веб‑шел­ла под видом безобид­ного тек­сто­вого фай­ла.
Результат успешной атаки
Ре­зуль­тат успешной ата­ки
 

Собираем лабу

Да­вай раз­вернем тес­товый стенд, на котором мож­но будет демонс­три­ровать уяз­вимость. Я как осно­ву буду исполь­зовать WSL.

В качес­тве тес­товой машины ста­вим чис­тую Ubuntu:

wsl --install -d ubuntu

Ста­вим PHP вер­сии 7.4, Apache и базу дан­ных MariaDB:

sudo apt update -y
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update -y
sudo apt install -y apache2 mariadb-server git \
php7.4 php7.4-mysql php7.4-mbstring php7.4-xml \
php7.4-imap php7.4-zip php7.4-gd php7.4-curl php7.4-intl php7.4-json \
libapache2-mod-php7.4

Нас­тра­иваем Apache:

sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod php7.4

Пра­вим php.ini для веб‑сер­вера и для CLI (это нуж­но для cron). Изме­нения вно­сим оди­нако­вые:

memory_limit = 512M
upload_max_filesize = 16M
post_max_size = 20M
cgi.fix_pathinfo = 0

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии