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:
popen
por conseguir executar códigos de maneira maliciosasystem
por conseguir executar códigos de maneira maliciosaexec
por conseguir executar códigos de maneira maliciosashell_exec
por conseguir executar códigos de maneira maliciosaproc_open
por conseguir executar códigos de maneira maliciosa e por conseguir abrir arquivos para entrada/saídaeval
pode ser usado para criar um ambiente onde irá executar um código maliciosocreate_function
cria uma função anônima (obsoleta desde o PHP 7.2.0)show_source
mostra o código de um arquivo PHPhighlight_file
mostra o conteúdo de um arquivoposix_mkfifo
,posix_getlogin
,posix_ttyname
podem ser utilizadas para interagir com o sistema operacional de maneiras potencialmente insegurasini_alter
,ini_restore
pode ser utilizada para alterar configurações de segurança ou comportamento do PHPdl
pode ser usada para carregar uma extensão PHP em tempo de execução (removido desde o PHP 7.0.0)pfsockopen
pode abrir uma conexão socket persistentestream_socket_server
pode criar um servidor de socketfsockopen
abre 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.