Foros del Web » Programando para Internet » ASP Clásico »

La Sesiones en ASP son INSEGURAS. La violacion de Seguridad es Facil... y Demostrado.

Estas en el tema de La Sesiones en ASP son INSEGURAS. La violacion de Seguridad es Facil... y Demostrado. en el foro de ASP Clásico en Foros del Web. Hola amigos ... el propocito a esto es encontrar una solucion que arregle este problema... y lo que les detallo les ruego que lo hagan ...
  #1 (permalink)  
Antiguo 24/11/2005, 13:49
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 20 años, 3 meses
Puntos: 11
Exclamación La Sesiones en ASP son INSEGURAS. La violacion de Seguridad es Facil... y Demostrado.

Hola amigos ... el propocito a esto es encontrar una solucion que arregle este problema... y lo que les detallo les ruego que lo hagan por porbar y no para mal.. no me responsabilizo de su ingnorancia de hacer las cosas para mal... bueno aqui les cuento mi caso...

luego de hacer muchos experimentos note algo extraño en ASP... lo que pasa es que las sesiones no funcionan en algunos casos y eso hace que violen el sistema y vean informacion confidencial... encontre dos modos... uno es por una web que nos haga el favor y la otra usando AJAX...

como ejemplo vamos a suponer que tenemos 3 paginas.. logeo.asp, valida.asp y paneladmin.asp (obviamente con sus sesiones creadas y validadas)

Estas paginas estan alojadas en un servidor web... con dominio y todo...

Desde cualquier PC con internet o cabina publica podemos hacer lo siguiente...

Supongamos que esos archivos son de la web Victima...

Metodo de la Web
Este metodo te permite ver la web pero no podras ejecutar nada que tenga que ver con javascript, pero puedes ver informacion confidencial...

Primero nos vamos a https://www.megaproxy.com/freesurf/ y escribimos www.dominio.com/paneladmin.asp

y vas a ver la web.. listo... si hay link comunes podras navegar en ella...

Metodo AJAX
bueno esto es para lo que saben un poco de ajax...
debes crear una web que haga el trabajo...

Solo llama a la web colocando la URL www.dominio.com/paneladmin.asp en la funcion SEND y carga el contenido dentro de DIV usando innerHTML... y listo podras ver la web cargada...

si quieres que se ejecute los script tienes que cargar el contenido HTML de la web cargada con AJAX en un text area... asi podras ver el html que tiene.. luego buscxa los codigos script que usa y colocalos en tu web como si fueran tus funciones.. esto permitara que no te salga un error como "objeto no definido".. poco a poco vas armando la web victima en tu web y podras navegar con ganas....


Quisas no se pueden ejecutar algunas cosas, pero con ingenio se puede lograr... tendrias que armar la web poco a poco segun recoges datos... pero de que vas a poder ver informacion confidencial como documentos.. si es factible...


Obviamente yo eleji una web victima echa con ASP y logre los propositos benignos.. luego les avise de ese tema a los dueños y la verdad el problema esta en las sesiones... ASP me decepciono en esto...

Ya probe con PHP y ASP.NET y si valida las sesiones... todo normal...

Yo tengo una pagina web en ASP y no se que hacer ante este problema..
Talves alguien sabe como arreglar esto...

Saludos...........


Un Abrazo.
  #2 (permalink)  
Antiguo 24/11/2005, 15:40
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Yo no me la creo... por lo menos la de la opción 1. La de la opción 2, pues ya ahí no sé... pero la "lógica" indica que no se puede... de lo contrario google o cualquier otro buscador podría indexar los contenidos protegidos y no es así.

Igual, ni en pedo voy a probarlo... al menos con un URL restringido por session REAL. Si lo intento, lo haría sobre una página restringida por session creada con el único fin de testear ésto que planteás.
__________________
...___...
  #3 (permalink)  
Antiguo 24/11/2005, 16:02
 
Fecha de Ingreso: junio-2004
Mensajes: 72
Antigüedad: 20 años, 10 meses
Puntos: 2
Exclamación

Mira estube provando lo que decis , y NO, no es posible , yo tengo una web en asp ,donde dispongo de un panel de administracion , para operar toda o casi toda el Web , utilizo sesiones y por mas que prove no logre ingresar quizas la pagina que planteas vos deba tener una seguridad Minima, nuse , en mi caso no pude acceder para nada, si o si te redirecciona a la pagina para hacer Login y una ves Logueado podes ingresar a la parte de Administracion , tras haber ingresado un Nuevo User y Pass.
Bueno , ese fue mi planteo , estaria bueno que pusieras la pagina a la cual pudiste ver/acceder algun tipo de informacion , no para molestar ese Site sino , para sertificar que lo que decis sea Sierto.

Un saludo a todos/as
  #4 (permalink)  
Antiguo 24/11/2005, 16:56
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 20 años, 3 meses
Puntos: 11
lo que digo no es envano.. yo probe con dos pagina y entro... quisas sea la web y como se crean las sesiones, pero en mi web uso esto

...........
<% if SESSION('usuario')="" then %>
window.location="logeo.asp";
<% end if %>
..........
  #5 (permalink)  
Antiguo 24/11/2005, 16:59
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Cita:
en mi caso no pude acceder para nada, si o si te redirecciona a la pagina para hacer Login y una ves Logueado podes ingresar a la parte de Administracion , tras haber ingresado un Nuevo User y Pass.
¿¿¿En serio te atreviste a dejar no sólo la dirección al panel de control de un sitio sino además el nombre de usuario y contraseña????

Sos un suicida!!!!
__________________
...___...
  #6 (permalink)  
Antiguo 24/11/2005, 17:02
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Cita:
<% if SESSION('usuario')="" then %>
window.location="logeo.asp";
<% end if %>

AHHHHHH... ahora entiendo...
Pues... qué te puedo decir... :/
¿En serio esa es la SEGURIDAD que le das a tus sitios?
__________________
...___...
  #7 (permalink)  
Antiguo 24/11/2005, 17:18
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 20 años, 3 meses
Puntos: 11
si.. esque recien aprendo ASP... ese codigo me dieron.. que me sugieren??? .. la verdad soy novato en ASP.. domino mas PHP, pero necesito saber ASP...
haber si ayudan a este LOL
  #8 (permalink)  
Antiguo 24/11/2005, 17:27
 
Fecha de Ingreso: junio-2004
Mensajes: 72
Antigüedad: 20 años, 10 meses
Puntos: 2
Cita:
Iniciado por Al Zuwaga
¿¿¿En serio te atreviste a dejar no sólo la dirección al panel de control de un sitio sino además el nombre de usuario y contraseña????

Sos un suicida!!!!

Al Zuwaga
Me parece que me exprese mal o no lo explique lo suficiente , yo lo unico que ingrese fue una dire de mi site, igualmente no subi todo mi site al host , subi los archivo necesarios para generar un Login y la pagina Principal de administracion , (Obviamente sin algun enlace ni nada) siplemente para ver que pasaba con las sesiones desde la web que publico richardinj ,
No soy tan incoherente de publicar algun User y Pass de X pagina, donde puedan tener acceso a la administracion o parte de ella .

Un saludo
  #9 (permalink)  
Antiguo 24/11/2005, 17:38
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 20 años, 3 meses
Puntos: 11
la verdad no entiendo que pasa con migo.. pero el el caso 1 y 2... puedo entrar a mi sistema.... con tan solo colocar www.dominio.com/clientes.asp o www.dominio.com/panel.asp donde esta el codigo de sesion

Cita:
<% if SESSION('usuario')="" then %>
window.location="logeo.asp";
<% end if %>
y nada de validar contraseñas ni nada .. solo saltando defrente entra al sistema y muestra todo ..

quisas sea el servidor???

el asunto es que mi amigo tiene un host en ASP y tb puedo entrar...
ambos no sabemos porque...

saludos.
  #10 (permalink)  
Antiguo 24/11/2005, 17:52
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Menos mal, Alert. Me dejás más tranquilo.
Y nunca te traté de incoherente, sólo de suicida :)

(Ouch... los suicidas... algo de incoherente tienen ¿no? )


Richardinj... que domines más PHP no quiere decir nada... Ese código que mostrás haría lo mismo en ASP que en PHP si el navegador no entiende/soporta javascript (el caso de un buscador) o que javascript haya sido deshabilitado adrede.

En resumen, lo que hacés es esto:

Código:
<% if SESSION('usuario')="" then %>
jejeje... no sé qué es javascript y a ésto no le doy bola..
por lo tanto sigo viendo el contenido luego del end if de ASP o de PHP
<% end if %>
<% response.write "nunca lo dijiste, pero todo indica que a partir de aquí continúa el código ASP y HTML de acceso restringido" %>

Lo que tendrías que hacer es:

Código:
<%
If SESSION("usuario")="" then 'ojo con el apóstrofe en lugar de la comilla doble
Response.Redirect("logeo.asp")
Else
%>
Acá va todo el contenido protegido
<% End if %>
__________________
...___...
  #11 (permalink)  
Antiguo 24/11/2005, 18:11
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Ok, este es un terrible error de logica y del manejo de la tecnologia para info restringida.

Como ya lo dijo AZ, primero que nada, no uses javascript para estos casos, javascript se ejecuta en el cliente, si no hay javascript en el cliiente, la redireccion no sera realizada.

Segundo, la validacion deberia ser la primera cosa y la unica que se ejecuta primero, logicamente, si una puerta esta cerrada simplemente no puedes entrar, al menos que este cerrada con una cortina.

Se hace la redireccion en el servidor y nada mas en el servidor y esto sera lo primero que se ejecute, hazte un include, solamente con una condicion bien sencilla:

Código:
if not session("usuario") = valor then
  response.redirect("login.asp")
end if
listo, llamo a este include en la primera linea de cada archivo protegido, si no pasa, lo redireccionara, si pasa, ni siquiera notas que este archivo esta ahi.

Si no tiene cookies, no habra sitio, facil.

No es una cuestion de seguridad de la plataforma, es una cuestion de seguridad del programador. Lo mismo puede decirse del SQL Injection por ejemplo.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #12 (permalink)  
Antiguo 24/11/2005, 19:44
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Si, claro, yo uso un IF así de sencillito metido en una SUB(), dentro del funciones.asp que incluyo en todas las páginas, y lo uso en donde lo necesite arriba de todo del script en cuestión (bueno, abajo de la linea del include):

<include funciones.asp>
<% Call Acceso() %>
--resto del código aquí-
__________________
...___...
  #13 (permalink)  
Antiguo 25/11/2005, 02:22
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 5 meses
Puntos: 144
Cita:
Iniciado por richardinj
...no me responsabilizo de su ingnorancia de hacer las cosas para mal...
A mí lo que más me gusta es la modestia de Richardinj.

Por cierto, debería cambiar su perfil, y en lugar de poner en ocupación "Dar soluciones", podría poner "Dar guerra".

SalU2
  #14 (permalink)  
Antiguo 25/11/2005, 02:51
 
Fecha de Ingreso: septiembre-2004
Mensajes: 179
Antigüedad: 20 años, 7 meses
Puntos: 0
Buenas,

se refería a su (propia de él) ignorancia no a la nuestra ;)
__________________
Estoy en www.aibarra.net

Camino para preguntar: manual -> Google -> FAQs y buscador del foro -> Nuevo Tema.
Tan difícil es escribir correctamente? Es más fácil leerlo. Pónselo fácil al que quiera ayudarte.
  #15 (permalink)  
Antiguo 25/11/2005, 03:18
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 5 meses
Puntos: 144
Aibarra.net lee bien el primer párrafo ;) y verás como habla de todos menos de él, refiriéndose a la ignorancia.

Dice bien claramente "no me responsabilizo (refiriéndose a él mismo, pero en cuanto a la nula responsabilidad que él tiene, de los actos ajenos), de su (nuestra) ignoracia de hacer las cosas para mal".

Bien fácil hubiera sido poner "de mi ignoracia", pero puso "de su ignorancia", ¿no crees?. ...No está escribiendo una autobiografía, en tercera persona, te lo garantizo ;)

Si hubiera querido referirse en primera persona, a su ignorancia (la de Richardinj), evidentemente sobraría el "no me responsabilizo", puesto que si uno ignora algo, es total y absolutamente responsable de ese hecho (su ignorancia). ...Si yo desconozco algo, soy responsable de ese desconocimiento, ya sea por no haberlo estudiado, o por cualquier otro motivo.

En realidad lo que viene a decir Richardinj, en este post, es: "Asp no funciona, es inseguro, ...yo hago las cosas bien (como las he leido por ahí), pero no funciona (porque asp es la oveja negra). Desconoceis (ignorais) que las sesiones son inseguras, por eso quiero poneros en aviso".

Por supuesto, si estamos en este foro, es para aprender (los que no sabemos, porque hay colaboradores que no suelen hacer preguntas ya que son realmente expertos -otros que preguntan, también son expertos, por supuesto-, y "solo" responden a nuestras dudas). Si yo pregunto algo, es porque ignoro la solución, pero no me parece adecuado, que en un foro de colaboración, alguien me llame ignorante, cuando en este tema de las sesiones, por ejemplo, ya está todo escrito, y es algo básico para alguien que quiere aprender a desenvolverse con cierta soltura en el desarrollo web, a través de asp.

Además, si vieras su trayectoria en este foro de asp, te darías cuenta que Richardinj, a veces suele responder con términos poco adecuados (y poco meditados). Prefiero no poner ejemplos, porque no pretendo levantar polémica, ya que se ha llevado más de un palo, como se suele decir.

Espero que Richardinj no se enfade con mi respuesta, pero creo que cualquier persona medianamente objetiva, le respondería lo mismo. Quizás este post, le sirva para meditar un poco más, los términos que utiliza, cuando se encuentra con un problema al que no le encuentra solución, sin querer achacar el fallo, a determinada tecnología (en este caso a asp).

SalU2, ...hoy es viernes, único día en el que reflexiono ;)

PD1: Ese "solo" que he entrecomillado, tiene un sentido tan importante, que sería largo de explicar. Simplificándolo un poco, ese "solo", viene a resumir el auténtico sentido, y la razón de ser, que tienen estos foros.

PD2: Referente al título literal de su post La Sesiones en ASP son INSEGURAS. La violacion de Seguridad es Facil... y .Demostrado., le diré a Richardinj, que ni siquiera la ley de la gravitación universal de Newton, está completamente demostrada. El término "universal" es tan amplio, que quizás no sea el más adecuado. Pueden existir otras partes del universo que desconocemos, donde quizás las cosas en lugar de caer al suelo (como la manzana, el boli, o el café), salen expulsadas hacia el espacio (creo que se me ha ido la olla, con esta segunda postdata, pero en su día me quedó muy claro, a través de este ejemplo, la necesidad de no generalizar más allá de lo imprescindible).

Última edición por 3pies; 25/11/2005 a las 04:07
  #16 (permalink)  
Antiguo 25/11/2005, 04:36
perrogrun
Invitado
 
Mensajes: n/a
Puntos:
Lo que dice el señor "richardinj" simplemente me parece incoherente, ya que por el "metodo web" no es posible hacer lo que dice y con el "metodo ajax" tampoco ya que ajax no te permite acceder a otro dominio y aunque lo permitiera ajax no hace milagros nada más que muestra el código que se mostraría accediendo desde cualquier explorardor.
  #17 (permalink)  
Antiguo 25/11/2005, 08:19
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
A mi, simplemente ya me aburrió que alguien que no sabe ASP, se la pase programando en él y criticando todo lo que a él no le sale culpando a la tecnología del ASP por lo que no sabe hacer.

Simplemente hay que ignorarlo y dejarlo pensar que php es la panacea jamás antes creada, que le batalle y aprenda que esa actitud no le ayudará mucho a encontrar soluciones.
  #18 (permalink)  
Antiguo 25/11/2005, 09:26
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años, 4 meses
Puntos: 16
no sera que tienes la session abierta cuando entras desde esa pagina? yo intente con entrar a una mia y no entra...
  #19 (permalink)  
Antiguo 25/11/2005, 10:46
Avatar de FiNo  
Fecha de Ingreso: octubre-2004
Ubicación: Costa Rica
Mensajes: 265
Antigüedad: 20 años, 7 meses
Puntos: 1
Cita:
"....Obviamente yo eleji una web victima echa con ASP y logre los propositos benignos.. luego les avise de ese tema a los dueños y la verdad el problema esta en las sesiones... ASP me decepciono en esto..."

Cuales propositos benignos? y no crees también que eso no es problema de ASP, si no de como aplicaron los niveles de seguridad.

Cita:
"...Yo tengo una pagina web en ASP y no se que hacer ante este problema..
Talves alguien sabe como arreglar esto..."

Si encontraste el problema, y sabes por que pasa, no crees que deberias saber como resolverlo?

No soy un experto, como para estar opinando sobre estos temas, pero no me parece correcto que aqui vengas a poner mensajes de como ver información confidencial.

Y también pienso q puede ser lo que dijo sjam7.
  #20 (permalink)  
Antiguo 25/11/2005, 13:57
Avatar de Hereje  
Fecha de Ingreso: junio-2002
Ubicación: Córdoba, Argentina
Mensajes: 439
Antigüedad: 22 años, 11 meses
Puntos: 2
Jajaja, cada día me gusta más este foro!

Para sjam7 y FiNo: el problema fue detectado a principios del post y no es lo que dice sjam7.

Saludos!
__________________
Sergio
  #21 (permalink)  
Antiguo 25/11/2005, 14:06
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 20 años, 3 meses
Puntos: 11
Excelentes respuestas sobre todo el de 3Pies... la verdad vi algunas cosas de mi desde otras perspectivas... me serviran para mejorar... creo que aprendo cosas valiosas gracias a las criticas... es cierto eso de "Nunca temas preguntar o comentar a pesar que el tema es tonto..."

No soy hincha de PHP.. solo que el estrés del trabajo me provoca esto...

Donde trabajo me pidieron hacer un sistema en ASP... cuando yo no se nada de ASP, tube que aprenderlo haciendo el sistema en tiempo record... y al encontrar pocos manuales pues la preción era más...

Otro error que cometí fue el reutilizar codigo del anterior programador... eso de colocar etse codigo desde un principio:

Cita:
<% if SESSION('usuario')="" then %>
window.location="logeo.asp";
<% end if %>
me genero el problema.. la verdad segun veo eso nunca se debe hacer...
a pesar que es extraño, porque deberia funcionar normal... pero lo cambie por el codigo que me dio AZ

Cita:
[<% if SESSION('usuario')="" then %>
window.location="logeo.asp";
<% end if %>
y ya me funciona... esto era lo que me faltaba para terminar el sistema... al ver como se me rompia la seguridad pues me desepere...

Pero al fin terminé el sistema: con graficos estadisticos, reportes con crystal 9, ajax, Action script, flash,... la BD tiene 80 millones de registros.. y es rapida la web... gracias a su apoyo...

Lo que si no pude arreglar fue eso de capturar en nombre de la PC... me dieron algunos codigos, pero servian para intranet... para solucionar esto tube que cargar con ajax un archivo PHP que me devueve el nombre de la Pc y luego usarlo en la web ASP... el servidor web soporta php y asp (felizmente)...

bueno por fin cumpli la meta gracias a su paciencia y criticas.. especialmente de AZ y UG...

Un Abrazo....
y gracias.

Última edición por richardinj; 25/11/2005 a las 14:14
  #22 (permalink)  
Antiguo 25/11/2005, 15:42
Avatar de tomchat  
Fecha de Ingreso: septiembre-2005
Mensajes: 231
Antigüedad: 19 años, 8 meses
Puntos: 0
richardinj lo unico malo en las sesiones y tienes muchos usurios tu servidor se llega a saturara, pero si quieres aumentar la seguridad has lo siguienete:

<%usuario=Session("usuario")
If usuario<>"" Then
SQL="Selec * From usuarios Where usuario = '" & usuario & "'
Rs=Server.CreateObject("ADODB.Recordset")
Rs.open, BD
'BD Mi Objeto de Conexion
If Rs.Eof Then
Response.Redirect "Usuarios.asp"
End If
Else
Response.Redirect "Usuarios.asp"
End if
%>


Espero que en el futuro no hagas las cosas tan a la ligera.
  #23 (permalink)  
Antiguo 25/11/2005, 17:37
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 20 años, 3 meses
Puntos: 11
muchas gracias...
  #24 (permalink)  
Antiguo 26/11/2005, 02:45
Avatar de Hereje  
Fecha de Ingreso: junio-2002
Ubicación: Córdoba, Argentina
Mensajes: 439
Antigüedad: 22 años, 11 meses
Puntos: 2
Felicitaciones richard por reconocer tus errores y aprender de ellos, algunos no hubieran actuado de tal forma.

Hasta luego.
__________________
Sergio
  #25 (permalink)  
Antiguo 26/11/2005, 06:11
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 20 años, 3 meses
Puntos: 11
Este foro sirve sirve para corregir los errores de uno... ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:11.