Uma WebShell é adquirida através do upload de um arquivo com algum conteúdo malicioso. Como exemplo, um arquivo PHP contendo um código malicioso pode ser considerado um WebShell. Existem algumas funções que podem ser observadas dentro do código PHP para conseguir um (CWE-94) Improper Control of Generation of Code (‘Code Injection’). Os códigos PHP abaixo podem ser utilizados para conseguir explorar esse ponto, tais como:
popenpor conseguir executar códigos de maneira maliciosasystempor conseguir executar códigos de maneira maliciosaexecpor conseguir executar códigos de maneira maliciosashell_execpor conseguir executar códigos de maneira maliciosaproc_openpor conseguir executar códigos de maneira maliciosa e por conseguir abrir arquivos para entrada/saídaevalpode ser usado para criar um ambiente onde irá executar um código maliciosocreate_functioncria uma função anônima (obsoleta desde o PHP 7.2.0)show_sourcemostra o código de um arquivo PHPhighlight_filemostra o conteúdo de um arquivoposix_mkfifo,posix_getlogin,posix_ttynamepodem ser utilizadas para interagir com o sistema operacional de maneiras potencialmente insegurasini_alter,ini_restorepode ser utilizada para alterar configurações de segurança ou comportamento do PHPdlpode ser usada para carregar uma extensão PHP em tempo de execução (removido desde o PHP 7.0.0)pfsockopenpode abrir uma conexão socket persistentestream_socket_serverpode criar um servidor de socketfsockopenabre uma conexão socket
Todas essas funções podem ser utilizadas para explorar um (CWE-434) Unrestricted Upload of File with Dangerous Type em PHP. Ler, modificar ou obter informações pode ser uma alta quebra de integridade do sistema. Além disso, se explorada da maneira correta, um WebShell pode levar a um Reverse Shell, o que agrava ainda mais a situação.