Post para todos los programadores webs, para la protección de su web a todas las inyecciones.





Evitar ataque SQL Injection:


Este error es el más común, es uno de los mas basicos pero unos de los mas
utilizados, yo he encontrado hasta webs del gobierno con este simple fallo.

El fallo es sencillisimo:

Código: Seleccionar todo

SELECT * FROM

El fallo de este codigo es el "*" que por ese pego alguien puede aplastar tu web.


La solución sería cambiarlo por:

Código: Seleccionar todo

$id = (int)$_GET['id'];
$query = mysql_query( "SELECT * FROM noticias WHERE id = '$id'");
Si quitamos la * y lo sustimos por un nombre mas concreto el bug quedaría corregido.







Evitar ataque HTML Injection:





Los ataques HTML injection se producen en la parte en el que el user tiene que escribir
(Buscadores, Formularios, Libros de visita). El fallo más común en los libros de visitas
(Un ejemplo) es "<h1>" cual esa es la principal pista de si tu web es vulnerable.
Un ejemplo sería "<h1> hola </h1>" que si es vulnerable al aceptar saldria las letras
mas grandes.

Para fixear este bug haremos lo siguiente:

Lo primero que haremos es coger cualquier cadena y transformarla o "encriptarla"
en entidades html

Por ejemplo: <h1> hola </h1> que quedaría asín -> <holat&gt

Para eso utilizaremos el siguiente codigo

Código: Seleccionar todo

<?php
$Seguridad = htmlestities($_REQUEST['Elcomentarioquesea']);
echo $Seguridad;
?>
Asin no se mostrarían las letras más grandes ya que quedan transformadas
en unas entidades html.




Evitar ataque LFI:




Local File Inclusion significa la inclusión de los archivos internos de una web, los archivos
vulnerables.

Código: Seleccionar todo

<?php
$_GET['proteccion'] = str_replace(array('.','/','\\'),'',$_GET['proteccion']);
?>

Lo que hariamos hacer seria usar la funcion de php "str_replace" para eliminar los codigos utiles.


"str_replace" sirve para filtrar lo que necesiten para evitar lo que quieran borrar.





Evitar ataque RFI:





El RFI como lo indica la sigla, es un error de programacion en una web que nos permite ejecutar un archivo que tengamos subido a una web (atacante) en otra web (victima) . Cosa que en webs no vulnerables esto no tendria porque darse.

Lo que se busca para ver si una web es vulnerables es una variable en la web que lo sea, luego de esa variante se colocaria el codigo malicioso (nuestra shell)


Para prevenir este tipo de ataques, es posible utilizar o bien el indicador "./" para advertir que el archivo debe encontrarse en el directorio actual u otro indicador tal como "includes/". Ejemplo:

Código: Seleccionar todo

$archivo = str_replace(".","",str_replace("http","",$_GET['archivo']));
if(!file_exists($archivo))
{
       die("El archivo no existe");
}
include("./".$archivo.".php");

De esta forma no podría utilizar la variable page para RFI.






Evitar ataque DDos:



Un ataque DDos es un ataque que manda muchas peticiones al servidor
web hasta que acaba cayendose.


Para solucionar este problema podemos poner un ANTI-DOS o un captcha.
El captcha es una imagen con un texto aleatorio que sirve para identificarse, podeis verlo
y descargarlo del post que puse hace un tiempo de aqui:


http://indetectables.net/foro/viewtopic.php?p=136286




Evitar ataque Full Path Discloure:




Explotar esta vulnerabilidad no significa que podamos hacer grandes cosas, simplemente nos entregará información que podría ser utilizada para lo que uno estime conveniente.



Para corregirlo simplemente debemos agregar, a cada llamada de la función, la siguiente validación:


Código: Seleccionar todo

 <?php

error_reporting(O);





Agradecimientos: Pony


Algunas partes han sido cogidas de google.


Un saludo, skillmax
Última edición por Skillmax el 30 May 2010, 13:48, editado 2 veces en total.
Me gusta lo pongo como Fijo y me van poniendo mas cosas....

Salu2
Blog técnico dedicado a la seguridad informática y al estudio de nuevas vulnerabilidades.
Blog: http://www.seginformatica.net
Twitter: https://twitter.com/#!/p0is0nseginf
Gracias a los 4, y ahora iré añadiendo mas vulnerabilidades, acabo de añadir
la de Full Path Discloure.


Un saludo!
Gracias hermano, este tema cada vez toma mas fuerza en el foro, muy interezante y bien explicado.... continua asi, que hasta me esta despertando curiocidad este tema y se nota que lo dominas bien
Hasta ahora nada habia hecho cambiar mi firma.... Pero esto es un clasico... xD
polifemo escribió:any... Estoy rifando una patada en el culo y vos te estás comprando todos los números....Tus eternos comentarios de libertad e igualdad de hippie fracasado me tienen los huevos al plato....Aflojá hermano... porque te convierto en historia....
POLIFEMO.
blackmaster1212 escribió:Gracias hermano, este tema cada vez toma mas fuerza en el foro, muy interezante y bien explicado.... continua asi, que hasta me esta despertando curiocidad este tema y se nota que lo dominas bien

Gracias amigo... cualquier duda ya sabes
Wow brot de verdad no se mucho sobre web pero se ve muy interesante de verdad me gusta la informacion Felicitaciones Amigo se ve el nivel que tienes en esto
que gran trabajo Skillmax! post fijo y todo! gracias amigo!

SALUDOS!!
Soy un camaleón, en tu cama, leona ♪
Santaman escribió:añade remote code execution, arbitrary file upload, y quedaria bien

Sí, no quedaría mal asin también, gracias
Muy bueno este post, los hilos basados en como evitar ... son lo que realmente importan, jejeje te felicito skillmax
Cripter scantime in vb.net -> &h100x00 && [BackDoor]Mini BCK -> &h50x00
Cripter runtime in vb.net -> &h95x00 && [Trojan]SeeYouSooN RAT -> &h20x00
DnKA escribió:Muy bueno este post, los hilos basados en como evitar ... son lo que realmente importan, jejeje te felicito skillmax

Gracias amigo
Muy buen tema Skillmax, muy interesante y es de gran ayuda

Saludos
¿Si usted muriera hoy esta seguro que iría al cielo?
http://www.antesdelfin.com/salvo.html

© Indetectables Team
Responder

Volver a “Auditoria Web”