Retroceder   VicioWarez.com - Descargar no tiene Limites! » Zona Underground » Hacking


Seguridad De Tu Web PHP

Hacking Descargar Gratis, Seguridad De Tu Web PHP en Zona Underground; Como Mejorar la Seguridad De una Web Bueno estoy escribiendo este Tutorial (volviendo al foro a aportar ^^) debido a ...

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1 (permalink)  
Antiguo 17-feb-2008, 04:41
Avatar de LaserDance
Moderador Underground
 
Fecha de Ingreso: mayo-2007
Ubicación: Caracas - Venezuela
Mensajes: 99
Gracias: 2
Agradecido 39 veces en 22 Posts
LaserDance está en el buen camino
Enviar un mensaje por MSN a LaserDance
Post Seguridad De Tu Web PHP

Como Mejorar la Seguridad De una Web

Bueno estoy escribiendo este Tutorial (volviendo al foro a aportar ^^) debido a q en todos lados hay info de cómo hackear, hachear, juackear, crackear, phrakear… y todo lo q termine en ear XD. Pero no he visto nada diciendo Como evitar que me hackeen MI web.
Bueno aquí una lista de Recomendaciones y Consejos de cómo solucionar algunos posibles fallos de seguridad ^^.

RFI (remote file inclusion)

Este método es muy comúnmente usado

Miremos estos scripts:
<?php $page = $_GET[algo].".php";

include($page); ?>

o
<?php

header("Location: ".$_GET['page']);

?>

o
Esta es una Manera Incorrecta de tratar de impedir la inclusión de archivos, se puede en vez de http:// por ftp://
<?php
$page = $_GET[algo].".php";
$page = str_replace('http://','',$page);
include($page);
?>


Es por si colocan algún http:// donde debería estar la variable.


Si en sus webs manejan algunos de los anteriores scripts de seguro su web será vulnerable, lo q pasa es q no filtra nada de lo q pasa por el método GET, una de las tantas formas q hay para solucionarlo es con un método switch así:
<?php
switch (trim($_GET['algo'])) {
case '1': $file = '1.php';
break;
case '2': $file = '2.php';
break;

default: $file = 'home.php';
break;

include($file);
}
?>


La url seria algo así http://url.com/inde.php?algo=1 e incluiría 1.php y si la variable se deja sola o no existe se incluye home.php y error solucionado, además de un switch se pueden con arrays, con if .... (si alguien quiere expandir un poco mas de como hacerlo aparte de un switch seria de mucha ayuda)


Ataques XSS

El ataque por xss fundamental sirve para robar cookies, redireccionar, sacar alertas..., muchas veces se encuentran estas vulnerabilidades en buscadores de las webs, en algunas variables, donde se pueda agregar algo de código html, en foros, registros....

Para filtrar un poco una variable a estos ataques se podría colocar algo así:
<?php
$query_cont = preg_replace("#<script#i","<|script",$query_cont);
echo $query_cont;
?>


Pero con esto no se esta 100% seguro, por q pueden decodificar signos como >,<, /,'," y no hay q olvidar q un ataque por xss no se limita por un simple <script></script>

Mas Info en estos links

http://us3.php.net/htmlspecialchars
http://us3.php.net/striptags

Lo mejor q se puede hacer es si no se esta seguro, es no colocar buscadores en su web, en foros o guestbooks.. o lo q sea, no permitir code html aunque en algunos paquetes buenos dejan activado html, pero solo deja la entrada de algunas etiquetas inofensivas, así q no hay problema en algunos casos


Inyecciones SQL

Pues el tema de evitar inyecciones sql es algo complicado, lo mas lógico seria filtrar bien lo q pase por estas variables $_GET, $_POST y $_COOKIE o en esta variable global $_SERVER['HTTP_USER_AGENT'] donde se podría insertar directamente code en el Quero.

Vamos una función para filtrar algunos signos
function filtrar($variable)
{
if($variable){
$variable=str_replace("&","& ",$variable);
$variable=str_replace("'","'",$variable);
$variable=str_replace("´","'",$variable);
$variable=str_replace("`","'",$variable);
$variable=str_replace("\"","" ",$variable);
}else unset($variable);
return $variable;
}


Como tambien se deben filtrar

1 => '--',
2 => "'",
3 => '%',
4 => '=',
5 => '"',
6 => '.',
7 => ',',
8 => ';',
9 => 'union',
10 => 'UNION',
11 => 'insert',
12 => 'INSERT',
13 => 'delete',
14 => 'DELETE',
15 => 'drop',
16 => 'DROP',
17 => 'update',
18 => 'UPDATE',
19 => 'like',
20 => 'LIKE',
21 => '*',
22 => '?',
23 => '(',
24 => ')',
25 => 'and',
26 => 'AND',
27 => 'or',
28 => 'OR',


Utilizados en estas inyecciones sql, otro tema q se pudiera anexar seria las blinds sql q constan de "' and 1" de esto no recuerdo mucho pero son muy buenas esta clase de inyecciones


Como Banear IPs

Pues no esta bueno este método por q se pueden hacer cadenas de Proxy’s y seria como una perdida de tiempo esto pero igual sirve como para aprender por si alguien siente curiosidad :
<?php
$ip = "xx.xxx.xxx.xx";

if($_SERVER['REMOTE_ADDR'] == $ip){
echo("Coneccion rechazada xD.");
}else{
header('Location: http://www.google.com');
}
?>


Para banear varias ips se podría de esta forma pero trabajar con .txts no es recomendable por esto mismo de la seguridad, es mejor trabajarlo desde la Base de Datos pero aquí dejo el script como ejemplo:
<?php
$handle = fopen("rango_de_ips.txt", "r");
$tmp = fread($handle, filesize("ips.txt"));
fclose($handle);

$list = explode("\n", $tmp);

for ($i=0; $i<count($list); $i++) {
if($list[$i] <> $_SERVER['REMOTE_ADDR']) {
header('Location: http://www.google.com');
}else{
echo ("Coneccion rechazada");
}
}

?>



Como evitar registros automáticos, flood por medio de un código de seguridad


Para este método es necesario contar con la librería GD en nuestro host ya q con esto es la q trabaja, lo q hace es impedir q bots o programas para hacer D.O.S. sobrecarguen la web de tantas peticiones, ya q al no haber algo de impida X numero de peticiones o este mal programado se puede hacer una denegación de servicio, este método esta muy de moda por estos días y ahora vamos a ver de como evitar todo eso en las webs, para servidores mas adelante

Una cosa manejar la librería GD y hacer este código de seguridad es algo mas complicado a solo colocar un script cualquiera aquí solo voy a mostrar uno q encontré en Internet:
<?
session_start(); // Iniciamos la sesion
$numero_aleatorio = rand(1000,9999); // Generamos el numero con rand
$_SESSION[cod] = $numero_aleatorio; // Guardamos el numero en la sesion

//Indicamos que el documento va a ser una imagen
header ("Content-type: image/png");

//Declaramos im con la creacion de una imagen
$im = @ImageCreate (80, 25);

//Declaramos el color de fondo RGB
$color_fondo = ImageColorAllocate ($im, 0, 155, 255);

//Declaramos tambien el color del texto tambien RGB
$color_texto = ImageColorAllocate ($im, 255, 255, 255);

//Creamos el Texto dentro de la imagen
ImageString ($im, 12, 20, 5, $_SESSION[cod], $color_texto);

//Por ultimo creamos la imagen png
ImagePng ($im);

?>


y en otra web revisamos si son iguales los datos así:
<?
if($confirmacion == $_SESSION[cod])
{
print "Codigo correcto";
}else{
print "error";
}
?>

Para evitar esta clase de ataques en servidores se podría utilizar el modsecurity para el apache q es como un firewall q bloquea cualquier intento de intrusión mas información en http://www.modsecurity.org/download/ =)


Explicación sacada de shellsec

ModSecurity es una herramienta para la detección y prevención de intrusiones para aplicaciones web, lo que podríamos denominar como "firewall web". Este motor funciona como módulo de Apache, incrementando la seguridad del servidor web frente a ataques de tipo tanto conocido como desconocido. Ayuda a evitar, entre otros tipos de ataque:

• Técnicas anti-evasión
• Supervisa código HTML y cookies
• Análisis de los contenidos pasados al servidor mediante el método POST
• Permite realizar completas auditorías de los POSTs realizados
• Soporta HTTPS
• Soporta contenidos comprimidos
• etc..


La instalación y configuración en Apache no resulta excesivamente complicada, para lo cual sólo es necesario instalarlo como módulo y activar unas ciertas reglas en el fichero de configuración httpd.conf, y puede ser usado con otros módulos (como Snort o mod_rewrite) para obtener una mayor funcionalidad.
----------------

Algunas recomendaciones

*Seria bueno si esta trabajando con registros en su web no maneje las secciones por medio de cookies o si las usa intente con métodos de encriptación como md5() y base64_encode()

*Proteja sus directorios con un .htaccess o con un simple index.html (asi sea en blanco) para q no puedan entrar y ver q tienen sus directorios


Bueno espero q les sea de ayuda a algunos q se estén tirando de los cabellos por la seguridad de su web xD, espero q les guste el tuto. Y q les aproveche.

Recuerden Expandir cada día mas sus conocimientos y compártanlo con los demás, para q todos podamos aprender .



Salu2

Gracias a GracuM

Agreguen mas Info de Seguridad, faltan muchísimas cosas. =)
__________________
Solo hay 2 cosas infinitas, el Universo y la estupides humana... Y no estoy seguro del Universo - Albert Einstein
LaserDance
UnderGround Security Team
Responder Citando
Recomendamos
Respuesta

Etiquetas
php, seguridad, web

Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks está Desactivado
Pingbacks está Desactivado
Refbacks está Desactivado

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Pregunta abierta: Mi seguridad? El Experto Sexualidad 0 09-jul-2008 14:50
Pregunta abierta: ayuda seguridad? El Experto Problemas con tu PC 0 08-jul-2008 03:10
Pregunta abierta: Seguridad mucha seguridad para mi pc??? El Experto Problemas con tu PC 0 05-jun-2008 06:20
Pregunta abierta: Seguridad Infantil? Snake Informática 0 06-mar-2008 06:30
16 Programas (S.O.Seguridad.etc.) omar_x64 Descargar WareZ 7 04-mar-2008 08:29




Desarrollado por: vBulletin® Versión 3.7.2
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.