View
225
Download
9
Category
Preview:
Citation preview
NBS System : Advisory sur la faille Magento / PayPal Le 19/04/2012 par Antonin le Faucheux Versions affectées : EE pré 1.10.1 et CE pré 1.5, site proposants PayPal
Faille PayPal sousMagento ou comment faire ses achats (presque)gratuitement
La faille se situe dans le module de paiement PayPal de Magento, sachant que les deux sociétés font
partis du même groupe, c’est encore un peu plus étrange.
Un de nos clients a été visé par la faille que nous allons détailler dans cet article. Heureusement, dans
le cas de notre client, celui‐ci procédait à des vérifications manuelles systématiques qui lui ont
permis de déjouer l’attaque.
Pourquoi publier un advisory sur cette faille, sachant que des personnes peu recommandables
manient fort bien Google et vont finir par tomber dessus. La raison est simple : via diverses sources,
nous savons que cette faille est activement exploitée depuis un certain temps et donc qu'elle
représente bien une menace réelle. Les pirates sont donc déjà au courant mais pas les victimes.
La faille a été remontée à Magento et est déjà corrigée dans les dernières versions (EE > 1.10.1 ou CE
> 1.5). Hélas, Magento Inc. est adepte du « silent patching » qui se traduit en bon français par
« corriger les problèmes de sécurité sans prévenir pour que nos clients continuent de croire que tout
va bien ». Donc, même si la faille est corrigée, aucune publication officielle de Magento Inc.
n’informera ses clients que cette faille existe et ne leur permettra de se prémunir.
Le second, problème (et non des moindres) c’est que Magento Inc. ne fournira pas de correctif pour
les versions antérieures ce qui veut dire qu’un grand nombre de boutiques sous Magento sont
aujourd’hui vulnérables sans le savoir mais surtout, sans solution.
Cet article vise à expliquer cette faille et à proposer une solution pour les possesseurs de sites
vulnérables. La faille nous a été révélée par un de nos clients en version Enterprise à l’origine (qui ne
souhaite pas voir son nom divulgué) et le correctif a été mis au point par l’agence DnD (www.dnd.fr).
Exploitationdelafaille
Étape1:LacommandeNous voici rendus sur notre boutique Magento favorite afin de réaliser un achat. Pour l’exemple,
nous allons acheter un seul article mais la faille reste exploitable avec plusieurs articles.
Une fois notre article ajouté au panier et le transporteur choisi nous arrivons à un total TTC de
132,00€.
Étape2:Interceptionetmodification
Une fois la validation passée, nous choisissons de payer avec PayPal et validons la requête. A ce stade
nous interceptons tout le trafic http et https passant par notre navigateur via le proxy Burp Suite afin
de pouvoir visualiser et modifier les échanges entre celui‐ci et les serveurs Web.
Nous interceptons notamment la requête suivante vers PayPal.
Cette requête semble contenir un certain nombre d’informations mais la partie qui nous intéresse se
situe à la fin. En effet, on peut y distinguer le prix de notre article 97,83 € HT, la TVA et les frais de
livraison.
Ces données étant envoyées depuis notre navigateur vers le site de PayPal, il nous est possible de les
modifier afin de tenter d’obtenir une « réduction ».
Nous avons maintenant un article à 1,50€ TTC et une livraison à 0,50€ TTC qui qui nous donne un prix
total TTC de 2,00€. Une réduction imbattable de plus de 98%...
Aucune vérification d’intégrité des informations n’est faite par PayPal et les prix modifiées sont repris
tels quels dans le récapitulatif de commande.
Étape3:Profit
A ce stade, il ne reste plus qu’à payer notre commande.
De retour sur le site marchand, on nous confirme que notre commande à bien été payée.
Le tableau de bord montre que la commande d’un montant de 132€ est en cours de traitement.
Le détail de notre commande reprend bien les montants du site et non le montant payé sur PayPal. Il
n’est mentionné nulle part que nous n’avons déboursé que 2€ sur les 132€ que coutait cet article.
Tout site n’effectuant pas la double vérification des versements reçus sur le compte PayPal avant
envoie pourra être victime, cela est encore plus vrai pour les très nombreux sites qui automatisent
leurs envois.
L’exploitation de cette faille est donc particulièrement triviale et est à la portée de toute personne
ayant des connaissances basiques en informatique. Tout ça est très intéressant me direz‐vous mais
comment se protéger de cette faille ?
Patcherlafaille
La solution est celle fournie par l’agence de développement de l’un de nos clients (Agence DnD,
www.dnd.fr) qui a travaillé en relation avec PayPal. Il s’agit en fait de chiffrer et de signer les
informations qui vont être transférées entre PayPal et le site marchand afin d’empêcher toute
modification par l’utilisateur.
Une description générale de la protection est consultable sur le site PayPal :
(https://cms.PayPal.com/fr/cgi‐bin/marketingweb?cmd=_render‐
content&fli=true&content_ID=developer/e_howto_html_encryptedwebpayments#id08A3I0P0B30)
Étape1:Générationettéléchargementdelacléprivéeetcertificatpublic
Vous pouvez générer le certificat en ligne de commande avec openssl ou alors vous rendre sur le site
suivant http://www.stellarwebsolutions.com/certificates/stellar_cert_builder.php pour générer le
certificat en ligne.
La commande openssl ou le site vont vous générer un couple clé publique / clé privée.
Placez les fichiers dans le répertoire lib/PayPal de votre installation Magento.
PS : il est conseillé de garder (ou d’ajouter) une partie aléatoire devant le nom de la clé privée afin
d’éviter qu’un attaquant arrive à deviner le nom de votre clé privée et arrive potentiellement à la
télécharger depuis son navigateur.
Étape2:ConfigurationdePayPalpourutiliserlescertificats
1. Connectez‐vous à votre compte PayPal.
2. Allez dans l’onglet Profil.
3. Dans la colonne Preferences Du Vendeur, cliquez sur Certificats de paiement sur site marchand.
4. Cliquez sur Ajouter.
5. Cliquez sur Parcourir, et sélectionner votre certificat public (dans mon cas)
"12345010577c235ac3b483a40518ghk‐pubcert.pem".
6. Une fois votre certificat public mis en ligne avec succès, celui‐ci doit apparaitre dans la rubrique
« Vos certificats Publics ».
7. Notez le Cert ID, car vous en aurez besoin pour la suite.
8. Téléchargez le cerficat public de PayPal
Étape3:MiseenplacedescertificatsdansMagento
1. Placez le certificat public de PayPal que vous venez de télécharger dans le répertoire
lib/PayPal de Magento.
2. Editez le fichier app/code/local/Mage/PayPal/Block/Standard/Redirect.php et ajouter le Cert
ID récupéré sur le site de PayPal.
Vérificationducorrectif
Si l’on tente de rejouer l’attaque, on se rend compte que désormais les informations qui transitent
vers PayPal sont chiffrées et ne sont plus modifiables par l’utilisateur.
Recommended