起因:使用360网站安全检测扫描网站时发现有发现SVN版本控制信息文件的漏洞目标存在SVN版本控制信息文件。
SVN版本控制信息文件的漏洞是什么?
SVN是Subversion的简称,是一个开放源代码的版本控制系统,它采用了分支管理系统。SVN用版本控制信息文件进行源码修改跟踪,攻击者可能从SVN创建的隐藏信息目录中提取敏感信息加以利用进行攻击。
验证方式:
打开目标页面验证是否是SVN版本控制信息文件页面。
危害:
攻击者可能从SVN创建的隐藏信息目录中提取敏感信息,导致您开发的商业代码泄漏。
该文件的存在通常意味着像.svn这样的目录中保存着相关网页代码的副本。攻击者通过提取分析可能获取当前网页程序的全部源码,源码中可能保存着后台数据库的用户名、密码或其它敏感信息,使攻击者完全控制目标站点。同时攻击者分析源码会更容易找到一些新的安全漏洞,然后实施进一步的攻击。
解决方案:
1.设置SVN密码、设置匿名访问用户的权限为none。
2.发布代码时使用svn export导出,而不要使用svn co检索,防止泄露目录结构
svn export使用示例:
1 2 3 |
svn export [-r 版本号] http://路径 [本地目录全路径]--username 用户名 svn export [-r 版本号] svn://路径 [本地目录全路径]--username 用户名 svn export 本地检出的(即带有.svn文件夹的)目录全路径 要导出的本地目录全路径 |
3.如果线上的生产环境已经有了.svn目录不想删掉可以在服务器上设置禁止访问此目录:
Apache:设置.htacess :
1 2 3 4 5 6 7 |
<Directory ~ "\.svn"> Order allow,deny Deny from all </Directory> |
Nginx:设置配置文件:
1 2 3 |
location ~ ^(.*)\/\.svn\/ { return 404; } |
4.查找服务器上所有.svn隐藏文件夹,删除。
由于使用的是虚拟主机出于数据安全考虑,一般情况下,FTP软件是不列出系统隐藏文件的,包括:Windows 主机具备隐藏或系统属性的文件,Linux 主机以 . 开头的目录或文件。想要删除.svn隐藏文件夹就必须将隐藏的文件夹显示出来。
虚拟主机显示隐藏配置文件方法
1. 使用FTP工具登录到主机空间,本文以FileZilla进行示例如何显示主机隐藏文件。
2.在 FileZilla 主界面选择 服务器 勾选 强制显示隐藏文件 > 确定