Accéder au contenu principal

Sécurité et Audit d'application WEB



Étapes d’un audit d’application WEB :

  1. Identification de la version du serveur WEB;
  2. Identification de la plateforme utilisée (Content Management System et Langage) utilisé ;
  3. Identification des failles associées à la plateforme ;
  4. Cartographie du site (identification des fichiers et de la base de données) ;
  5. Vérification des méthodes et technologies de transfert d’informations ;
  6. Identification des failles communes ;
  7. Analyse du code source pour identification des erreurs de conceptions restantes.

La majeure partie des failles de Sécurité Web provient d’erreur de développement.

Identification du serveur

1. Identifier le type et la version du serveur

  • Avec Telnet ou ncat : telnet 192.168.0.1 80
    HEAD / HTTP/1.0
    On peut aussi utiliser une erreur pour charger une page : GEE / JOJO/5.0 ou GET / HTTP/1.0
    Par message d’erreur en demandant une page inexistante : GET /toto/titi.asp HTTP/1.0
  • Avec Nmap : nmap -sV -p 80 -vvv 192.168.0.1
  • Avec Nikto : nikto -h www.google.fr -findonly
  • Avec Wget : wget -S –spider www.google.fr
  • Avec Httprint, par statistique sur la réponse : httprint -h http://www.google.fr -s signature.txt
  • Par technologie : ASP.NET = IIS
  • Par historique Internet : http://toolbar.netcraft.com/site_report?url=http://www.google.fr

2. Identification de la plate forme utilisée (CMS et Langage)


3. Identification des failles liées à la plateforme


4. Cartographie du site


5. Vérification des méthodes et technologies de transfert d’informations :

  • Vérifier que ces méthodes soient désactivées : OPTIONS, PUT, CONNECT, DELETE et TRACE
  • Utilisation d’un proxy HTTP/HTTPS : Zap ou Burp
  • Par défaut un URL de type http://www.google.fr/search?hl=fr&q=test montre l’utilisation de méthode GET (paramètres séparés par &).
  • Vérifier les fichier de style (CSS), javascripts (JS), et défaut (phpinfo.php, /admin:. . .).
  • Vérifier la verbosité des messages d’erreur.

6. Identification des failles communes

Failles de sécurité : développement

  • XSS (Cross-Site Scripting) : Permet à un utilisateur de faire exécuter du javascript à une page vue par un autre utilisateur.
  • CSRF/XSRF (Cross-Site Request Forgery) : Utilise les droit de l’utilisateur consultant une page pour lui faire exécuter une tâche grâce au javascript.
  • XSSI (Cross Site Script Inclusion) : Variante du XSRF qui permet d’inclure un fichier à exécuter sur une page.
  • Injection SQL : Correspond à envoyer des données non prévues à une page, afin de s’authentifier, ou effectuer des tâches sur la base de données.
  • Faille include : Inclusion d’un fichier pour exécution sur un serveur de notre code.
  • Failles de sécurité : serveur/navigateur WEB
  • Path Traversal : Consiste à essayer d’accéder à des fichiers normalement inatteignables (fichiers système, configuration, mots de passe) en essayant de remonter dans l’arborescence.
  • Data tampering : Utilisation du Path Traversal pour remplacer un fichier (par exemple système) lors d’un upload de fichier sur un serveur.
  • Code Execution : Attaque utilisant une faiblesse du navigateur WEB pour exécuter du code sur la machine client.

Failles de sécurité : technologies

  • AJAX (Asynchronous JavaScript And XML) : Moyen de dialogue utilisant les technologies HTML/XHTML, XML, CSS, DOM, Javascript, XMLHttpRequest, peut permettre l’exploitation de failles (DOS, Phishing, integer overflow. . .).
  • ISAPI (Internet Server Application Programming Interface) : Interface de programmation (ou API) de l’application IIS de Microsoft, fonctionne comme un langage de page dynamique de type PHP, ASP, CGI, sous forme de DLL.
  • SWF (ShockWave Flash) : application flash décompilable, pouvant comporter des mots de passe et être vulnérable.

Outils gratuits pour l’identification et l’exploitation de vulnérabilité


7. Analyse du code source pour identification des erreurs de conceptions restantes.

Configuration

  • Rendre anonyme la bannière de connexion du serveur et des services.
  • Personnaliser les messages d’erreurs et limiter au strict minimum les informations transmises.
  • Protéger le serveur WEB par un pare-feu ou un reverse-proxy de type Apache+ModSecurity, avec des règles de filtrage éprouvées, le mode Apache mod_rewrite permet aussi d’implémenter l’URL Rewriting.
  • Supprimer les fichiers inutiles (exemples : info.php, phpinfo.php).
  • Mettre à jour le serveur Web et les modules Web installés.

Base de données

  • Renommer la base de données, les comptes et tables par défaut.
  • Appliquer des droits sur la base de données et sauvegarder les mots de passe sous forme de hash.
  • Utiliser des comptes utilisateurs SQL à accès limité (en lecture seule) quand cela est possible.
  • Utiliser des procédures stockées, à la place du SQL dynamique. Les données entrées par l’utilisateur sont alors transmises comme paramètres, limitant ainsi les risques d’injection.
  • Utiliser des requêtes SQL préparées (requêtes à trous envoyées au serveur, qui se charge d’échapper les caractères selon le type de paramètre).
  • Effectuer un contrôle des requêtes en limitant les droits aux commandes telles que EXEC, SELECT, INSERT, DROP, CREATE, ALTER, UPDATE…

Requêtes et variables

  • Vérifier le lien de référence (referrer) contenu dans les requêtes (compliquer à implémenter).
  • Tester systématiquement les valeurs transmises : $_GET$_POST$_COOKIE$_REQUESTAJAX
  • Préférer l’envoi des données via la méthode $_POST plutôt que $_GET.
  • Ne pas utiliser $_REQUEST (permet l’utilisation du même paramètre en $_GET et $_POST).
  • S’assurer à chaque requête de l’authentification de l’utilisateur et que l’action correspond à ses droits.
  • Les cookies et numéros de session doivent avoir une limite de validité.
  • Ne jamais transmettre de données confidentielles aux clients (son numéro de client dans l’URL. . .).
  • Utiliser l’attribut .innerText au lieu de .innerHtml afin de se protéger contre les XSS, n’utiliser .innerHtml que pour de l’affichage HTML (technologie AJAX).
  • Vérifier le type et la validité des variables à exploiter isset()is_numeric()ereg()filter_var()filter_input()filter_var_array() ou filter_input_array().
  • Utiliser la fonction PHP mysql_real_escape_string() ou addslashes() (depuis PHP6 les Magic Quotes ont disparus) qui permet de convertir les caractères non standards ( » devient n »).
  • Désactiver les Magic Quotes qui sont insuffisantes contre les injections (et inutiles en cas d’exploitation de pages externes) et qui utilisent trop de ressources (voir fichier php.ini magic_quotes_gpc = Off).
  • Pour afficher une variable, utiliser systématiquement : htmlspecialchars(...,ENT_QUOT) qui permet de convertir les caractères en HTML et de se protéger contre des failles XSS.
  • Dans les messages des forums désactiver l’utilisation du javascript.
  • Désactiver allow_url_include pour évitr les failles include (inclusion de fichiers distants).
  • En cas d’utilisation de technologie AJAX (XmlHttpRequest), encoder les données transmises (escape()encodeURI()encodeURIComponent()).
  • Toujours prévoir un historique des traitements effectués (avec : requête, compte, IP, date et heure).

Commentaires

Posts les plus consultés de ce blog

Dossier de base sur un serveur Windows

Dossier de base Pour les utilisateurs de domaine Windows AD, il est possible de créer un dossier de base via l’activation du service dossier utilisateur. Ainsi, chaque utilisateur du domaine disposera d’un dossier personnel pour le stockage et la sauvegarde de ses fichiers sur le serveur de partage. Le dossier utilisateur permet de plus aux administrateurs de sauvegarder les fichiers de chacun des utilisateurs.

Le protocole ICMP | Echo Echo Response : Le ping | Le TTL

Le protocole ICMP Introduction Nous avons pu remarquer dans les chapitres précédents qu'IP était essentiellement accès sur les fonctions d'adressage et de routage. Il est configuré pour fonctionner comme si aucun problème ne pouvait survenir sur le réseau ( perte de datagrammes, congestion, problème de routage, etc .). Si un problème survient, sa solution est expéditive :  il ne route pas  ! Il a tout juste accepté de prendre en charge les problèmes de fragmentation ! Ce mode de fonctionnement n'est pas un problème en soi ( il suffit de regarder la notoriété et l'implantation d'IP ! ). Mais il est nécessaire de pouvoir dans certains cas informer les émetteurs du devenir de leurs datagrammes. C'est le rôle d' ICMP  ( I nternet  C ontrol  M essage  P rotocol) qui, comme son nom l'indique, est un  protocole d'information du contrôle de réseau . ICMP ne résoud rien, ou du moins pas grand chose, il informe ! Lorsque certains problèmes de...

أينديسبوتاد بويكا 2017 BOYKA UNDISPUTED

ت أينديسبوتاد بويكا 2017  : .. كـامل مترجـم وبجـودة عالية   🇺🇸  .. شاركوا الفيلم على أوسع نطاق أصدقائي ليستفيد الجميع من المشاهدة .. BOYKA: UNDISPUTED IV 2017  مراجعة فيلم UNDISPUTED 4 قصة الفيلم حول الملاكم بويكا الذي يخوض نزال و يكون سبب في وفاة منافسه .. ليعلم بعذ ذلك معاناة زوجته (المنافس الذي توفي) مع شخص لسبب غير محروق بالترايلر..لتنطلق الأحداث في جو من الأكشن لنعرف هل سيصل لزوجة المقاتل لمساعدتها .. و هل سيواصل القتال بعد تسببه في مقتل شخص فوق الحلبة .. و كيف سيتعامل مع ظروف البلد خصوصا أنه من قائمة المبحوث عنهم .. بالنسبة لي الفيلم يختلف بشكل كب ير عن الأجزاء السابقة .. و للمرة الأولى سنعيش أحداث الفيلم بنسبة كبيرة خارج السجن .. و هذا خدم مصلحة الفيلم في التعرف على الوجه الآخر لشخصية بويكا.. و خصوصا طريقة تعامله مع المحيطين به خارج السجن ..+ هذا الجزء ابتعد تماما عن الرسائل التي كان يريد توصيلها للمشاهد خلال الأجزاء السابقة و هذه المرة اعتمد على تمرير رسائل غير مباشرة و مختلفة تماما + الجديد في الفيلم هو أنه سنتعرف على بويكا الإنس...