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. HTML Context - In Block Tag Injection Gunakan
saat input masuk ke dalam atau di antara pembukaan / penutupan tag dalam tanda kurung berikut: 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 (>). 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 Context - Code Injection Gunakan ketika input mendarat di blok skrip, di dalam nilai string yang dibatasi. 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. Javascript Context - Tag Injection Gunakan saat input mendarat di mana saja dalam blok skrip. 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. 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 Javascript
Context - Placeholder Injection in Template Literal Gunakan saat input masuk ke dalam string backticks (``) yang dibatasi atau di mesin template. Multi Reflection in HTML Context - Double Reflection (Single Input) Gunakan untuk memanfaatkan banyak refleksi pada halaman yang sama. Multi Reflection in HTML Context - Triple Reflection (Single Input) Gunakan untuk memanfaatkan banyak refleksi pada halaman yang sama. 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. File Upload Injection – Filename Gunakan saat nama file yang diunggah reflected di suatu tempat di halaman target. 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. File Upload Injection – SVG File Gunakan untuk membuat XSS tersimpan sesuai target saat mengunggah file gambar. Simpan konten di bawah ini sebagai "Xss.svg". 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. DOM Insert Injection – Resource Request Gunakan ketika kode javascript halaman memasukkan ke dalam halaman hasil permintaan ke URL dikontrol oleh penyerang (injeksi). 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 (/). Script Injection - No Closing Tag Gunakan ketika ada tag skrip penutup (</script>) di suatu tempat dalam kode setelah reflection. 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). 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".
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).
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.
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 h2 ke h6 Tag HTML.
Gunakan saat ada injeksi Server-Side Include (SSI).
Gunakan untuk melewati kondisi "if" yang cocok dengan angka dalam perbandingan longgar.
Gunakan di titik akhir di mana pesan kesalahan SQL dapat dipicu (dengan kutipan atau backslash).
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.
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.
# filter bypass
Gunakan untuk mem-bypass filter case-sensitive.
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.
Gunakan saat aplikasi mencerminkan input dalam huruf besar. Ganti "&" dengan "% 26" dan "#" dengan "% 23" di URL.
Gunakan saat filter mencari "<script>" atau "<script src = ..." dengan beberapa variasi tetapi tanpa memeriksa atribut lain yang tidak diperlukan
Gunakan ketika aplikasi melakukan decoding input ganda.
Gunakan dalam vektor HTML atau injeksi javascript ketika tanda kurung tidak diizinkan dan a kotak peringatan sederhana sudah cukup.
Gunakan dalam vektor HTML atau injeksi javascript ketika tanda kurung tidak diizinkan dan PoC perlu mengembalikan informasi target.
Gunakan hanya dalam suntikan HTML ketika tanda kurung tidak diizinkan. Ganti “&” dengan “% 26” dan "#" dengan "% 23" di URL.
Gunakan saat karakter alfabet tidak diizinkan. Berikut ini adalah peringatan (1).
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.
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.
Gunakan saat menyaring menghapus apa pun di antara karakter seperti strip_tags PHP () fungsi. Hanya injeksi inline.
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.
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 (#).
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]>
Gunakan saat input Anda akan digunakan dua kali, seperti disimpan dinormalisasi dalam database dan kemudian diambil untuk digunakan nanti atau dimasukkan ke DOM
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
Gunakan ketika ada CSP (Kebijakan Keamanan Konten) yang memungkinkan eksekusi dari ini domain.
Gunakan sebagai alternatif untuk penangan acara, jika mereka tidak diizinkan. Beberapa membutuhkan pengguna interaksi sebagaimana dinyatakan dalam vektor itu sendiri (juga bagian dari mereka).
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).
Gunakan ketika komentar javascript biasa (garis miring ganda) tidak diizinkan, diloloskan atau dihapus.
kode sumber dan / atau tanda sama dengan tidak diizinkan. Hanya tokek.
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.
Gunakan untuk mengelabui filter yang menghapus vektor XSS klasik dan paling dikenal. Ini berfungsi apa adanya dan jika "<script>" dihapus.
Gunakan ketika aplikasi target mengubah input Anda menjadi huruf kecil melalui javascript. Mungkin berhasil juga untuk operasi huruf kecil sisi server.
Gunakan saat aplikasi target melakukan pemetaan yang paling sesuai.
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
Gunakan untuk menghindari penyaringan entitas HTML. Semua di atas hanya mewakili karakter "(". Tokek.
Gunakan untuk memintas filter [[alpha] di halaman .asp.
Gunakan untuk memintas flag FILTER_VALIDATE_EMAIL flag dari fungsi filter_var () PHP.
Gunakan ketika input direfleksikan ke sumber dan tidak bisa dijalankan dengan mencerminkan tetapi dengan menjadi dimasukkan ke dalam DOM. Menghindari pemfilteran browser dan WAFs.
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".
Gunakan untuk memotong Auditor Webkit dalam konteks javascript dengan keluar dari blok skrip.
Gunakan untuk memintas Auditor Webkit dalam skenario refleksi ganda untuk konteks apa pun.
Gunakan ketika refleksi berasal dari penggunaan fungsi PHP var_dump () dan print_r (). "P" adalah parameter rentan.
Gunakan untuk mem-bypass Microsoft IE11 atau Edge saat menyuntikkan ke dalam konteks javascript.
Gunakan untuk mem-bypass filter asli mereka dalam skenario multi-refleksi.
Gunakan saat filter mencari "https: // DOMAIN" dalam string yang digunakan untuk pengalihan properti document.location. Itu juga menyalahgunakan cara string "Javascript" dapat dibangun.
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.
Gunakan untuk memintas filter. Hanya tokek, URL disandikan.
# exploitation
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))
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).
=> Jalankan perintah shell web di terminal seperti berikut ("id" sebagai contoh):
Gunakan sebagai skrip remote XSS blind yang menyimpan file PHP dan ubah $ menjadi dan $ header header demikian. Diperlukan server surat yang berfungsi seperti Postfix.
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.
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.
Gunakan untuk mengubah bagaimana situs akan muncul ke korban menyediakan kode HTML. Dalam contoh di bawah ini a Pesan "Tidak Ditemukan" ditampilkan.
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.
=> Listener (terminal command):
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').
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.
# miscellaneous
Gunakan untuk berlatih vektor dan muatan XSS. Periksa kode sumber untuk titik injeksi.
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.
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.
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.
Gunakan saat pustaka javascript atau sumber daya lain yang diperlukan untuk injeksi tidak dimuat sepenuhnya dalam pelaksanaan payload. Contoh panggilan eksternal berbasis JQuery.
Gunakan saat diperlukan atribut src yang valid untuk memicu peristiwa yang dimuat alih-alih satu kesalahan.
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.
Gunakan saat menargetkan aplikasi seluler.
Kumpulan vektor tubuh. Yang terakhir hanya berfungsi untuk browser Microsoft.
Kumpulan vektor XSS yang kurang dikenal.
Gunakan untuk mengguncang semua elemen halaman sebagai visualisasi kerentanan yang baik.
Gunakan untuk menampilkan gambar karakter Sub-Zero Mortal Kombat bersama dengan "kebrutalan" suara game.
Gunakan untuk membuktikan bahwa semua nilai HTML tersembunyi seperti token dan nonces di halaman target dapat dicuri.
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.
Gunakan saat kata kunci "style" diblokir untuk inline dan nama tag. Berikan HOST dan FILE untuk CSS atau hanya CSS saja dalam vektor kedua.
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.
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.
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:
# Payload Xss https://github.com/3xploit-db/XSS-Payloads/blob/master/payload.txt # ASCII Encoding Table |