我正在调查网站中的一些被黑客攻击的文件,并且该网站在 Subversion 存储库中受到版本控制,但它没有显示这些文件已被修改。如何阻止 SVN 忽略文件以便我可以签入干净的副本?
我正在清理一个被黑客攻击的网站(相对较小,一些赌场链接被添加到页面标题中),并且该网站由 SVN 存储库的工作副本托管。 (是的,它确实有一个有效的 .htaccess 文件,可以阻止对文件.svn
夹的访问。)有趣的是,被黑客攻击的文件具有 SVN 存储库中最后更新版本的修改日期,svn status
显示它未经修改,svn log -v <hacked_file>
显示没有超过最后一次的提交SVN 存储库中的更新版本svn diff <hacked_file>
也显示该文件与存储库中最后修改的版本之间没有差异。我编写了一些脚本来检查每个版本之间的日志和差异,并且没有任何修改该文件。
但是,我注意到文件名确实出现在 中.svn/all-wcprops
,如下所示:
K 25
svn:wc:ra_dav:version-url
V 48
/<repo>/!svn/ver/97/trunk/www.example.com/<hacked_file>
END
favicon.ico
当然,svn proplist -v <hacked_file>
不会输出任何内容并svn propget 'svn:wc:ra_dav:version-url' <hacked_file>
返回错误,指出它是“wcprop,因此客户端无法访问”。
我没有看到任何“svn:ignore”道具,也svn status --no-ignore
没有显示被黑的文件。
我做了很多研究,但确实没有在 SVN 'wcprops' 或.svn/all-wcprops
.删除all-wcprops
文件安全吗?
除了删除工作副本并检查新副本(这在一个太大的存储库中,因此非常耗时,并且需要很长时间进行审查以确保一切正常)之外,还有任何其他可能性/选项/建议,特别是因为我不能相信没有可能丢失的修改文件)?这是否可能在主 SVN 存储库中进行了修改?
答案1
正如其他人指出的那样,无论如何,最好从 SVN 检查存储库的新副本,因为工作副本既不可信也不可靠。所以,我做了以下事情:
- 签出了新的工作副本
- 确认被黑客攻击的文件内容与存储库中显示的内容正确无误,没有恶意修改
- 确认对被黑文件(以及中列出的其他文件)的修改在编辑时
.svn/all-wcprops
将显示为已修改svn status
- 交换工作副本
- 运行
diff -qrx .svn <hacked_working_copy>/ <new_working_copy>/
以确定在被黑客攻击的工作副本中实际更改/添加了哪些文件,但没有这样显示 - 根据需要确认任何未提交文件的内容并手动复制
- 存档并删除被黑的工作副本以供进一步调查/证据,然后将其删除
当然,我们正在采取进一步的行动和预防措施,但递归diff
可以轻松识别有问题的文件。