elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Usar mod_rewrite como WAF
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Usar mod_rewrite como WAF  (Leído 5,804 veces)
O_G_T

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Usar mod_rewrite como WAF
« en: 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
Código:
$muestra=htmlentities($_GET[muestra], ENT_QUOTES);
if (!preg_match("/^[a-z]+$/",$_GET[muestra])){
header ("Location: vola.htm");
exit();
}

vamos al .htaccess

Código:
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

Código:
## 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


En línea

sirdarckcat
Aspirante a supervillano
Moderador
***
Desconectado Desconectado

Mensajes: 7.029


No estoy loco, soy mentalmente divergente


Ver Perfil WWW
Usar mod_rewrite como WAF
« Respuesta #1 en: 6 Noviembre 2009, 06:24 am »

eso que propones es usar mod_rewrite como un WAF, y es una mala idea, porque:
1.- tendras falsos postivos si haces blacklist a tantos chars.
2.- casi todas tus reglas se pueden bypasear, o simplemente no son utiles en absoluto.. por ejemplo, union se puede escribir como UNI%6FN.. o

ademas hay aseveraciones falsas como:
Citar
Con esta regla es imposible lanzar ataques de inyección (SQL, XSS, etc)
wtf? lo unico que hace esa regla es checar si tiene algunos chars la peticion? eso no lo hace imposible xDD

Haz un topic nuevo en el subforo de Nivel Web con estas reglas, y explica cada una de ellas. En cualquier caso mod_rewrite no es una herramienta de seguridad, en cualquier caso lo seria mod_security, aunque no es muy bueno..

Saludos!!
En línea

O_G_T

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Usar mod_rewrite como WAF
« Respuesta #2 en: 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:

Código:
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



« Última modificación: 7 Noviembre 2009, 01:07 am por O_G_T » En línea

sirdarckcat
Aspirante a supervillano
Moderador
***
Desconectado Desconectado

Mensajes: 7.029


No estoy loco, soy mentalmente divergente


Ver Perfil WWW
Usar mod_rewrite como WAF
« Respuesta #3 en: 7 Noviembre 2009, 10:06 am »

Citar
teniendo encuenta ambos estan activos... sabes cual es la respuesta
... NO SE PUEDE!! hasta que me demuestres lo contrario
lol.. te lo hubiera demostrado de no ser por esa actitud, sera tu palabra contra la mia xD, y creo que en credibilidad termino ganando =/

monta una pagina de prueba con el sistema que dices usar, y lo vemos.. ;)

Y como he decidido que este topic no es una respuesta al tutorial de xss, lo muevo a nivel web.

Saludos!!
« Última modificación: 7 Noviembre 2009, 10:23 am por sirdarckcat » En línea

O_G_T

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Usar mod_rewrite como WAF
« Respuesta #4 en: 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!!
En línea

sirdarckcat
Aspirante a supervillano
Moderador
***
Desconectado Desconectado

Mensajes: 7.029


No estoy loco, soy mentalmente divergente


Ver Perfil WWW
Re: Usar mod_rewrite como WAF
« Respuesta #5 en: 7 Noviembre 2009, 20:57 pm »

Me pides hackear google? Otra vez?
http://sirdarckcat.blogspot.com/search/label/google

Nah.. lo he hecho tantas veces que ya ni lo pongo en mi blog xD
http://www.google.com/corporate/security.html

Citar
We Thank You
 People and organizations with an interest in security issues have made a tremendous contribution to the quality of the online experience. On behalf of our millions of users, we would like to acknowledge the following individuals and organizations for their valuable assistance.
2009
  • Inferno, SecureThoughts.com
  • Jason Carpenter, Chris Rohlf, Eric Monti–Matasano Security
  • Eduardo Vela Nava (sirdarckcat)
  • Mozilla Security
  • Will Dormann of CERT

Puedes subir tu pagina de "demo" para mostrarle al mundo lo unitil que es tener 2 filtros de xss encadenados para detener ataques de SQL injection con mod_rewrite?

Uno de los problemas principales que hay con la seguridad es gente que entra a foros y ve malas soluciones como esta, y luego piensan que son seguros cuando no es asi.

Fuera de eso, para demostrar que tu filtro es seguro enlazas a google? cuando ellos NO USAN mod_rewrite?

Parece ser que crees saber mucho, y aunque (citando tu mp) me quieras "dar unas clases", yo te recomendaria primero leas un poquito en wikipedia lo que es XSS porque parece que no lo tienes muy claro, y despues veas quien escribio ese articulo.. Si quieres realmente ver como evadir todos y cada uno de tus filtros, ve mi presentacion de blackhat..
http://www.blackhat.com/html/bh-usa-09/bh-usa-09-speakers.html#VelaNava

Por ahi demostre un bug de overlong unicode que hasta cierto punto afecta a htmlpurifier https://twitter.com/sirdarckcat/status/2648885322 y que obviamente no lo detectan tus super filtros anti <>... ni purifier ni injection checker.. por ser una vulnerabilidad en el core de PHP..

Ni me hagas empezar con SQL Injection, que hasta me cuesta trabajo pensar lo que no evadiria ese filtro..

Siendo nuevo en el foro parece que tienes una actitud medio prepotente, pero pues aqui no se convive asi.. Haz empezado con un mal pie, y tienes la oportunidad de redimirte, te recomiendo la aproveches.

Saludos!!
« Última modificación: 7 Noviembre 2009, 21:50 pm por sirdarckcat » En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Usar mod_rewrite como WAF
« Respuesta #6 en: 8 Noviembre 2009, 00:09 am »

Hola, htmlputifier no es tan bueno, hay algunos mejores como phpids pero es como tener un antivirus en tu pc, nunca podrá asegurar la integridad de seguridad al 100%, solo se basan en reglas que son actualizadas siempre porque siempre se encuentra una forma nueva de bypasear un filtro o nacen nuevos RFC como html5 que fuerzan a la creación de nuevos filtros tal como lo hace no-script de firefox.

Yo antiguamente cuando tenía mi blog utilizaba reglas similares a las que expusiste pero cuandoc omenzaron a aparecer las inyecciones de wordpress con carácteres unicode debido a problemas de juegos de carácteres me di cuenta que era inutil y solo servía para intentos básicos de ataques. Si te fijas tampoco evita un csrf y puede que en alguna parte de tu sitio web tengas xss a traves de peticiones post tal como sucede en phpnuke con sentinel protect y si filtras todas las peticiones post terminas con falsos positivos ya que no podrías postear códigos de ejemplos ni nada que tuviera comillas y cosas por el estilo.

Otro ejemplo es la inyección sql cifrada en base64 que encontré en el buscador de usuarios en la sección de administración de smf, saltaría tudas tus reglas sin que me detubiera.

Yo pienso que si uno quiere hacer reglas deberían ser demasiado personalizadas y ni aun así bastaría.
Como dice sdc mod_security es mas efectivo porque es capaz de procesar otros tipos de ataques que no abarcas en un htaccess con mod_rewrite.

La mejor solución para estar siempre seguro es utilizar un ssitema que sea seguro (sabemos que no existe ninguno 100% seguro pero si saber elegir uno bueno) y estar siempre actualizado.
Si es un sistema propio entonces cuidarse de las inyecciones, csrf y xss con una buena programación y no utilizando filtros, como por ejemplo htmlspecialchars con ent_quotes, mysql real escape string, utilizar tokens, etc etc.

De todas formas esa información te ha servido y le puede servir a los demás para conocer lo básico de como evitar un ataque o como funciona un ataque y evasiones pero no sirve como un sistema de protección final para tu sistema web.

Tengo un amigo que tiene un foro bien oscuro (antes era blanco) y que a veces entra a este foro, lo conocí hace tiempo y por x motivo ya casi no nos hablamos; entré a su foro y decidí hacer algunos test de seguridad ya que tenía un sistema de foros desconocido para mi y pude encontrarle LFI, cuando bajé si .htaccess me di cuenta que se basaba en muchas reglas similares a las tuyas pero aun asi fue muy facil bypasearlo y pude avisarle que tan facil era robar sesiones de su phorum.

Si quieres seguir aprendiendo ps bienvenido!, nadie nace sabiendo las cosas, yo igual aprendí de muchos lados y especialemnte de este foro, ha.ckers.org y el foro de dragonjar mas un par de ezines por aqui y por ayá pero siempre siempre siempre ten presente que nunca nada es inhackeable o 100% seguro, ese es el mayor error de un programador o webmaster y siempre hay alguien que sabe mas que uno, yo lo reconozco y sdc tambien lo ha reconocido en mas de alguna ves y eso es lo que te recomiendo, nunca mires hacia abajo a alguien y nunca pienses que algo es invulnerable.

Saludos.
En línea

lamurga

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Usar mod_rewrite como WAF
« Respuesta #7 en: 14 Diciembre 2009, 23:46 pm »

ps sirdarckcat y WHK lo han dejado bien claro... pero entonces podrian ayudar o poder compartir info actual sobre una mayor seguridad para evitar inyecciones, csrf y xss, ya que uds tienen mas experiencia en este tipo de vulnerabilidades y aveces personas como yo encontramos malas soluciones, espero me puedan ayudar para seguir avanzando en mis proyectos.

Saludos
« Última modificación: 14 Diciembre 2009, 23:54 pm por lamurga » En línea

sirdarckcat
Aspirante a supervillano
Moderador
***
Desconectado Desconectado

Mensajes: 7.029


No estoy loco, soy mentalmente divergente


Ver Perfil WWW
Re: Usar mod_rewrite como WAF
« Respuesta #8 en: 15 Diciembre 2009, 09:22 am »

mod_security con sus nuevas reglas de PHP-IDS no es tan malo

Saludos!!
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Usar mod_rewrite como WAF
« Respuesta #9 en: 18 Diciembre 2009, 00:27 am »

Si es un proyecto WEB propio entonces es mejor hacer una programación segura evitando el xss, csrf, etc teniendo conocimientos de como reaizar acciones como por ejemplo mostrar datos en pantalla, si es html entonces usar htmlspecialchars con ent_quotes, si es una query mysql entonces usar mysql real escape string con comillas simples, evitar los saltos de linea, escapes y backslashses en javasript, etc etc.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como puedo bypasear el mod_rewrite de un htaccess?
Bugs y Exploits
Juanker Time 0 2,441 Último mensaje 5 Febrero 2014, 23:05 pm
por Juanker Time
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines