Seguridad en aplicaciones web (Parte 2 - XSS Cross Site Scripting)

Ya vimos la primera parte de este tutorial, ahora vamos a expandirlo y enfocarnos en buscar formas de inseguridad y seguridad en la temática XSS.

XSS - Cross Site Scripting
Un XSS es un tipo de vulnerabilidad surgida como consecuencia de errores de filtrado de las entradas del usuario en aplicaciones web.

Estos ataques se aprovechan de la confianza del usuario en la aplicación, el atacante inyecta código JavaScript en nuestra web.

¿Qué se puede lograr mediante un ataque XSS?

  • Robar las cookies de un usuario y entrar en su lugar.
  • Mostrar una página falsa de login en tu web (phishing).
  • Llevar a cabo cualquier acción como si fuera otro usuario.
  • Malograr y modificar la página vulnerable.

Dos tipos de ataques XSS


Existen dos tipos de ataques que se pueden realizar con XSS los cuales son:

Persistentes

Son “menos” frecuentes, son datos introducidos por el usuario y son almacenados de manera PERSISTENTE (db) y utilizados para generar una página HTML.

Reflejados

Son los más frecuentes, son datos introducidos por el usuario y son utilizados INMEDIATAMENTE para generar una página HTML.

Ejemplo XSS


un pequeño ejemplo sería con la utilización de un formulario como este:

ejemplo1.php ejemplo1-2.php En el ejemplo1.php se presenta una encuesta, luego de seleccionar alguna opción, los datos son enviados a la página “ejemplo12.php” , en donde se los imprime.

Este simple ejemplo permite inyectar código XSS, debido a que la variable no está filtrada, un ejemplo de inyección podría ser:

Otro ejemplo XSS


Digamos que el usuario necesita rellenar un formulario, para que luego esta información se guarde en una base de datos ó archivo.

Y tenemos algo como lo siguiente:

formularioxss.php Ahora debemos procesar esos datos que se van a introducir para eso tenemos:

guardar.php El php es vulnerable ya que no tiene ningún filtro de seguridad para evitar inyecciones y al introducir código malicioso en vez de datos ocurriría fallos en la página.


Ahora vamos y abrimos el archivo "almacen.html" y podemos observar que se dejo pasar el código malicioso:


Ahora debemos aplicar seguridad, hagamoslo editando el archivo "guardar.php" y dejándolo de esta forma: Y ahora el resultado sería:


La variable $_GET


La variable predefinida $_GET se utiliza para recoger los valores en un formulario con method="get".

Ejemplo
Cuando el usuario hace clic en el botón "Enviar", la URL enviada al servidor podría ser algo como esto: El "validar.php" puede utilizar la variable $_GET para recoger los datos del formulario (los nombres de los campos del formulario será automáticamente las claves de la matriz $_GET):

validar.php El método de inyección de este ejemplo es el siguiente: Y el resultado sería:


Aplicando la seguridad de htmlspecialchars() la estructura php sería así: Y el resultado libre de cualquier peligro sería así:


$PHP_SELF


También aprovecho para exponer lo peligroso que es utilizar la variable $PHP_SELF, entonces tenemos un ejemplo como este: La url para atacar la vulnerabilidad sería así: $_SERVER['PHP_SELF'] en este caso tomaría el valor de: Que produciría lo siguiente: Ejemplo básico de $PHP_SELF en fomularios

Supongamos que tenemos un formulario como este:

formulario.php El cual es vulnerable y se puede introducir código malicioso de esta forma: El resultado sería de esta forma:


Claramente podemos observar que se inyecto con éxito el código introducido, ahora vamos a ver el código fuente como señale en la imagen y nos generaría lo siguiente:


Podemos observar en esta segunda imagen que el código inyectado hizo que el código normal se modificará y en la línea 7 quedase el código de esta forma: Y eso es lo que pasa cuando se utiliza $PHP_SELF sin protección.

Añadiendo protección a $PHP_SELF


Es simple, lo único de debemos hacer es codificar la url y es posible realizarlo de esta forma: Y con eso termino la segunda parte de este tutorial, si tienen algo más que anexar o alguna duda dejarlo en los comentarios, pronto realizo una tercera parte.

Más información
Nombre

Accesibilidad Actualidad Adobe Flash AirPods Amazon Amazon Music Unlimited Amazon Protect AMD Android Android 6.0 Marshmallow Android Auto Android Nougat Android Things Android Wear Animación Anti-Virus Aplicaciones Aplicaciones Web App Store Apple apple ipad 3 Audio AVG Base64 Bases de datos Black Friday BlackBerry BlackBerry 10 Blizzard Blogger Bromas Ciencia Clonaciones CMS Codificación Código Fuente Códigos Compras por Internet Consolas Contraseñas Cookies Cross site scripting Darknet Dart DDoS Deface Defacing Desarrolladores Diseño Web DOS Drivers Drones Experiencia Exploit Extensiones Exynos 9 Facebook Facebook Events Facebook Messenger fingerprinting Firefox 12 Fraudes Gadgets Gaming General GitHub Gmail Google Google Allo Google Analytics Google App Maker Google Chrome Google Drive Google Flights Google Imágenes Google Maps Google Pixel Google Play Google+ Gráficas Hacker Hackers Hacking Hacks Hardware HD Herramientas HI5 Hijacking htaccess HTML humans.txt Humor Gráfico Infección Informática Ingeniería Social Instagram Intel Internet Inyeccion iOS iOS 10 ip iPad 3 Iphone iPhone 7 iPhone 8 Javascript Juegos Kurt Cobain Land LinkedIn Linux Live HTTP headers Malware Mantenimiento Memorias Memorias USB MicroSD Microsoft Móviles Mozilla Firefox Música MySQL Navegadores Nexus Nintendo Nintendo NX Nintendo Switch Notebooks Noticias NVIDIA Ocio Opera Ordenador Overclocking Passwords PayPal Personal Phishing PHP Phreaking Plugins Portatiles Privacidad Procesadores Programación Programas Qualcomm Ransomware Realidad Virtual Redes Inalambricas Redes Sociales Redes y Conexiones Routers Samsung Samsung Galaxy Note 8 Samsung Galaxy S8 SD Seguridad Seguridad Informática SEO Servicios Web Sesiones Web Sistemas Operativos Skype Smartphones SMTP Flood Snap Inc Snapchat Snapdragon Snooping Software Sonico Sony Sony Xperia Source routing Spectacles Spotify Steam Steve Jobs TeamViewer Teclado Tecnología Telefonía Telegram Tips Tp-Link Tráfico Web Trailers Trasteando Troyanos Trucos Tutoriales Twitter Uber Ultrabooks USB Utilidades VBScript vBulletin Video Streaming VideoJuegos Videos Vídeos Virus Vulnerabilidades Vulnerabilidades Web Web WhatsApp Wifi Windows Windows 10 Windows 7 Windows 8 Windows 8.1 Windows Live Windows XP WordPress XBOX 360 XSS Yahoo! Youtube
false
ltr
item
Carluys Blog: Seguridad en aplicaciones web (Parte 2 - XSS Cross Site Scripting)
Seguridad en aplicaciones web (Parte 2 - XSS Cross Site Scripting)
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh84548Tsg_6M2rZws8OIw_8bbd0PJFNpcTNZp6n6ERaoghpMrPuZstoUg0evDXaPQCYExm_ZuneQeqAIJ8NUEbu5JXFWh7tyhu5GV69EjpdV3xaih0vVarh-rXePjM9l91ycdCB_As9RXf/s400/ejemploxss1.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh84548Tsg_6M2rZws8OIw_8bbd0PJFNpcTNZp6n6ERaoghpMrPuZstoUg0evDXaPQCYExm_ZuneQeqAIJ8NUEbu5JXFWh7tyhu5GV69EjpdV3xaih0vVarh-rXePjM9l91ycdCB_As9RXf/s72-c/ejemploxss1.png
Carluys Blog
https://carluys.blogspot.com/2012/08/seguridad-en-aplicaciones-web-parte-2.html
https://carluys.blogspot.com/
https://carluys.blogspot.com/
https://carluys.blogspot.com/2012/08/seguridad-en-aplicaciones-web-parte-2.html
true
5177014300366239033
UTF-8
Not found any posts Not found any related posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU Tag ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Contents Ver también relacionados Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy