在最近对捷克和斯洛伐克的Internet域进行了类似的审核之后,安全研究员Vladimir Smitka在7月决定检查Internet是否存在打开的.git
文件夹。

俗话说:“从来没有发生过,再来一次。” 让我提醒您,9年前,与受开放.svn
综合征影响的俄罗斯互联网部分完全相同的故事 。 以下是捷克研究人员的艰苦工作,工具和方法的结果。
漏洞的原因
攻击者可以从.git
目录中获取很多重要信息,以确保网站的安全。 这就是典型的项目树。
├── HEAD ├── branches ├── config ├── description ├── hooks │ ├── pre-commit.sample │ ├── pre-push.sample │ └── ... ├── info │ └── exclude ├── objects │ ├── info │ └── pack └── refs ├── heads └── tags
可以将各种API,数据库和云服务的密码和访问密钥存储在此处。
通常,尝试打开.git
文件夹会引发HTTP 403错误,但是原因仅是缺少index.html / index.php
以及自动索引该文件夹的权限,而单个文件仍然可用 。 为了确保该站点不容易受到攻击,您应该打开/.git/HEAD
页面。
该文件包含到当前项目分支的链接。
$ cat .git/HEAD ref: refs/heads/master
即使禁用了目录的自动索引, 您也可以通过下载单个文件并通过正则表达式处理器确定依赖性来轻松地还原整个 .git
文件夹 ,因为.git
结构是明确定义的。 还有一个特殊的工具-GitTools ,它会自动执行所有必要的操作。
生产资料
尽管任务复杂且雄心勃勃,但金钱方面的成本还是适中的。 每件事,花了大约250美元。
伺服器
Smithka为该项目租用了18个VPS和4个物理服务器。 据他说,他之所以选择不使用AWS,是因为该服务的全部成本,考虑到预期的巨大流量,大量磁盘空间和高CPU负载,很难计算出来。 租用的VPS的价格是预先确定的。
域列表
该列表基于JSON
的OpenData Rapid7项目的文本日志。
转发DNS数据库架构 { "$id": "https://opendata.rapid7.com/sonar.fdns_v2/", "type": "object", "definitions": {}, "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "timestamp": { "$id": "/properties/timestamp", "type": "string", "description": "The time when this response was received in seconds since the epoch" }, "name": { "$id": "/properties/name", "type": "string", "description": "The record name" }, "type": { "$id": "/properties/type", "type": "string", "description": "The record type" }, "value": { "$id": "/properties/value", "type": "string", "description": "The response received for a record of the given name and type" } } }
在对TLD和二级域进行一些过滤之后,该列表仍然有超过2.3亿个条目 。
接下来,将数据库分为200万条记录的块,并使用PHP应用程序将负载分配到各个服务器上。
软体类
Python从asyncio异步通信库中挂起,其中aiohttp作为主力 。 尝试将Requests和Urllib3用于这些目的没有成功,但前者可能很适合,但是研究人员不了解文档中的超时。 第二个服务器无法处理域重定向,因此很快耗尽了服务器上的内存。
为了识别平台和易受攻击站点的配置文件,Smitha使用了基于Wappalyzer数据库的WAD实用程序-Web浏览器的扩展,它使您可以确定页面上使用的技术。
诸如GNU Parallels
类的简单命令行实用程序也用于加快处理程序的执行时间,并防止脚本由于一次挂起而停止。
cat sites.txt | parallel --bar --tmpdir ./wad --files wad -u {} -f csv
结果
扫描持续了2周,因此研究人员:
- 发现了39万个易受攻击的网站;
- 收集了29万个电子邮件地址;
- 已通知9万名接收者该漏洞。
为了回应他的努力,Smithka收到:
- 18000条消息传递错误;
- 约2000封感谢信;
- 蜜罐系统有30个错误警报;
- 1威胁要致电加拿大警察;

事实证明,最流行的编程语言是PHP 。 但是,如果将结果标准化为特定PL的相对份额,则PHP让位于Python和Node.js。 但是,尚不清楚这种统计数据对于确定给定编程语言的市场份额有多可靠。
Apache在Web服务器受欢迎程度中名列第一,其中Nginx位居第二,而中国克隆Nginx Tengine突然居第三位。
最受欢迎的操作系统是Ubuntu ,然后是Debian,而CentOS排名第三。

CMS提名几乎被证明是单演员剧院,而这个演员是WordPress ,发现了所有平台的85%。
接下来是什么
修复漏洞很容易。
.htaccess
RewriteRule "(^|/)\.(?!well-known\/)" - [F]
.nginx
location ~ /\.(?!well-known\/) { deny all; }
apache22.conf
<Directory ~ "/\.(?!well-known\/)"> Order deny,allow Deny from all </Directory>
apache24.conf
<Directory ~ "/\.(?!well-known\/)"> Require all denied </Directory>
球童档案
status 403 /blockdot rewrite { r /\.(?!well-known\/) to /blockdot }