web-dev-qa-db-fra.com

Comment savoir dans quel langage de programmation un site Web est intégré?

Je pense qu'il est fondamental pour les testeurs de sécurité de collecter des informations sur le fonctionnement d'une application Web et, éventuellement, dans quelle langue elle est écrite.

Je sais que les extensions d'URL, les en-têtes HTTP, les cookies de session, les commentaires HTML et les feuilles de style peuvent révéler certaines informations mais c'est toujours difficile et non assuré.

Je me demandais donc: existe-t-il un moyen de déterminer la technologie et le cadre derrière un site Web?

106
storm

Il n'y a aucun moyen d'être sûr à 100% si vous n'avez pas accès au serveur, il s'agit donc de deviner. Voici quelques indices:

  • Extensions de fichiers: login.php Est très probablement un script PHP.
  • En-têtes HTTP: ils peuvent divulguer des informations sur la langue qui s'exécute sur le serveur, et quelques détails supplémentaires comme la version: X-Powered-By: PHP/7.0.0 signifie que la page a été rendue par PHP.
  • Pollution des paramètres HTTP : si vous avez réussi à deviner quel serveur est en cours d'exécution, vous pouvez affiner la supposition.
  • Limites linguistiques: nombre maximal de données de publication, nombre maximal variable dans GET et POST, etc. Il peut être utile si le webmaster a conservé les valeurs par défaut.
  • Entrée spécifique: par exemple, PHP avait quelques oeufs de Pâques .
  • Erreurs: les erreurs de déclenchement peuvent également fuir la langue. Warning: Division by zero in /var/www/html/index.php on line 3 Est PHP, par exemple.
  • Téléchargements de fichiers: les bibliothèques peuvent ajouter des métadonnées si le fichier est modifié côté serveur. Par exemple, la plupart des sites redimensionnent les avatars des utilisateurs et la recherche de données EXIF ​​entraînera une fuite de CREATOR: Gd-jpeg v1.0 (using IJG JPEG v90), default quality, ce qui peut aider à deviner quelle langue est utilisée.
  • Noms de fichiers par défaut: Vérifiez si / Et /index.php Sont la même page.
  • Exploits: lecture d'un fichier de sauvegarde, ou exécution de code arbitraire sur le serveur.
  • Open source: le site Web peut avoir été open source et est disponible quelque part sur Internet.
  • Page A propos: le webmaster a peut-être remercié la communauté linguistique dans une page "FAQ" ou "A propos".
  • Page des travaux: l'équipe de développement recrute peut-être et a peut-être détaillé les technologies qu'elle utilise.
  • Ingénierie sociale: demandez au webmaster!
  • Profils publics: si vous savez qui travaille sur le site Web (consultez LinkedIn et /humans.txt), Vous pouvez vérifier leurs dépôts publics ou leurs compétences sur les profils en ligne (GitHub, LinkedIn, Twitter, ...).

Vous pouvez également vouloir savoir si le site Web est construit avec un framework ou un CMS, car cela donnera des informations sur la langue utilisée:

  • URL: les répertoires et pages sont spécifiques à certains CMS. Par exemple, si certaines ressources se trouvent dans le répertoire /wp-content/, Cela signifie que WordPress ont été utilisés.
  • Cookies de session: nom et format.
  • Jetons CSRF: nom et format.
  • HTML rendu: par exemple: ordre des balises META, commentaires.

Notez que toutes les informations provenant du serveur peuvent être modifiées pour vous tromper . Vous devriez toujours essayer d'utiliser plusieurs sources pour valider votre supposition.

148
Benoit Esnard

Pour deviner le langage de programmation, vous pouvez suivre l'approche en trois étapes détaillée ci-dessous:

ÉTAPE 1 - Rechercher des preuves sur le site lui-même

Manuellement...

  • Recherchez sur une page de site en bas des expressions comme:

    -> "Propulsé par XXX"
    -> "Fièrement propulsé par XXX"
    -> "En cours d'exécution sur XXX"
    -> ...

  • Recherchez sur le site s'il assistera à une conférence où ils pourraient parler du site d'un point de vue technique

... ou à l'aide d'un outil

  • Lisez le code HTML téléchargé par votre navigateur

  • Lancez le Network Tab dans la barre d'outils développeur et étudiez les échanges effectués entre le navigateur et le serveur.

  • Recherchez une page cachée connue:

    wget -head http://the-site.com/private/admin

    Si vous en obtenez 200, le site peut fonctionner sur un logiciel accessible au public (gratuit, payant, etc.).

ÉTAPE 2 - Rechercher des preuves sur le Web

Demander aux moteurs de recherche des erreurs frontales

Vous pouvez rechercher des erreurs produites par le site Web.

  • Quelques mots clés à taper dans un moteur de recherche:

    • Site d'erreur 500: the-site.com
    • Site d'exception: the-site.com
    • ...
    • <quoi que ce soit> site: the-site.com
      => Vous pouvez simplement remplacer "<what ever>" par un message d'erreur connu produit par les différentes technologies Web.

Demandez aux moteurs de recherche des erreurs de back-end

Vous pouvez même deviner les technologies utilisées dans le backend:

  • Site ORA-12170: le-site.com
    => Si vous trouvez quelque chose, le site utilise peut-être Oracle dans sa partie backend.

Demandez aux moteurs de recherche pour les concurrents du site Web

  • Découvrez quelle technologie est populaire dans l'industrie du site Web

  • Découvrez quelles technologies les concurrents utilisent

  • Trouvez des comparaisons du site avec d'autres concurrents.
    Ces comparaisons peuvent parler des technologies utilisées

Sites d'enquête technologique

Ces sites peuvent fournir d'excellentes informations sur le site que vous ciblez. Ils ont peut-être déjà fait une partie du travail pour vous.

  • http://w3techs.com/sites
    => Entrez l'URL du site que vous ciblez et voyez quelles technologies (côté client ou serveur) ont été détectées.
    Notez que le site doit figurer dans le top 1M du classement Alexa.

  • http://stackshare.io/search/q= <mot clé >
    => <mot-clé> peut être n'importe quel nom de société, nom de site Web, etc.

ÉTAPE 3 - Analysez vos résultats

Les preuves que vous avez trouvées à étape 1 peuvent être erronées car le propriétaire du site peut les modifier. Essayez de trouver des contradictions entre ces preuves. Éliminez les preuves contradictoires.

Fusionnez les preuves à étape 2 entre les différentes sources et les vôtres. Éliminez à nouveau les preuves contradictoires.

Reprenez toutes vos constatations dans un tableau comme celui ci-dessous.

+-------------+-----------+------------------+    ...   +----------+-------+--------+
| EVIDENCES   |  ON SITE  |  Search Engine 1              SOURCE n   SCORE   PCT (%)
+-------------+------------------------------+    ...   +----------+-------+--------+
|    PHP 7    |     X     |       X          |                X    |   3   |  300/n
+-------------+------------------------------+    ...   +----------+-------+--------+
|  Wordpress  |           |       X          |                X    |   2   |  200/n
+-------------+------------------------------+    ...   +----------+-------+--------+
     ...
+-------------+------------------------------+    ...   +----------+-------+--------+
|  EVIDENCE m |           |                  |                     |       | (100*SCORE)/n
+-------------+------------------------------+    ...   +----------+-------+--------+

Enfin, vous pourrez dire "Je suis convaincu à XX% que ce site fonctionne sur YY (EVIDENCE i)".

18
Stephan

C'est simple. Ajoutez l'extension Wapplyzer disponible pour Chrome ainsi que Firefox .

Il parle du langage de programmation, du serveur, de l'outil d'analyse ou du CMS et des cadres sur lesquels le site Web est construit.

Essayez-le, vous allez l'adorer.

17
Manish Kumar

Outre l'extension de navigateur Wappalizer, plusieurs sites détectent les technologies qui alimentent un site Web donné:

8
Dan Dascalescu

La réponse est que vous ne pouvez jamais "être assuré". Alors que 99,9% du temps, les réponses très votées trouveront les "informations" sur le cadre derrière le site, mais ce n'est jamais une certitude.

Fondamentalement, votre navigateur reçoit les résultats finaux du traitement des codes. (html, CSS et JavaScript) Entre vous et le code lui-même se trouve un serveur Web (nginx, Apache, etc.) et potentiellement un équilibreur de charge et un CDN. Parce que vous n'interagissez pas directement, il n'y a aucun moyen de certitude.

Si un site Web diffuse du contenu à partir de wp-uploads/Il y a fort à parier qu'il fonctionne Wordpress mais ce n'est pas une certitude. Peut-être que le site utilisait Wordpress mais quand il a été migré vers autre chose, le chemin wp-uploads/a été conservé pour éviter de casser les liens et les signets.

2
Nath