È possibile eseguire un attacco XSS nel titolo / sottotitolo di una pagina web?

1

Ho un payload XSS che ha eseguito correttamente javascript quando ho incollato l'URL nel browser e premuto invio. Questo è l'URL:

localhost/path/to/file.jsp?aMessage=%3Cscript%3Ealert(%27XSSed%27)%3C/script%3E

Dove aMessage viene visualizzato in una tabella in questo modo:

<table>
  <tr>
     <td>
         <%= myObject.getString("aMessage") %>
     </td>
  </tr>
</table>

Il markup è così:

localhost/path/to/file.jsp?aMessage=<script>alert('XSSed')</script>

Risultato: compare una finestra di avviso che dice "XSSed". Ho quindi provato a eseguire un attacco XSS utilizzando il titolo / sottotitolo della pagina Web, ma non ha funzionato. Questo era il nuovo URL:

localhost/path/to/file.jsp?aTitle=%3Cscript%3Ealert(%27XSSed%27)%3C/script%3E&aSubTitle=%3Cscript%3Ealert(%27XSSed%27)%3C/script%3E

dove aTitle viene assegnato al titolo e aSubTitle viene assegnato a sottotitolo nella jsp in questo modo:

<popup
    title = '<%= myObject.getString("aTitle") %>'
    subTitle = '<%= myObject.getString("aSubTitle") %>'>
</popup>

Dove popup è un tag personalizzato in un file xml.

Quindi ho un paio di domande:

1) È possibile eseguire un attacco XSS usando il titolo / sottotitolo di una pagina web? Mi chiedo se sia necessario sfuggire ai personaggi in questi campi, o se va bene accettare qualunque testo. (So che in genere non è una buona idea è solo per motivi di curiosità).

2) Se è possibile, perché non funziona?

    
posta Michael 06.07.2017 - 18:12
fonte

1 risposta

1
  1. Sì, è possibile. Dipende tutto da dove il contenuto si riflette nel markup e se il contenuto è scappato correttamente per il contesto dato.

  2. Il tuo xss non funziona nei campi del titolo perché non è formattato correttamente per il contesto dato. Il markup per "aMessage" è in un contesto di elementi. Il tuo payload XSS è formattato per quel contesto. "aTitle" e "aSubtitle" si trovano in un contesto di attributo. Il tuo payload non è formattato per quel contesto.

Hai un paio di opzioni diverse per farlo funzionare:

  1. Controlla se riesci ad accedere a un contesto di elementi. Prova ad inserire aSubTitle con un valore come

"> < /popup> < script> alert('xss'); < /script> < popup>

Il markup risultante dovrebbe apparire come

"< popup title="What ever you entered for title" subTitle="">< /popup> < script> alert('xss'); < /script> < popup> < /popup>

  1. Se l'output viene codificato per un contesto di attributo, prova a sfruttare un evento javascript per eseguire il tuo payload. Ad esempio:

" onmouseover="alert('xss');" could potential cause your payload to execute when the user mouses over your content.

    
risposta data 06.07.2017 - 19:10
fonte

Leggi altre domande sui tag