v1.7x-v8x-v9x One Page Checkout & Social Login – PayPal, Stripe, COD v.2.9.4

thz57

Member
XNullUser
Joined
Nov 25, 2021
Messages
86
Reaction score
26
Points
18
NullCash
228
Thank you very much for sharing this module.
Post automatically merged:

Audit de Sécurité - Module ets_onepagecheckout v2.9.4

Vulnérabilités Critiques​

1. Path Traversal dans download.php​

Fichier: download.php
Lignes: 22-38
Sévérité: 🔴 CRITIQUE
CVSS Score:
8.6 (High)


Description​

Le fichier download.php présente une vulnérabilité de traversée de chemin (Path Traversal) permettant potentiellement à un attaquant authentifié de télécharger des fichiers arbitraires du serveur.

Code Vulnérable​

// Ligne 22-25
if (!defined('_PS_ADMIN_DIR_')) {
define('_PS_ADMIN_DIR_', getcwd());
}
include(_PS_ADMIN_DIR_.'/../../config/config.inc.php');

Problèmes identifiés:
  1. ❌ Utilisation de getcwd() pour définir _PS_ADMIN_DIR_ - peut être manipulé
  2. ❌ Inclusion de fichier basée sur un chemin relatif non sécurisé
  3. ❌ La constante _PS_ADMIN_DIR_ peut être définie par l'attaquant avant l'inclusion
  4. ⚠️ Validation du nom de fichier avec Validate::isFileName() mais pas de vérification du chemin complet
// Ligne 30-36
if (($file_name = Tools::getValue('file_name', false)) && Validate::isFileName($file_name) )
{
$id_order = (int)Tools::getValue('id_order');
$sql = 'SELECT fv.value,fv.file_name FROM `'._DB_PREFIX_.'ets_opc_additionalinfo_field_value` fv
INNER JOIN `'._DB_PREFIX_.'orders` o ON(fv.id_cart = o.id_cart)
WHERE o.id_order = "'.(int)$id_order.'" AND fv.value ="'.pSQL($file_name).'"';

Impact​

  • 🔓 Accès non autorisé à des fichiers sensibles du serveur
  • 📁 Téléchargement de fichiers de configuration (config.inc.php, settings.inc.php)
  • 🔑 Exposition potentielle de credentials de base de données
  • 📊 Accès aux fichiers de logs contenant des informations sensibles

2. Authentification Faible dans download.php​

Fichier: download.php
Lignes: 28-29
Sévérité: 🔴 CRITIQUE
CVSS Score:
7.5 (High)


Description​

Le contrôle d'accès repose uniquement sur la vérification que l'utilisateur est un employé connecté, sans vérifier les permissions spécifiques.

Code Vulnérable​

if($context->employee->id && $context->employee->isLoggedBack())
{
// Accès autorisé à TOUS les employés
}

Problèmes:
  1. ❌ Pas de vérification des permissions spécifiques (ACL)
  2. ❌ Tous les employés peuvent télécharger tous les fichiers de toutes les commandes
  3. ❌ Pas de vérification de propriété (l'employé devrait-il avoir accès à cette commande?)
  4. ❌ Pas de journalisation des accès aux fichiers

Impact​

  • 🔓 Escalade de privilèges horizontale
  • 📄 Accès non autorisé aux documents clients
  • 🕵️ Violation de la confidentialité des données
  • 📊 Non-conformité RGPD

3. Injection SQL Potentielle dans les Requêtes Dynamiques​

Fichier: download.php
Lignes: 33-35
Sévérité: 🔴 CRITIQUE (Mitigée)
CVSS Score: 6.5 (Medium-High)

Description​

Bien que pSQL() soit utilisé, la requête SQL pourrait être vulnérable si la validation Validate::isFileName() est contournée.

Code Vulnérable​

$sql = 'SELECT fv.value,fv.file_name FROM `'._DB_PREFIX_.'ets_opc_additionalinfo_field_value` fv
INNER JOIN `'._DB_PREFIX_.'orders` o ON(fv.id_cart = o.id_cart)
WHERE o.id_order = "'.(int)$id_order.'" AND fv.value ="'.pSQL($file_name).'"';

Problèmes:
  1. ⚠️ Utilisation de pSQL() est correcte mais dépend de la validation préalable
  2. ❌ Pas d'utilisation de requêtes préparées (prepared statements)
  3. ⚠️ La fonction Validate::isFileName() pourrait avoir des failles

🟠 Vulnérabilités Élevées​

4. Validation Insuffisante des Entrées Utilisateur​

Fichier: controllers/front/order.php
Lignes: 770-950
Sévérité: 🟠 ÉLEVÉE


Description​

La fonction _submitCompleteMyOrder() récupère de nombreuses données utilisateur sans validation suffisante avant traitement.

Code Vulnérable​

$type_checkout_options = Tools::getValue('type-checkout-options','login');
$customer_guest = Tools::getValue('customer_guest');
$shipping_address = Tools::getValue('shipping_address',array());

Problèmes:
  1. ⚠️ Validation basique avec Ets_onepagecheckout::validateArray() mais pas de sanitization profonde
  2. ❌ Les tableaux peuvent contenir des clés non attendues
  3. ❌ Pas de validation du type de données pour chaque champ
  4. ⚠️ Risque d'injection de données malveillantes dans la base de données

Impact​

  • 💉 Injection de données malveillantes
  • 🗃️ Corruption de base de données
  • 🔓 Bypass de validations métier

 
Last edited:

Ponas

Well-known member
Diamond
Elite
XNullUser
Joined
Jan 17, 2022
Messages
1,700
Reaction score
157
Points
63
NullCash
54
Thank you very much for sharing this module.
 

Kalamar27

Member
XNullUser
Joined
Mar 26, 2022
Messages
43
Reaction score
2
Points
8
NullCash
12
View attachment 140398
One Page Checkout & Social Login simplifies the checkout process, enabling customers to check out faster, more easily, and securely. It supports PayPal, Stripe, PrestaShop Checkout, Google Pay, Amazon Pay, COD, bank wire, etc.

LINK

Test it and if you are satisfied, purchase from developer.
It is a matter of shop security.
GRAN MODULO DE PRUEBA PARA LA COMUNIDAD DE TESTERS
 
Top