Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - O_G_T

#1
Hola seria bueno tener esta DB asi que hago mi aporte di con esta base que me ha sido de utilidad hace tiempo:

Todas las provincias departamentos y localidades de Argentina.

Los datos están separados en tres tablas [Provincia] -> [Departamento] -> [Localidad]

Cantidad de registros:
Provincias: 23
Departamentos: 574
Localidades: 5439

descargar
http://www.mediafire.com/?hmbjwyjmdgx

fuente http://kerzek.blogspot.com/

saluddos!!


#2
Nivel Web / Re: PHP upload security
23 Enero 2010, 11:13 AM
hola que tal a todos  ;D
he pasado por este hilos que he encontrado googleando... he leido muchos temas publicados por sh4van3, algunos buenos otros no tantos debo suponer que se trata del mismo user SH4V de undersecurity.net  ya que todos los paper de sh4van3 son una copia exapta de SH4V....

Primero sh4van3 como tu dices Alla Bezroutchko publico esto  en el año 2007 y hoy es obsoleto... exiten muchas cosas que han cambiado desde esa fecha con relacion a php ....  hay muchas funciones antiguas y nuevas de php para el tratamiento de imagenes; como asi tambien existen muchos trucos que pocos revelan, yo no voy a revelar los mios, porque de esta manera mantendre seguras mis aplicaciones.  
Pero voy a mostrar algunas funciones que has descartado en tu codigo y que muchos dejan de lado a la hora de programar un upload de imagenes...

VAMOS AL HECHO:
exif_imagetype ---> determina el tipo de imagen
se puede utilizar en versiones PHP mayores a 4.3.0
ejemplo de uso

<?php
if (exif_imagetype('imagen_subida.gif') != IMAGETYPE_GIF) {
    echo 
'Hey! la imagen no es GIF!!! estas usando el tuto de sh4van3';
}else{ 
///codigo normal
}
?>



exif_read_data --> en versiones superiores 4.3.0 (recomendado)
lee los encabezados EXIF de un archivo de imagen JPEG o TIFF. De esta manera se puede obtenet los metadatos generados por cámaras digitales utilizadas.

testeo

<?php
echo "test1.jpg:<br />\n";
$exif exif_read_data('tests/test1.jpg''IFD0');
echo 
$exif===false "No header data found.<br />\n" "Image contains headers<br />\n";

$exif exif_read_data('tests/test2.jpg'0true);
echo 
"test2.jpg:<br />\n";
foreach (
$exif as $key => $section) {
    foreach (
$section as $name => $val) {
        echo 
"$key.$name$val<br />\n";
    }
}
?>



exif_thumbnail
<?php
if (array_key_exists('file'$_REQUEST)) {
    
$image exif_thumbnail($_REQUEST['file'], $width$height$type);
} else {
    
$image false;
}
if (
$image!==false) {
    
header('Content-type: ' .image_type_to_mime_type($type));
    echo 
$image;
    exit;
} else {
    
// no thumbnail available, handle the error here
    
echo 'No thumbnail available';
}
?>



LOS SOBRESALIENTES:
imagecopyresampled() copia una porción rectangular de una imagen sobre otra, suavizando los valores de los píxeles mediante interpolación, de forma que al reducir el tamaño de una imagen aún mantiene una buena claridad. img_dst  es la imagen de destino, img_org  es el identificador de la imagen de origen. Si las coordenadas de origen y destino y ancho y alto son diferentes, se encogerá o agrandará el fragmento de imagen según sea necesario. Las coordenadas son relativas a la esquina superior izquierda. Esta función se puede usar para copiar regiones dentro de la misma imagen (si img_dst  es la misma que img_org ) pero si las regiones se superponen, los resultados serán impredecibles.

imagecopyresized() copia una porción rectangular de una imagen hacia otra imagen. dst_im  es la imagen de destino, src_im  es el identificador de la imagen origen. Si la altura y anchura de las coordenadas de origen y destino difieren se realizará un estrechamiento o un estiramiento apropiado del fragmento de la imagen. Las coordenadas van localizadas sobre la esquina superior izquierda. Esta función se puede usar para copiar regiones dentro de la misma imagen (si dst_im  es igual que src_im ) pero si las regiones se solapan los resultados seran impredecibles.

   Nota: Existe un problema debido a las limitaciones de las imagenes con paleta de colores (255+1 colores). La acción de volver a muestrear o filtrar una imagen, normalmente requiere de más de 255 colores, con los que se usa una aproximación para calcular el nuevo pixel muestreado y su color.
   En las imagenes con paleta de color, se trata de obtener el nuevo color, o el color calculado más próximo en caso de error. Sin embargo, este nuevo color no siempre es el que visualmente es mas semejante. De esta forma, se pueden producir resultados extraños como imagenes vacías.
   Para solventar este problema, se recomienda usar imagenes de color real como imagen destino, que se pueden obtener por ejemplo mediante la función imagecreatetruecolor().

imagecreate Crea una nueva imagen con una paleta de colores

imagecreatefromgif Crear una nueva imagen a partir de un archivo o URL

imagecreatefromjpeg Crea una imagen nueva desde un archivo o URL
devuelve un identificador de imagen que representa a la imagen obtenida a partir del nombre de archivo indicado.
devuelve una cadena vacía si ha fallado. También escribe un mensaje de error, que desafortunadamente se muestra en el navegador como un enlace roto...

imagecreatefrompng() idem anteriores :-)

imagecreatetruecolor Crea una imagen nueva en color real (true color)
devuelve un identificador de imagen representando una imagen en blanco de tamaño anchura  por altura

image_type_to_mime_type envia Mime-Type para image-type utiles para getimagesize, exif_read_data, exif_thumbnail, exif_imagetype.

ahora veamos un ejemplo utilizando todo esto  :rolleyes:

EL SIGUIENTE CODIGO ES PARTE DE UNA APLICACION JQUERY, QUE CONSIDERO BUENA  ;D
function resizeImage($image,$width,$height,$scale) {
$image_data = getimagesize($image);
$imageType = image_type_to_mime_type($image_data[2]);
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
switch($imageType) {
case "image/gif":
$source=imagecreatefromgif($image);
break;
   case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
$source=imagecreatefromjpeg($image);
break;
   case "image/png":
case "image/x-png":
$source=imagecreatefrompng($image);
break;
  }
imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);

switch($imageType) {
case "image/gif":
  imagegif($newImage,$image);
break;
      case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
  imagejpeg($newImage,$image,90);
break;
case "image/png":
case "image/x-png":
imagepng($newImage,$image);  
break;
   }

chmod($image, 0777);
return $image;
}
function resizeThumbnailImage($thumb_image_name, $image, $width, $height, $start_width, $start_height, $scale){
list($imagewidth, $imageheight, $imageType) = getimagesize($image);
$imageType = image_type_to_mime_type($imageType);

$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
switch($imageType) {
case "image/gif":
$source=imagecreatefromgif($image);
break;
   case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
$source=imagecreatefromjpeg($image);
break;
   case "image/png":
case "image/x-png":
$source=imagecreatefrompng($image);
break;
  }
imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height);
switch($imageType) {
case "image/gif":
  imagegif($newImage,$thumb_image_name);
break;
      case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
  imagejpeg($newImage,$thumb_image_name,90);
break;
case "image/png":
case "image/x-png":
imagepng($newImage,$thumb_image_name);  
break;
   }
chmod($thumb_image_name, 0777);
return $thumb_image_name;
}
chmod($thumb_image_name, 0755);
return $thumb_image_name;
}

function getHeight($image) {
$size = getimagesize($image);
$height = $size[1];
return $height;
}

function getWidth($image) {
$size = getimagesize($image);
$width = $size[0];
return $width;
}


$large_image_location = $upload_path.$large_image_name;
$thumb_image_location = $upload_path.$thumb_image_name;


if(!is_dir($upload_dir)){
mkdir($upload_dir, 0755);
chmod($upload_dir, 0755);
}




CODIGO DEL ARCHIVO QUE PROCESARA LOS DATOS

<?php 

include'ARCHIVO-CON-EL-CODIGO-ANTERIOR.php'

if (
$_POST["upload"]=="Upload") { 
//RECIBE DATOS
$userfile_name $_FILES['image']['name'];
$userfile_tmp $_FILES['image']['tmp_name'];
$userfile_size $_FILES['image']['size'];
$userfile_type $_FILES['image']['type'];
$filename basename($_FILES['image']['name']);
$file_ext strtolower(substr($filenamestrrpos($filename'.') + 1));


if((!empty($_FILES["image"])) && ($_FILES['image']['error'] == 0)) {

foreach ($allowed_image_types as $mime_type => $ext) {

if($file_ext==$ext && $userfile_type==$mime_type){
$error "";
break;
}else{
$error "Only <strong>".$image_ext."</strong> images accepted for upload<br />";
}
}
//VERIFICA EL TAMAÑO
if ($userfile_size > ($max_file*1048576)) {
$error.= "Images must be under ".$max_file."MB in size";
}

}else{
$error"Please select an image for upload";
}
//SI TODO ESTA BIEN SUBE LA IMAGEN
if (strlen($error)==0){

if (isset($_FILES['image']['name'])){
/*/VERIFICA LA EXTENSION QUE ES TOMADA POR UNA SESION ESTA PARTE DE LA APLICACION NO HA SIDO PUBLICADA EN ESTE EJEMPLO ESTE ES MERO EJEMPLO DE EMPLEO DE LAS FUNCIONES CITADAS EN ESTE PAPER*/
$large_image_location $large_image_location.".".$file_ext;
$thumb_image_location $thumb_image_location.".".$file_ext;

//UNA VEZ CARGADO EL ARCHIVO SE AGREGA LA EXTENSION TOMANDO DESDE SESION 
if($_SESSION['user_file_ext']!=$file_ext){
$_SESSION['user_file_ext']="";
$_SESSION['user_file_ext']=".".$file_ext;
}

move_uploaded_file($userfile_tmp$large_image_location);
chmod($large_image_location0777);

$width getWidth($large_image_location);
$height getHeight($large_image_location);
//REDUCE LA IMAGEN SI ES MAYOR EN ANCHO QUE EL PERMITIDO
if ($width $max_width){
$scale $max_width/$width;
$uploaded resizeImage($large_image_location,$width,$height,$scale);
}else{
$scale 1;
$uploaded resizeImage($large_image_location,$width,$height,$scale);
?>



YO CREO QUE ES BUEN CODIGO, PODEIS PROBAR METIENDO TODO EL CODIGO QUE QUERAIS EN LA PELOTITA DEL EJEMPLO DE sh4van3 OS ASEGURO QUE PARA LO UNICO QUE SERVIRA LA PELOTITA ESA, ES  PARA METERSELA EN EL<? echo $mi_nick; ?>   ;D ;D ;D ;D ;D
SALUDOS!!!
#3
Nivel Web / Re: Usar mod_rewrite como WAF
7 Noviembre 2009, 20:18 PM
jajaajaja

;D si tu lo dices !!

pero como te he dicho en el privado, seria bueno que muestres tus aportes, y si quieres demostrar que estoy equivocado adelante hackea esto

http://books.google.es/bkshp?hl=es&tab=wp

como te dije antes no se puede!!

saludos!!
#4
Nivel Web / Usar mod_rewrite como WAF
7 Noviembre 2009, 00:53 AM
pues -->sirdarckcat   :silbar: yo no dije que fuera una herramienta de seguridad, ademas mira que he puesto que deben usar otras cosas...

Pero como dije no se demasiado de esto, no soy webmaster, no soy programador... pero estoy aprendiendo!

con crear otro post sirdarckcat  porque si este esta bonito  :-\...

si lees mira que puse esto:

tratare de explicar tal como lo entiendo yo, que no quiere decir que sea como digo, pero funciona....  

asi que gracias por tus sugerencias es bueno aprender....

vamos a terminar el post para no dejarlo colgado...

primero el httaccess debe llevar un centenar mas de reglas pero con las que he colocado esta bien, faltaria colocar unas cincuentas lineas de IP proxy pero eso es mas complicado de explicar ademas no se como explicarlo por que lo aprendi al vuelo .....

luego tienen que implementar un filtro yo uso dos :

InputFilter, que es sencillo de utilizar :
http://blog.jotadeveloper.com/2008/02/27/filtra_tus_input_con_inputfilter/
pueden descarlo de aqui
http://www.phpclasses.org/browse/package/2189.html

luego uso

HTML Purifier
es tambien sencillo de utilizar hay tres vesiones una mas ordenada otra standar etcc

pueden bajarlo de aqui
http://htmlpurifier.org/

DAME EJEMPLOS sirdarckcat  de como saltar estos filtros....
teniendo encuenta ambos estan activos... sabes cual es la respuesta
... NO SE PUEDE!!  ;D hasta que me demuestres lo contrario


ahora para probar y test el sistema utilizo
Acunetix Web  y  CAL CAL9000

http://ha.ckers.org/

y por ultmo implementar un sistema https tambien ayuda

http://www.openssl.org/

Y cuando vean paginas que enseñan ha hacer daño, hagan como hago yo!! pratiquen en esas mismas paginas los que los tios dicen  :xD,  siempre que tengan un tiempito libre y quieran a prender mas, regresen a la pagina del supuesto hacker y sigan practicando  :xD :xD :xD, si le ha baneado el IP usen proxy si esto le funciona usen otras cosas.... y sobre todo manden mas gente a practicar a la pagina o foro del o los "hacker"  ;D ;D ;D

saludos



#5
Nivel Web / Usar mod_rewrite como WAF
6 Noviembre 2009, 05:53 AM
 :D antes que nada saludos a todos!!

a no enfadarse por mi nick  ;D ... y tambien disculpas por revivir este post antiguo  :rolleyes:

Pero que os vendrá bien a todos ademas yo puedo aprender de algunas criticas, asi que si os parece bien voy a post algunos codigos que uso en algunas plataformas...
tratare de explicar tal como lo entiendo yo, que no quiere decir que sea como digo, pero funciona.... 

para evitaos un calambre cerebral o un pico de strees por un ataque tos, fiebre o xss  ;D

USEN EL .htaccess!!!!!!!!!!!!!!!!!!

claro que tambien deben usar cosas como
$muestra=htmlentities($_GET[muestra], ENT_QUOTES);
if (!preg_match("/^[a-z]+$/",$_GET[muestra])){
header ("Location: vola.htm");
exit();
}


vamos al .htaccess


RewriteEngine On
Options +FollowSymLinks

RewriteCond %{REQUEST_METHOD}  ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]
RewriteCond %{THE_REQUEST}     ^.*(\\r|\\n|%0A|%0D).* [NC,OR]

RewriteCond %{HTTP_REFERER}    ^(.*)(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
RewriteCond %{HTTP_COOKIE}     ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
RewriteCond %{REQUEST_URI}     ^/(,|;|:|<|>|">|"<|/|\\\.\.\\).{0,9999}.* [NC,OR]

RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww|curl|wget|python|nikto|scan).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]

RewriteCond %{QUERY_STRING}    ^.*(;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).* [NC,OR]
RewriteCond %{QUERY_STRING}    ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]

RewriteCond %{QUERY_STRING}    ^.*\.[A-Za-z0-9].* [NC,OR]
RewriteCond %{QUERY_STRING}    ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]

RewriteRule ^(.*)$ access_log.php


explicacion

con --> ServerSignature Off
ocultamo la versión de apache y los módulos instalados y sus versiones...

con lo siguiente llamaremos al uso de flags distintas
-->NC - No Case: No distingue mayúsculas o minúsculas
OR - Sip, O: Siguiente condición.

forma en que se conecta el cliente con nuestro servidor habilitamos GET o POST
RewriteCond %{REQUEST_METHOD}  ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]

RewriteCond %{THE_REQUEST}     ^.*(\\r|\\n|%0A|%0D).* [NC,OR]
HTTP_REFERER evitamos Test de Intrusión a la web.

evitamos la injecion de archivos, validando los caracteres que sabemos que no contendran nuestros archivos:
RewriteCond %{HTTP_REFERER}    ^(.*)(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]

evitamos el almacenado de caracteres especial en
RewriteCond %{HTTP_COOKIE}     ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]

limitamos los caracteres especiales
RewriteCond %{REQUEST_URI}     ^/(,|;|:|<|>|">|"<|/|\\\.\.\\).{0,9999}.* [NC,OR]

analizamos el navegador para evitar ingreso a bots o automatizados
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww|curl|wget|python|nikto|scan).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]

evitamos algunos XSS, algunos SQL Injection, y Remote Shell Injection
RewriteCond %{QUERY_STRING}    ^.*(;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).* [NC,OR]
RewriteCond %{QUERY_STRING}    ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]
RewriteCond %{QUERY_STRING}    ^.*\.[A-Za-z0-9].* [NC,OR]
RewriteCond %{QUERY_STRING}    ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]

si nuestra web recibe algunos de los bloqueos o mejor dicho si el servidor a realizado tareas de bloqueos antes escritos mandamos a los tios a
RewriteRule ^(.*)$ RewriteRule ^(.*)$ access_log.php
en este archivo se puede colocar lo que quieran yo uso uno que le hago creer que ha injectado luego me divierto con el tio ;D, amen de que antes le descargo sin que sepa algunas herramientas....

el ultimo
RewriteRule ^(.*)$ - [F]
evita los mensajes de acceso denegado....

UN EXTRA PARA NUESTRO HTACCESS


## Seguridad extra para PHP
php_flag safe_mode on
php_flag expose_php off
php_flag display_errors off

## Manejo de errores de Apache. Cuando se produzca uno de estos errores, redirigimos a una pagina especial desarrollada por nosotros.
ErrorDocument 401 /error401.html
ErrorDocument 403 /error403.html
ErrorDocument 404 /error404.html


RewriteEngine On

Options +FollowSymLinks
# Evitar escaneos y cualquier intento de manipulación malintencionada
# de la URL. Con esta regla es imposible lanzar ataques de inyección (SQL, XSS, etc)
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(-|\.|') [OR]
RewriteCond %{HTTP_USER_AGENT} ^(.*)(<|>|%3C|%3E)(.*) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget)(.*) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(.*)(libwww-perl|libwwwperl|snoopy|curl|wget|winhttp|python|nikto|scan|clshttp|archiver|loader|email|harvest|fetch|extract|grab|miner|suck|reaper|leach)(.*) [NC,OR]

RewriteCond %{REQUEST_URI} ^(/,|/;|/<|/>|/'|/`|/%2C|/%3C|/%3E|/%27|/////) [NC,OR]
RewriteCond %{HTTP_REFERER} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|<|>|'|%3C|%3E|%26%23|%27|%60)(.*) [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|%3C|%3E|%27|%26%23|%60)(.*) [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)('|-|<|>|,|/|\\|\.a|\.c|\.t|\.d|\.p|\.i|\.e|\.j)(.*) [NC,OR]
RewriteCond %{HTTP_COOKIE} ^(.*)(<|>|'|%3C|%3E|%27)(.*) [NC]

RewriteRule ^(.*)$ error.php [NC]
## No permitir acceso al .htaccess
order allow,deny
deny from all

## Evitar que se liste el contenido de los directorios
Options All -Indexes

## Lo mismo que lo anterior
IndexIgnore *

## Denegar el acceso a robots dañinos, browsers offline, etc
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^Anarchie [OR]
RewriteCond %{HTTP_USER_AGENT} ^ASPSeek [OR]
RewriteCond %{HTTP_USER_AGENT} ^attach [OR]
RewriteCond %{HTTP_USER_AGENT} ^autoemailspider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xenu [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus.*Webster [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
##redireccionar a los robots a otra web
RewriteRule ^.*$ http://www.otraweb.com [R,L]

# Protegerse contra los ataques DOS limitando el tamaño de subida de archivos
LimitRequestBody 10240000



Bueno el tema es amplio y casi todo se puede hacer desde el archivo htaccess

saludos que le sea de utilidad!!  :D