web-信息泄露

ZJ Lv100

目录

信息泄露-目录遍历

信息泄露-备份文件下载

信息泄露-PHPINFO

信息泄露-Git泄露

信息泄露-SVN泄露

信息泄露-HG泄露

前言

出自CTFHUB 练习场,比较官方的一个大型练习靶场

信息泄露-目录遍历

打开靶场,看到这样的页面,点进去就是一个个的目录,那我们就先试着手动找找

image-20240914222937043

image-20240914223008793

看着文件不多,一个一个找,然后就会在2-2里面找到flag,点开就是我们的flag了

这里是目录不多,如果目录多的话建议用现呈的工具进行目录遍历,或者手搓一个

image-20240914223207919

信息泄露-备份文件下载

题目-网站源码

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

打开靶场看到有提示网站源码的备份文件信息

image-20240916154942458

而接下来就是添加网站后缀看看有哪些是被备份没删除的

这里提供两种办法

  1. 自己编写脚本实现多线程访问,我提供一个自己写的脚本可以参考一下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    import requests
    from concurrent.futures import ThreadPoolExecutor

    # url为被扫描地址,后不加‘/’
    url1 = 'http://xxx'

    # 常见的网站源码备份文件名
    list1 = ['1', '127.0.0.1', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019',
    '2020', '2021', '2022', '2023', '2024', '2025', 'admin', 'archive', 'asp', 'aspx', 'auth', 'back',
    'backup', 'backups', 'bak', 'bbs', 'bin', 'clients', 'code', 'com', 'customers', 'dat', 'data',
    'database', 'db', 'dump', 'engine', 'error_log', 'faisunzip', 'files', 'forum', 'home', 'html',
    'index', 'joomla', 'js', 'jsp', 'local', 'localhost', 'master', 'media', 'members', 'my', 'mysql',
    'new', 'old', 'orders', 'php', 'sales', 'site', 'sql', 'store', 'tar', 'test', 'user', 'users',
    'vb', 'web', 'website', 'wordpress', 'wp', 'www', 'wwwroot', 'root', 'log', 'web', 'website',
    'backup', 'back', 'www', 'wwwroot', 'temp']
    # 常见的网站源码备份文件后缀
    list2 = ['.zip', '.rar', '.tar.gz', '.tgz', '.tar.bz2', '.tar', '.jar', '.war', '.7z', '.bak', '.sql',
    '.gz', '.sql.gz', '.tar.tgz']
    # 定义一个函数来进行请求,并检查状态码
    def check_url(file_name):
    url = f"{url1}/{file_name}"
    try:
    response = requests.get(url)
    if response.status_code == 200:
    print(f"{file_name}\n", end='')
    except requests.exceptions.RequestException as e:
    print(f"Error accessing {url}: {e}")

    # 使用多线程执行URL请求
    def scan_backup_files():
    with ThreadPoolExecutor(max_workers=50) as executor: # 创建50个线程
    # 构造所有的文件名并提交给线程池
    for i in list1:
    for j in list2:
    back = f"{i}{j}" # 组合文件名
    executor.submit(check_url, back)

    # 运行扫描
    print("能够访问到的网站后缀有:")
    scan_backup_files()
  2. 用开源工具进行访问ihoneyBakFileScan_Modify

扫描完会发现能访问到www.zip文件,下载下来后有flag文件

image-20240917142347669

直接打开没有,就在网页访问看看

image-20240917142416724

image-20240916155518068

恭喜,访问成功!拿到flag。

题目-bak文件

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

打开靶场看到提示说flag文件在index.php中,结合题目说明这个文件被备份到.bak文件了,所以我们尝试访问index.php.bak,发现能有文件被下载,打开文件就可以看到flag了

image-20240916160032682

image-20240916160059293

题目-vim缓存

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

vim缓存时linux里面的缓存隐藏文件

打开靶场,根据题目和看到提示flag在index.php里面,php文件肯定以vim的形式备份了,所以我们以vim缓存文件恢复即可,所以 /.index.php.swp 直接下载

隐藏文件,记得加点访问

image-20240917171052845

vim的备份文件后缀位.swp,并且需要用vim 文件名(无.swp)来重新访问,windows直接打开是16进制的,更换编码格式为UTF-8,或者用linux系统打开

打开后就可以找到flag了

image-20240917172655327

题目-.DS_Store

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

打开靶场,看到备份文件下载,直接加.DS_Store访问,得到一个下载文件

image-20240917173751838

文件需要在linux系统打开,或者在windows系统用UTF-8/UTF-16格式打开

image-20240917174419780

发现一串文件名,在靶场中访问看看

image-20240917174533485

image-20240917174538337

成功得到flag!

信息泄露-PHPINFO

打开靶场,看到这样的页面,点进去就是phpinfo的信息,也许我们要的flag就藏在里面

image-20240914223800500

image-20240914223835290

在页面上用ctrl+F搜索功能,搜索flag,即可找到我们要的flag

image-20240914223931169

信息泄露-Git泄露

题目-Log

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

根据题目提示,提前准备工具需要用到GitHack

打开靶场,页面上很空白,根据题目进行.git文件泄露的恢复操作

image-20240912213108044

尝试在网址后面添加/.git/,查看是否网页403或者其他特殊情况,方便我们直接用工具恢复,显然这道题没那么简单

image-20240912213235037

接下来用网站目录扫描工具,这里用的dirsearch (可以用御剑等等)

1
python dirsearch.py -u 目标地址

image-20240912213718118

不用扫描完,扫描到确实有.git的存在,我们就可以试试用工具恢复

image-20240912213911928

在工具包目录下面生成了一些文件

image-20240912213948091

image-20240912214334276

但是并没有什么有价值的文件,也没有.git文件

这是一个坑,要用另一个GitHack.py,并且在python2的环境才可以,建议在kali下运行

https://github.com/lijiejie/GitHack 用于python3,但恢复效果一般

https://github.com/BugScanTeam/GitHack 用于python2,效果不错

1
python2 GitHack.py 目标地址/.git

image-20240912215937518

image-20240912220043425

既然有.git,根据题目来看,可以通过查看日志获得一些信息,kali环境自带git,其他没有git环境的需要自己下载

1
git log

image-20240912220103402

通过观察上面的日志信息,可以发生在第二次修改时add flag,说明我们所要的flag就在第二次修改时加入文件中,使用git reset版本回退命令来查看flag

1
git reset --hard 对应版本的commit

image-20240912220806774

最终我们通过.git文件泄露,回退版本得到了flag

题目-Stash

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

与log文件的恢复相同,仅有一点变化

打开靶场,用工具GitHack 进行.git文件恢复

1
python2 GitHack.py http://你的靶场地址/.git

进入dist内生成的文件,输入

1
2
git stash list
git stash pop

image-20240917180019024

成功恢复一个.txt文件,打开就可以得到flag

image-20240917180115597

题目-Index

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

与前面也是一样的

打开靶场,用工具GitHack 进行.git文件恢复

1
python2 GitHack.py http://你的靶场地址/.git

恢复后进入文件夹直接

1
git show

flag就出来了

image-20240917180700233

信息泄露-SVN泄露

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

这个题目虽然与git泄露类似,但因为是svn,所以恢复起来没那么常见,这个也是看了CSDN上面的WP参考做的,初学者遇到完全没思路或者已经行不通的时候就多去网上找找资料,慢慢培养能力

根据题目需要提前准备工具SVNExploit

打开靶场看到和题目提示一样,是一个SVN泄露

image-20240913005004198

使用工具检测目标是否存在SVN泄露(例行检查)

1
python SvnExploit.py -u 目标地址/.svn

初次使用会有报错,下载pip包就可以

或者直接在kali里面使用工具,kali里面的py包很全面

1
pip install prettytable -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

image-20240913005735686

再次运行之后可以看到有结果输出,证明有svn泄露

image-20240913005921606

在原来的命令后面加上--dump参数,把源码下载下来

1
python SvnExploit.py -u 目标地址/.svn --dump

image-20240913010130190

恢复的文件有一个wc.db,是一个数据库文件,可以查看到文件索引

image-20240913012737667

使用curl命令访问可以文件检查网页源代码是否存在flag,检查均返回404

1
2
curl http://challenge-2465e7edfc335d47.sandbox.ctfhub.com:10800/index.html13523.txt
curl http://challenge-2465e7edfc335d47.sandbox.ctfhub.com:10800/flag_135183523.txt

根据上面所示,并没有flag文件,也确实没有直接被下载下来,毕竟题上也写了是在旧版本里面,所以使用其他工具进行还原

dvsc-ripper 这个工具需要很多环境和包,所以建议在kali里面执行

进入kali,安装工具所需依赖库

1
sudo apt-get install perl libio-socket-ssl-perl libdbd-sqlite3-perl libclass-dbi-perl libio-all-lwp-perl

安装完后,进入到工具目录,执行

1
./rip-svn.pl -v -u 目标地址/.svn 

image-20240913011925973

既然是svn文件,那就会在.svn目录下面,低版本SVN具体路径为text-base目录,高版本SVN为pristine目录,然后层层往下查找,中途肯定会有找不到的时候,可以将文件放到实体机,用文件内容搜索工具搜索flag

image-20240913012313165

最后flag被找出来,又解决了一道题

信息泄露-HG泄露

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

打开靶场,这道题比较陌生,所以需要参考其他资料来完成CTFHUB技能树(全详细解析含进阶)-CSDN博客

image-20240917181428325

根据资料也是和.SVN一样的恢复方式

使用工具,dvsc-ripper 这个工具需要很多环境和包,所以建议在kali里面执行

进入kali,安装工具所需依赖库

1
sudo apt-get install perl libio-socket-ssl-perl libdbd-sqlite3-perl libclass-dbi-perl libio-all-lwp-perl

安装完后,进入到工具目录,执行

1
./rip-hg.pl -v -u 地址/.hg/

image-20240917182029336

进入.hg文件,深度查找flag文件

image-20240917182149228

回到靶场添加目录文件即可得到flag

image-20240917182221366

image-20240917182227738

总结

做题时要根据题目来做题,半做半猜,不要盲目乱入手

在实际做题时会遇到各种坑,需要多花耐心慢慢琢磨(由于本人也是新手,花了好些时间搞这节。。。)

题目在这里 路径为web->信息泄露

  • Title: web-信息泄露
  • Author: ZJ
  • Created at : 2024-09-14 00:00:00
  • Updated at : 2024-12-11 01:20:52
  • Link: https://blog.overlordzj.cn/2024/09/14/ctf/writeup/web/ctfhub/信息泄露/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments