Gh Actions - Context Script Injections

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Основна Інформація

Зверніть увагу, що існують певні контексти github, значення яких контролюються користувачем, який створює PR. Якщо github action використовує ці дані для виконання будь-чого, це може призвести до виконання довільного коду. Ці контексти зазвичай закінчуються на body, default_branch, email, head_ref, label, message, name, page_name,ref та title. Наприклад (список з цього опису):

  • github.event.comment.body

  • github.event.issue.body

  • github.event.issue.title

  • github.head_ref

  • github.pull_request.*

  • github.*.*.authors.name

  • github.*.*.authors.email

Зверніть увагу, що є менш очевидні джерела потенційно ненадійного вводу, такі як назви гілок та адреси електронної пошти, які можуть бути досить гнучкими щодо дозволеного вмісту. Наприклад, zzz";echo${IFS}"hello";# може бути дійсною назвою гілки і може бути можливим вектором атаки для цільового репозиторію.

Приклад атаки внедрення скриптів

Атака внедрення скриптів може відбутися безпосередньо в межах вбудованого скрипту робочого процесу. У наступному прикладі дія використовує вираз для перевірки валідності заголовка запиту на витяг, але також додає ризик внедрення скриптів:

- name: Check PR title
run: |
title="${{ github.event.pull_request.title }}"
if [[ $title =~ ^octocat ]]; then
echo "PR title starts with 'octocat'"
exit 0
else
echo "PR title did not start with 'octocat'"
exit 1
fi

Перед тим як виконується shell-сценарій, вирази всередині ${{ }} оцінюються і потім замінюються отриманими значеннями, що може зробити його уразливим для впровадження команд оболонки.

Для впровадження команд у цей робочий процес атакувальник може створити запит на злиття з заголовком a"; ls $GITHUB_WORKSPACE"

У цьому прикладі символ " використовується для переривання виразу title="${{ github.event.pull_request.title }}", що дозволяє виконати команду ls на виконавчому пристрої.

Last updated