Come scoprire in che linguaggio di programmazione è incorporato un sito Web?

97

Penso che sia fondamentale per i tester della sicurezza raccogliere informazioni su come funziona un'applicazione web e infine su quale lingua è scritta.

So che le estensioni URL, le intestazioni HTTP, i cookie di sessione, i commenti HTML e i fogli di stile possono rivelare alcune informazioni ma è comunque difficile e non garantito.

Quindi mi chiedevo: c'è un modo per determinare quale tecnologia e framework sono dietro un sito web?

    
posta storm 11.03.2016 - 11:26
fonte

6 risposte

138

Non c'è modo di essere sicuro al 100% se non si ha accesso al server, quindi si tratta di indovinare. Ecco alcuni indizi:

  • Estensioni file: login.php è molto probabilmente uno script PHP.
  • Intestazioni HTTP: potrebbero contenere alcune informazioni sulla lingua in esecuzione sul server e alcuni dettagli aggiuntivi come la versione: X-Powered-By: PHP/7.0.0 significa che la pagina è stata renderizzata da PHP.
  • Inquinamento dei parametri HTTP : se sei riuscito a indovinare su quale server è in esecuzione, è possibile perfezionare l'ipotesi.
  • Limiti di lingua: dati massimi del post, numero massimo variabile nei dati GET e POST, ecc. Può essere utile se il webmaster ha mantenuto i valori predefiniti.
  • Input specifico: ad esempio, PHP ha uova di Pasqua .
  • Errori: errori di attivazione possono anche far trapelare la lingua. Warning: Division by zero in /var/www/html/index.php on line 3 è PHP, per esempio.
  • Caricamenti di file: le librerie possono aggiungere metadati se il file viene modificato sul lato server. Ad esempio, la maggior parte dei siti ridimensiona gli avatar degli utenti e il controllo dei dati EXIF perde CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), default quality , il che può aiutare a indovinare quale lingua viene utilizzata.
  • Nome file predefinito: verifica se / e /index.php sono la stessa pagina.
  • Exploits: lettura di un file di backup o esecuzione di codice arbitrario sul server.
  • Open source: il sito Web potrebbe essere stato open source ed è disponibile da qualche parte su Internet.
  • Informazioni sulla pagina: il webmaster potrebbe aver ringraziato la comunità linguistica in una pagina "Domande frequenti" o "Informazioni".
  • Pagina dei lavori: il team di sviluppo sta procedendo al reclutamento e potrebbe aver dettagliato le tecnologie che sta utilizzando.
  • Social Engineering: chiedi al webmaster!
  • Profili pubblici: se sai chi sta lavorando sul sito web (controlla LinkedIn e /humans.txt ), puoi controllare i loro repository pubblici o le loro competenze sui profili online (GitHub, LinkedIn, Twitter, ... ).

Potresti anche voler sapere se il sito web è costruito con un framework o un CMS, dato che fornirà informazioni sulla lingua utilizzata:

  • URL: le directory e le pagine sono specifiche per determinati CMS. Ad esempio, se alcune risorse si trovano nella directory /wp-content/ , significa che WordPress è stato utilizzato.
  • Cookie di sessione: nome e formato.
  • Token CSRF: nome e formato.
  • HTML reso: ad esempio: meta tag, commenti.

Tieni presente che tutte le informazioni provenienti dal server potrebbero essere modificate per ingannarti . Dovresti sempre provare a usare più fonti per convalidare la tua ipotesi.

    
risposta data 11.03.2016 - 11:54
fonte
16

Per indovinare il linguaggio di programmazione, puoi seguire l'approccio a tre fasi descritto di seguito:

FASE 1 - Ricerca evidenze sul sito stesso

manualmente ...

  • Cerca in una pagina del sito in basso per frasi come:

    -> "Powered by XXX"
    -> "Orgogliosamente potenziato da XXX"
    -> "In esecuzione su XXX"
    -> ...

  • Cerca sul sito se parteciperà a una conferenza in cui potrebbero parlare del sito Web da un punto di vista tecnico

... o con l'aiuto di uno strumento

  • Leggi il codice HTML scaricato dal tuo browser

  • Aumenta il Network Tab nella barra degli strumenti degli sviluppatori e studia gli scambi tra il browser e il server.

  • Cerca una pagina nascosta nota:

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

    Se ottieni 200, il sito potrebbe essere in esecuzione su un software disponibile gratuitamente (gratuito, a pagamento ecc.).

PASSAGGIO 2: cerca evidenze sul Web

Chiedi ai motori di ricerca errori front-end

Puoi cercare alcuni errori prodotti dal sito web.

  • Alcune parole chiave per digitare un motore di ricerca:

    • Sito errore 500: the-site.com
    • Sito di eccezione: the-site.com
    • ...
    • < che mai > sito: the-site.com
      = > Puoi semplicemente sostituire "< che mai >" con qualche messaggio di errore noto prodotto dalle varie tecnologie web.

Chiedi ai motori di ricerca errori di back-end

Puoi persino indovinare le tecnologie utilizzate nel back-end:

  • Sito ORA-12170: the-site.com
    = > Se trovi qualcosa, il sito potrebbe utilizzare Oracle nella sua parte di back-end.

Chiedi ai motori di ricerca per i concorrenti del sito web

  • Scopri quale tecnologia è popolare nel settore dei siti web

  • Scopri quali tecnologie stanno utilizzando i concorrenti

  • Trova confronti del sito con altri concorrenti.
    Questi confronti possono parlare di tecnologie in uso

Siti di sondaggio tecnologico

Questi siti possono fornire ottime informazioni sul sito che hai scelto come target. Potrebbero aver già fatto parte del lavoro per te.

  • link
    = > Inserisci l'url del sito a cui stai mirando e scopri quali tecnologie (lato client o server) sono state rilevate.
    Tieni presente che il sito deve trovarsi nella classifica 1M Alexa più alta.

  • link >
    = > < parola chiave > può essere qualsiasi nome dell'azienda, nome sito web, ecc.

PASSAGGIO 3 - Analizza i risultati

Le prove che hai trovato in passaggio 1 potrebbero essere errate perché il proprietario del sito può modificarle. Cerca di trovare contraddizioni tra quelle prove. Elimina le prove contraddittorie.

Unisci le prove in passaggio 2 tra le varie origini e le tue. Eliminate di nuovo le prove contraddittorie.

Ripristina tutte le tue scoperte in una tabella come quella qui sotto.

+-------------+-----------+------------------+    ...   +----------+-------+--------+
| 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
+-------------+------------------------------+    ...   +----------+-------+--------+

Infine, sarai in grado di dire "Sono fiducioso al XX% che questo sito funziona su YY (EVIDENCE i)".

    
risposta data 11.03.2016 - 18:07
fonte
14

È semplice. Aggiungi estensione Wapplyzer disponibile per Chrome così come Firefox .

Parla di linguaggio di programmazione, server, strumento di analisi o su CMS & Quadri su cui è costruito il sito web.

Fai un tentativo, lo adorerai.

    
risposta data 11.03.2016 - 16:14
fonte
7

Oltre all'estensione del browser di Wappalizer, ci sono diversi siti che rilevano quali tecnologie alimentano un determinato sito web:

risposta data 11.03.2016 - 22:41
fonte
2

La risposta è che non puoi mai "essere sicuro". Mentre il 99,9% delle volte le risposte altamente votate troveranno i "tell" del framework dietro il sito ma non è mai una certezza.

Fondamentalmente il tuo browser riceve i risultati finali dell'elaborazione dei codici. (html, CSS e JavaScript) Tra te e il codice stesso c'è un server web (nginx, Apache, ecc.) e potenzialmente un load balancer e un CDN. Perché non interagendo direttamente non c'è modo di essere certi.

Se un sito web pubblica contenuti da wp-uploads / È una scommessa sicura che stia eseguendo Wordpress ma non è una certezza. Forse il sito utilizzava Wordpress, ma quando è stato migrato a qualcos'altro, il percorso / upload di wp è stato mantenuto per evitare la rottura di collegamenti e segnalibri.

    
risposta data 13.03.2016 - 15:26
fonte
-2

A volte puoi saperlo, a volte non puoi.

Se l'HTML è generato sul lato client, allora puoi facilmente dire quale lingua guardi la sorgente nel tuo browser web. Queste lingue includono: ruby on rails, javascript, java, ecc. Sul lato client, la fonte è aperta all'utente e deve essere onesta su quale tecnologia sia.

Se l'HTML è generato sul lato server, potresti non sapere quale linguaggio di programmazione lo ha generato. Queste lingue includono: PHP, C ++ e molte altre lingue. Sul lato server, per quanti modi si può pensare di indovinare quale linguaggio sia, ci sono altrettanti modi in cui la tecnologia può nascondersi.

Supponiamo che tu sia un amministratore web che vuole nascondere la tecnologia lato server. Scegli una delle tecniche elencate in un'altra domanda per tentare di identificare la lingua. Ad esempio, l'estensione * .php per un file. Ora, configura il tuo server web per eseguire il codice C da un file con estensione * .php. I tuoi utenti non avranno modo di vedere la fonte (dal momento che entrambi i linguaggi sono ugualmente in grado di produrre lo stesso output, grazie alla completezza di Turing), ma saranno indotti in errore nel pensare di usare PHP.

Perché qualcuno dovrebbe voler offuscare la scelta della tecnologia lato server? Perché le lingue CGI hanno varie vulnerabilità che sono più facili da scegliere se gli utenti finali sanno quale di quelle lingue stai usando. Ingannare gli utenti su quali tecnologie sul lato server si sta utilizzando è una misura di sicurezza molto ragionevole.

    
risposta data 11.03.2016 - 23:04
fonte