学习笔记-信息泄露

前面的话

信息泄露是CTF中很常考察的一项,要么在网页源代码给出提示,要么干脆不给提示,需要自己去猜有没有存在信息泄露的可能性。一年前做题的时候都没有这种信息泄露的意识,遇到很多应该拿源码的题目都没有拿到,直接卡死,导致一直踩坑。

常见寻找信息泄露漏洞的方式有两种,一种是通过扫描工具,例如御剑等等,或者写个脚本跑个字典,扫描网站中可能存在的信息泄露目录;还有一种是直接手工查找一些可能性比较大的文件,例如git等等,再针对性的得到自己想要的信息。

敏感目录泄露

git泄露

git泄露是比较主流的漏洞,git是分布式版本控制系统,开发者1在开发过程中没有删除.git文件夹,攻击者可以通过.git文件夹中的信息获取开发者提交的所有源码。

常规.git泄露

参赛者通过运行工具或者脚本直接获得源码或flag。

工具:scrabble

git回滚

git会记录每次提交(commit)的修改,当题目存在git泄露时,flag可能被修改或者被覆盖了,可以利用 git 的 git reset 命令来恢复到以前的版本。

$ git reset --hard HEAD^

在 git 中,用 HEAD 表示当前版本,用 HEAD^ 表示上一个版本。

或者使用 $git log -stat 命令查看每次提交修改了哪些文件,再用 $git diffHEAD commit-id 比较在当前版本与想查看的 commit 之间的变化。

git分支

当需要的flag没有在当前分支中,需要切换分支找到自己想要的文件。

工具:GitHacker

基本命令:

$ python GitHacker.py http://example.com/.git/

本地生成文件夹后,进入执行命令 $ git log --all 或者 $ git branch -v 命令,只能看到 master 分支的信息,如果执行 $ git reflog 命令,可以看到 checkout 记录。

可以看到其他分支,手动下载其他分支的head信息(例如secret分支):

$ wget http://example.com/.git/refs/heads/secret

恢复后,再用 $ git fsck 检测,继续下载缺失的文件。

SVN泄露

SVN是开放源代码版本管理系统。同.git一致,由于管理员操作不规范将 .svn/entries 或 wc.db 暴露,从而获得源码。

工具:Seay-svn、dvcs-ripper

HG泄露

Mercurial 是一种轻量级分布式版本控制系统,使用 hg init的时候会生成.hg。

工具:dvcs-ripper

rip-hg.pl -v -u http://www.example.com/.hg/

CVS泄露

CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。主要是针对 CVS/Root以及CVS/Entries目录,直接就可以看到泄露的信息。

http://url/CVS/Root 返回根信息 
http://url/CVS/Entries 返回所有文件的结构

工具:dvcs-ripper

rip-cvs.pl -v -u http://www.example.com/CVS/

Bazaar/bzr泄露

bzr也是个版本控制工具, 虽然不是很热门, 但它也是多平台支持, 并且有不错的图形界面。

工具:dvcs-ripper

rip-bzr.pl -v -u http://www.example.com/.bzr/

WEB-INF/web.xml 泄露

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

WEB-INF 主要包含一下文件或目录:

WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则.
WEB-INF/database.properties : 数据库配置文件
WEB-INF/classes/ : 一般用来存放Java类文件(.class)
WEB-INF/lib/ : 用来存放打包好的库(.jar)
WEB-INF/src/ : 用来放源代码(.asp和.php等)

通过找到 web.xml 文件,推断 class 文件的路径,最后直接 class 文件,再通过反编译 class 文件,得到网站源码。

敏感备份文件

网站备份压缩文件

管理员将网站源代码备份在Web目录下,攻击者通过猜解文件路径,下载备份文件,导致源代码泄露。

常见的备份文件后缀:

  • .rar
  • .zip
  • .7z
  • .tar.gz
  • .bak
  • .txt
  • .old
  • .temp

这些文件通常以www、index、code等名字开头。

漏洞利用工具:御剑

gedit 备份文件

在Linux下,用gedit编辑器保存后,会在目录下生成后缀为“~”的文件,其文件为编辑过的内容。

vim备份文件

当用户在编辑文件却意外退出的情况下生成备份文件,文件名格式为.filename.swp。

DS_Store 文件

.DS_Store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。如果将.DS_Store上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。

漏洞利用工具:ds_store_exp

ds_store_exp.py http://hd.zj.qq.com/themes/galaxyw/.DS_Store

GitHub源码泄漏

GitHub是一个面向开源及私有软件项目的托管平台。很多人喜欢把自己的代码上传到平台托管,通过关键词进行搜索,可以找到关于目标站点的敏感信息,甚至可以下载网站源码。

https://github.com/search?q=smtp+user+@qq.com&type=code

其他常规文件泄露

  • robots.txt:老考点了,记录目录和CMS版本信息。
  • readme.md:懂的都懂。

参考

常见的Web源码泄漏及其利用

《从0到1》

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇