MichBukana escribió:esto sin duda sirve muchísimo a los que no se atreven a empezar a montar su propia web por temor a estos tipos de ataques pues esto ayuda mucho de corazon muchas muchas gracias incluso a los que ya la tienen montada y no saben en que están fallando para evitar estos ataques un saludo maquina! no me atravo mucho a decirlo pero pienso que una chincheta lo merece este post

Sí gracias amigo, ya está en chincheta


Se agradece el comentario bro..
RoLyxRoLy escribió:gracias por la info. cuando me haga una y la use voy a usarlos. (me hice pero no la uso) :)

Gracias a ti amigo!

Cualquier cosa avisa
Hola, nada mas te queria decir que :

SELECT * FROM no es para nada un bug y menos una inyeccion SQL, lo unico que puede ocasionar un mal rendimiento del servidor si se utiliza mal, por eso es mejor definir las filas a pedir.

una injeccion SQl seria no filtrar cualquier variable externa, por ejemplo:
<?
$id=$_GET['id']; // o $_POST .. etc esta variable pasa directa a la llamada sin filtarse entonces pueden injectar codigo poniendo ' falcilmente.
mysql_query("SELECT * FROM users WHERE id='$id'");
?>
rapida solucion a esto:
addslashes($_GET['id']); pero hay muchas otras formas dependiendo del tipo de valor, numerico, etc
la mejor seria utilizando mysqli_real_escape_string(); para querys a la db, haciendote una buena funcion o clase y luego implementarla facilmente.


Saludos
Buenas topcat que tal, ya has tenido tu minuto de oro, ahora dejame que te actualize un poco esto y te deje algunas cosas claras.


Para solucionar SQL

Código: Seleccionar todo

$id = (int)$_GET['id'];
$query = mysql_query( "SELECT * FROM noticias WHERE id = '$id'");

Full path Disclosure

Código: Seleccionar todo

<?php

error_reporting(0);

?>

Lo demás todo correcto, ahora sí, vuelve a comentar los fallos, y si algun moderador quiere corregirlo en el post principal, adelante.
OK OK no te molestes, mira te explico un poco, al momento que tu usas el * estas llamando todo el contenido de esa DB, después le metes un filtro, quedando que llame todo el contenido que tenga in ID == a tu variable. Esta inyección que tu mencionas con los nuevos servidores ya ha quedado casi obsoleta, incluso, uno como programador siempre recurre a limpiar las variables para evitar las semi-inyecciones, en estos casos un simple str_replace ayuda para frenar las inyecciones.

Un dato, y mira que si lo recomiendo, NUNCA pongan únicamente un limitador de caracteres en javascript, ya que tal ves al momento de escribir no te deje anexarlos pero al momento de enviar la info con el mendigo tamper data pueden inyectarte el código, lo mejor es poner el javascript y reforzarlo con el php.

P.D. Apoco ya se termino mi minuto de oro???
topcat, será algún fallo en la visión, pero donde se utiliza * aquí estamos utilizando:

Código: Seleccionar todo

$id = (int)$_GET['id'];
$query = mysql_query( "SELECT * FROM noticias WHERE id = '$id'");
Este codigo no permite la entradas tipo "noticias?id=123"

Te equivocas, está inyección para nada a quedado obsoleta y aún la sigo viendo, lo de javascript y php, ya lo sabemos, no es nada nuevo amigo, ahora mi pregunta es, ¿Qué fallos ves?, me interesaria que me lo dijeras, para asin solucionarlo.


Para evitar RFI estamos usando str_replace, asin que lo que tú dices es lo que está puesto, es cuestión de fijarse.

Código: Seleccionar todo

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

Tengo una pequeña pregunta n.n! te falto el [SSL] el [DNS] [XST] son los que se estan explotando actualmente y perdon por corregier u.u! pero el metodo sql tiene muchas variantes seria mejor poner el metodo [INTELIGENT MYSQL] ya que (ID) estan solo un pequeño paso de lo que Realmente es .. =D


Editado no escribas en negrita
Skillmax escribió:topcat, será algún fallo en la visión, pero donde se utiliza * aquí estamos utilizando:

Código: Seleccionar todo

$id = (int)$_GET['id'];
$query = mysql_query( "SELECT * FROM noticias WHERE id = '$id'");
Este codigo no permite la entradas tipo "noticias?id=123"

Te equivocas, está inyección para nada a quedado obsoleta y aún la sigo viendo, lo de javascript y php, ya lo sabemos, no es nada nuevo amigo, ahora mi pregunta es, ¿Qué fallos ves?, me interesaria que me lo dijeras, para asin solucionarlo.


Para evitar RFI estamos usando str_replace, asin que lo que tú dices es lo que está puesto, es cuestión de fijarse.

Código: Seleccionar todo

$archivo = str_replace(".","",str_replace("http","",$_GET['archivo']));
if(!file_exists($archivo))
{
       die("El archivo no existe");
}
include("./".$archivo.".php");
¿Para que parseas a entero la entrada si luego en el motor sql la tratas como cadena?. Si el parámetro 'id' fuera un string en vez de un entero, ¿tambien lo parsearias a entero? ..
PGP - https://keyserver2.pgp.com/vkd/DownloadKey.event?keyid=0x9A1286E0DF1FF2A1
Prablinha, generador de botnets OpenSource - http://www.indetectables.net/foro/viewtopic.php?f=7&t=29086
Mis artículos & proyectos - http://itsm3.com/
Gracias SkillMax,

Solo que te faltaron muchas vulnerabilidades muy importantes, como es SSI.
O la bastante conocida CSRF.

Pero woa! debo de aprender PHP a fondo!
Noticia: 51mpl3x dice que si fuera chica, se casaría conmigo. (1/Agosto/2011 at 5:52 pm)
Esperandote verte diciendo que eres gay no seas malito y pasate unas fotos ¿si?
Responder

Volver a “Auditoria Web”