Opinion sobre esta criptografía

Iniciado por Santos999, 24 Febrero 2012, 09:37 AM

0 Miembros y 1 Visitante están viendo este tema.

Santos999

Buenas, llevo un tiempo leyendo este foro y finalmente me he decidido a registrarme.

Una web que indexa pdfs, utiliza urls encriptadas para acceder a ellos. La parte de los parámetros es del estilo:

/Visualizacion.faces?params=YUHRIdq4b1x%2B3%2FgRzNigkBfV0onuK3Xob0mYlyMikjY%2FqR%2BpLvuA3682woRIcGeA%0D%0A

/Visualizacion.faces?params=1NxsJGCtNnmivWcv1xbzhxfV0onuK3Xob0mYlyMikjY%2FqR%2BpLvuA3682woRIcGeA%0D%0A

Veo que hay una parte comun en todas ellas, lo que me despista: fV0onuK3Xob0mYlyMikjY%2FqR%2BpLvuA3682woRIcGeA%0D%0A


Por otro lado, la parte final a partir, a partir %2B imagino que es otra cadena cifrada.


Podéis arrojar un poco de luz sobre el tema?
Saludos!

adastra

Bienvenido Santos999
Se trata de un texto cifrado en Base64, un algoritmo simple que permite el cifrado de mensajes utilizando un sistema númerico cuya base es 64. Normalmente "engaña" a usuarios menos experimentados, sin embargo es facilmente decodificable dado que a partir de un texto cifrado, es muy facil reproducir el texto plano. Si lo que se necesita es un mecanismo un poco más "confiable" es recomendable utilizar algoritmos de clave simetrica (MD5, Blowfish, etc.) o directamente utilizar mecanismos de cifrado de clave publica/privada (clave asimetrica).

Por otro lado, viendo tu mensaje,  por que se estan cifrando los parámetros que viajan por GET? es un poco "extraño" ver que se tratan de cifrar los parámetros enviados en una petición HTTP-GET.

Santos999

#2
Muchas gracias por responder!

Se cifran los parametros para que no se pueda automatizar la obtencion de esos PDF, osea que se tengan que consultar/descargar uno a uno.

Con tus indicaciones he intentado decodificar el texto YUHRIdq4b1x+3/gRzNigkBfV0onuK3Xob0mYlyMikjY/qR+pLvuA3682woRIcGeA con un conversor online base64 to plain text (convirtiendo los %2F y %2B a ascii) sin exito. Sale: aAÑ!Ú¸o\~ßøÌØ ÕÒ‰î+uèoI˜—#"’6?©©.û€ß¯6„Hpg€

Tambien veo que todas las urls acaban con %0D%0A. Imagino que no es parte del texto..

Saludos!

adastra

 lo que veo es que el texto cifrado

YUHRIdq4b1x%2B3%2FgRzNigkBfV0onuK3Xob0mYlyMikjY%2FqR%2BpLvuA3682woRIcGeA%0D%0A

tiene los caracteres que tu indicas %0, %2, los cuales no son soportados por el algoritmo (el cual genera un texto cifrado utilizando los rangos de A-Z, a-z y 0-9) probablemente es debido a que el texto plano original tiene caracteres como "&", "+", "?", "/", etc. De esa forma el algoritmo puede generar un texto cifrado corrupto.
Por otro lado, si lo que intentas hacer cifrando dichos campos es evitar algún tipo de ataque para que no se pueda acceder de forma automática a esos ficheros, es mucho más eficiente utilizar un IDS (Snort o Suricata suelen ser una excelente solución) ademas de utilizar una herramienta como Fail2ban para implementar bloqueos  sobre direcciones IP. Eso si tienes control sobre el servidor o hosting en donde tienes tu aplicación, sino puedes utilizar una de esas herramientas (por restricciones del hosting por ejemplo) y lo tienes que hacer desde tu aplicación, implementar un WAF (Web Application Firewall) seria otra muy buena alternativa, algunas de las librerías existentes que te podrían servir para implementar un WAF en tu aplicación son:

Para PHP: Libreria PHPIDS (también vale mod_security si corre sobre un servidor web Apache)
Para Ruby/Java/Python/.NET: Tienes implementaciones de la librería ESAPI del proyecto OWASP

https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API