Gh Actions - Context Script Injections
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Note que hay ciertos contextos de github cuyos valores son controlados por el usuario que crea el PR. Si la acción de github está usando esos datos para ejecutar algo, podría llevar a ejecución de código arbitrario. Estos contextos típicamente terminan con body
, default_branch
, email
, head_ref
, label
, message
, name
, page_name
,ref
, y title
. Por ejemplo (lista de este escrito):
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 aquí hay fuentes menos obvias de entrada potencialmente no confiable, como nombres de ramas y direcciones de correo electrónico, que pueden ser bastante flexibles en términos de su contenido permitido. Por ejemplo, zzz";echo${IFS}"hello";#
sería un nombre de rama válido y sería un posible vector de ataque para un repositorio objetivo.
Un ataque de inyección de script puede ocurrir directamente dentro del script en línea de un flujo de trabajo. En el siguiente ejemplo, una acción utiliza una expresión para probar la validez de un título de pull request, pero también añade el riesgo de inyección de script:
Antes de que se ejecute el script de shell, las expresiones dentro de ${{ }}
son evaluadas y luego sustituidas por los valores resultantes, lo que puede hacer que sea vulnerable a la inyección de comandos de shell.
Para inyectar comandos en este flujo de trabajo, el atacante podría crear una solicitud de extracción con un título de a"; ls $GITHUB_WORKSPACE"
En este ejemplo, el carácter "
se utiliza para interrumpir la declaración title=
"${{ github.event.pull_request.title }}"
, permitiendo que se ejecute el comando ls
en el runner.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)