XSS: analisi di Javascript

4

Lettura su XSS basato su DOM da link

Illustra alcuni esempi come:

http://www.vulnerable.site/welcome.html?foobar=name=<script>alert(document.cookie)<script>&name=Joe

e

 http://www.vulnerable.site/attachment.cgi?id=&action=foobar#<script>alert(document.cookie)</script>

1) In che sequenza un server e un browser analizzano i javascript? Diciamo per esempio 1), non appena la richiesta sopra riportata viene digitata in un browser e inviata a vulnerable.site, il cgi gestirà la richiesta tramite i parametri GET / POST. Qui, estrae i valori richiesti dalla richiesta GET / POST, esegue l'elaborazione lato server e restituisce una risposta in html. Quindi dov'è il javascript in uno dei parametri incorporati nella risposta?

2) Analogamente, per esempio 2) ho letto che il carattere # impediva l'invio al lato server. Quindi il server riceverà solo una richiesta come link e non l'URL completo. Quindi cosa succede alla javascript che segue? Il browser esegue direttamente?

    
posta Karan 11.05.2013 - 20:14
fonte

2 risposte

3
  1. Il server non analizza JavaScript tranne in circostanze molto specifiche (ad esempio, esegui NodeJS e eval() di input dell'utente. Qualcuno dovrebbe essere dannatamente stupido per farlo o avere un motivo valido per farlo ). Pertanto, il server non vede / cura il contenuto effettivo del codice e non verrà eseguito sul lato server. La ragione di qualcosa di simile è che, di solito, i valori utente vengono di solito riportati da qualche parte nella pagina - questo è il motivo per cui li passi attraverso un URL o li memorizzi sul server - in modo che vengano utilizzati. Quando il server ha inviato la sua risposta, il browser esegue quindi il codice che ottiene.

  2. In effetti, hai ragione su questo. L'hashtag non viene mai inviato al server; tuttavia, potrebbe esserci qualche elaborazione lato client, in particolare con le librerie MVC come Spine.js . Queste cose usano il valore hashtag per archiviare gli elementi della cronologia ed eseguire azioni basate su di essi - come mostrare pagine, fare cose o echoing code .

Noterai che in entrambi i casi il vettore è "echoing code". L'intero scopo è ottenere un tag script aggiuntivo sulla tua pagina, dove verrà eseguito e avviserà i cookie. Il primo, una volta corretto, è un ottimo esempio di un altro difetto:

http://www.vulnerable.site/welcome.html?foobar=&name=<script>alert(document.cookie)</script>&name=Joe

Questa richiesta ha due parametri di nome. Inquinamento HTTP? Probabile.

    
risposta data 11.05.2013 - 20:19
fonte
3

Illustriamo come funziona una richiesta di pagina di base:

                            Request
                           index.php
#4 Processing |--------| 1#-----------> |--------|   #2 Processing
HTML/CSS/JS   | Client |                | Server |    the requet
 etc...       |--------| <-----------#3 |--------|    
                           Sending
                         the processed
                             page

Quindi ad esempio il nostro index.php ha il seguente:

<?php
    $name = $_GET['name'];
    echo 'Your name is' . $name;
?>

Per un utente normale questo funzionerà come previsto, compilerà un modulo con il suo nome e nessun problema. Un hacker riempie un javascript dannoso. Ad esempio: index.php?name=<script>alert('hello hacker');</script> .

  1. Chiede index.php?name=<script>alert('hello hacker');</script> .
  2. PHP get è il parametro name che è <script>alert('hello hacker');</script> in questo caso.
  3. PHP invierà la pagina con Your name is <script>alert('hello hacker');</script> in essa.
  4. Il browser client leggerà ed eseguirà il tag JS, questo risulterebbe in una finestra di avviso "ciao hacker".

Quindi potresti pensare perché e come è così male? Bene, la sceneggiatura può essere "offuscata" (per renderla illeggibile) e inviata a una vittima, quando la vittima fa clic su di essa lo script può essere utilizzato per rubare i cookie, iniettare malware o persino hackerare il sistema con un exploit di 0 giorni. / p>     

risposta data 11.05.2013 - 20:41
fonte

Leggi altre domande sui tag