谈一下web源码泄露

常见的web源码泄露有:

  • git源码泄露
  • svn源码泄露
  • DS_Store 文件泄露
  • 网站备份压缩文件泄露
  • Web-INF/Web.xml 泄露
  • CVS泄露
  • hg源码泄漏

1.git源码泄露:

Git是一个开源的分布式版本控制系统,在执行git init初始化目录的时候,会在当前目录下自动创建一个.git目录,用来记录代码的变更记录等。发布代码的时候,如果没有把.git这个目录删除,就直接发布到了服务器上,攻击者就可以通过它来恢复源代码。

目录结构是下面这样:

  • HEAD:这个git项目当前处在哪个分支里;
  • config:文件包含项目特有的配置选项,git config命令会改动它;
  • description:项目的描述信息
  • hooks/:系统默认钩子脚本目录
  • info/:目录包含一个全局性排除(global exclude)文件,用以放置不希望被记录在 .gitignore 文件中的忽略模式(ignored patterns)
  • objects/:目录存储所有数据内容 (commits, trees, blobs, tags)
  • refs/:标识你项目里的每个分支指向了哪个提交(commit)。
  • index:文件保存暂存区信息

需要注意的就是HEAD、index、objects、refes这四个条目,在发布代码时若果没有把.git目录删除,直接发布到了运行目录。攻击者就可以通过这个文件夹,用来获取源代码 

漏洞利用:

利用工具:GitHack(一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,重建还原工程源代码。)

2.svn源码泄露

svn泄露原因:SVN是源代码本地管理软件。使用SVN管理本地代码过程中,会生成一个名为.svn的隐藏文件夹,其中包含重要的源码信息。而造成.svn文件泄露的主要原因还是网站管理员在发布代码时,没有使用导出功能,而直接进行复制粘贴。

漏洞利用:

关于.svn源码泄露漏洞利用,如今依照版本不同,也分两种方式。一种是svn>1.7,另一种是svn<1.7

  • • svn>1.7,文件名会被hash,然后再按照文件名对应hash的方式存到wc.db中,就是个sqlite数据库。最后我们按照名称遍历下载即可。
  • • svn<1.7,文件会先去读取entries文件的中的目录结构,因为默认文件名都是直接明文存的。

可通过访问.svn/entries进行判断svn的版本.

3.DS_Store源码泄露:

原因:.DS_Store是Mac OS保存文件夹的自定义属性的隐藏文件,如文件的图标位置或背景色,相当于Windows的desktop.ini。
由于开发人员发布代码时未删除文件夹中隐藏的.DS_store,可能造成文件目录结构泄漏、源代码文件等敏感信息的泄露。

漏洞利用:

我们可以通过直接访问url+/.ds_store来判断是否存在此漏

4.网站备份源码存在泄露

原因:在网站正常使用中,往往需要经过修改和升级,这时就需要对网站或对某处数据进行备份。而备份文件会因为各种原因保存在网站web目录下,而当对此目录没有访问权限限制时,就很可能会导致备份或缓存文件被下载下来。
该漏洞往往会导致服务器整站源代码或者部分页面的源代码被下载,利用。源代码中所包含的各类敏感信息,如服务器数据库连接信息,服务器配置信息等会因此而泄露,造成巨大的损失

漏洞利用:

像备份压缩文件泄露,可以直接用专门的目录扫描工具进行敏感文件扫描
利用工具:御剑、disearch.py

5.WEB-INF/web.xml泄露

漏洞成因

概念:WEB-INF是Java的WEB应用的安全目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

  • • /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则
  • • /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
  • • /WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
  • • /WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
  • • /WEB-INF/database.properties:数据库配置文件

WEB-INF/web.xml泄露的起因就是我们在使用网络架构的时候,对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取。 

6.cvs源码泄露

漏洞原因:

cvs项目在初始化(cvs checkout project)的时候, 会在project目录下创建一个名为CVS的目录,
其中保存了各个文件的修改和commit记录. 通过此目录可以获取代码的历史版本. 其中两个关键文件为:
CVS/Root和CVS/Entries, 分别记录了项目的根信息和所有文件的结构

漏洞利用:

主要是针对 CVS/Root以及CVS/Entries目录,直接就可以看到泄露的信息。

7. .hg源码泄露

原因:Mercurial 是一种轻量级分布式版本控制系统,
使用hg init 新建仓库的时候,会生成一个备份文件.hg。当然也存在着泄露问题,不过较为少见 ,关于这个.hg文件泄露,网上的示例也很少,暂时还没有找到合适的呈现给大家 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二十四节气是中国传统的时间划分方式,与农事活动和天文现象关联密切。在现代的Web代码开发中,我们可以借用二十四节气的概念来描述一套高效的开发流程。下面以一个典型的Web代码开发项目为例,来解释二十四节Web代码的意义。 1. 立春:项目准备阶段,确定项目的需求和目标,制定项目计划和时间表。 2. 雨水:进行用户需求调研,收集和整理用户反馈,确定优化和改进的方向。 3. 惊蛰:项目启动,搭建开发环境,开始编写代码。 4. 春分:进行代码审核和测试,确保代码质量和功能完整性。 5. 清明:清理和优化代码,清除冗余和无用的代码,提升代码性能和可读性。 6. 谷雨:进行功能性测试,确保各项功能的正常工作。 7. 立夏:进行用户界面的设计和开发,提供良好的用户体验。 8. 小满:进行性能测试和优化,确保系统能够承受高并发和大数据量的访问。 9. 芒种:进行安全性测试,保护用户数据和系统免受恶意攻击。 10. 夏至:进行部署和上线,将代码正式发布到生产环境。 11. 小暑:监测系统运行情况,及时解决出现的问题和错误。 12. 大暑:收集和分析用户使用数据,获取反馈并进行优化和改进。 13. 立秋:进行版本迭代和升级,添加新功能和修复已知问题。 14. 处暑:进行系统维护和性能优化,确保系统运行平稳和高效。 15. 白露:进行数据备份和恢复测试,确保数据的安全性和可靠性。 16. 秋分:进行代码重构和优化,提升系统的可维护性和扩展性。 17. 寒露:进行跨平台和跨浏览器测试,确保系统在不同环境下都能正常运行。 18. 霜降:进行灾难恢复和应急备案,准备应对系统故障和数据丢失的情况。 19. 立冬:进行代码性能分析和调优,提升系统的响应速度和效率。 20. 小雪:进行安全漏洞扫描和修复,确保系统不受到黑客攻击和数据泄露。 21. 大雪:进行用户反馈调研和用户体验改进,满足用户需求和期望。 22. 冬至:进行系统整体评估,总结项目经验教训,准备下一阶段的开发计划。 23. 小寒:进行持续集成和自动化测试,提升开发效率和代码质量。 24. 大寒:进行代码版本控制和文档整理,确保代码的可追溯性和可维护性。 通过以上二十四节Web代码的划分,可以使开发团队在项目开发过程中有一个清晰的时间轴和任务安排,从而提高项目开发效率和代码质量,最终实现一个高效、稳定和安全的Web应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值