intéressant.

Une des bonnes raisons de brouiller le code, par exemple c'est expliqué dans le CWE Mitre avec les hardcoded passwd : beaucoup de gens se font avoir, se croyant protégés par une méga clé à rallonge,placée sur une clé USB, ou autre, qu'on retrouve telle quelle dans le binaire.. ( une suite de caractères ça se voit comme le nez au milieu du visage )

Enfin si une partie du code est crypté, c'est limite impossible en analysant le code désassemblé, mais si on peut faire tourner le binaire sur un émulateur, avec des points d'arrets ou des traces.. le cryptage ne sert plus à rien et le code du programme est facile à analyser...même s'il est un peu noyé dans des octets inutiles, qui sont juste là pour embrouiller le désassembleur qui va essayer de les décoder..

Dans le PHP, pour les CMS, je trouve un peu limite de trouver les identifiants en clair pour la connection aux bases de donnéees.. surtout avec un CMS que tout le monde peut télécharger..on sait où les trouver.

Tout le monde se polarise sur les injections SQL, mais les techniques de LFI ou RFI : un petit code de 27 caractères et on passe des commandes shell dans la requête Http en la codant correctement ( %20 etc.. ) à travers le PHP..

Un vrai billard pour les pirates...!!!

C'est du niveau : la clé est sous le paillasson ou dans le pot de fleur

Et pour peu qu 'il y ait un file manager dans le CMS pour l'admin.. ( sur ce CMS ils ont enfin fini par l'enlever )

On ramasse aussi tous les identifiants, les htaccess htpasswd, avec la cde cat...puisqu 'Apache ne permet pas leur download.


Quelques exemples lors d'un test de CMS.:

define(‘DB_SERVER’, ‘localhost’);
define(‘DB_SERVER_USERNAME’, ‘epicier‘);
define(‘DB_SERVER_PASSWORD’, ‘epicier‘);
define(‘DB_DATABASE’, ‘oscommerce‘);



<?php
if (!defined('DBSECURE'))
{
$sql_host = "localhost"; //Adresse serveur MySQL – MySQL server address
$sql_login = "machin"; //Login
$sql_pass = "truc"; //Mot de passe – Password
$sql_base = "phpboost"; //Nom de la base de donnes – Database name
define('PREFIX' , 'phpboost_'); //Prfixe des tables – Tables prefix
define('DBSECURE', true);
define('PHPBOOST_INSTALLED', true);

ou dans les requetes.

<?php

$dbh = new PDO('mysql:host=localhost;dbname=mydb', 'mydbuser', 'nDUdfyE29k4rpPXV');

Ce serait bien de les cacher un peu plus ces identifiants ..

Il suffit d'injecter un script avec ces identifiants de connection pour ramasser toute la base ou la table "clients".

Je regardais l'autre jour, le topic sur la crypto.... c'est pareil si les SALT sont en clair.. une partie du boulot pour cracker les mdp est faite.


On pourrait également l'utiliser sur une clé USB classique pour ne pas avoir à taper des mdp à rallonge et la clé ne fonctionnerait correctement que sur un seul PC.

On peut aussi l'intégrer dans une appli, au lieu de mettre la chaine de caractère de la clé dans le binaire.


L'obfuscation est une piste à creuser pour cacher des mdp qui doivent être en clair pour certaines applis.