Gh Actions - Context Script Injections

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Informações Básicas

Note que existem certos contextos do github cujos valores são controlados pelo usuário que cria o PR. Se a ação do github estiver usando esses dados para executar algo, isso pode levar a execução arbitrária de código. Esses contextos geralmente terminam com body, default_branch, email, head_ref, label, message, name, page_name,ref e title. Por exemplo (lista deste relato):

  • github.event.comment.body

  • github.event.issue.body

  • github.event.issue.title

  • github.head_ref

  • github.pull_request.*

  • github.*.*.authors.name

  • github.*.*.authors.email

Note que há fontes menos óbvias de entrada potencialmente não confiável, como nomes de branches e endereços de email, que podem ser bastante flexíveis em termos de conteúdo permitido. Por exemplo, zzz";echo${IFS}"hello";# seria um nome de branch válido e seria um possível vetor de ataque para um repositório alvo.

Exemplo de um ataque de injeção de script

Um ataque de injeção de script pode ocorrer diretamente dentro do script inline de um workflow. No exemplo a seguir, uma ação usa uma expressão para testar a validade de um título de pull request, mas também adiciona o risco de injeção de script:

- 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

Antes de o script shell ser executado, as expressões dentro de ${{ }} são avaliadas e substituídas pelos valores resultantes, o que pode torná-lo vulnerável a injeção de comandos shell.

Para injetar comandos neste workflow, o atacante poderia criar um pull request com um título de a"; ls $GITHUB_WORKSPACE"

Neste exemplo, o caractere " é usado para interromper a declaração title="${{ github.event.pull_request.title }}", permitindo que o comando ls seja executado no runner.

Aprenda hacking em AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Última actualización