Bypassare i filtri XSS [duplicato]

1

Qualcuno può darmi una lista di modi per codificare il payload XSS, o per essere precisi quali sono i modi per codificare il payload XSS per bypassare la codifica di < > o (). Conosco il bypass a doppia codifica con% 253c e Unicode, ma voglio conoscere tutti i metodi disponibili. Grazie

    
posta Danijel Maksimovic Maxa 19.01.2012 - 19:30
fonte

2 risposte

2

Non penso che sarebbe una saggia idea dare un how-to sugli attacchi XSS; sebbene esistano molte risorse, ad es. Ch. 12 del WAHH su XSS.

Il modo migliore per prevenire gli attacchi XSS è sostituire tutti i caratteri speciali utilizzati in questi attacchi (ad esempio < , > , & , " , ' con il loro equivalente carattere HTML &lt; , &gt; , &amp; , &quot; , &#39; ) per tutto il testo fornito dall'utente e che consente agli utenti di contrassegnare i loro commenti usando un linguaggio di markup non html limitato (come markdown) che viene solo sostituito in una cassastrong sottoinsieme di html nell'ultima fase di elaborazione. (Fai attenzione anche che i loro commenti non vengano mai eseguiti in nessuna sorta di elaborazione javascript che hai scritto).

Se decidi di ignorarlo e di disinfettare solo tag specifici (come <script> , <object> , javascript controlla che l'igienizzazione sia eseguita in modo ricorsivo (quindi <scr<script>ipt> non diventa <script> dopo un singolo -passare l'igiene), è insensibile al caso / spazio bianco, e si ferma solo quando l'ultimo tentativo di risanamento non ha modificato l'input. In python qualcosa come

import re
def sanitation_single_pass(user_input):
    pattern = re.compile('<[^>]*(script|object|meta|style)[^>]*>', re.IGNORECASE) 
    # this is very quick sample regex that could appear in a sanitation routine
    # not meant to be inclusive of most XSS threats;
    # e.g. this doesn't prevent having javascript in links or img src, etc.
    return pattern.sub('', user_input)


def sanitation(user_input):
    processed_user_input = sanitation_single_pass(user_input)
    while processed_user_input != user_input:
        user_input = processed_user_input
        processed_user_input = sanitation_single_pass(user_input)
    return processed_user_input

Fai anche attenzione ai problemi di codifica, assicurati di definire un set di caratteri ( <meta charset="utf-8"> nella parte superiore dei modelli html) e di forzare l'input dell'utente in questa codifica prima della sanitizzazione. Prova anche a riconoscere che alcuni browser interpretano cose come java&#x0A;script come javascript ( &#x0A; è un'interruzione di riga), ecc.

    
risposta data 19.01.2012 - 20:47
fonte
0

XSS Cheat Sheet, non uscire mai di casa senza di esso - link

Anche se ovviamente questo dovrebbe essere usato per proteggere te stesso e non per intenti maliziosi. La community è qui per insegnare e apprendere gli uni dagli altri i metodi di sicurezza IT, non per fornire metodi di accesso non autorizzati.

    
risposta data 19.01.2012 - 20:10
fonte

Leggi altre domande sui tag