dimanche 4 mai 2014

Firefox Hacks : Extraire les informations utilisateurs stockées sur son ordinateur avec Groovy !


Firefox stockent toutes ses données dans un répertoire (Sur Linux, en général il s'agit de $HOME/.mozilla et sur Windows, c'est dans le répertoire C:\users\MUYSER\AppData\Roaming\Mozilla\Firefox\Profiles\). Dans ce répertoire, on peut trouver la liste des addons, la liste des recherches, des cookies ... et aussi les logins et mot de passe !
En clair, si une personne récupère le contenu de ce répertoire, elle va avoir toute votre vie en sa possession.

Dans cet article, nous allons montrer les informations que l'on peut récupérer très facilement à l'aide des fichiers contenus dans ce répertoire. Nous montrerons aussi des exemples de code avec Groovy. Vous verrez que ce n'est pas très compliqué.

Code source des exemples

L'ensemble des codes sources utilisés de cet article sont disponibles sur GitHub : https://github.com/drieu/GFirefoxData.Un fichier README contient les instructions nécessaires pour compiler et exécuter le projet.

Data stockées dans Sqlite files

Comment utiliser Sqlite ?


Firefox utilise SQLITE pour stocker ses données. Si vous cherchez dans le répertoire, vous verrez des fichiers .sqlite ( ex : cookies.sqlite ). Vous pouvez en ligne de commande lire ses informations.

Voici un exemple montrant comment se connecter à la base cookies et les requêtes à effectuer pour lire ses données :

 # cd $HOME/.mozilla/???  
 # sqlite3 cookies.sqlite  
 SQLite version 3.8.2 2013-12-06 14:53:30  
 Enter ".help" for instructions  
 Enter SQL statements terminated with a ";"  
 sqlite>  


Une fois connecté, il suffit d'exécuter des requêtes sql ou des commands sqlite.Voici quelques commandes indispensables :

Help

sqlite> .help

Liste de toutes les tables

sqlite> .tables

Liste des champs d'une table

sqlite> .schema moz_cookies

Select

sqlite> select * from  moz_cookies

Quit

sqlite> .quit


Liste des fichiers sqlite contenant des informations

Maintenant que vous savez utiliser sqlite, vous pouvez faire de même avec les fichiers suivants :

cookies.sqlite
addons.sqlite
formhistory.sqlite
content-prefs.sqlite
healthreport.sqlite
permissions.sqlite
places.sqlite
signons.sqlite
webappsstore.sqlite

Nous allons maintenant étudier comment récupérer ses informations avec Groovy.

Obtenir la liste de tous les cookies


Pour les codes qui vont suivre, nous utiliserons une librairie pour pouvoir exécuter des requêtes sqlite : sqlite-jdbc ( https://bitbucket.org/xerial/sqlite-jdbc ). Vous pouvez télécharger le jar : ICI

Il vous suffit ensuite de créer un fichier firefox.groovy et d'adapter le code pour qu'il pointe vers le fichier cookies.sqlite.Voici le code source de firefox.groovy :


     import groovy.sql.Sql 
     def url = "jdbc:sqlite:/home/USER/tmp/.mozilla/firefox/fe31xbna.default/cookies.sqlite" 
     def sql = Sql.newInstance(url, "org.sqlite.JDBC") 
     sql.eachRow("select DISTINCT host from moz_cookies") { 
       println("host= ${it.host}") 
     } 

Obtenir les données des formulaires

     def sql = Sql.newInstance(url, "org.sqlite.JDBC")  
     sql.eachRow("select DISTINCT value from moz_formhistory") {  
       println("value= ${it.value}")  
     }  
     println("")  

Obtenir la liste des addons

     def sql = Sql.newInstance(url, "org.sqlite.JDBC")  
     sql.eachRow("select DISTINCT name from addon") {  
       println("name= ${it.name}")  
     }  
     println("")  

Voir les password

Le Master password est stocké dans le fichier key3.db. Il y a aussi le fichier signons.sqlite qui contient les utilsateurs et mot de passes cryptés :

sqlite>sqlite3 signons.sqlite  
 sqlite>select hostname,usernameField,passwordField,encryptedUsername,encryptedPassword from moz_logins limit 1;  

Voir les mots de passes lorsqu'il n'y a pas de master password. 

Il suffit d'aller dans  Menu Outils -> Option -> Sécurité et vous pouvez voir les mots de passe sauvegardés.Donc si une personne récupère les fichiers contenant les mots de passes, il lui suffira de créer un nouveau profil firefox avec ses fichiers ( key3.db, signons.sqlite et cert8.db ).
Voici comment faire :

1. Fermez firefox
2. Créez un nouveau profil firefox ( firefox --ProfileManager )
3. Fermez firefox
4. Aller dans le répertoire du profil firefox ( $HOME/.mozilla/...)
5. Remplacer les fichiers key3.db, signons.sqlite et cert8.db par les vôtres.
6. Redémarrez firefox
7. Allez dans Menu Outils -> Option -> Sécurité et voir les mots de passes enregistrés
et vous verrez tous les mots de passes !

Donc un bon conseil est de mettre un master password !
Cependant, cela reste utile seulement dans le cas où une personne utilise firefox pour naviguer sur internet.Cela lui évite de voir tous vos mots de passe en quelques clics.
Il y a cependant un moyen de récupérer les mots de passe même si il y a un master password !


Voir les mots de passes lorsqu'il y a un master password.

C'est possible en regardant le code source de firefox : http://www.infond.fr/2010/04/firefox-passwords-management-leaks.html 

Une seconde méthode, plus facile, est d'utiliser un outil de mozilla : http://securityxploded.com/firemaster.php

Voici un exemple d'utilisation :

FireMaster.exe -q -b -m 3 -l 10 -c "abcdetps123" "c:\my test\firefox"

 

Conclusion

Dans cet article, nous avons vus toutes les informations qui sont stockées par firefox sur votre disque dur.Est-ce que cela veut dire que firefox n'est pas sécurisé ? Non. Toutes les applications stockent leurs informations dans des fichiers. Par contre, il faut avoir conscience des points suivants :
  • Si un pirate arrive à copier les fichiers que l'on a vu, elle aura accès à toute votre vie.
  • Les plugins firefox ont accès à un certains nombre d'informations.Avez-vous confiance en vos plugins ?
  • Certaines données sont utilisées dans un but commerciale (par exemple les cookies )

gradlew idea : FAILURE: Could not determine which tasks to execute.


Une petite astuce, pour ceux qui comme moi, ne connaisse pas bien gradlew.

Problème

Pour "idealizer" mon projet GroovyFx, j'ai voulu utiliser la commande gradlew

$gralew idea

J'ai eu le message d'erreur suivant :

FAILURE: Could not determine which tasks to execute.

* What went wrong:
Task 'idea' not found in root project 'tsecure'.

* Try:
Run gradlew tasks to get a list of available tasks.


Solution


Il suffit d'ajouter la ligne suivante à votre fichier build.gradle :

 apply plugin: 'idea'

Vous pouvez ensuite relancer:

$gralew idea

samedi 8 mars 2014

Grails : UnknownHostException au lancement


J'ai eu l'erreur suivante au démarrage de mon application Grails :

| Error 2014-03-08 20:54:41,199 [localhost-startStop-1] ERROR [localhost].[/toolprod]  - StandardWrapper.Throwable
Message: IO Exception: "java.net.UnknownHostException: blopux: blopux: Nom ou service inconnu" [90028-173]


Pour résoudre mon problème, j'ai ajouté le nom du hostname dans /etc/hosts :

127.0.0.1   blopux        localhost

dimanche 16 février 2014

Plugin firefox


Je me suis intéressé dernièrement à comment faire un plugin firefox.
J'ai suivi pour cela les tutoriaux de firefox : https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions/XUL_School
Ils sont très bien et j'ai pu rapidement obtenir un résultat.
Si, par curiosité, vous voulez voir à quoi ressemble un plugin firefox,
je l'ai mis sur GitHub : https://github.com/drieu/checker.



mardi 7 janvier 2014

Comment ajouter un sitemap à son application Grails ?

Aujourd'hui, je vais ajouter une sitemap à mon nouveau site web fait avec Grails.
La première des chose à faire est d'en générer une.Pour cela, il y a des sites en ligne qui le font pour vous. Par exemple :http://www.xml-sitemaps.com . Il vous suffit de mettre l'url de votre site web et cela va vous générer une sitemap avec différents formats (xml, zip ... ). Voici un exemple de sitemap généré :
<?xml version="1.0" encoding="UTF-8"?>
<urlset
      xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<!-- created with Free Online Sitemap Generator www.xml-sitemaps.com -->

<url>
  <loc>http://opendoowap-totalprog.rhcloud.com/</loc>
</url>
<url>
  <loc>http://opendoowap-totalprog.rhcloud.com/page/training</loc>
</url>
<url>
  <loc>http://opendoowap-totalprog.rhcloud.com/page/about</loc>
</url>
<url>
  <loc>http://opendoowap-totalprog.rhcloud.com/page/under</loc>
</url>
<url>
  <loc>http://opendoowap-totalprog.rhcloud.com/page/website</loc>
</url>
</urlset> 

Ensuite, il faut télécharger le fichier sitemap.xml et le mettre dans le répertoire web-app de votre application Grails. Il faut ensuite modifier le fichier BuildConfig.groovy  :

grails.war.copyToWebApp = { args ->
    fileset(dir:"web-app") {
        include(name: "js/**")
        include(name: "css/**")
        include(name: "fonts/**")
        include(name: "images/**")
        include(name: "WEB-INF/**")
        include(name: "sitemap.xml")
    }
}
Pour finir, vous n'avez plus qu'à exécuter  grails war et le déployer dans Tomcat.
Maintenant votre sitemap est accessible à l'url suivante : http://your.app.com/sitemap.xml et vous pouvez l'intégrer à Google webmaster tools.




jeudi 2 janvier 2014

Grails balise meta et internationalisation

Si vous utilisez l'internationalisation avec Grails, vous avez surement l'habitude d'utiliser les balises <g:message ...>.
Mais comment utiliser cette balise pour par exemple remplir content de la balise Meta ?
Voici comment :

<meta name="description" content="${message(code:'index.goal')}" />