Essa dica rápida é pra quem conseguiu acesso ao banco de dados de um website WordPress (por meio de alguma vulnerabilidade que permita a leitura do arquivo de configuração ou mesmo symlink bypass).
Para quem conseguiu apenas as credenciais, lembre-se que geralmente, os servidores guardam no subdiretório virtual "phpmyadmin" (alvo.com/phpmyadmin) a ferramenta PHPMyAdmin, para administração da base de dados. O login e a senha que essa ferramenta solicitar serão os mesmos encontrados no arquivo de configuração.
Estamos na base de dados.
Vamos abrir a tabela de usuários. Note que há apenas um.
Note que a criptografia utilizada na senha não parece ser um simples MD5. Ocorre que o WordPress utiliza um bom sistema de criptografia baseada em chaves (salts), que nada mais são do que strings aleatórias que são misturadas com a senha antes de aplicar uma criptografia infernal.
Mas há um segredo no WordPress: se substituímos todos aqueles caracteres por uma simples hash MD5, o sistema aceitará. Duvida?
Eu quero que a nova senha do administrador seja "maldade". Vamos converter isso para MD5.
Note que "maldade" em MD5 é "37145b51e208c9be5a89f9fb77228ccc". Vamos editar a linha do administrador, clicando no lápis no princípio da mesma e colocando a senha criptografada em MD5 que acabamos de criar.
Execute a alteração...
Abra o painel de login e entre com nossas credenciais...
Aqui estamos nós!
E agora, o que fazemos para enviar uma webshell? O upload de mídia não costuma funcionar. Em compensação, vamos explorar uma antiga falha: a edição dos temas.
Ocorre que os arquivos dos temas (templates) do WordPress são meros códigos PHP que são incluídos. Se simplesmente editarmos um deles, inserindo o código de uma webshell, poderemos adentrar o servidor. Mas, atenção: procure editar um arquivo que não seja tão utilizado (digamos que não vale à pena editar a página inicial do website e deixar uma webshell à mostra de todos). Vamos editar a página de erro 404, por exemplo. O editor fica em Aparência > Editor (e eu não sei que idioma é esse).
Ao lado, na lista de modelos, procure pelo da página de erro 404 e insira o código-fonte da sua webshell. Eu recomendo a webshell Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar..., por possuir navegação sem refresh por AJAX.
Cole todo o código da webshell e salve o ficheiro.
Então, vamos acessar uma página que sabemos que não existe, para gerar o erro 404 e ver nossa webshell.
Vamos editar o arquivo index.php...
Mas note que nada foi feito...
Pode ser um probleminha com o cache do sistema. Por isso, vamos upar uma nova webshell para o diretório principal (o mesmo onde está index.php) e, então, excluir tudo. Menos nossa webshell, claro.
Como não sou assim tão mal, movi tudo para um diretório de backup. Aqui está a prova:
Note que, ao acessar o website, vemos a lista de arquivos da raiz (nossa webshell e minha pasta de backup):
Vamos, então, criar o arquivo index.html
Colar nele nossa defacepage e salvar.
Agora, sim!
Para quem conseguiu apenas as credenciais, lembre-se que geralmente, os servidores guardam no subdiretório virtual "phpmyadmin" (alvo.com/phpmyadmin) a ferramenta PHPMyAdmin, para administração da base de dados. O login e a senha que essa ferramenta solicitar serão os mesmos encontrados no arquivo de configuração.
Estamos na base de dados.
Vamos abrir a tabela de usuários. Note que há apenas um.
Note que a criptografia utilizada na senha não parece ser um simples MD5. Ocorre que o WordPress utiliza um bom sistema de criptografia baseada em chaves (salts), que nada mais são do que strings aleatórias que são misturadas com a senha antes de aplicar uma criptografia infernal.
Mas há um segredo no WordPress: se substituímos todos aqueles caracteres por uma simples hash MD5, o sistema aceitará. Duvida?
Eu quero que a nova senha do administrador seja "maldade". Vamos converter isso para MD5.
Note que "maldade" em MD5 é "37145b51e208c9be5a89f9fb77228ccc". Vamos editar a linha do administrador, clicando no lápis no princípio da mesma e colocando a senha criptografada em MD5 que acabamos de criar.
Execute a alteração...
Abra o painel de login e entre com nossas credenciais...
Aqui estamos nós!
E agora, o que fazemos para enviar uma webshell? O upload de mídia não costuma funcionar. Em compensação, vamos explorar uma antiga falha: a edição dos temas.
Ocorre que os arquivos dos temas (templates) do WordPress são meros códigos PHP que são incluídos. Se simplesmente editarmos um deles, inserindo o código de uma webshell, poderemos adentrar o servidor. Mas, atenção: procure editar um arquivo que não seja tão utilizado (digamos que não vale à pena editar a página inicial do website e deixar uma webshell à mostra de todos). Vamos editar a página de erro 404, por exemplo. O editor fica em Aparência > Editor (e eu não sei que idioma é esse).
Ao lado, na lista de modelos, procure pelo da página de erro 404 e insira o código-fonte da sua webshell. Eu recomendo a webshell Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar..., por possuir navegação sem refresh por AJAX.
Cole todo o código da webshell e salve o ficheiro.
Então, vamos acessar uma página que sabemos que não existe, para gerar o erro 404 e ver nossa webshell.
Vamos editar o arquivo index.php...
Mas note que nada foi feito...
Pode ser um probleminha com o cache do sistema. Por isso, vamos upar uma nova webshell para o diretório principal (o mesmo onde está index.php) e, então, excluir tudo. Menos nossa webshell, claro.
Como não sou assim tão mal, movi tudo para um diretório de backup. Aqui está a prova:
Note que, ao acessar o website, vemos a lista de arquivos da raiz (nossa webshell e minha pasta de backup):
Vamos, então, criar o arquivo index.html
Colar nele nossa defacepage e salvar.
Agora, sim!