blogotext

Ce blog est généré par un moteur de blog : Blogotext. Je l'ai choisis pour sa simplicité absolue et son faible nombre d'options (pour un petit blog perso, j'ai pas besoin d'un Forum avec 15 bases de donnés). De plus, sa légèreté (~100ko) permettent facilement l'adaptation du code source.

Certes, ce n'est pas un logiciel aussi connu que Wordpress ou Dotclear, mais il existe et pour ceux (comme moi) qui veulent quelque chose de simple, léger et sans bases de données, il est parfait.
L'ennuie, c'est que le site officiel est mort depuis trois ans et que la licence ne permettait pas qu'on n'en distribue des modifications : le logiciel était mort…

J'ai donc pris contact avec son auteur pour demander si je pouvais reprendre le projet, et il a accepté :). Donc Blogotext sera de nouveau mis à jour !

Voilà :)
Une nouvelle que j'attendais depuis un petit moment. Ça occupera mes jours pluvieux où j'ai rien à faire (mais n'attendez pas que je travaille comme un forcené dessus non plus, j'ai d'autres choses dans ma vie de g33k ;-)).

J'ai déjà ajouté quelques petites choses au moteur de blog (dont des mises à jour), et je mettrais en place une page web pour le télécharger :)
Conformément au souhait de Fred Nassar, qui veut une simplicité pour l'utilisateur final, du téléchargement à l’installation, Blogotext sera conservé sous Licence CC-NC-CD.
(Ça permettra de faire en sorte qu'il n'y ait qu'une seule source du logiciel, pour les mises à jours, et donc une facilitée pour retrouver la dernière version du soft.)

Mise à jour du 23-06-2010 : voici un début de page dédié.

Rien à voir :
J'aime bien ce genre de concept, c'est marrant : choses à faire.
Et un autre, bien que je ne lis absolument pas l'espagnol, j'adore les images humorisitique de ce site, comme le concert de Vuvuzela en si bémol et ce gif animé.
Et j'ai découvert celui çi : http://silverstrate.org/ . Je n'ai encore que survolé un peu le blog et les dossiers mais il semble y avoir pas mal de choses (scriptes Linux, Packages…). À examiner de plus près je dis :-)

Aussi, à tous les fan IT Crowd (pour les geeks donc) : la série reprend le 25 juin !!!

Sinon, Super-crapule contre super-hadopi, ou la propagande gouvernementale en action. N'importe quoi, et sur France 5 en plus.

17 commentaires

gravatar
0siris a dit :

Yop Maitre Koga !

Dis, j'ai un truc à te demander: je dois refaire un site web, le site que tu vois avec mon mail (le remettre à jour, puis si possible, lui donner une cure de jouvence car il fait un peu trop 1990...). Et comme tu as l'air de quelqu'un de bien, je voulais te demander un peu d'aide. Ca me permettrai de commencer me chevronner en création de sites web (j'ai quelques notions basiques de HTML4 mais presque rien en css) et pour toi ça te servirai de laboratoire pour tenter un truc un peu plus fourni que ton blog (dont je vente souvent les mérites de vitesse et simplicité). Bref, on pourrait s'entraider quoi =) sachant qu'il n'y a aucun délai.

Voilà, dis moi ce que tu en penses.
PS: ne donnes pas le site en public stp =)

gravatar
Anonyme a dit :

Waou ! Tu reprends le projet Blogo ? Respect ! Prend en soin et pourquoi pas si tu as besoin d'un coup de main n'hésite pas ! ;-)

Y a Rochdi qui essaye d'adapter son design à un moteur de Blog, donc je crois que ce point est à amélioré...

Bonne chance l'ami !

gravatar
Le Hollandais Volant a dit :

Ouais, je sais pour Rochdi : il teste plusieurs moteurs de blog.

Je ferais quelques tutos d’adaptation pour Blogo, mais il restera ce qu'il est : un moteur de blog simple et minimaliste (c'est pas un inconvénient, d'être minimaliste parfois ; tout dépend des besoins).

Et merci :)

gravatar
Jom a dit :

Ha bah chapeau ! ^^
Déjà pas mal de MAJ, bonne continuation =)

gravatar
bohwaz a dit :

Je te conseille de déjà faire une complète relecture du code source, en passant 2 minutes à lire le code j'ai pu trouver des failles XSS.

Peut-être que d'autre failles pires sont disponibles (genre écrire/lire des fichiers système ?).

Ceci dit la licence ne serait pas un beau truc pas libre peut-être que tu aurais déjà eu un patch pour corriger ces failles, mais vu qu'on n'as pas le droit de changer le code...

gravatar
Le Hollandais Volant a dit :

Les failles XSS, c'est ce qui permet à un rigolo de poster des scripts ou du code via les formulaires. Tous les formulaires sont passé au htmlspecialchars(), ainsi que les $_Get et les cookies. Et à aucun moment Blogotext ne permet d'éditer un fichier système de Blogotext lui même, et encore moins un fichier Apache ou PHP.

Et la licence, c'est pas moi qui l'ai fixé, et elle restera comme elle est, j'y peux rien.

gravatar
bohwaz a dit :

Alors sur la version dispo en téléchargement il y a des XSS dans :
- le champ de recherche
- lors d'erreur dans le formulaire de commentaire : pseudo, email, site web.

Il est possible d'accéder par défaut au contenu brut des articles et commentaires (contenant les adresses email des commenteurs).

Il est possible de mettre des URLs en javascript: dans l'adresse du site web et donc de faire exécuter du code au client s'il clique sur un pseudo.

Il y a de sacré bugs de gestion des slashes, genre si je met 'Coucou "bohwaz"' en pseudo dans un commentaire, quand le commentaire est posté ça m'affiche \'coucou \"bohwaz\"\' dans le champ pseudo pré-rempli.

Il est possible de faire exécuter des actions à un admin sans son consentement en lui faisant cliquer sur un lien / voir une page (faille CSRF), par exemple supprimer un commentaire il suffit de donner l'URL avec l'id post et l'id commentaire, par exemple dans un tag IMG... Ni vu ni connu.

Et ce n'est qu'une analyse faite en 10 minutes. Bon courage :)

gravatar
Le Hollandais Volant a dit :

Les deux premiers (xss) sont résolu dans la version 11 (mis en ligne depuis minuit à peu près).

Le contenu des articles, merde… J'y avais remédié en changeant les CHMOD dans l'administration de mon hébergeur. Je vais mettre les dossiers à créer en 744 pour blogo, au lieu de 755. (et en local ça marche pas, j'y ait toujours accès depuis mon navigateur ><, mais en ligne si, ça marche.). J'ai peur que si je met un .htaccess dans ces dossiers, ça ne marche pas sur certains hébergeurs (free notamment, parait-il)

Le javascript dans le pseudo est identifié et je vais faire mon possible…
Le bug les antislash ? Je ne l'ai pas ici (???), il m'affiche bien des (') et non des ('). (que ce soit la version 10 ou 11 :-).

La faille CSRF, y'a le popup de confirmation JS qui fait barrage. La validation en PHP au lieu de JS est prévue, mais ça ne changera rien. J'y réffléchirais…

gravatar
bohwaz a dit :

Pour le contenu des articles/commentaires, tu peux faire deux choses en parallèle :
- mettre un .htacess avec :
Allow from none
Deny from all
(ça ne marchera que sur les serveurs Apache qui acceptent les .htaccess)
- mettre un index.html qui est soit vide soit avec un lien genre <a href="../">Retour à l'accueil</a>, ça empêchera de lister le contenu du répertoire déjà.

Le chmod tu ne pourra pas le faire chez tous les hébergeurs (ou alors il n'aura aucun effet). D'ailleurs si l'utilisateur propriétaire des fichiers est www-data (utilisé par apache), ça n'aura aucun effet :)

Donc chmod pas très fiable en mutualisé (ou même parfois ailleurs).

Pour le javascript, je te propose ça :
$url = parse_url($_POST['site_web']);
if (empty($url['scheme']) || !in_array($url['scheme'], array('http', 'https')))
die("Mauvaise adresse de site web !");

Comme ça, il n'y aura que les adresses http et https acceptées.

Pour la faille CSRF non, aucun popup javascript n'empêche ça. Pour illustrer le problème, prenons l'exemple de mon blogotext. Disons que j'ai deviné/trouvé l'id de l'article et l'id du commentaire que je veux supprimer. L'url de suppression de mon commentaire est donc http://bohwaz.local/tests/blogotext/admin/commentaires.php?post_id=20100708010831&del=20100708011234

Je vais maintenant créer une page, par exemplehttp://mechantsite.com/coucou.html avec ce code :
<img src="http://misc.svn/tests/blogotext/admin/commentaires.php?post_id=20100708010831&del=20100708011234" />
<p>Coucou toi</p>

Je met l'adresse dans un commentaire pour que tu clique dessus, si tu es connecté à l'admin, le commentaire sera supprimé, sans que tu le sache.

C'est une attaque CSRF. Pour contrer ça il te faut :
- dans la page de liste des commentaires avoir un identifiant unique par commentaire, que tu va stocker en session d'un côté (par exemple md5('coucou' . $id_commentaire))
- faire l'action en POST en envoyant bien l'identifiant unique
- dans le code qui fait l'action tu regarde si l'identifiant a bien été envoyé et s'il correspond à celui que tu as en session, sinon c'est que la requête est invalide.

Ce que je fait perso en général (pas obligé hein) c'est que si l'identifiant ne correspond pas, j'affiche une page de confirmation qui utilise le même mécanisme.

Il y a des explications un peu surhttp://fr.wikipedia.org/wiki/Cross-site_request_forgery

C'est un truc assez tordu mais à lequel il faut faire vraiment attention les CSRF.

gravatar
Le Hollandais Volant a dit :

Ok.
Pour le CSRF : la suppression se fait maintenant déjà par formulaire plutôt que par URL. (le jeton de validation sera aussi ajouté, et un code pour protéger contre le vol de session).

Pour le JS dans l'adresse, j'ai mis un filter_var(), ça marche.

Les dossiers avec un index.html dedans… pourquoi j'ai pas pensé :-/ C'est tout bête^^. Mais ça n'empêhera personne d'accéder à un fichier .txt spécifique au cas où le .htacsess n'est pas desactivé. À moins que je supprime la demande d'une adresse mail… :-\.

merci :)

gravatar
bohwaz a dit :

Cool.

Pour le filter_var, attention ça ne marchera pas chez free, l'extension filter n'est fournie en standard dans PHP que depuis PHP 5.2.0, et free est en 5.1.3. Oui je sais c'est chiant, et c'est pour ça que je te conseille plutôt parse_url qui est là depuis php 4. (J'ai rencontré le même souci, Free c'est relou.)

Le index.html aide rends plus difficile de découvrir les données. Mais oui il ne protège pas l'accès. Le .htacess est donc utile.

Ce que tu peux faire c'est au lieu de stocker dans des .txt, tu stocke dans des .php. Au début du .php tu met ça sur la première ligne :

<?php die("Rien ici."); ?>

Et les lignes suivantes est le même contenu que ce que tu mettais dans tes .txt. Au moment d'ouvrir le fichier dans blogotext pour le lire, tu ignore la première ligne. C'est un peu du bidouillage je te l'accorde mais en dehors de cela il n'y a pas de solution miracle.

Bon courage pour la suite.

gravatar
Le Hollandais Volant a dit :

Zut pour Free… Je savais que c'était du PHP 5.2, mais pas que Free ne l'avais pas ><. Bah, autant mettre une Regex dans ce cas. Il suffit que l'URL commence par "https?://[w.-]".

Pour les fichiers PHP, ça peut se faire.
En fait ça marche même bien : blogotext ne fait que rechercher dans le fichier, il ne l'exécute pas, donc il ignore tout seul le code PHP.

Par contre ça oblige tout les utilisateurs à convertir la totalité de leurs articles et commentaires… :-
Je pourrais aussi faire un test sur le fichier (.txt ou .php) mais ça risque d'être lourd…

Au pire je fournirais un script Bash et Batch pour convertir, ça sera moins long pour tout le monde.

gravatar
bohwaz a dit :

Tu peux intégrer une procédure de migration dans la mise à jour aussi :)

Sinon parse_url est plus rapide qu'une regexp et plus efficace normalement.

Les commentaires sont fermés pour cet article