0%

Svn源码泄露exploit

寻找测试目标:

google hack: Index of /.svn

svnExploit工作原理

判断svn版本号

通过根目录下的entries文件来判断

版本号>1.7的话,

版本号<1.7的话,

版本号小于1.7的情况:

解析元数据:

.svn/entries 包含了项目的文件和文件夹列表。

可以解析这个文件来获取文件列表file_list和路径列表dir_list

循环解析元数据:

上面收集了文件夹列表,进入每个文件夹继续解析元数据entries文件

现在有了整个项目结构了

下载文件

.SVN-BASE files store a base copy of a file

在每个文件后面加上.svn-base,然后请求对应的url就可以下载文件


版本号大于1.7的情况:

下载数据库文件

下载/.svn/wc.db

连接数据库文件

Node表中查询出

  • 相对路径

  • 文件类型

  • 校验值

下载文件

如果一个文件的checksum为 0a781ca8d6e963590f208608e3d80f52307a116d

那么其对应的url则为: domain/.svn/pristine/checksum前两位数/checksum加上.svn-base

https://domain/.svn/pristine/0a/0a781ca8d6e963590f208608e3d80f52307a116d.svn-base


题外话:

在测试svnExploit的时候,发现有点小问题.提了个pr.

优化:

  • 1.thread-unsafe的Generator改用thread-safe的queue

  • 2.兼容Py2


refs: