CTFHUB之Web安全—信息泄露

本模块有十道题
目录遍历
phpinfo
备份文件下载(4道)
网站源码
bak文件
vim缓存
.DS_Store
Git泄露
SVN泄露
HG泄露

1、目录遍历

直接一个个目录翻,直到找到一个flag的文件
CTFHUB之Web安全—信息泄露_第1张图片

2、phpinfo

点进去一脸懵逼,全是php版本的描述,页面很长,看下flag会不会藏在里面,搜索下,发现存在flag

3、备份文件下载

网站源码

  • 点击去,页面显示CTFHUB之Web安全—信息泄露_第2张图片

  • 提示:文件后缀 + 备份文件名,这两个有啥子用?

    • 会不会是进行拼凑,得到一个链接下载?
  • 用.py写一个脚本,将题目自带的链接url + 备份文件名 + 备份文件后缀名拼凑在一起,并输出

  • 找到一个状态码为200的链接,进行访问

  • 得到一个压缩包,访问里面带有“flag”的文件,发现为空image.png

  • 换个方式,将文件名平凑在url上,访问下,发现可以

.py代码如下

"""
Author:Lucky_bacon
Tool:Pycham、python3
"""
import requests

url = "http://challenge-b7df70c1e0eafb5c.sandbox.ctfhub.com:10800/"

li1 = ['web', 'website', 'backup', 'back', 'www', 'wwwroot', 'temp']
li2 = ['tar', 'tar.gz', 'zip', 'rar']
for i in li1:
    for j in li2:
        url_final = url + "/" + i + "." + j
        r = requests.get(url_final)
        print(str(r)+"+"+url_final)

bak文件

【问题描述】
当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。

  • 点击链接,看到这条消息 Flag in index.php source code.
    • 它告诉我们flag在index.php里面
  • 将index.php加到链接后面看看,发现没啥用
  • 回去再看看题目,它讲到备份文件是bat,结合上面的话,意思就是bat文件再index.php里面了
  • 马上将index.php.bak加到链接上,发现可行

CTFHUB之Web安全—信息泄露_第3张图片

vim缓存

【题目描述】
当开发人员在线上环境中使用 vim 编辑器,在使用过程中会留下 vim 编辑器缓存,当vim异常退出时,缓存会一直留在服务器上,引起网站源码泄露。

  • 题目搜索
    • vim缓存遗留,是会遗留什么文件——.swp隐藏文件
    • 所以就跟上一道一样,拼凑链接:url + index.php.swp,访问下
    • 发现没啥用,查了下资料,发现.swp是隐藏文件,需要index前加个"."
    • 成功下载到.swp文件,打开访问下,发现乱码
    • CTFHUB之Web安全—信息泄露_第4张图片
    • 这个是vim文件,需要在linux环境下打开,直接导入虚拟机上,并改成隐藏文件,用vim指令访问
    • CTFHUB之Web安全—信息泄露_第5张图片
  • 思考
    • 关键词:备份文件,在index.php
    • 直接拼凑给url,访问下,看下有没有文件
    • 如果是隐藏文件,就在前面加个点号,再访问
    • 下载好的文件,需要判断是在哪里运行,linux还是win,隐藏文件就改成隐藏文件

.DS_Store

【题目描述】
.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单。

  • 跟上一道的隐藏文件swp类似,直接再url后面加上“/.DS_Store ”访问下载文件
  • 拖到linux,使用cat查看,可以得到一串数字
  • image.png
  • 直接访问这个文件就可以了

4、Git泄露

Log

【参考材料】

【问题描述】
当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。请尝试使用BugScanTeam的GitHack完成本题

(1)题目解析

在这里你需要用到一个git泄露脚本工具—— GitHack.py**,**这个脚本可以查找到.git文件上传记录

  1. 先用githack.py还原线上环境的.git文件;
python GitHack.py http://challenge-fc045376d74f3445.sandbox.ctfhub.com:10800/.git
  1. 在收集到的.git文件路径上,使用"git log"指令,查看下git文件上传记录;
  2. 在这里你会发现到有三条记录,分别是初始化init添加flag移除remove
  3. 将“add flag”的commit识别码,用git diff 查看下当前记录“add flag”和上一条记录“init”的差别,也就是有无flag的添加;
(2)个人思考
  • git泄露的原因有哪些?其中的原理是什么?有什么危害?
    • 原因:配置不当,错将git文件部署到线上,原本只需要部署线上运行文件即可
    • 危害
      • Git是一个可以实现有效控制应用版本的系统;
      • 如果一不小心将.git文件泄露出去,攻击者或者黑客可以利用.git文件夹中的所有内容。
      • 如果文件夹中存在敏感信息(数据库账号密码、源码等),
      • 通过白盒的审计等方式就可能直接获得控制服务器的权限和机会!
  • 如何去避免git泄露漏洞
    • 需要避免将.git文件部署到线上环境?
(3)注意事项
  • 在python2环境下使用githack.py脚本
  • 因为我们提前知道了这个环境是存在git泄露漏洞,所以可以直接得出漏洞接口url/.git,并使用githack进行还原git历史版本。
  • 如果我们一开始不知道是git泄露的话,需要使用开源的目录爆破工具dirsearch,这个需要在python3环境下运行,它的作用是通过目录爆破,通过状态码,寻找到一些可能泄露的接口,如果是.git接口泄露,便使用githack.py脚本

Stash

【参考资料】

【问题描述同上】

(1)题目解析
  • 重复了上道题log的解题,发现不行,它返回了个“where is flag?”image.png
  • 回看下题目讲到“Stash”,搜索下,发现Stash与log类似,用于存储所有未提交的修改记录
  • Stash恢复之前的修改记录,一般是使用这两条指令:
    • git stash list——查看存储的记录
    • git stash pop——恢复之前的记录
  • 这时候,便多了一个文件,打开就可以了
(2)个人思考
  • 为什么会出现上道题目,使用git log就可以查到flag,而这次不行,需要用stash查看?其中的原理是什么?
    • 首先你需要理解到,什么是flag?flag代表一种隐私信息;
    • 在log题目中,通过git log即可查到flag,说明进行commit时,私密信息一同上传了;
    • 这一次不可以,说明了在commit环节中没有信息泄露,而是在其他环节泄露了
  • 了解下git上传的步骤
    • 新建库、连接远程库、查看远程库地址正确否+文件状态、文件暂存、提交到版本库、上传
    • 对于的漏洞:
      • log——commit出错
      • stash——在存储指令时出错
      • index——内部文件出错
      • svn——

Index

题目描述同上

超级简单
只需要用githack还原一下git版本就可以获得flag

SVN泄露

【参考材料】

【问题描述】
当开发人员使用 SVN 进行版本控制,对站点自动部署。如果配置不当,可能会将**.svn文件夹直接部署到线上**环境。这就引起了 SVN 泄露漏洞。

(1)题目解析
  • 象征性用dirsearch扫描下url的目录,会发现.svn接口不是5XX,既是该接口存在漏洞
  • 使用dvcs-ripper——perl的版本控制软件信息泄露利用工具,进行svn扫描链接url
    • 指令格式:./rip-svn.pl -v -u http://challenge-2a218a0ce8b75239.sandbox.ctfhub.com:10800/.svn
  • 扫描后,输入ls -al,可以看到一个文件夹.svn
  • 进入.svn文件,点击文件夹pristine(意思是初始文件),会看到有一个文件(名字很长);
  • 利用cat查看即可获得flag
(2)后续

如果要是那么简单就好了,步骤很简单,也就用工具扫一下,进入对应的文件查看,但过程中会遇到各种报错,在这里,我总结下自己报错的点,以及如何解决的

**报错1:Can’t locate LWP.pm in @INC **
这是提醒你:缺少Perl模块的一些东西
解决办法如下

1、输入下面指令 perl -MLWP::Simple -e 1
    如果有内容输出,说明安装了;
    若报错,说明没安装perl,走下一步
2、安装perl:perl -MCPAN -e'install "LWP::Simple"'

报错2:install_driver(SQLite) failed: Can’t locate DBD/SQLite.pm in @INC
这里提醒你:缺少SQLite模块了,需要安装
依次输入下面指令,即可

perl -MCPAN -e shell
install DBD::SQLite
exit
(3)扩展 知识

svn的定义、漏洞形成原因以及解决办法

HG泄露

当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞。

(1)题目解析
  • 使用指令./rip-hg.pl -v -u http://challenge-0d1bfd329d7e5a58.sandbox.ctfhub.com:10800/.hg
  • 查看.hg/store/fncache文件,发现flag文件名
  • 用浏览器访问即可,访问链接url+flag文件名
(2)知识补充
  • Hg泄露原理(Mercurial是一种轻量级分布式版本控制系统)
    • HG在初始化代码库的时候会在当前文件夹下创建一个:.hg隐藏文件夹,
    • 其中包括了代码和分支修改记录等信息,如果直接复制文件夹到web服务器,会把.hg文件夹也发布到线上。

总结

1、信息泄露由4部分组成

  • 目录泄露——现阶段比较少
  • phpinfo函数漏洞
  • 隐藏文件
  • 源码泄露:git、svn、hg

你可能感兴趣的:(CTF,web安全)