'); //-->

Proposer un article

Chercher

Revue de presse


SecuToolBox



Exostat

Sommaires

Secumail

Services

Liens

Breves
- 20% de remise sur les certificats SSL VeriSign jusqu'au 31 mai 2008 (Lire)

- Vol de données à Harvard (Lire)

- Un exploit pour Quicktime découvert « in the wild » (Lire)

- Les derniers jours de MD5 ? (Lire)

- Le spam sur le déclin (Lire)

- Des spams au format MP3 (Lire)

- Areva T&D choisit iPass pour équiper 7000 utilisateurs (Lire)

- Ironport lance des fonctions de prévention des fuites d’informations (Lire)

- Sortie du numéro 8 de Uninformed (Lire)

- Liens malveillants sur le service Google Adwords (Lire)

- RSA SecurID en version mobile (Lire)

- Deux exploits preuves de concept pour Adobe Photoshop (Lire)

- Des titres suspendus à la bourse américaine pour cause de spam (Lire)

- Le programme de SSTIC 2007 (Lire)

- Le mois des failles PHP vient de commencer (Lire)

- Internet de plus en plus résistant ? (Lire)

- Augmentation des cryptovirus rançonneurs en vue pour Kaspersky (Lire)

- Les forces de l’ordre interdites de piratage en Allemagne (Lire)

- Appel à communication pour la JSSI 2007 (Lire)

- 11 techniques pour se protéger contre le phishing (Lire)




Newsletter :

Gratuit


Articles
- [Lutter contre les spams vocaux par Sysun Technologies – partie 1] Introduction à la VoIP (Lire)

- [Lutter contre les spams vocaux par Sysun Technologies – partie 2] Les risques de la VoIP (Lire)

- [Lutter contre les spams vocaux par Sysun Technologies – partie 3] Le module AntiSPIT (Lire)

- [Lutter contre les spams vocaux par Sysun Technologies – partie 4] AntiSPIT par l'exemple (Lire)

- [Lutter contre les spams vocaux par Sysun Technologies – partie 5] Crédits et webographie (Lire)

- Un accès complet à la mémoire des systèmes Microsoft Windows via le port Firewire (Lire)

- GenDBG, un debugger générique (Lire)

- [NessusWX – Partie 1] Introduction, installation et configuration (Lire)

- [NessusWX – Partie 2] Audits et conclusion (Lire)

- [IDS Snort Windows – Partie 1] Introduction aux IDS et à SNORT (Lire)

- [IDS Snort Windows – Partie 2] Installation et configuration (Lire)

- [IDS Snort Windows – Partie 3] Exemple de fichier de configuration (Lire)

- [IDS Snort Windows – Partie 4] Conclusion et webographie (Lire)

- [Sécurité et PHP - Partie 1] Les injections SQL (Lire)

- [Sécurité et PHP - Partie 2] La gestion des sessions (Lire)

- [Sécurité et PHP - Partie 3] Les failles PHP (Lire)

- [Sécurité et PHP - Partie 4] Remote PHP Vulnerabilty Scanner (Lire)

- [Sécurité et PHP - Partie 5] Astuces (Lire)

- [Samhain FIDS multi-postes centralisé – Partie 1] Introduction et installation (Lire)

- [Samhain FIDS multi-postes centralisé – Partie 2] Configuration (Lire)


Commentaires
- la notion de prototype s'applique au fait que l'on puisse effect ... (Lire)

- il faut aussi prendre en compte le fait que "prototype" dans ce ... (Lire)

- Bonjour Ines, Le terme détournement de prototype ne me choque pa ... (Lire)

- Bonjour,je profite du fait que vous connaissiez bien ce domaine ... (Lire)

- du point de vue des visiteurs oui mais le repas des speakers c'é ... (Lire)

- Contrairement a ce que vous annoncez, le SSTIC s'était déroulé d ... (Lire)

- en l'état ça ne semble pas possible de récupérer la base SAM loc ... (Lire)

- mais avec quelle logiciel va tu capturer la sam d'un windows.Sac ... (Lire)

- Si la question est "est-ce que je peux prendre la base SAM sur u ... (Lire)

- Salut je voulais savoir si on peut faire sa en réseau local, ave ... (Lire)

- je viens de rectifier les deux liens, merci pour la correction N ... (Lire)

- L'adresse officielle du magazine MISC est :www (dot) miscmag (do ... (Lire)

- Merci beaucoup je viens de corriger ça ... ... (Lire)

- Deux petites coquilles dans la commande iptables de l'article: i ... (Lire)

- L'ancienne version mise en page est disponible sur cette page : ... (Lire)

- je n'arive pas a le lire en entier, le tuto est peut etre bien m ... (Lire)

- j'utilise un certificat Rapid SSL depuis 2 ans et j'en suis cont ... (Lire)

- Merci pour ce lien, je ne connaissais pas ce prestataire! Ils on ... (Lire)

- pourquoi on devrait utiliser live helper plutot que la méthode d ... (Lire)

- les utilisateurs ne sont pas toujours les seuls à pouvoir être m ... (Lire)

- Comme c'est indiqué dans l'article les pilotes madwifi ne permet ... (Lire)

- Tout ça peut se résumer à: C'st l'utilisateur qui est le point f ... (Lire)

- après tout cela, comment mettre la carte sur une puissance de 30 ... (Lire)

- pourquoi ne pas utiliser live-helper ?voir le projet Debian Live ... (Lire)

- C'est le problème des solutions de sécurité en général qu'elles ... (Lire)


Exostats
Tests
22562
Tests
Aujourd'hui
Ce mois
Ajoutés
0
0
Tutoriels 










OPML (Tous)
OPML Francophone

 

[Sécurité et PHP - Partie 1] Les injections SQL

Par Rédaction, secuobs.com
Le 10/05/2008



Résumé : Les failles de type SQL Injection sont parmi les plus courantes au sein des applications Web. Les sites dynamiques interagissent avec des bases de données qui stockent les informations concernant les utilisateurs. Il est alors possible dans certains cas de manipuler les requêtes vers ces bases afin d'accéder à des informations souvent sensibles.





NDLR : ce document a été rédigé en 2006, certaines versions ainsi que certaines configurations des logiciels utilisés selon ces versions peuvent être différentes de celles qui sont mentionnées ; merci de vous reporter vers les sites officiels des projets en question en cas de problème.


Le langage utilisé pour communiquer entre un script PHP et une base de données, de type MySQL ( lien http externe url:[click] ) par exemple, est le Structured Query Language aussi connu sous l'acronyme SQL ( lien http externe url:[click] ).

Pour cela, l’application web doit créer dynamiquement une chaîne de caractères contenant la requête SQL puis l’envoyer vers la base de données. Cette chaîne de caractères peut comprendre des données entrées directement par les utilisateurs du site web.

En cas de mauvaise validation de ces données par l'application web, il est possible de détourner l’application de son utilisation initiale en insérant du code SQL au sein de ces entrées utilisateur.

Dans l’exemple suivant, un attaquant peut injecter son propre code SQL dans l’une des requêtes effectuées par le script PHP que l'on va étudier ci-dessous.

Premièrement, la base de données contient cette table SQL :

CREATE TABLE site_users(
id int,
pseudo varchar(32),
password varchar(32),
email varchar(80),
adresse varchar(200)
);



Le fichier « email.php » du site web est un script qui permet d’afficher l’email d’une personne par rapport à son numéro d’identifiant, voici le contenu de ce fichier :

<?
mySQL_connect('127.0.0.1', 'root', '');
mySQL_select_db('my_database');
$q = mySQL_query("SELECT email,pseudo FROM site_users WHERE id=".$_REQUEST[id]);
$r = mySQL_fetch_array($q) ;
echo "le mail de ".$r[pseudo];."est : ".$r[email];
?>



Sur le lien « site.com/email.php?id=45 », le site web affiche le message suivant « le mail de lambda est exemple@secuobs.com ». Maintenant on essaye une url telle que « site.com/email.php?id=45%20or%201=1 », le site web affiche alors le message « le mail de exemple est php@secuobs.com »

Lors de cette dernière requête le script PHP a en fait exécuté le code SQL suivant :

"SELECT email FROM site_users WHERE id=45 or 1=1".


La condition « 1=1 » étant toujours remplie, on a donc eu la possibilité d'injecter du code SQL, « exemple » étant un compte de test avec l’id 1 et « lambda » un autre compte de test avec l’id 45.

Si l’on essaye avec « id=999999999 » le serveur web affichera alors le message « le mail de est » , car il n’existe pas d’utilisateur avec un id équivalent à cette valeur de 99999999.

Il va être possible grâce à cette injection SQL de trouver le mot de passe d’un utilisateur donné avec une attaque de type bruteforce ( lien http externe url:[click] ).

A l’aide des opérateurs SQL ‘LIKE’ et ‘%’ , on va faire en sorte que la commande SQL suivante soit exécutée par le serveur web vers la base de données :

"SELECT email FROM site_users WHERE id=45 AND password LIKE ‘a%’"


Ce qui revient en fait à effectuer :

email.php ?id=45%20AND%20password%20LIKE%20’a%’


Cette commande SQL va alors retourner une réponse seulement si le champ id est égal à 45 et si le champ password commence par ‘a’ d’où l’intérêt de l'utilisation du ‘%’. Le mot de passe ne commence pas par ‘a’, le site affiche alors le message « le mail de est ».

On continue en testant plusieurs lettres jusqu'à obtenir un début de réponse de la part du serveur SQL via le serveur web, c'est-à-dire le message « le mail de lambda est exemple@secuobs.com».

Pour connaître la longueur du mot de passe il suffit d'en bruteforcer sa valeur à l’aide de :

email.php ?id=45%20AND 20LENGHT(password)=5


Dans cet exemple, on trouve la valeur 5 comme longueur du mot de passe.

On continue l’opération jusqu'à l'obtention du mot de passe de cet utilisateur :

Requête : email.php ?id=45%20AND%20password%20LIKE%20’a%’
Réponse : « le mail de est »

Requête : email.php ?id=45%20AND%20password%20LIKE%20’b%’
Réponse : « le mail de lambda est exemple@secuobs.com »

Requête : email.php ?id=45%20AND%20password%20LIKE%20’ba%’
Réponse : « le mail de est »

Requête : email.php ?id=45%20AND%20password%20LIKE%20’bb%’
Réponse : « le mail de est »

….

Requête : email.php ?id=45%20AND%20password%20LIKE%20’be%’
Réponse : « le mail de lambda est exemple@secuobs.com »

Requête : email.php ?id=45%20AND%20password%20LIKE%20’bea%’
Réponse : « le mail de lambda est exemple@secuobs.com »

Requête : email.php ?id=45%20AND%20password%20LIKE%20’beaa%’
Réponse : « le mail de est »

….

Requête : email.php ?id=45%20AND%20password%20LIKE%20’beac%’
Réponse : « le mail de lambda est exemple@secuobs.com »

Requête : email.php ?id=45%20AND%20password%20LIKE%20’beaca%’
Réponse : « le mail de est »



Requête : email.php ?id=45%20AND%20password%20LIKE%20’beach%’
Réponse : « le mail de lambda est exemple@secuobs.com »



Le mot de passe de l’utilisateur lambda est donc « beach ».


Pour sécuriser ce script, il aurait suffit de remplacer la requête SQL dans le script PHP par la ligne suivante :

$q = mySQL_query("SELECT email,pseudo FROM site_users WHERE id=".intval($_REQUEST[id]));


intval() retourne une valeur décimale entière,. on est alors certain qu’il n’y aura que des chiffres qui seront ajoutés à la requête SQL. Pour sécuriser une chaîne de caractère de ce type, il faut la placer entre ‘ ou " et vérifier que cette chaîne ne contient aucun de ces deux caractères.

Il est également possible d'utiliser les fonctions SQL_real_escape_string() et mySQL_escape_string() à cet effet.

La première est une fonction de la librairie MySQL et la seconde une fonction propre au langage PHP. Elles sont efficaces seulement si la valeur retournée est encadrée par des guillemets au sein de la requête SQL.

La deuxième fonction est cependant maintenant devenue obsolète et il est préférable d’utiliser la première citée.

Exemple d’un script sécurisé :

< ?

mySQL_connect('127.0.0.1', 'root', '');
mySQL_select_db('my_database');

$pseudo = $_REQUEST[pseudo] ;
if (get_magic_quotes_gpc()) {
$pseudo = stripslashes($pseudo);
}
$pseudo = mySQL_real_escape_string($pseudo) ;
$q = mySQL_query("SELECT email FROM site_users WHERE pseudo=’".$pseudo."’" );
$r = mySQL_fetch_array($q) ;
echo "le mail de ".$pseudo."est : ".$r[email];
?>



A noter que ces fonctions ne protègent pas contre l'utilisation des caractères % et _ ; ces caractères pouvant être utilisés avec les opérateurs LIKE, GRANT ou REVOKE.

La fonction MySQL_real_escape_string() nécessite en fait d’être déjà connecté a la base de données pour être utilisée sinon une valeur booléenne de type FALSE sera renvoyée par ses soins.

Dans cette exploitation de l’injection SQL, on considére que les magic quotes ( lien http externe url:[click] ) sont désactivés dans le fichier de configuration (php.ini) de PHP.

Magic quotes est activé par défaut dans les dernières versions de PHP ; cette option transforme les caractères 0x00 par \0 en ascii, ' par ’ et " par \".

Il existe cependant de nombreuses techniques et variantes pour l’exploitation d’une injection SQL même avec les magic quotes activés.


Autres ressources dans ce dossier :

[Sécurité et PHP - Partie 2] La gestion des sessions – lien http interne url:[click]

[Sécurité et PHP - Partie 3] Les failles PHP – lien http interne url:[click]

[Sécurité et PHP - Partie 4] RPVS – lien http interne url:[click]

[Sécurité et PHP - Partie 5] Astuces – lien http interne url:[click]




Les 20 derniers articles de la categorie Tutoriels :

- [NessusWX – Partie 1] Introduction, installation et configuration (Lire)
- [NessusWX – Partie 2] Audits et conclusion (Lire)
- [IDS Snort Windows – Partie 1] Introduction aux IDS et à SNORT (Lire)
- [IDS Snort Windows – Partie 2] Installation et configuration (Lire)
- [IDS Snort Windows – Partie 3] Exemple de fichier de configuration (Lire)
- [IDS Snort Windows – Partie 4] Conclusion et webographie (Lire)
- [Sécurité et PHP - Partie 1] Les injections SQL (Lire)
- [Sécurité et PHP - Partie 2] La gestion des sessions (Lire)
- [Sécurité et PHP - Partie 3] Les failles PHP (Lire)
- [Sécurité et PHP - Partie 4] Remote PHP Vulnerabilty Scanner (Lire)
- [Sécurité et PHP - Partie 5] Astuces (Lire)
- [Samhain FIDS multi-postes centralisé – Partie 1] Introduction et installation (Lire)
- [Samhain FIDS multi-postes centralisé – Partie 2] Configuration (Lire)
- [Samhain FIDS multi-postes centralisé – Partie 3] Utilisation (Lire)
- [Samhain FIDS multi-postes centralisé – Partie 4] Résultats (Lire)
- [Etude de cas IDX-PKI GPL – Partie 1] Présentation (Lire)
- [Etude de cas IDX-PKI GPL – Partie 2] Installation (Lire)
- [Etude de cas IDX-PKI GPL – Partie 3] Configuration (Lire)
- [Etude de cas IDX-PKI GPL – Partie 4] Conclusion (Lire)
- [Analyse des logs système avec Tenshi – Partie 1] Introduction et installation (Lire)




Mini-tagwall de la revue de presse : security, vulnérabilité, microsoft, hacker, apple, phone, windows, attack, network, server, sécurité, google, internet, release, vulnerability, firefox, mobile, linux, iphone, manage, black, vmware, malware, inject, patch, yahoo, exploit, safari, protect, remote, vista, biometric, crypt, business, mozilla, research, source, laptop, virtual, cisco, virus, phish, office, pirate, access, video, kernel, china, drive, intel, mysql, critical, chine, apache, critique, flash, website, privacy, version, podcast, adobe, critiques, myadmin, typo3, tomcat, arrêt, facebook, wireless, seamonkey, fraud, webkit, europe, conference, botnet, engine, opera, trojan, identity, storm, photo, cross, register, layer, table, government, symantec, database, storage, wi-fi, crack, player, olice, police, fingerprint, oracle, break, france, download, password, email, theft, social, trust, visio, browser, digital, expert, client, legal, electro, share, process, monitor, frame, trend, local, myspace, attaque, gates, surveillance, developer, squid, youtube, airport, music, hijack, japan, audit, scanner, detect, rootkit, nokia, infect, futur, backup, certificat, interview, green, système, quicktime, overflow, military, package, verizon, passport, america, mcafee, skype, india, terrorism, réseau, vendor, document, inclusion, joomla, pentagon, macbook, compliance, hardware, authentication, major, compromis, robot, forensic, defend, spammer, cable, policy, paypal, torrent, solaris, switch, gestion, russia, router, debian, novell, appliance, prison, bluetooth




Ce site vous a plu ? Par avance, merci de bien vouloir nous adresser un don (transaction sécurisée par compte Paypal ou par carte de crédit) si vous le désirez afin de préserver le caractère indépendant de nos recherches en cliquant sur le bouton suivant :

Newsletter gratuite :




Poster un commentaire :

Auteur du commentaire :

Prénom et nom de l'auteur de l'article sur lequel vous voulez poser un commentaire ? (ici Rédaction) :



Message du commentaire :





 

 


Mini-Tagwall

Revue de presse francophone
- Multiples vulnérabilités, certaines très critiques dans TYPO3 PHP MyAdMin, Apache Tomcat, Apple Mac OS X, Apple Safari WebKit, Mozilla Firefox + SeaMonkey, Linux Kernel, MySQL, Ruby, VMware Server,

- Multiples vulnérabilités, certaines très critiques dans TYPO3 PHP MyAdMin, Apache Tomcat, Apple Mac OS X, Apple Safari WebKit, Mozilla Firefox + SeaMonkey, Linux Kernel, MySQL, Ruby, VMware Server,

- Multiples vulnérabilités, certaines très critiques dans TYPO3 PHP MyAdMin, Apache Tomcat, Apple Mac OS X, Apple Safari WebKit, Mozilla Firefox + SeaMonkey, Linux Kernel, MySQL, Ruby, VMware Server,

- Multiples vulnérabilités, certaines très critiques dans TYPO3 PHP MyAdMin, Apache Tomcat, Apple Mac OS X, Apple Safari WebKit, Mozilla Firefox + SeaMonkey, Linux Kernel, MySQL, Ruby, VMware Server,

- Multiples vulnérabilités, certaines très critiques dans TYPO3 PHP MyAdMin, Apache Tomcat, Apple Mac OS X, Apple Safari WebKit, Mozilla Firefox + SeaMonkey, Linux Kernel, MySQL, Ruby, VMware Server,

- Multiples vulnérabilités, certaines très critiques dans TYPO3 PHP MyAdMin, Apache Tomcat, Apple Mac OS X, Apple Safari WebKit, Mozilla Firefox + SeaMonkey, Linux Kernel, MySQL, Ruby, VMware Server,

- Multiples vulnérabilités, certaines très critiques dans TYPO3 PHP MyAdMin, Apache Tomcat, Apple Mac OS X, Apple Safari WebKit, Mozilla Firefox + SeaMonkey, Linux Kernel, MySQL, Ruby, VMware Server,

- Documentation sur les Sniffers et comment les detecter

- Multiples vulnérabilités, certaines très critiques dans TYPO3 PHP MyAdMin, Apache Tomcat, Apple Mac OS X, Apple Safari WebKit, Mozilla Firefox + SeaMonkey, Linux Kernel, MySQL, Ruby, VMware Server,

- Multiples vulnérabilités, certaines très critiques dans TYPO3 PHP MyAdMin, Apache Tomcat, Apple Mac OS X, Apple Safari WebKit, Mozilla Firefox + SeaMonkey, Linux Kernel, MySQL, Ruby, VMware Server,

- Multiples vulnérabilités, certaines très critiques dans TYPO3 PHP MyAdMin, Apache Tomcat, Apple Mac OS X, Apple Safari WebKit, Mozilla Firefox + SeaMonkey, Linux Kernel, MySQL, Ruby, VMware Server,

- Multiples vulnérabilités, certaines très critiques dans TYPO3 PHP MyAdMin, Apache Tomcat, Apple Mac OS X, Apple Safari WebKit, Mozilla Firefox + SeaMonkey, Linux Kernel, MySQL, Ruby, VMware Server,

- P2P Programs Designed for Anonymity

- Multiples vulnérabilités, certaines très critiques dans TYPO3 PHP MyAdMin, Apache Tomcat, Apple Mac OS X, Apple Safari WebKit, Mozilla Firefox + SeaMonkey, Linux Kernel, MySQL, Ruby, VMware Server,

- Multiples vulnérabilités, certaines très critiques dans TYPO3 PHP MyAdMin, Apache Tomcat, Apple Mac OS X, Apple Safari WebKit, Mozilla Firefox + SeaMonkey, Linux Kernel, MySQL, Ruby, VMware Server,


Revue de presse internationale

Failles/Secunia

Full Disclosure
- Full-disclosure FW: SOMEONE CAN HELP WITH THE Microsoft GDI WMF Parsing Heap Overflow Vulnerability ? IT´s a bit wired...

- Full-disclosure FW: THE NEW RELEASE DOESNT HAVE ANY BUGS RIGHT, THEO??

- Full-disclosure THE NEW RELEASE DOESNT HAVE ANY BUGS RIGHT, THEO??

- Full-disclosure SOMEONE CAN HELP WITH THE Microsoft GDI WMF Parsing Heap Overflow Vulnerability ? IT´s a bit wired...

- Full-disclosure Cisco Security Advisory: Cisco Unified Communications Manager Denial of Service and Authentication Bypass Vulnerabilities

- Full-disclosure Cisco Security Advisory: Cisco Intrusion Prevention System Jumbo Frame Denial of Service

- Full-disclosure Mrfetch Paul Carnes YouTube

- Full-disclosure SECURITY DSA 1602-1 New pcre3 packages fix arbitrary code execution

- Full-disclosure Panda ActiveScan 2.0 remote code execution

- Full-disclosure MDVSA-2008:135 - Updated gnome-screensaver packages fix authentication vulnerability


Bugtraq

DailyDave

FunSec