Bienvenue sur horslimite.net
Ce site vous propose tutoriels de programmations (php javascript ...) forum compteur de connectés, compteur de visites, script php, téléchargement de logiciel, Blog etc...
 
aide webmastering webmaster compteur forum Menu
home
  • News
  • Recherche
  • Téléchargement
  • Statistiques
  • Tutoriels      
  • PHP     
  • JavaScript     
  • Crack
  • Linux     
  • Back orifice
  • Faille include (php)
  • Membre      
  • Inscription
  • Liste des membres
  • Votre profil
  • Compteur de visites
  • Compteur de connectés
  • Votre carte membre
  • Messagerie interne
  • Blog
  • Service      
  • Whois
  • Header d\\\\'une page
  • Obtenir une IP
  • Générateur de méta-tags
  • Forum



    Votez pour ce site au Weborama
    > tutoriel > exploit > InvisionPowerBoard1.2F


    InvisionPowerBoard1.2F

    Invision Power Board 1.2 FINAL
    ******************************
    Informations :
    °°°°°°°°°°°°°°
    Langage : PHP
    Version : 1.2 FINAL
    Website : http://www.invisionboard.com/
    Problème : XSS permanent

    Developpement :
    °°°°°°°°°°°°°°°
    Une faille XSS permanent via le BBCode permet d'éxecuter un script dans les messages privés ou dans les forums.
    Les balises touchées sont les balises [FONT] et [COLOR].
    Normalement elles sont utilisées comme ceci :
    [FONT=Times]texte[/FONT] devient <span style='font-family:Times'>texte</span>
    et [COLOR=orange]texte[/COLOR] devient <span style='color:orange'>texte</span>.
    Il n'y a pratiquement aucun filtre au niveau des valeurs données à ces balises. Via le style, on peut utiliser
    deux fonctions pour faire exécuter un code.
    D'abord expression(), qui s'utilise avec tout les attributs comme ceci : expression([SCRIPT])
    puis url(), qui s'utilise avec un nombre limité d'attribut (background:, background-image:,...) comme
    ceci : url(javascript:[SCRIPT]). Cette dernière fonction ne pourra pas être utilisée car le ; nécessaire à séparer
    les attributs est filtré. Mais on peut utiliser expression().
    Pour faire executer le javascript : alert(document.cookie), on peut donc utiliser la balise :
    [FONT=expression(alert(document.cookie))]texte[/FONT] qui donnera le code HTML :
    <span style='font-family:expression(alert(document.cookie))'>texte</span>
    ou encore la balise [COLOR=expression(alert(document.cookie))]texte[/COLOR] qui donnera le code HTML :
    <span style='color:expression(alert(document.cookie))'>texte</span>

    Solution :
    °°°°°°°°°°
    Un patch est disponible sur http://www.phpsecure.info.
    Il faut modifier le fichier sources/lib/post_parser.php en y remplacant les lignes :
    -----------------------------------------------------------------------------------------------------------------------------
    while ( preg_match( "#\[font=([^\]]+)\](.*?)\[/font\]#ies", $txt ) )
    {
    $txt = preg_replace( "#\[font=([^\]]+)\](.*?)\[/font\]#ies" , "\$this->regex_font_attr(array('s'=>'font','1'=>'\\1','2'=>'\\2'))", $txt );
    }

    while( preg_match( "#\[color=([^\]]+)\](.+?)\[/color\]#ies", $txt ) )
    {
    $txt = preg_replace( "#\[color=([^\]]+)\](.+?)\[/color\]#ies" , "\$this->regex_font_attr(array('s'=>'col' ,'1'=>'\\1','2'=>'\\2'))", $txt );
    }
    -----------------------------------------------------------------------------------------------------------------------------
    par les lignes :
    -----------------------------------------------------------------------------------------------------------------------------
    while ( preg_match( "#\[font=([^;<>\*\(\)\]\"']*)\](.*?)\[/font\]#ies", $txt ) )
    {
    $txt = preg_replace( "#\[font=([^;<>\*\(\)\"']*)\](.*?)\[/font\]#ies" , "\$this->regex_font_attr(array('s'=>'font','1'=>'\\1','2'=>'\\2'))", $txt );
    }

    while( preg_match( "#\[color=([a-zA-Z0-9]*)\](.+?)\[/color\]#ies", $txt ) )
    {
    $txt = preg_replace( "#\[color=([a-zA-Z0-9]*)\](.+?)\[/color\]#ies" , "\$this->regex_font_attr(array('s'=>'col' ,'1'=>'\\1','2'=>'\\2'))", $txt );
    }
    -----------------------------------------------------------------------------------------------------------------------------
    Ce filtre empêche de placer dans la balise [FONT] les caractères ;,<,>,*,(,),",',] (ce dernier caractère empêche des erreurs
    d'interpretation) et n'autorise dans la balise [COLOR] que les caractères de a à z, de A à Z et de 0 à 9.

    Credits :
    °°°°°°°°°
    Auteur : frog-m@n
    E-mail : leseulfrog@hotmail.com
    Website : http://www.phpsecure.info
    Date : 10/09/03
    Greetz : Merci à l'IHC Team (www.ihcteam.org) qui m'a permis de tester à mon aise.
    Copyright frog-m@n http://www.phpsecure.info/v2/zone/pArticle
     
    page générée en 43 millisecondes