Je viens d'aller revoir le changelog de la .18 et .19
Autant ne pas etre en .19 n'est pas dramatique, autant il y a un sacré paquet de modifs de la .17 a .18
Plein de corrections de bugs tout courts + quelques truc liés a la securité (code des PM et des avatars) sans que rien ne soit critique. Ceci dit rien n'est précisé sur la nature des injections possibles.
Je comprends que tu n'ais pas envie de te farcir les modifs car tu as des mods d'installé mais dans ce cas il faut blinder les sauvegardes de fichiers et de la base pour etre paré le cas échéant.
En ce qui concerne le captcha installé sur GN :
Il s'agit de freecap :
http://www.puremango.co.uk/cm_php_captc ... pt_113.php
La version utilisée est la 1.3 et non la 1.4.1 (actuelle) car j'avais des soucis avec la 1.4.1 lorsque j'ai développé en local (problemes que j'impute a ma config, aux options de phpmyadmin a ce moment la, etc. mais pas au script en soi). La 1.4 ayant une faille, je me suis rabatu sur la 1.3. A l'occasion, faudrait que je réessaye avec la derniere version, mais bon, vu que ca marche bien, et faute de temps, c'est pas en top priorité sur ma to-do list.
package 1.3 original :
http://www.puremango.co.uk/freecapv1.3.zip
J'ai modifié freecap.php de la facon suivante (le fichier modifié est attaché) :
changements de certaines options :
- pas de dictionnaire de mots
- fond de l'image transparent
- emplacement de la police
suppression du bout de code "Avoid Brute Force Attacks:" pour certainement une bonne raison mais je ne me souviens plus laquelle (je crois que c'est parce que phpbb intègre (en 2.0.19 ou 18) son propre code de limitation d'acces a la page en question)
Mais c'est accessoire (en fait au début je voulais épurer freecap.php le plus posible pour virer le superflu et ce qui ne m'était pas necessaire et au final, j'ai choisi de limiter les modifs et conserver ce fichier le plus possible en l'état.
Venons en a la modif la plus importante (la seule utile).
Dans le code original on trouve a un moment donné :
- Code: Tout sélectionner
// for debug
//$word="qgfthn";
qui outrepasse le code que l'on vient soit de chercher dans le dictionnaire (si on utilise un dictionnaire de mots) soit que l'on vient de générer aléatoirement.
A remplacer par
- Code: Tout sélectionner
$word=$code;
Le but étant de court-circuiter freecap pour tout ce qui est génération du code. Nous voulons en effet nous servir de freecap juste pour le rendu graphique du code qui aura été généré par phpBB. Ce code de confirmation visuelle généré par phpbb est stocké dans la variable $code (dans usercp_confirm.php) d'ou écrasement du code généré par freecap par $code
Ce qui nous amene au point suivant :
edition de usercp_confirm.php pour y faire un include de notre freecap.php modifié.
Rechercher
- Code: Tout sélectionner
// If we can we will generate a single filtered png else we will have to simply
// output six seperate original pngs ... first way is preferable!
if (@extension_loaded('zlib'))
{
pour remplacer tout le contenu du bloc if (jusqu'au "else") par un simple
include('freecap.php");
(a défaut on peut se contenter de mettre le contenu du bloc en commentaire plutot que de le supprimer).
On est donc censé avoi le code suivant :
- Code: Tout sélectionner
// If we can we will generate a single filtered png else we will have to simply
// output six seperate original pngs ... first way is preferable!
if (@extension_loaded('zlib'))
{
include('freecap.php');
}
else
{
$_png = define_raw_pngs();
$char = substr($code, -1);
header('Content-Type: image/png');
header('Cache-control: no-cache, no-store');
echo base64_decode($_png[$char]);
unset($_png);
exit;
}
exit;
...(suite du listing)
C'est quasiment fini. Il reste juste a modifier usercp_register.php pour limiter les caracteres utilisés dans le code de confirmation visuelle.
Par défaut phpbb utilise des lettres majuscules et les chiffres or ceux ci ne sont pas gérés par freecap (du moins dans cette version) de plus que certaines lettres (freecap n'utilise pas de f, i , j qui peuvent preter a confusion), d'ou la modif suivante (mise en commentaire de l'original):
- Code: Tout sélectionner
//$confirm_chars = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9');
$confirm_chars = array('a', 'b', 'c', 'd', 'e', 'g', 'h', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 'u', 'v', 'w', 'x', 'y', 'z');
Voila, c'est terminé.
Reste plus qu'a uploader freecap.php et font.gdf dans le dossier /include (penser a bien changer le chemin de la police dans freecap.php) et c'est tout !
Dodo !