¿Cómo saber en qué lenguaje de programación está integrado un sitio web?

96

Creo que es fundamental que los evaluadores de seguridad recopilen información sobre cómo funciona una aplicación web y, en última instancia, en qué idioma está escrito.

Sé que las extensiones de URL, los encabezados HTTP, las cookies de sesión, los comentarios HTML y las hojas de estilo pueden revelar cierta información, pero aún así es difícil y no está seguro.

Entonces me preguntaba: ¿hay alguna manera de determinar qué tecnología y marco de trabajo están detrás de un sitio web?

    
pregunta storm 11.03.2016 - 11:26
fuente

6 respuestas

137

No hay forma de estar 100% seguro si no tiene acceso al servidor, por lo que se trata de adivinar. Aquí hay algunas pistas:

  • Extensiones de archivo: login.php es probablemente una secuencia de comandos PHP.
  • Encabezados HTTP: pueden filtrar información sobre el idioma que se ejecuta en el servidor, y algunos detalles adicionales como la versión: X-Powered-By: PHP/7.0.0 significa que la página fue representada por PHP.
  • HTTP Parameter Pollution : si logró adivinar En qué servidor se está ejecutando, puede refinar la conjetura.
  • Límites de idioma: datos máximos de publicación, número máximo de variables en datos GET y POST, etc. Puede ser útil si el webmaster mantiene los valores predeterminados.
  • Entrada específica: por ejemplo, PHP tenía algunos huevos de Pascua .
  • Errores: los errores de activación también pueden filtrar el idioma. Warning: Division by zero in /var/www/html/index.php on line 3 es PHP, por ejemplo.
  • Cargas de archivos: las bibliotecas pueden agregar metadatos si el archivo se está modificando en el lado del servidor. Por ejemplo, la mayoría de los sitios cambia el tamaño de los avatares de los usuarios y la comprobación de datos EXIF perderá CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), default quality , lo que puede ayudar a adivinar qué idioma se usa.
  • Nombres de archivo predeterminados: comprueba si / y /index.php son la misma página.
  • Explotaciones: leyendo un archivo de copia de seguridad o ejecutando un código arbitrario en el servidor.
  • Código abierto: el sitio web puede haber sido de código abierto y está disponible en algún lugar de Internet.
  • Acerca de la página: el webmaster puede haber agradecido a la comunidad lingüística en una página de "Preguntas frecuentes" o "Acerca de".
  • Página de trabajos: el equipo de desarrollo puede estar reclutando y puede que haya detallado las tecnologías que están utilizando.
  • Ingeniería social: ¡pregúntale al webmaster!
  • Perfiles públicos: si sabe quién está trabajando en el sitio web (ver LinkedIn y /humans.txt ), puede consultar sus repositorios públicos o sus habilidades en los perfiles en línea (GitHub, LinkedIn, Twitter, ... ).

También puede querer saber si el sitio web está construido con un marco o un CMS, ya que esto proporcionará información sobre el idioma utilizado:

  • URLs: los directorios y las páginas son específicos de ciertos CMS. Por ejemplo, si algunos recursos se encuentran en el directorio /wp-content/ , significa que se han utilizado WordPress.
  • Cookies de sesión: nombre y formato.
  • tokens CSRF: nombre y formato.
  • HTML procesado: por ejemplo: orden de etiquetas meta, comentarios.

Tenga en cuenta que toda la información proveniente del servidor puede modificarse para engañarle . Siempre debe intentar utilizar múltiples fuentes para validar su conjetura.

    
respondido por el Benoit Esnard 11.03.2016 - 11:54
fuente
16

Para adivinar el lenguaje de programación, puede seguir los tres pasos que se detallan a continuación:

PASO 1: buscar evidencias en el sitio mismo

Manualmente ...

  • Busque en la página de un sitio en la parte inferior de frases como:

    -> "Powered by XXX"

    -> "Proudly Powered by XXX"
    -> "Running on XXX"
    -> ...

  • Busque en el sitio si asistirá a alguna conferencia en la que puedan hablar sobre el sitio web desde un punto de vista técnico

... o con la ayuda de una herramienta

  • Lea el código HTML que descargó su navegador

  • Inicie Network Tab en la barra de herramientas del desarrollador y estudie los intercambios realizados entre el navegador y el servidor.

  • Busca alguna página oculta conocida:

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

    Si obtiene 200, es posible que el sitio se ejecute en un software disponible públicamente (gratuito, de pago, etc.).

PASO 2 - Buscar evidencias en la web

Pregunte a los motores de búsqueda por errores de front-end

Puede buscar algunos errores producidos por el sitio web.

  • Algunas palabras clave para escribir en un motor de búsqueda:

    • sitio del error 500: the-site.com
    • Sitio de excepciones: the-site.com
    • ...
    • < lo que sea > sitio: the-site.com
      = > Simplemente puede reemplazar "< lo que sea >" con algún mensaje de error conocido producido por las distintas tecnologías web.

Pregunte a los motores de búsqueda por errores de back-end

Incluso puedes adivinar las tecnologías utilizadas en el backend:

  • sitio ORA-12170: the-site.com
    = > Si encuentra algo, el sitio puede estar usando Oracle en su parte posterior.

Pregunte a los motores de búsqueda por los competidores del sitio web

  • Encuentre qué tecnología es popular en la industria de sitios web

  • Averigüe qué tecnología están usando los competidores

  • Encuentre comparaciones del sitio con otros competidores.
    Esas comparaciones pueden referirse a las tecnologías en uso

Sitios de encuestas de tecnología

Esos sitios pueden proporcionar gran información al sitio al que te diriges. Es posible que ya hayan hecho parte del trabajo por usted.

  • enlace
    = > Ingrese la url del sitio al que está apuntando y vea qué tecnologías (del lado del cliente o del servidor) se han detectado.
    Tenga en cuenta que el sitio debe estar en el ranking superior de Alexa de 1M.

  • enlace >
    = > < keyword > puede ser cualquier nombre de compañía, nombre de sitio web, etc.

PASO 3 - Analiza tus resultados

Las evidencias que ha encontrado en paso 1 pueden estar equivocadas porque el propietario del sitio puede modificarlas. Intenta encontrar contradicciones entre esas evidencias. Eliminar evidencias contradictorias.

Combine las evidencias en paso 2 entre las distintas fuentes y las suyas. Nuevamente elimine evidencias contradictorias.

Resuma todos sus hallazgos en una tabla como la que se muestra a continuación.

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

Finalmente, podrá decir "Estoy seguro al XX% de que este sitio se ejecuta en YY (EVIDENCE i)".

    
respondido por el Stephan 11.03.2016 - 18:07
fuente
14

Es simple. Agregue la extensión Wapplyzer disponible para Chrome y Firefox .

Informa sobre el lenguaje de programación, el servidor, la herramienta de análisis o sobre CMS & Marcos en los que se construye el sitio web.

Pruébalo, te encantará.

    
respondido por el Manish Kumar 11.03.2016 - 16:14
fuente
6

Además de la extensión del navegador Wappalizer, hay varios sitios que detectan qué tecnologías impulsan un sitio web determinado:

respondido por el Dan Dascalescu 11.03.2016 - 22:41
fuente
2

La respuesta es que nunca se puede "estar seguro". Si bien el 99.9% de las veces, las respuestas altamente votadas encontrarán los "avisos" del marco detrás del sitio, pero nunca es una certeza.

Básicamente, su navegador recibe los resultados finales del procesamiento de los códigos. (html, CSS y JavaScript) Entre usted y el código mismo se encuentra un servidor web (nginx, Apache, etc.) y, potencialmente, un equilibrador de carga y una CDN. Debido a que no estás interactuando directamente, no hay forma de certeza.

Si un sitio web está ofreciendo contenido de wp-uploads / Es una apuesta segura que está ejecutando Wordpress pero no es una certeza. Tal vez el sitio estaba usando Wordpress, pero cuando se migró a otra cosa, se guardó wp-uploads / path para evitar romper enlaces y marcadores.

    
respondido por el Nath 13.03.2016 - 15:26
fuente
-2

A veces puedes saber, a veces no puedes.

Si el HTML se genera en el lado del cliente, entonces puede indicar fácilmente qué idioma mirando la fuente en su navegador web. Estos lenguajes incluyen: ruby on rails, javascript, java, etc. En el lado del cliente, la fuente está abierta al usuario, y debe ser honesta acerca de qué tecnología es.

Si el HTML se genera en el lado del servidor, es posible que no sepa qué lenguaje de programación lo generó. Estos lenguajes incluyen: PHP, C ++ y muchos otros lenguajes. En el lado del servidor, por todas las formas que pueda imaginar para adivinar de qué idioma se trata, existen tantas formas para que la tecnología se oculte.

Supongamos que usted es un administrador web que quiere ocultar la tecnología del lado del servidor. Elija una de las técnicas enumeradas en otra pregunta para intentar identificar el idioma. Por ejemplo, la extensión * .php para un archivo. Ahora, configure su servidor web para ejecutar el código C desde un archivo con una extensión * .php. Sus usuarios no tendrán forma de ver la fuente (ya que ambos idiomas tienen la misma capacidad de producir el mismo resultado, al estar completos de Turing), pero se les confundirá al pensar que está ejecutando PHP.

¿Por qué alguien querría ofuscar la elección de tecnología del lado del servidor? Debido a que los idiomas CGI tienen varias vulnerabilidades que son más fáciles de identificar si los usuarios finales saben cuál de esos idiomas está usando. Engañar a los usuarios sobre qué tecnologías del lado del servidor está utilizando es una medida de seguridad muy razonable.

    
respondido por el Brent Kirkpatrick 11.03.2016 - 23:04
fuente

Lea otras preguntas en las etiquetas