某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

  • 客户端主题(翻译)

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

  • 实验室做题记录

    • 实验室做题记录
    • 服务器端

      • SQL注入

      • 身份验证

      • 目录遍历

      • OS命令注入

      • 业务逻辑漏洞

      • 信息泄露

        • 学徒-信息泄露-错误消息
        • 学徒-信息泄露-debug页面
        • 学徒-信息泄露-源代码备份文件
        • 学徒-信息泄露-身份验证绕过
        • 从业者-信息泄露-版本控制历史
          • 题目
          • 实操
            • 一些不太好用的工具(效果不理想)
            • 实用的工具
      • 访问控制

      • 文件上传漏洞

      • SSRF漏洞

      • XXE注入漏洞

    • 客户端

    • 高级主题

  • BurpSuite及官方实验室
  • 实验室做题记录
  • 服务器端
  • 信息泄露
clincat
2023-07-06
目录

从业者-信息泄露-版本控制历史

# 实验室:版本控制历史中的信息泄露

# 题目

此实验室存在版本控制历史记录,记录中泄露了敏感信息。要解决实验室问题,请获取administrator用户的密码,然后登录并删除carlos用户。

实验室-从业者

版本控制历史中的信息泄露 >>

- name: 实验室-从业者
  desc: 版本控制历史中的信息泄露 >>
  avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
  link: https://portswigger.net/web-security/information-disclosure/exploiting/lab-infoleak-in-version-control-history
  bgColor: '#001350'
  textColor: '#4cc1ff'
1
2
3
4
5
6

# 实操

根据题意,可得实验目标:

  • 网站存在版本控制历史记录,找到该记录,从记录中获取 administrator 用户的密码,然后在管理面板中删除 carlos 用户。

点击 “ACCESS THE LAB” 进入实验室。

Not Found Image

经过一番测试,发现路径/.git存在源代码泄露。

Not Found Image

但是,源代码以二进制形式保存,无法直接以文本格式查看。

所以,需要通过一些工具来恢复源代码。

Not Found Image

# 一些不太好用的工具(效果不理想)

我在网上找到了很多关于 “.git泄露” 的利用工具,这些工具用起来是挺好的,但是效果不太理想......(个人感觉)

# 其中三个比较流行的(效果基本上一样)
https://github.com/BugScanTeam/GitHack
https://github.com/WangYihang/GitHacker
https://github.com/0xHJK/dumpall
1
2
3
4

以 dumpall 工具为例。

使用 dumpall 对路径https://xxx/.git进行源代码恢复的操作。

Not Found Image

成功复原两个文件admin.conf和admin_panel.php。

Not Found Image

这是 admin_panel.php 文件的内容,输出了一条提示信息,并没有什么作用。

Not Found Image

重点是admin.conf文件的内容,该文件记录了管理员用户的密码。

但是,该文件中的密码部分已经被混淆。

# 原
ADMIN_PASSWORD=明文密码

# 混淆之后
ADMIN_PASSWORD=env('ADMIN_PASSWORD')
1
2
3
4
5
Not Found Image

一番研究,发现这些工具一般都会访问/.git/refs/heads/master文件,以获取历史版本的哈希值。

这些工具获取历史版本号的哈希值之后,会还原该版本下的所有源代码(一般为最新版本)。

除了这个版本之外的,例如旧版本的代码,它们不管......

在该实验室中,最新的版本号为ea2f4d...eb88。

Not Found Image

查看源代码历史记录,发现两个版本号。

  • 初始化时,生成初始版本ba2cc1...64ee,此时管理员密码还在。
  • 然后进行了一次更改,管理员密码被删除,版本更新为ea2f4d...eb88。

而以上的这些工具(例如 dumpall 和 GitHack),它们只会还原最新版本ea2f4d...eb88,也就是密码被删除之后的源代码。

Not Found Image

(那咋办?我想要旧版本的源代码,但是工具只给我还原新版本......)

有以下几种方法:

  • 微调以上工具,使其可以还原旧版本。
  • 下载整个.git目录,然后手动还原旧版本。
  • 找别的工具。

# 实用的工具

幸运的是,找到一篇大佬的文章 (opens new window),发现一个新工具Git_Extract (opens new window)。

# 该工具需要python2
https://github.com/gakki429/Git_Extract
1
2

这个工具可以循环 还原所有版本下的源代码。

Not Found Image

该工具还原了两个相似的文件,admin.conf和admin.conf.21d23f。

通过查看文件内容,admin.conf.21d23f为最新版本的源代码文件,其中的密码已经被删除。

而admin.conf为初始版本的源代码文件,其中包含管理员用户的密码3udpn3n0tuh6usngmm18。

Not Found Image

来到登录界面,输入用户名 administrator ,以及刚刚获得的密码3udpn3n0tuh6usngmm18。

Not Found Image

登录成功,点击 “Admin panel” 进入管理面板。

Not Found Image

点击 “Delete” 删除 carlos 用户。

Not Found Image

删除成功,实验完成。

Not Found Image
编辑 (opens new window)
学徒-信息泄露-身份验证绕过
学徒-垂直权限提升-不受保护的管理功能

← 学徒-信息泄露-身份验证绕过 学徒-垂直权限提升-不受保护的管理功能→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式