从入门到精通:GTFOBins二进制文件贡献全指南

从入门到精通:GTFOBins二进制文件贡献全指南

【免费下载链接】GTFOBins.github.io GTFOBins is a curated list of Unix binaries that can be used to bypass local security restrictions in misconfigured systems 【免费下载链接】GTFOBins.github.io 项目地址: https://gitcode.com/gh_mirrors/gt/GTFOBins.github.io

你是否曾在安全测试中遇到过系统限制却找不到合适的绕过方法?是否希望将自己发现的Unix二进制文件利用技巧分享给全球安全社区?本文将带你一步步完成GTFOBins项目的贡献流程,从文件结构到PR提交,让你的发现帮助更多安全从业者突破限制。读完本文,你将掌握YAML格式规范、功能分类标准和PR审核要点,成为开源安全知识库的贡献者。

项目背景与贡献价值

GTFOBins是一个精心策划的Unix二进制文件列表,记录了如何在配置错误的系统中绕过本地安全限制。该项目位于gh_mirrors/gt/GTFOBins.github.io,旨在为安全测试人员和系统管理员提供实用的权限提升参考。

每个贡献都能增强社区对系统安全的理解。例如,当你添加一个新的二进制文件利用方法时,实际上是在帮助全球安全从业者应对类似的配置问题。项目的核心价值在于集体智慧的积累,正如CONTRIBUTING.md中所述,社区贡献是项目持续发展的动力。

贡献前的准备工作

在开始贡献前,请确保你已经:

  1. 熟悉Git版本控制工具的基本操作
  2. 了解YAML(Yet Another Markup Language)格式规范
  3. 验证过你要提交的利用方法在至少一种现代Unix系统上有效

项目提供了详细的贡献说明文件contribute.md,建议在开始前仔细阅读。该文件概述了整个贡献流程和质量标准,是确保你的PR能够顺利通过审核的重要参考。

文件结构与规范

GTFOBins项目采用清晰的目录结构组织内容,主要贡献涉及以下关键目录和文件:

核心目录结构

GTFOBins.github.io/
├── _gtfobins/          # 所有二进制文件定义存放目录
├── _data/
│   └── functions.yml   # 功能类型定义文件
├── contribute.md       # 贡献指南
└── README.md           # 项目概述

二进制文件定义文件

每个二进制文件的利用方法都以Markdown文件形式存放在_gtfobins/目录中,文件名格式为<binary name>.md。例如:

这些文件仅包含YAML前置 matter,不包含额外的Markdown内容。典型的文件结构如下:

---
description: Bourne-Again SHell (bash) is a sh-compatible shell that incorporates useful features from the Korn shell (ksh) and C shell (csh)
functions:
  shell:
    - code: bash -p
      description: If the binary is allowed to run as superuser by sudo, it does not drop the elevated privileges and may be used to access the file system, escalate or maintain privileged access.
  suid:
    - code: ./bash -p
      description: |
        If the binary has the SUID bit set, it does not drop the elevated privileges and may be abused to access the file system, escalate or maintain privileged access as a SUID backdoor.
---

功能类型详解

_data/functions.yml定义了所有可用的功能类型及其描述。每个二进制文件可以支持多种功能类型,常见的包括:

功能类型标签描述
shellShell可用于生成交互式系统shell以突破限制环境
commandCommand可用于运行非交互式系统命令以突破限制环境
reverse-shellReverse shell可向监听的攻击者发送反向shell以打开远程网络访问
file-readFile read可读取文件,可能用于特权读取或泄露受限文件系统外的文件
suidSUID当二进制文件设置了SUID位时的利用方法
sudoSudo当二进制文件允许通过sudo运行时的利用方法

完整的功能类型列表和详细描述请参考_data/functions.yml文件。

新增二进制文件的步骤

添加新的二进制文件到GTFOBins项目需要完成以下步骤:

1. 创建新文件

_gtfobins/目录中创建一个新的Markdown文件,文件名使用二进制文件的名称,例如mybinary.md

2. 编写YAML内容

按照项目规范编写YAML前置matter,包含以下关键部分:

  • description: 二进制文件的简短描述
  • functions: 一个字典,键为功能类型(来自functions.yml),值为包含codedescription的列表

以下是一个完整的示例:

---
description: MyBinary is a sample utility for demonstration purposes
functions:
  shell:
    - code: mybinary -e '/bin/sh'
      description: Spawns an interactive shell
  file-read:
    - code: mybinary -read /etc/passwd
      description: Reads the contents of /etc/passwd
  suid:
    - code: |
        cp /usr/bin/mybinary .
        chmod u+s ./mybinary
        ./mybinary -e '/bin/sh -p'
      description: Escalate privileges using SUID bit
  sudo:
    - code: sudo mybinary -e '/bin/sh'
      description: Run shell with sudo privileges
---

3. 功能类型选择指南

选择合适的功能类型是确保你的贡献有价值的关键。以下是一些常见功能类型的使用指南:

SUID相关功能类型

SUID相关的功能类型判断较为复杂,取决于二进制文件在不同系统上的行为:

  • suid: 在Ubuntu Linux上运行外部命令时保持SUID权限
  • limited-suid: 在Debian上保持SUID权限,但在Ubuntu Linux上放弃权限
  • 不使用suid-*: 在Debian Linux上放弃权限

判断方法:创建SUID副本并测试权限保持情况

cp /usr/bin/mybinary .
chmod u+s ./mybinary
./mybinary -e '/bin/sh'
文件操作功能类型
  • file-read: 用于读取敏感文件的方法
  • file-write: 用于写入文件的方法(可能用于特权写入)
  • file-upload: 用于通过网络泄露文件的方法
  • file-download: 用于下载远程文件的方法

验证与测试

在提交PR前,务必按照contribute.md中的要求进行充分测试:

  1. 功能验证:确保每个声明的功能在至少一种现代Unix系统上有效
  2. SUID行为测试:在Ubuntu和Debian上分别测试SUID行为
  3. sudo功能测试:验证sudo功能是否在sudo特权上下文中运行外部命令

测试环境建议:

  • Ubuntu最新LTS版本
  • Debian最新稳定版本
  • 目标二进制文件的多个版本(如有可能)

提交Pull Request

完成文件编写和测试后,即可提交PR。请遵循以下最佳实践:

  1. 分支命名:使用有意义的分支名,如add-mybinary
  2. PR标题:简明描述添加的内容,如"Add mybinary with shell and file-read capabilities"
  3. PR描述:包含测试环境、验证步骤和任何特殊注意事项
  4. 单一变更:每个PR只添加一个二进制文件,便于审核

项目维护者会根据contribute.md中定义的标准审核你的PR,通常会在几个工作日内给出反馈。

常见问题与解决方案

为什么我的SUID功能类型被标记为limited-suid?

这通常是因为你的二进制文件在Ubuntu上放弃了SUID权限,但在Debian上保持了权限。根据项目标准,这种情况应使用limited-suid类型。

如何添加新的功能类型?

新功能类型可以通过修改_data/functions.yml文件添加,但此类PR需要项目维护者的仔细审核。建议先在issue中讨论新功能类型的必要性。

我的PR被要求提供更多测试细节怎么办?

提供详细的测试步骤和输出,例如:

测试环境:Ubuntu 22.04 LTS
测试步骤:
1. cp /usr/bin/mybinary .
2. chmod u+s ./mybinary
3. ./mybinary -e '/bin/sh'
4. id
   uid=1000(user) gid=1000(user) euid=0(root) egid=0(root)

总结与后续步骤

通过本文,你已经了解了GTFOBins项目的贡献流程,包括文件结构、YAML格式、功能类型和测试要求。现在,你可以开始:

  1. Fork项目仓库:https://gitcode.com/gh_mirrors/gt/GTFOBins.github.io
  2. 创建新的二进制文件定义
  3. 进行充分测试
  4. 提交PR并参与审核过程

你的每一个贡献都在增强全球安全社区的知识储备。随着项目的不断发展,定期查阅contribute.md_data/functions.yml以了解最新的贡献标准和最佳实践。

祝你的贡献顺利通过审核!

【免费下载链接】GTFOBins.github.io GTFOBins is a curated list of Unix binaries that can be used to bypass local security restrictions in misconfigured systems 【免费下载链接】GTFOBins.github.io 项目地址: https://gitcode.com/gh_mirrors/gt/GTFOBins.github.io

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值