如何找出网站内置的编程语言?

信息安全 Web应用程序 工具 侦察 信息收集
2021-08-13 01:28:28

我认为安全测试人员收集有关 Web 应用程序如何工作以及最终使用哪种语言编写的信息是基础。

我知道 URL 扩展、HTTP 标头、会话 cookie、HTML 注释和样式表可能会泄露一些信息,但它仍然很难且不能保证。

所以我想知道:有没有办法确定网站背后的技术和框架?

4个回答

如果您无权访问服务器,则无法 100% 确定,因此只能猜测。这里有一些线索:

  • 文件扩展名: login.php很可能是 PHP 脚本。
  • HTTP 标头:它们可能会泄露一些关于服务器上运行的语言的信息,以及一些额外的细节,如版本:X-Powered-By: PHP/7.0.0意味着页面是由 PHP 呈现的。
  • HTTP 参数污染如果您设法猜测哪个服务器正在运行,您可以改进猜测。
  • 语言限制:最大发布数据、GET 和 POST 数据中的最大数量变量等。如果网站管理员保留默认值可能会很有用。
  • 具体输入:例如,PHP 有一些复活节彩蛋
  • 错误:触发错误也可能泄漏语言。Warning: Division by zero in /var/www/html/index.php on line 3以 PHP 为例。
  • 文件上传:如果文件在服务器端被修改,库可能会添加元数据。例如,大多数网站会调整用户头像的大小,检查 EXIF 数据会泄漏CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), default quality,这可能有助于猜测使用的是哪种语言。
  • 默认文件名:检查//index.php是否是同一页。
  • 漏洞利用:读取备份文件,或在服务器上执行任意代码。
  • 开源:该网站可能是开源的,并且可以在 Internet 上的某个地方获得。
  • 关于页面:网站管理员可能在“常见问题解答”或“关于”页面中感谢了语言社区。
  • 工作页面:开发团队可能正在招聘,他们可能已经详细说明了他们正在使用的技术。
  • 社会工程:问站长!
  • 公开资料:如果您知道谁在网站上工作(查看 LinkedIn/humans.txt

您可能还想知道该网站是使用框架还是 CMS 构建的,因为这将提供有关所使用语言的信息:

  • URL:目录和页面特定于某些 CMS。例如,如果某些资源位于/wp-content/目录中,则表示已使用 WordPress。
  • 会话 cookie:名称和格式。
  • CSRF 令牌:名称和格式。
  • 呈现的 HTML:例如:元标记顺序、评论。

请注意,来自服务器的所有信息都可能被篡改以欺骗您您应该始终尝试使用多个来源来验证您的猜测。

为了猜测编程语言,您可以按照下面详述的三步方法进行操作:

第 1 步 - 在网站本身上搜索证据

手动...

  • 在底部的网站页面上搜索以下短语:

    ->"由 XXX 提供支持"
    ->"由 XXX 自豪地提供支持"
    ->"在 XXX 上运行"
    ->...

  • 在网站上搜索它是否会参加任何可以从技术角度谈论网站的会议

...或借助工具

  • 阅读浏览器下载的 HTML 代码

  • 启动Network Tab开发人员工具栏并研究浏览器和服务器之间的交换。

  • 搜索一些已知的隐藏页面:

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

    如果您获得 200,则该站点可能运行在公开(免费、付费等)可用的软件上。

第 2 步 - 在网络上搜索证据

向搜索引擎询问前端错误

您可以查找网站产生的一些错误。

  • 在搜索引擎中输入的一些关键字:

    • 错误 500 站点:the-site.com
    • 例外网站:the-site.com
    • ...
    • <what ever> site:the-site.com
      => 您可以简单地将“<what ever>”替换为各种网络技术产生的一些已知错误消息。

向搜索引擎询问后端错误

您甚至可以猜测后端使用的技术:

  • ORA-12170 site:the-site.com
    => 如果您发现了什么,该站点可能在其后端部分使用 Oracle。

向搜索引擎询问网站竞争对手

  • 查找网站行业流行的技术

  • 找出竞争对手正在使用的技术

  • 查找该网站与其他竞争对手的比较。
    这些比较可能会谈论正在使用的技术

技术调查网站

这些网站可以为您定位的网站提供很好的信息。他们可能已经为您完成了部分工作。

第 3 步 - 分析结果

您在步骤 1中找到的证据可能是错误的,因为网站所有者可以更改它们。试着找出这些证据之间的矛盾。排除矛盾的证据。

合并步骤 2中各种来源和您的证据之间的证据。再次排除矛盾的证据。

在下表中恢复所有发现。

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

最后,您可以说“我有 XX% 的信心认为该网站在 YY 上运行(证据 i)”。

这很简单。添加适用于ChromeFirefox的 Wapplyzer 扩展。

它讲述了编程语言、服务器、分析工具或构建网站的 CMS 和框架。

试一试,你会喜欢的。

除了 Wappalizer 浏览器扩展之外,还有几个网站可以检测给定网站的技术支持: