Enero 16, 2018, 02:01:12 am

Autor Tema: ¿Qué caracteres filtrar para evitar una inyección bash?  (Leído 596 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Solid Water

  • Yo vivo en CPH
  • ***
  • Mensajes: 1072
  • Sexo: Masculino
  • Vuelvan Hackers!
    • Ver Perfil
¿Qué caracteres filtrar para evitar una inyección bash?
« en: Agosto 13, 2017, 01:59:54 pm »
Hola hace un tiempo utilizaba la biblioteca Net::SMTP para enviar mails desde perl y funcionaba muy bien, pero ahora no sé si por la actualización de bibliotecas o que me tira error en una de sus dependencias.
Así que probé MIME y otras bibliotecas, pero con ninguna tuve éxito para enviar e-mails.
La única que me quedó fue usar el sendmail de la consola así que creo mi variable $command concatenando toda la información y luego se la paso a system(); para que ejecute el comando

Código: You are not allowed to view links. Register or Login
$command = 'sendEmail -f MiEmail@hotmail.com -t '.$receptor.' -u "activation code" -m "'.$msg.'" -s smtp.live.com:587 -xu MiEmail@hotmail.com -xp MiPassword';

system($command);

Hasta ahí todo bien, el tema es que el email al que se envía el código de activación, se ingresa desde una página web. Y si yo ingreso por ejemplo en el email &ls& consigo inyectar codigo "bash" en mi funcion system(); por lo que en ese caso podrían ver mis archivos. Claro que podrían inyectar otras cosas.

Entonces pense en usar expresiones regulares para filtrar el uso del caracter & en la variable del email
Código: You are not allowed to view links. Register or Login
if($receptor !~ m/&/){
$command = 'sendEmail -f MiEmail@hotmail.com -t '.$receptor.' -u "activation code" -m "'.$msg.'" -s smtp.live.com:587 -xu MiEmail@hotmail.com -xp MiPassword';

system($command);

}else{
        printf "se encontro & en la cadena";
}
Bueno todo perfecto filtra el caracter '&'.
Yo lo que quiero saber es si hay otros caracteres que debería filtrar para evitar la injeccion de código bash. ¿Cuáles son?

Edit: Encontré que otro de los caracteres que debía filtrar es el ; punto y coma, también filtre espacios en blancos, < >, $, /, y por las dudas |, habrá algo más?

Muchas gracias!!!,

Saludos
« Última modificación: Agosto 20, 2017, 12:47:28 pm por Solid Water »

Not for the money, not for the fame. Not for the power, just no more games.

Desconectado Solid Water

  • Yo vivo en CPH
  • ***
  • Mensajes: 1072
  • Sexo: Masculino
  • Vuelvan Hackers!
    • Ver Perfil
Re:¿Qué caracteres filtrar para evitar una inyección bash?
« Respuesta #1 en: Agosto 20, 2017, 12:18:22 pm »
Bueno quería decir que empecé a filtrar todos los caracteres que veía peligrosos en el email
   
Código: You are not allowed to view links. Register or Login
        }else{printf "se encontro & en la cadena";}
                }else{printf "se encontro ; en la cadena";}
                }else{printf "se encontro | en la cadena";}
                }else{printf "se encontro < en la cadena";}
                }else{printf "se encontro > en la cadena";}
                }else{printf "se encontro = en la cadena";}
                }else{printf "se encontro \$ en la cadena";}
                }else{printf "se encontro ( en la cadena";}
                }else{printf "se encontro ~ en la cadena";}
                }else{printf "se encontro [ en la cadena";}
                }else{printf "se encontro { en la cadena";}
                }else{printf "se encontro / en la cadena";}
                }else{printf "se encontro : en la cadena";}
}else{printf "se encontro ) en la cadena";}

Además, se me ocurrió poner la sentencia entre parentesis() y agregar >, así la consola no retornaba nada visible a mi web, todo iba hacia mi archivo.

   
Código: You are not allowed to view links. Register or Login
($command = 'sendEmail -f MiEmail@hotmail.com -t '.$receptor.' -u "activation code" -m "'.$msg.'" -s smtp.live.com:587 -xu MiEmail@hotmail.com -xp MiPassword') > archivo.txt;
Además se me ocurrió crear un log de los comandos que se iban ejecutando, así ante cualquier problema podía ver que comando fué el que me inyectó.
         
Código: You are not allowed to view links. Register or Login
                        open(COMANDOS,">> comandos.txt") || die "No pudo abrirse: $!";
                        print COMANDOS "$command";
                        close(COMANDOS);
Pero después de todo esto, me di cuenta que era más fácil decir que caracteres aceptaba para el mail que cuales no, entonces decidí que solo aceptaría letras y números, arroba, guión bajo y puntos

   
Código: You are not allowed to view links. Register or Login
if ($email =~ /^[A-Za-z0-9_.\@]+$/){

Saludos
« Última modificación: Agosto 20, 2017, 12:20:00 pm por Solid Water »


xx
Evitar Inyección SQL

Iniciado por Shell Root

4 Respuestas
1722 Vistas
Último mensaje Marzo 05, 2010, 12:05:43 pm
por Shell Root
xx
Aplicación para filtrar llamadas en móvil...

Iniciado por Quirse

0 Respuestas
2805 Vistas
Último mensaje Julio 16, 2011, 08:32:03 pm
por Quirse
xx
Algun programa o algo para filtrar llamada interceptarlas

Iniciado por Cerkex

0 Respuestas
1056 Vistas
Último mensaje Agosto 24, 2012, 01:37:43 pm
por Cerkex
question
que paquetes en especifico debo de filtrar para reconocer un intruso

Iniciado por explore

5 Respuestas
1043 Vistas
Último mensaje Enero 29, 2011, 12:19:47 am
por wanm28
xx
comnandos bash dentro de scripts de bash

Iniciado por IsaacMontes

4 Respuestas
1240 Vistas
Último mensaje Diciembre 02, 2016, 03:47:11 pm
por IsaacMontes
xx
[Favor]Compilar bash para mi.

Iniciado por M4g¡0k

14 Respuestas
4633 Vistas
Último mensaje Octubre 08, 2009, 06:55:27 pm
por JaAViEr
xx
Bases de la programación para el Bash

Iniciado por Dr.SysCrack

0 Respuestas
2151 Vistas
Último mensaje Noviembre 22, 2007, 02:42:28 pm
por Dr.SysCrack
resuelto
Filtrar pajinas

Iniciado por rodrigo88_88

1 Respuestas
1961 Vistas
Último mensaje Enero 08, 2008, 02:26:04 pm
por fNiX
question
con que extecion guardo los Scripting bash para que se ejecuten en backtrack

Iniciado por jose9258

2 Respuestas
714 Vistas
Último mensaje Marzo 18, 2013, 02:04:05 pm
por CodeSource
question
Temporizador y caracteres para diseños de bat

Iniciado por kiok

2 Respuestas
2394 Vistas
Último mensaje Abril 27, 2010, 01:48:46 pm
por JaAViEr