­Экс­плу­атация уяз­вимости Spring4Shell в фрей­мвор­ке Spring

Spring4Shell уязвимость Spring

Сегодня, в рамках прохождения машины Inject с пло­щад­ки Hack The Box, я покажу, как ­экс­плу­атировать уяз­вимость Spring4Shell в фрей­мвор­ке Spring.

Еще по теме: Способы эксплуатации уязвимости Log4j

­Что такое Spring

В этом про­екте исполь­зует­ся фрей­мворк Spring — это средс­тво внед­рения зависи­мос­тей с нес­коль­кими удоб­ными сло­ями (сре­ди них — дос­туп к базе дан­ных, прок­си, аспек­тно ори­енти­рован­ное прог­рамми­рова­ние, RPC, веб‑инфраструк­тура и про­чие).

Все это поз­воля­ет быс­трее и удоб­нее соз­давать при­ложе­ния на Java, но исполь­зование таких фрей­мвор­ков может при­вес­ти к рис­кам для безопас­ности. Так, эта вер­сия Spring содер­жит извес­тную уяз­вимость Spring4Shell.

­Экс­плу­атация уяз­вимости Spring4Shell в фрей­мвор­ке Spring

Этот баг при­водит к уда­лен­ному выпол­нению кода (RCE). Под­робнее о том, как это работа­ет, можете про­читать в бло­ге Sysdig. Что­бы про­верить уяз­вимость, поп­робу­ем запус­тить прос­той веб‑сер­вер на осно­ве Python 3 и обра­тить­ся к нему с уда­лен­ного сер­вера:

По­лучит­ся такой зап­рос:

­Уязвимость Spring4Shell Spring. Ло­ги веб‑сер­вера

Ви­дим зап­рос в логах, а зна­чит, уяз­вимость под­твержде­на. Запус­каем лис­тенер:

И выпол­няем реверс‑шелл. В качес­тве шел­ла исполь­зуем сле­дующий про­верен­ный вре­менем код на Python:

Од­ной коман­дой это выпол­нить не выш­ло, поэто­му пер­вой коман­дой ска­чива­ем реверс‑шелл, вто­рой прис­ваиваем пра­ва для выпол­нения, а треть­ей выпол­няем шелл.

­Spring4Shell уязвимость Spring. Сес­сия поль­зовате­ля frank
­

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

Дима (Kozhuh)

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

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