playSMS v1.4 - Exploit - Remote Code Execution

playSMS v1.4 é um software open source para gerenciamento de SMS e SMS Gateway. Em 2017 foi publicada a CVE-2017-9101 reportando a vulnerabilidade de Execução Remota de Código (RCE - Remote Code Execution). 

CVE-2017-9101 - Remote Code Execution

A função Phonebook import presente no arquivo import.php permite a execução remota de código a partir do upload de um arquivo .csv contendo o código php apontando para o user-agent. A requisição POST pode ser interceptada e o user-agent utilizado como vetor do ataque para execução de comandos remotamente. 

Exploit-DB Publicação

O exploit 42044 foi publicado em 21-05-2017 com os detalhes para explorar a vulnerabilidade. 

OWASP Definição 

O RCE - Remote Code Execution é definido pelo OWASP como Command Injection onde o objetivo é executar comandos do sistema operacional do servidor a partir de uma aplicação vulnerável. O Command Injection é possível quando a aplicação não faz a validação dos inputs do usuário (cookies, forms, HTTP Headers, etc) e encaminha para o sistema operacional a execução. O atacante envia comandos que serão executados no sistema operacional com o mesmo nível de privilégio da aplicação. 

POC - Prova de Conceito 

A execução do RCE requer autenticação para acesso à area do Phonebook Import.  

/playsms/index.php?app=main&inc=feature_phonebook&route=import&op=list

Feature Phonebook


Conforme descrito no exploit 42044, a aplicação lê o conteúdo do arquivo .csv mas não executa o código a partir do arquivo. 

Na descrição do exploit, o código php é adicionado no arquivo backdoor.csv e esse código aponta para o User-Agent onde o comando é adicionado e encaminado por uma requisição POST para upload do arquivo .csv 

<?php $t=$_SERVER['HTTP_USER_AGENT']; system($t); ?>


Arquivo backdoor.csv com o payload


O comando é adicionado no campo User-Agent do cabeçalho 


O resultado do comando é exibido na interface web da aplicação.

Output do comando 'ls' 


Além da execução remote de comandos do S.O, é possível conseguir uma shell reversa. No User-Agent o comando para a shell usa o nc (Ncat) para estabelecer a conexão com a máquina local. 



Conexão estabelecida com o servidor da aplicação.





Mitigação

Atualize o software para a versão mais recente. 


Referência: 

[+] CVE-2017-9101: https://nvd.nist.gov/vuln/detail/CVE-2017-9101

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

[+] OWASP-Command Injection: https://owasp.org/www-community/attacks/Command_Injection

[+] playSMS: https://playsms.org/






 



Comentários

Postagens mais visitadas