
Образовательный анализ CVE-2017-5638: OGNL-инъекция RCE в Apache Struts 2, с пошаговым разбором эксплуатации, анализом случая Equifax и рекомендациями по предотвращению.
Apache Struts 2 — это фреймворк с открытым исходным кодом для разработки веб-приложений на Java EE. Это второе поколение фреймворка Struts, впервые выпущенное 10 октября 2006 года. Struts Framework спроектирован так, чтобы помогать создавать веб-приложения, использующие архитектуру MVC.
Apache Struts — широко используемый фреймворк. В 2017 году более 65 процентов компаний из списка Fortune 100 использовали фреймворк Apache Struts.
Apache Struts RCE — объяснение
Эта уязвимость была впервые опубликована NVD 03.10.2017 и получила наивысший базовый балл 10 — «Критический». Основным фактором, обусловившим такой высокий балл, является то, что приложения могут быть атакованы через сеть с минимальной сложностью и с высоким влиянием на целостность и доступность.
Уязвимость позволяла атакующему выполнить удаленное выполнение кода (RCE) в приложении путем внедрения выражений Object Graph Navigation Library (OGNL) в HTTP-заголовки.
Уязвимые версии фреймворка: Apache Struts 2 версии 2.3.x до 2.3.32 и 2.5.x до 2.5.10.1.
.png)
Уязвимый код находится в Jakarta Multipart Parser. Для выполнения эксплойта атакующий использует уязвимость в функции LocalizedTextUtil.findText, которая интерпретирует переданное сообщение внутри ${...} как выражение Object Graph Navigation Library (OGNL). Затем атакующий может использовать эти OGNL-выражения, которые, в свою очередь, выполняют системные команды и могут раскрыть содержимое конфиденциальных файлов, таких как /etc/password, /etc/shadow, что дает атакующему полный контроль. Приложение также выводит результат команд, выполненных атакующим, что дополнительно облегчает атаку.
На следующем изображении показан HTTP-запрос с OGNL-выражением, которое позволяло атакующим провести эксплуатацию.

В марте 2017 года, когда уязвимость CVE-2017-5638 была впервые обнаружена в фреймворке Apache Struts, Apache Foundation выпустила патч для нее, но Equifax не применила патч к уязвимой системе, поскольку сканирования для поиска уязвимых систем не сработали.
С мая по июль 2017 года атакующие смогли получить доступ к нескольким базам данных Equifax, раскрыв информацию миллионов людей. Атака затронула 143 миллиона человек, а также раскрыла данные кредитных карт более 200 000 человек.
Атакующие смогли продолжать атаки, оставаясь незамеченными в течение 76 дней.
Компания потратила 1,4 миллиарда долларов на модернизацию системы безопасности после крупной утечки данных.