Эксплуатация уязвимости в модуле PHP Imagick

Эксплуатация уязвимость PHP Imagick

В этой небольшой статье, в рамках прохождения уязвимой виртуальной машины Intentions с площадки Hack The Box, я продемонстрирую эксплуатацию уязвимости в модуле PHP Imagick.

Еще по теме: Эксплуатация уязвимости f-строки в Python

Эксплуатация уязвимости в модуле PHP Imagick

В статье отме­чено наличие SSRF в конс­трук­торе клас­са Imagick, но, помимо это­го, исполь­зовав MSL (Magick Scripting Language), мож­но раз­вить уяз­вимость до RCE. Это встро­енный язык ImageMagick, который облегча­ет обра­бот­ку изоб­ражений. С его помощью мож­но в чис­ле про­чего вза­имо­дей­ство­вать с фай­ловой сис­темой. Это инте­рес­но, учи­тывая, что на нашем сай­те есть воз­можность редак­тировать изоб­ражения.

Эксплуатация уязвимости в модуле PHP Imagick

Про­буем изме­нить отте­нок, пос­ле чего прос­матри­ваем зап­рос в Burp History.

Зап­рос к API /api/v2/admin/image/modify
Зап­рос к API /api/v2/admin/image/modify

В зап­росе переда­ется отте­нок и путь к фай­лу кар­тинки. Исполь­зуя этот зап­рос и метод из статьи, поп­робу­ем передать файл MSL, ука­зыва­ющий на изоб­ражение с веб‑шел­лом, рас­положен­ное на нашем веб‑сер­вере, а потом поп­робу­ем обра­тить­ся к такому изоб­ражению.

Пер­вым делом сде­лаем изоб­ражение с веб‑шел­лом.

Пе­реда­вать будем вот таким фай­лом MSL.

А теперь нам нуж­но одновре­мен­но запус­тить два зап­роса в Burp Intruder. В пер­вом мы будем переда­вать файл MSL, а во вто­ром пытать­ся успеть к нему обра­тить­ся, пока он не исчез из вре­мен­ного катало­га /tmp.

Зап­рос с фай­лом MSL
Зап­рос с фай­лом MSL

 

Зап­рос к вре­мен­ному фай­лу
Зап­рос к вре­мен­ному фай­лу

Для обо­их интру­деров уста­нав­лива­ем 100–1000 наг­рузок с пус­той наг­рузкой.

Burp Intruder — вклад­ка Payloads
Burp Intruder — вклад­ка Payloads

Пос­ле запус­ка обо­их интру­деров в логах веб‑сер­вера видим обра­щение к изоб­ражению с наг­рузкой.

Ло­ги веб‑сер­вера
Ло­ги веб‑сер­вера

Со­дер­жимое кар­тинки с наг­рузкой было получе­но и сох­ранено на сер­вере в файл PHP. Про­буем выпол­нить коман­ду id.

Ре­зуль­тат выпол­нения коман­ды id
Ре­зуль­тат выпол­нения коман­ды id

Ко­ман­ды выпол­няют­ся, а зна­чит, запус­каем лис­тенер pwncat-cs -lp 4321 и выпол­няем реверс‑шелл:

Сес­сия поль­зовате­ля www-data
Сес­сия поль­зовате­ля www-data

ПОЛЕЗНЫЕ ССЫЛКИ:

Дима (Kozhuh)

Эксперт в кибербезопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз.

Добавить комментарий