-: En esta conferencia
y las próximas conferencias, vamos a hablar sobre una vulnerabilidad llamada XSS.
XSS es la abreviatura de Cross Site Scripting.
Este tipo de vulnerabilidad permite a
un atacante inyectar JavaScript en una página.
Entonces JavaScript es un lenguaje de programación.
Y utilizando esta vulnerabilidad, un
atacante podría ejecutar código, escrito en JavaScript,
en una determinada
página de un
sitio web.
JavaScript es un lenguaje del lado del
cliente, por lo que cuando se ejecuta el código, se
ejecutará en el cliente, en el usuario, en
la persona que estaba navegando por la página web.
No se ejecutará en el
servidor, por lo que incluso si
su código da como resultado un shell
inverso, el shell vendrá del usuario
que está navegando
por la página y no del sitio web.
Por lo tanto, cualquier código que escriba en JavaScript será explotado o
se ejecutará en el usuario objetivo, en
las personas que ven
las páginas y no está en el servidor web.
Entonces, el servidor web solo se utilizará como medio
para ejecutar el código o entregar el código.
Hay tres tipos principales de vulnerabilidades XSS,
persistentes o almacenadas, reflejadas
y
basadas en DOM.
El XSS almacenado se almacena en la base de datos, por lo
que el código que inyecta se almacenará en la base de
datos o en
la página, de modo que cada vez que cualquier persona vea
esa página se ejecutará su código.
El reflejado, el
código solo se ejecutará cuando
el usuario de destino ejecute una URL específica
creada o escrita por usted.
Por lo tanto, manipulará algún tipo de URL
y la enviará a un
objetivo y cuando ejecuten
ese objetivo, cuando ejecuten esa URL, se ejecutará el código.
Los resultados basados en DOM del código JavaScript escrito en
el cliente.
Por lo tanto, el código se
interpretará y ejecutará en el
lado del cliente sin tener ninguna comunicación con el servidor web.
Estos pueden ser
muy peligrosos porque a veces los servidores web aplican algún
tipo de seguridad y filtración para verificar XSS.
Pero con DOM, el código nunca se envía al
servidor web.
Por lo tanto, el código se interpretará y ejecutará en el
navegador web sin siquiera interactuar con el servidor web.
Y estos estarán presentes en sitios web que
actualizan su contenido sin actualizar.
Así que todos hemos usado sitios web donde pones tu nombre
de usuario,
por ejemplo, y
se carga inmediatamente sin tener que consultar con el servidor
web, o lo haces, pones algún tipo
de cadena y hace una búsqueda sin comunicarse con un servidor
web o hace algo sin comunicarse con el servidor web.
Entonces, si puede inyectar en eso, esta
inyección no se validará, por lo que
se ejecutará de inmediato y omitirá
todas las validaciones.