18 juin 2008

Des RFC sous la main

C'est lors d'une discussion avec Kbok qu'est apparue l'envie de disposer des RFC comme on dispose des pages de man. Voici donc un petit script shell pour faire le boulot:


#!/bin/bash

# (C) 2008, Arnaud Bellec [arnaud.bellec at gmail dot com]
# (C) 2008, Henri Doreau [henri.doreau at gmail dot com]
# (FUCK) 2008, le mec qui bloque wget sur son site

# This program is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

DIRNAME=_rfc

# Storage
if [ ! -d $DIRNAME ]
then
mkdir $DIRNAME
fi

# We look for an existent file, else we'll download and process it
if [ -z $1 ]
then
echo "No argument supplied!"
echo "Usage : $0 [number of requested RFC]"
else
file="rfc"`echo $1`".txt"
if [ -f $DIRNAME/$file ]
then
over $DIRNAME/$file
else
wget -U "tralala" -q http://www.faqs.org/ftp/rfc/rfc$1.txt -O $DIRNAME/$file
sed '1,32d' -i $DIRNAME/$file
sed -e 's/<[^>]*>//g; /</N;' -i $DIRNAME/$file
fi
fi


Bon alors effectivement la license prend autant de place que le script mais l'idée est là! Il manque une commande sed (ou autre) pour la conversion des caractères spéciaux du HTML.
L'utilisation est trivial, vous pouvez rendre le script executable:

chmod u+x rfc.sh

et créer l'alias suivant dans votre .bashrc:

alias "rfc"="~/rf.sh"

Vous n'avez ensuite qu'à le lancer :

rfc 1035

et il se comporte à peu près comme le man!
En espérant qu'il vous serve!!

A part ça la première version beta de mon Rarping est sortie aujourd'hui. N'hésitez pas à y jeter un oeil et me renvoyer vos commentaires, idées, patches etc...

4 juin 2008

Passage de malwares aux domaines de confiance [Google CSRF issue]

Bien moins violent que ce qui se déroule en ce moment (attaques de browsers via flash, via des iframes insérées malicieusement dans des sites web de confiance (ou pas) via des injections SQL via... ha non c'est tout!), je viens juste de remarquer comment un attaquant pourrait faire s'executer du javascript sur un domaine de confiance tels que ceux des gros portails (Google, yahoo etc...)

Ces sites proposent des moteurs de traduction de pages, lesquels laissent les contenus actifs s'executer. Ce qui est normal, si on ne leur demande pas l'inverse, option non trouvée (disponible?) néanmoins.
Là ou le bât blesse, c'est qu'une fois la page traduite, elle peut être appelée en GET banalement.

-"Huh? il y a un problème à ça?"
Parfaitement, car la sombre url pirate

www.evil_russian_warez.hk

devient la douce et belle

http://translate.google.com/translate?u=http%3A%2F%2Fwww.evil_russian_warez.hk&hl=en&ie=UTF8&sl=en&tl=fr

et quiconque ne prête pas attention à la fin de l'url, risque de cliquer sur le lien en confiance.

-"Ba ouais mais on voit encore l'url pirate pas loin!!"
Aucun souci l'ami! il suffit alors de la faire précéder d'une série d'espaces, qui seront convertis en '+' dans l'URL finale, comme ceci :

http://translate.google.com/translate?u=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++http%3A%2F%2Fwww.evil_russian_warez.hk&hl=en&ie=UTF8&sl=en&tl=fr

C'est effectivement plus discret. Mais maintenant que nous sommes lancés...
Sur la page de traduction de Google, supprimons le "http://" lisible dans le champ d'url de la page à traduire et tentons d'encoder le reste de l'url en hexa:

%77%77%77%2E%65%76%69%6C%5F%72%75%73%73%69%61%6E%5F%77%61%72%65%7A%2E%68%6B

l'url de la page à traduire est la suivante :

http://translate.google.com/translate?u=%2577%2577%2577%252E%2565%2576%2569%256C%255F%2572%2575%2573%2573%2569%2561%256E%255F%2577%2561%2572%2565%257A%252E%2568%256B&hl=en&ie=UTF8&sl=en&tl=fr


Magie du web: ça fonctionne, Google tente bien de joindre le serveur spécifié! Bien évidemment, nous sommes ici dans du fishing pour cliqueurs névrosés et stupides, néanmoins, nous avons obfusqué simplement une url pirate et utilisons un domaine de confiance!!
Cet outil, comme de nombreuses CSRF, peut servir à de stupides tentatives de fishing, mais aussi à des attaques plus évoluées sur requêtes non désirées.