"¡Intenté crear una aplicación de tablero de anuncios que pueda usar etiquetas HTML!"
¿Qué pasaría si un trabajo de un ingeniero principiante fuera "asumido" con solo una publicación de línea
introduciremos una demostración utilizando un ejemplo de
secuencias de comandos entre sitios (XSS) los conceptos básicos de seguridad, y explicaremos cómo se atacan realmente los sitios vulnerables
🎬 Si desea ver el video, haga clic aquí
▶ Mira la demostración en YouTube
💻Se desea probarlo realmente, haga clic aquí
🔗 Repositorio de GitHub (código de demostración XSS)
*Este contenido es para
fines educativos y conciencia de seguridad No está destinado a atacar servicios reales o terceros.
¿Qué es XSS (Scripting Cross Site)?
XSS (Scripting de sitios cruzados) es un ataque en el que maliciosos
(como JavaScript) se inyectan en una página web y se ejecutan
Por ejemplo, si el siguiente código se publica en el tablero de mensajes o la sección de comentarios,
<img src="invalid.jpg" onerror="alert('XSS')">
otro usuario ve la página puede ser robado.
Posible daño causado por XSS
- Robo de cookies de usuario e información de sesión
- Una redirección de página egoísta (phishing)
- Aplicación web La interfaz de interfaz de usuario e inserción de formularios falsos
- Publicidad de exhibición fraudulenta y conduce a enlaces fraudulentos
¿Por qué ocurren XSS?
XSS ocurre cuando un desarrollador "muestra la entrada del usuario directamente en la pantalla".
- Lo que envió el usuarioo
Solo incrusta enInnerhtml
- "Puede usar HTML libremente", permitiendo que se ingresen etiquetas.
- Sin procesamiento de filtrado o desinfección para evitar la ejecución de JavaScript
Con este diseño, los atacantes pueden "inyectar" el código fuente ilegal en HTML
Ejemplos de código peligroso
PostContainer.innerhtml += `<p> $ {userInput}</p> `;
A primera vista, parece un proceso de visualización normal, pero el UserInput
contiene el siguiente código?
<img src="invalid.jpg" onerror="alert('XSS')">
este
La etiqueta especifica una imagen que no existe y causa un error de carga, y
en ese momento se ejecutará alerta ('XSS')
instalado en Oneror
Este ejemplo puede parecer inofensivo desde alerta
<img src="x" onerror="location='https://hack-lab-256.com/'">
Esto puede causar
daños realistas , como los usuarios que abren el tablero de mensajes se redirige automáticamente a sitios maliciosos Por supuesto, si obtiene cookies, puede iniciar sesión sin autorizar.
¿Cómo encuentran los hackers ataques?
Los atacantes reales (hackers) observan e investigan aplicaciones web publicadas para identificar vulnerabilidades.
- Verifique la URL y el formulario
⇒ ¿Hay algún campo de entrada? ¿Puedo ingresar etiquetas HTML? - Verifique los resultados de la publicación
⇒"
Pruebe una cadena de prueba como"
- Encuentre el error de un desarrollador
⇒ ¿Hay alguna parte que useInnerHTML
¿Hay alguna área que no haya sido filtrada o escapada? - Escriba el código de preparación
⇒
Por ejemplo, prepare cables que sean difíciles de detectar o aprovechar los huecos.
La típica cadena de ataque XSS es la siguiente:
por supuesto, atacan en una amplia variedad de otras maneras.
tipo | Código de ataque | Características y notas |
---|---|---|
タグ | <script>alert('XSS')</script> | Un clásico entre los clásicos. Recientemente, a menudo está deshabilitado en innerhtml |
<img onerror> | <img src="x" onerror="alert('XSS')"> | Alta tasa de éxito. Alertar fuego cuando falla la carga de imagen |
<svg onload> | <svg onload="alert('XSS')"></svg> | SVG es よりブロックされにくい。シンプルで強力 |
etiqueta | <iframe src="javascript:alert('XSS')"></iframe> | No se ejecuta en algunos navegadores, pero fue efectivo en entornos más antiguos. |
¡De hecho intenté piratearlo con XSS!
Ahora, en realidad intentaré piratear aplicaciones web usando XSS.
El código se publica, por lo que creo que sería bueno si pudieras probarlo mientras lo ejecutas en tu propia PC.
*Distribuido a través de Docker.
💻Se desea probarlo realmente, haga clic aquí
🔗 Repositorio de GitHub (código de demostración XSS)
*Esta es una demostración para la educación de seguridad. Este video no recomienda acceso no autorizado.
Un nuevo desafío de ingeniero: ¡hemos creado un tablón de anuncios que le permite usar etiquetas HTML!
He estado programando durante seis meses y sigo siendo un ingeniero para principiantes.
Pensé: "¡Quiero crear una aplicación web que se pueda mover con mis propias manos!" y decidió crear una aplicación de tablero de mensajes.Un diseño súper simple que se mostrará como se publica.
Además, también hemos hecho posible usar etiquetas HTML para personalizar la apariencia.feliz cuando se implementó y
pensé seriamente: "¿No va a ir un poco esto?"
Con este tipo de historia en mente, creamos una "aplicación de tablón de anuncios" que puede usar etiquetas HTML.

Características principales:
- Ingrese su nombre y mensaje en el formulario de publicación y envíelo y aparecerá inmediatamente a continuación
- Los mensajes se muestran con etiquetas HTML, por lo que puede cambiar el color y el tamaño del texto, y mostrar imágenes.
- El contenido de la publicación se guarda en el servidor y continúa mostrando incluso después de recargar la página
¡Puedes cambiar el color del texto como este!

Comportamiento real
- Puede usar etiquetas como
en negrita
orojo
- "Playable Bulletin Board" que es divertido personalizar a primera vista
Sin embargo, este alto grado de libertad conduce a un "solo trampa" ...
Aparecen los piratas informáticos: explorar el tablero de mensajes
Encontró un tablero de mensajes.
Parece simple y cualquiera puede publicar libremente.Cuando mira el formulario de publicación, simplemente ingrese su nombre y mensaje.
Además, el contenido publicado parece mostrarse como HTML."Mmm...
¿Pasará la etiqueta?
"Esto es も通っちゃったりして?」Se asoma ligeramente a través de la fuente y abre Devtools en su navegador.
AparentementeInnerHTML
se usa y no se filtra.── "Ya veo. Esto es ... se puede usar".
Con este tipo de historia en mente, intentaremos explorar la aplicación del tablero de mensajes.
Verifique qué etiquetas están pasando
Este es un tablón de anuncios que se puede personalizar con etiquetas HTML, por lo que creo que puede usar etiquetas HTML, pero para ver si hay restricciones, intentaré ejecutar una etiqueta HTML que pueda usar XSS.
<script>alert('xss')</script> ← ¿Se pasará la etiqueta de script?<img src="x" onerror="alert('xss')"> ← ¿Funciona el atributo del evento?<svg onload="alert('xss')"></svg> ← Ejecutar atributos de las etiquetas SVG<iframe src="https://hack-lab-256.com/"></iframe> ← ¿Se permite la incrustación de iframe? <math><mtext></mtext><script>alert(1)</script> </math>← Compruebe la etiqueta de script bypass
Primero, publiqué una etiqueta de script.
<script>alert('xss')</script>

Esto se mostró, pero no se emitieron alertas.
Esto se debe a la especificación del navegador de que las etiquetas de script no se ejecutan en InnerHTML
A continuación, intenté publicar una etiqueta de iframe.
<iframe src="https://hack-lab-256.com/"></iframe>

Esta página ha sido incrustada con éxito .
No es XSS, pero podría ser un trampolín para el phishing y el clickjacking
<iframe src="javascript:alert('XSS')"></iframe>

Sorprendentemente, se ejecutó una alerta.
A menudo se bloquea en navegadores normales, pero
en este tablero de mensajes src = "javascript: ..."
todavía está funcionando.

También publicaré la etiqueta IMG.
<img src="x" onerror="alert('img-xss')">


Esta es una de las técnicas XSS comúnmente utilizadas, y ejecutar JavaScript en caso de un error de carga de imágenes .
Cuando publiqué, se disparó una alerta en el momento en que vi la página.
Verifique el código fuente también
Pudimos confirmar en el experimento anterior que XSS es realmente posible, pero solo para estar seguro, verifique el código fuente
Si se implementa en JavaScript del lado del cliente, también puede ver el código directamente desde DevTools .
Mirando el código
, estaba utilizando el proceso de insertar el contenido de la publicación como InnerHTML

puede ver que los mensajes publicados también se muestran en la pantalla con etiquetas sin desinfectar

En este punto, ha quedado claro
que el tablero de mensajes es un "entorno ejecutable de script". En otras palabras, parece seguro decir que estás listo para atacar
Ejecutar: intente redirigir a su sitio usando XSS
En el reconocimiento hasta ahora, descubrimos que el tablero de mensajes muestra publicaciones con etiquetas HTML tal como está, y
que los atributos del evento JavaScript (como OnError) no están bloqueados.
Así que publicaré el código a continuación.
<img src="x" onerror="location='https://hack-lab-256.com/'">
Este mecanismo implica intentar cargar una imagen que no existe y causar un error, y
el atributo OnError
se ejecuta cuando se produce ese error

Después de enviar mi publicación, abrí la página del tablero de mensajes y
resultó automáticamente a https://hack-lab-256.com/
Se establece un ataque en el que el usuario no ha estado operando nada más que simplemente mostrando el tablero de mensajes y el atacante se ve obligado a hacer la transición al sitio designado por el atacante

A partir de este punto, este sitio no estará disponible para su uso. Este fenómeno ha llevado a la transición forzada a este sitio.
De esta manera, solo una línea de código puede causar daños a la confianza general del tablero de mensajes
Caso anterior: XSS también estaba ocurriendo en YouTube
En julio de 2010 (actualmente revisado),
la sección de comentarios se agregó タグを含めることで JavaScript が実行されてしまうという、深刻なXSS脆弱性が存在していました。
Detalles de vulnerabilidad
En YouTube, se encuentra originalmente en la sección de comentarios. などの危険なタグが入力された場合、
自動で無効化(エスケープ)する仕組みになっていました。
Sin embargo, la implementación en ese momento fue la primera タグだけが正しくエスケープされ、2つ目以降はそのまま通ってしまうという重大な処理漏れがあったのです。
✅ Múltiple タグを投稿すれば、実行可能なコードが差し込めた
Lo que realmente pasó
Poco después de que la vulnerabilidad se hizo pública, los usuarios maliciosos integraron el guión en numerosas páginas de video.
- Mostrar mensajes emergentes falsos
- Muestra un diálogo que imita un artículo de noticias falsas
- Redirigir a un sitio externo malicioso
Se dice que algunos códigos robaron información de cookies y mostraron páginas de inicio de sesión falsas.
¿Qué está en común con esta demostración?
La demostración de XSS a la que fui a esta vez y el estudio de caso de YouTube tiene una estructura muy similar.
- "Incorporar código en el campo posterior"
- "JavaScript se ejecuta cuando se ve"
- "Se producen redireccionamientos y otros daños".
Aunque esta demostración omitió intencionalmente el proceso de escape, los atacantes reales apuntan a tales "errores de filtrado menores .
Se han descubierto muchas vulnerabilidades de XSS en el pasado, e incluso los principales servicios web no son la excepción .
Si está interesado, consulte otros ejemplos.
Finalmente
mostramos cómo
se llevó a cabo un ataque XSS en el que se podría tomar una página web publicando solo una línea de código en un tablón de boletín simple que puede usar etiquetas HTML
A menudo se cree que XSS es "Sucede porque es una aplicación creada por principiantes", pero
una amenaza muy realista que se ha visto en los principales servicios como YouTube y Google en el pasado .
Hoy en día, podemos generar automáticamente aplicaciones usando AI.
Cada vez es más importante estar al tanto de si funciona de manera segura , en lugar de "simplemente moverlo, está bien
Incluso los servicios que ha creado se pueden tomar fácilmente en una sola línea
📺 YouTube presenta este contenido en un video fácil de entender.
Continuaremos proporcionando explicaciones y demostraciones de seguridad, por lo que
si no desea perderse la información más reciente, ¡suscríbase a nuestro canal!
🎬 Si desea ver el video, haga clic aquí
▶ Mira la demostración en YouTube
💻Se desea probarlo realmente, haga clic aquí
🔗 Repositorio de GitHub (código de demostración XSS)