当前位置: 首页 > news >正文

网安实验系列六:.svn源代码泄露

1. 核心成因:部署方式的“偷懒”

在软件开发中,SVN(Subversion)是用来管理代码版本的工具。

  • 正常开发时:开发者使用svn checkout命令从服务器下载代码。这时,SVN 会在每个目录下生成一个隐藏的.svn文件夹,用来记录版本信息(比如你修改了什么、谁修改的、上一个版本是什么)。
  • 漏洞产生时:当代码开发完成,需要发布到网站服务器(生产环境)时,规范的做法是使用svn export(导出)。这个命令会把代码提取出来,不包含.svn文件夹。
  • 错误操作:很多管理员为了图省事,直接把开发环境里的代码文件夹复制(或者用svn checkout)到了 Web 服务器上。这就导致包含敏感信息的.svn文件夹也被带上了生产环境,并且通常对公网是可见的。

2. .svn 文件夹里到底有什么?

.svn就像是代码的“黑匣子”,它记录了项目的所有历史。根据 SVN 版本的不同(1.6及以前 vs 1.7及以后),存储结构略有不同,但核心文件主要包含以下两类信息:

  • 目录结构图(地图)
    • 低版本 (SVN 1.6-):依靠/.svn/entries文件。这是一个文本文件,里面明文记录了当前目录下所有文件的名称、版本号等信息。
    • 高版本 (SVN 1.7+):依靠/.svn/wc.db文件。这是一个 SQLite 数据库,里面存储了整个项目的文件路径、目录结构等元数据。
  • 源代码副本(宝藏)
    • SVN 为了能对比你修改了什么,必须在本地存一份“上一版本的纯净代码”
    • 这些代码通常以.svn-base的格式存储在text-base/pristine/目录中。
    • 关键点:即使你把网站上的index.php删了,只要.svn文件夹还在,攻击者依然可以从这里面把index.php的源码找回来。

3. 攻击原理:从“地图”到“宝藏”

攻击者利用这个漏洞通常遵循以下逻辑,这也是你实验中工具(如 SvnExploit)背后的工作原理:

  1. 探测(发现入口)
    攻击者访问http://target.com/.svn/entrieshttp://target.com/.svn/wc.db。如果服务器返回了内容而不是 403/404 错误,说明漏洞存在。

  2. 解析(获取地图)

    • 工具会下载entries文件或wc.db数据库。
    • 通过解析这些文件,工具就能知道:“哦,这个网站根目录下有config.phpadmin文件夹,admin下面还有user.php……”从而构建出完整的目录树。
  3. 还原(下载宝藏)

    • 根据解析出的文件列表,工具会利用 SVN 的存储规则,构造 URL 去下载对应的.svn-base文件。
    • 例如,工具知道有个文件叫config.php,它就会去请求/.svn/pristine/xx/xxxx.svn-base(高版本)或/.svn/text-base/config.php.svn-base(低版本)。
    • 下载回来后,工具会自动把文件名改回原名(去掉.svn-base后缀),最终在攻击者的电脑上完整还原出整个网站的源代码。

4. 危害与防御

危害
这不仅仅是泄露几行代码的问题。源码中往往包含:

  • 数据库账号密码(通常在配置文件如database.phpweb.config中)。
  • API 密钥或加密盐值。
  • 未公开的接口逻辑,攻击者可以据此挖掘更深层的逻辑漏洞。

如何防御

  1. 规范部署:发布代码时,务必使用svn export命令,而不是直接复制。
  2. 服务器配置:在 Nginx 或 Apache 配置中,禁止访问以点开头的隐藏目录(如location ~ /\.svn { deny all; })。
  3. 清理:如果已经部署了,可以使用脚本(如find . -name ".svn" | xargs rm -rf)批量删除服务器上的.svn文件夹。

1.测试目标主机是否存在.svn源代码泄露

(1)登录拓扑图左侧的攻击端主机,用户名/密码:root/com.1234。单击桌面左上角图标

(2)在搜索框中输入fire,再单击菜单栏中第一个Firefox ESR选项,打开火狐浏览器,如图3所示。在地址栏中输入192.168.100.202/.svn,确认.svn是否存在。若测试目标站点显示结果如图4所示,说明目标站点存在.svn文件,证明存在svn源代码泄露漏洞。

2.下载svn源代码

(1)关闭火狐浏览器,右击桌面空白处,单击菜单栏中Open Terminal Here选项,打开终端,。图5:打开终端

(2)在终端中执行命令cd/svnExploit-master(可以输入svn后按Tab键补全),切换至svnExploit-master目录,

(3)执行命令python SvnExploit.py -u http://192.168.100.202/.svn --dump,将svn源码下载到本地,

(4)执行命令cd dbs,切换至dbs目录。执行命令ls,查该目录中的所有文件。执行命令ls 192.168.100.202,查看是否成功下载目标主机内的网站站点文件,,已成功下载svn源代码。成功下载源代码

http://www.jsqmd.com/news/560479/

相关文章:

  • 别光看手册了!手把手教你用MDIO工具调试PHY寄存器(附实战案例)
  • 对于对话中的用户长期兴趣建模,OpenClaw 的序列推荐方法?
  • 网络通信优化:确保Pixel Dream Workshop云端API的高可用与低延迟
  • 如何快速部署和使用Kafka Connect UI:完整配置指南
  • 在职想要快速出分,怎么选托福机构?实测记住这几点就好 - 速递信息
  • 从魔搭社区到本地服务:保姆级教程在Ubuntu上跑通阿里通义千问(vLLM推理引擎详解)
  • 5个问题带你解锁Audacity:这款开源音频神器如何重塑你的声音创作?
  • 深入解析MII、RMII、GMII、RGMII接口:硬件设计中的关键选择与优化
  • springboot+vue基于web的蜜蜂养殖场管理系统的设计与实现
  • 双系统党必看:Ubuntu22.04和Win11在联想Yoga上的和平共处方案
  • 2026年杭州会计师事务所推荐:高新科技企业研发费用审计高性价比选择指南 - 十大品牌推荐
  • 终极太吾绘卷Mod安装指南:从零开始的完整教程
  • 别再死记硬背了!用一张图+生活例子,彻底搞懂BLE蓝牙协议栈(附GAP/GATT核心概念解析)
  • OpenCV实战:用Python+SIFT特征匹配,5分钟搞定基础矩阵F的计算与可视化
  • 如何快速清理Windows 11系统:完整免费优化方案
  • PaddleOCR实战:5分钟搞定批量图片文字识别并导出TXT(附完整代码)
  • SOONet模型Keil5嵌入式开发联动:定位调试过程中的关键事件视频
  • 油头狂喜!洗1次撑5天不油,发根直接立起来❗️ - 新闻快传
  • 音频编辑成本高且操作复杂?用Audacity开源工具实现专业级音频处理效率提升
  • Javase(一) 基础语法篇
  • Audio Pixel Studio环境部署:Conda虚拟环境隔离音频依赖避免版本冲突
  • UltraISO虚拟光驱加载失败?Win7虚拟机下5分钟快速修复指南
  • 跨时代兼容:在64位Windows系统中激活16位程序的完整方案
  • BepInEx完全指南:游戏扩展开发的4个实战维度
  • HARMONYOS应用实例248:立体几何展开与折叠演示
  • 全自动浇筑硅碳棒熔样机哪个品牌好?优质品牌深度评测 - 品牌推荐大师
  • 基于映翰通IG502的智能低压配电联网解决方案
  • CLIP-GmP-ViT-L-14图文匹配工具部署教程:Ubuntu 22.04 + Python 3.10 完整环境配置
  • Mission Planner连不上SITL?手把手教你排查UDP端口与MAVProxy连接问题
  • Masa Mods本地化解决方案:让中文玩家高效掌控Minecraft模组生态