Translated ['src/pentesting-cloud/azure-security/az-persistence/az-cloud

This commit is contained in:
Translator
2025-01-26 18:00:15 +00:00
parent 5ed11ee052
commit 33b1eade8b
12 changed files with 83 additions and 81 deletions

View File

@@ -77,6 +77,8 @@ def ref(matchobj):
logger.error(f'Error getting chapter title: {path.normpath(path.join(dir,href))}')
sys.exit(1)
if href.endswith("/README.md"):
href = href.replace("/README.md", "/index.html")
template = f"""<a class="content_ref" href="{href}"><span class="content_ref_label">{title}</span></a>"""

View File

@@ -398,8 +398,8 @@
- [Az - Enumeration Tools](pentesting-cloud/azure-security/az-enumeration-tools.md)
- [Az - Unauthenticated Enum & Initial Entry](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md)
- [Az - OAuth Apps Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-oauth-apps-phishing.md)
- [Az - Storage Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md)
- [Az - VMs Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md)
- [Az - Storage Unauth](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md)
- [Az - VMs Unauth](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md)
- [Az - Device Code Authentication Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
- [Az - Password Spraying](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
- [Az - Services](pentesting-cloud/azure-security/az-services/README.md)

View File

@@ -19,8 +19,8 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
Azure Cloud Shell은 지속적인 저장소와 자동 인증을 통해 Azure 리소스를 관리할 수 있는 명령줄 액세스를 제공합니다. 공격자는 지속적인 홈 디렉토리에 백도어를 배치하여 이를 악용할 수 있습니다:
* **지속적인 저장소**: Azure Cloud Shell의 홈 디렉토리는 Azure 파일 공유에 마운트되며 세션이 종료된 후에도 그대로 유지됩니다.
* **시작 스크립트**: .bashrc와 같은 파일은 각 세션 시작 시 자동으로 실행되어 클라우드 셸이 시작될 때 지속적인 실행을 허용합니다.
* **Persistent Storage**: Azure Cloud Shell의 홈 디렉토리는 Azure 파일 공유에 마운트되며 세션이 종료된 후에도 그대로 유지됩니다.
* **Startup Scripts**: .bashrc와 같은 파일은 각 세션 시작 시 자동으로 실행되어 클라우드 셸이 시작될 때 지속적인 실행을 허용합니다.
Example backdoor in .bashrc:
@@ -50,7 +50,7 @@ GCP 해킹 배우기 및 연습하기: <img src="../../../.gitbook/assets/image
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**를 팔로우하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 을 공유하세요.**
</details>
{% endhint %}

View File

@@ -16,7 +16,7 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
{% endhint %}
## Logic Apps Privesc
SQL 데이터베이스에 대한 자세한 내용은 다음을 확인하세요:
SQL Database에 대한 자세한 정보는 다음을 확인하세요:
{% content-ref url="../az-services/az-logic-apps.md" %}
[az-logic-apps.md](../az-services/az-logic-apps.md)
@@ -50,7 +50,7 @@ az rest \
--headers "Content-Type=application/json"
```
### ("Microsoft.Web/sites/read", "Microsoft.Web/sites/basicPublishingCredentialsPolicies/read", "Microsoft.Web/sites/write", "Microsoft.Web/sites/config/list/action") && ("Microsoft.Web/sites/start/action")
이 권한을 사용하면 ZIP 파일 배포를 통해 Logic App 워크플로를 배포할 수 있습니다. 이러한 권한은 앱 세부정보 읽기, 게시 자격 증명 액세스, 변경 사항 작성 및 앱 구성 나열과 같은 작업을 가능하게 합니다. 시작 권한과 함께 원하는 콘텐츠로 새로운 Logic App을 업데이트하고 배포할 수 있습니다.
이 권한을 사용하면 ZIP 파일 배포를 통해 Logic App 워크플로를 배포할 수 있습니다. 이러한 권한은 앱 세부정보 읽기, 게시 자격 증명 액세스, 변경 사항 작성 및 앱 구성 나열과 같은 작업을 가능하게 합니다. 시작 권한과 함께 원하는 콘텐츠로 새 Logic App을 업데이트하고 배포할 수 있습니다.
{% code overflow="wrap" %}
```bash

View File

@@ -17,7 +17,7 @@ Azure App Services는 개발자가 **웹 애플리케이션, 모바일 앱 백
앱에는 몇 가지 흥미로운 구성 옵션이 있습니다:
- **항상 켜짐**: 앱이 항상 실행되도록 보장합니다. 활성화되지 않은 경우, 앱은 20분 동안 비활성 상태가 되면 실행을 중지하고 요청이 수신되면 다시 시작됩니다.
- **항상 켜짐**: 앱이 항상 실행되도록 보장합니다. 활성화되지 않은 경우, 앱은 20분 동안 비활성 상태가 되면 중지되며 요청이 수신되면 다시 시작됩니다.
- 웹잡이 지속적으로 실행되어야 하는 경우 필수적입니다. 앱이 중지되면 웹잡도 중지됩니다.
- **SSH**: 활성화된 경우, 충분한 권한을 가진 사용자가 SSH를 사용하여 앱에 연결할 수 있습니다.
- **디버깅**: 활성화된 경우, 충분한 권한을 가진 사용자가 앱을 디버깅할 수 있습니다. 그러나 이는 48시간마다 자동으로 비활성화됩니다.
@@ -28,7 +28,7 @@ Azure App Services는 개발자가 **웹 애플리케이션, 모바일 앱 백
## Basic Authentication
웹 앱(및 일반적으로 Azure 함수)을 생성할 때 **기본 인증을 활성화할지 여부**를 지정할 수 있습니다(기본적으로 비활성화됨). 이는 기본적으로 **SCM(소스 제어 관리자) 및 FTP(파일 전송 프로토콜)**를 애플리케이션에 대해 활성화하여 이러한 기술을 사용하여 애플리케이션을 배포할 수 있도록 합니다.
웹 앱(및 일반적으로 Azure 함수)을 생성할 때 **기본 인증을 활성화할지 여부**를 지정할 수 있습니다(기본적으로 비활성화됨). 이는 기본적으로 **SCM(소스 제어 관리자) 및 FTP(파일 전송 프로토콜)**를 애플리케이션에 활성화하여 이러한 기술을 사용하여 애플리케이션을 배포할 수 있도록 합니다.
SCM 및 FTP 서버에 액세스하려면 **사용자 이름과 비밀번호**가 필요합니다. 따라서 Azure는 이러한 플랫폼에 대한 URL과 자격 증명을 얻기 위한 **API를 제공합니다**.
@@ -41,7 +41,7 @@ SCM
Kudu는 **SCM과 웹 및 API 인터페이스를 관리**하여 App Service를 관리하고 Git 기반 배포, 원격 디버깅 및 파일 관리 기능을 제공합니다. 웹 앱에 정의된 SCM URL을 통해 접근할 수 있습니다.
Kudu App Services와 Function Apps에서 사용는 버전 다르며, Function Apps의 버전은 훨씬 더 제한적입니다.
Kudu App Services와 Function Apps에서 사용는 버전 다르며, Function Apps의 버전은 훨씬 더 제한적입니다.
Kudu에서 찾을 수 있는 몇 가지 흥미로운 엔드포인트는 다음과 같습니다:
- `/BasicAuth`: Kudu에 **로그인하기 위해 이 경로에 접근해야 합니다**.
@@ -72,12 +72,12 @@ App Services는 기본적으로 코드를 zip 파일로 업로드할 수 있지
Azure WebJobs는 **Azure App Service 환경에서 실행되는 백그라운드 작업**입니다. 개발자가 웹 애플리케이션과 함께 스크립트나 프로그램을 실행할 수 있도록 하여 파일 처리, 데이터 처리 또는 예약된 작업과 같은 비동기 또는 시간 집약적인 작업을 더 쉽게 처리할 수 있게 합니다.
웹잡에는 2가지 유형이 있습니다:
- **지속적**: 무한 루프에서 실행되며 생성되자마자 트리거됩니다. 지속적인 처리가 필요한 작업에 이상적입니다. 그러나 Always On이 비활성화되어 앱이 20분 동안 요청을 받지 않으면 웹잡도 중지됩니다.
- **지속적**: 무한 루프에서 실행되며 생성되자마자 트리거됩니다. 지속적인 처리가 필요한 작업에 이상적입니다. 그러나 Always On이 비활성화되어 있고 지난 20분 동안 요청을 받지 않으면 앱이 중지되므로 웹잡도 중지됩니다.
- **트리거**: 필요에 따라 또는 일정에 따라 실행됩니다. 배치 데이터 업데이트 또는 유지 관리 루틴과 같은 주기적인 작업에 가장 적합합니다.
웹잡은 환경에서 **코드를 실행**하고 연결된 관리 ID에 대한 **권한 상승**에 사용할 수 있기 때문에 공격자의 관점에서 매우 흥미롭습니다.
또한, 웹잡에서 생성 **로그**를 확인하는 것도 항상 흥미롭습니다. 로그에는 **민감한 정보**가 포함될 수 있습니다.
또한, 웹잡 생성하는 **로그**를 확인하는 것도 항상 흥미롭습니다. 로그에는 **민감한 정보**가 포함될 수 있습니다.
## Slots
@@ -87,7 +87,7 @@ Azure App Service Slots는 **동일한 App Service에 애플리케이션의 다
## Azure Function Apps
기본적으로 **Azure Function 앱은 Azure App Service의 하위 집합**입니다. 웹 콘솔로 이동하여 모든 앱 서비스를 나열하거나 az cli에서 `az webapp list`를 실행하면 **Function 앱도 나열된 것을 볼 수 있습니다**.
기본적으로 **Azure Function 앱은 Azure App Service의 하위 집합**입니다. 웹 콘솔에 가서 모든 앱 서비스를 나열하거나 az cli에서 `az webapp list`를 실행하면 **Function 앱도 나열된 것을 볼 수 있습니다**.
따라서 두 서비스는 실제로 대부분 **같은 구성, 기능 및 옵션을 az cli에서 가지고 있으며**, 약간 다르게 구성할 수 있습니다(예: appsettings의 기본값 또는 Function 앱에서 스토리지 계정의 사용).
@@ -309,7 +309,7 @@ SCM 포털에 로그인하거나 FTP를 통해 로그인하면 `/wwwroot`에서
../az-privilege-escalation/az-app-services-privesc.md
{{#endref}}
## 참
## 참고 문헌
- [https://learn.microsoft.com/en-in/azure/app-service/overview](https://learn.microsoft.com/en-in/azure/app-service/overview)
- [https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans](https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans)

View File

@@ -1,23 +1,23 @@
# Az - Cloud Shell
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS 해킹 배우기 및 연습하기:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
GCP 해킹 배우기 및 연습하기: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
<summary>HackTricks 지원하기</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**를 팔로우하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
</details>
{% endhint %}
## Azure Cloud Shell
**Azure Cloud Shell** Azure 리소스를 관리하기 위해 설계된 대화형 인증 브라우저 접근 터미널로, Bash 또는 PowerShell 중 하나 작업할 수 있는 유연성을 제공합니다. 이 서비스는 비활성 상태가 20분이 지나면 타임아웃되는 임시 세션 호스트에서 실행되며, $HOME 위치에 5-GB 파일 공유를 사용하여 파일을 유지합니다. Cloud Shell은 Azure 포털, shell.azure.com, Azure CLI 및 PowerShell 문서, Azure 모바일 앱, Visual Studio Code Azure 계정 확장 등 여러 지점을 통해 접근할 수 있습니다.
**Azure Cloud Shell** Azure 리소스를 관리하기 위해 설계된 대화형 인증 브라우저 접근 터미널로, Bash 또는 PowerShell 중 하나를 선택하여 작업할 수 있는 유연성을 제공합니다. 이 서비스는 비활성 상태가 20분이 지나면 타임아웃되는 임시 세션 호스트에서 실행되며, $HOME 위치에 5-GB 파일 공유를 사용하여 파일을 유지합니다. Cloud Shell은 Azure 포털, shell.azure.com, Azure CLI 및 PowerShell 문서, Azure 모바일 앱, Visual Studio Code Azure 계정 확장 등 여러 경로를 통해 접근할 수 있습니다.
이 서비스에는 권한이 할당되지 않으므로 권한 상승 기술이 없습니다. 또한 어떤 종류의 열거도 없습니다.
@@ -25,9 +25,9 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
**환경**: Azure Cloud Shell은 클라우드 인프라를 위해 설계된 Microsoft의 자체 Linux 배포판인 Azure Linux에서 실행되어 안전한 환경을 제공합니다. Azure Linux 리포지토리에 포함된 모든 패키지는 공급망 공격을 방지하기 위해 Microsoft에 의해 내부적으로 컴파일됩니다.
**사전 설치된 도구**: Cloud Shell에는 Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git 및 vim, nano, emacs와 같은 텍스트 편집기와 같은 포괄적인 사전 설치 도구 세트가 포함되어 있습니다. 이러한 도구는 즉시 사용할 수 있습니다. 설치된 패키지 및 모듈을 나열하려면 "Get-Module -ListAvailable", "tdnf list" 및 "pip3 list"를 사용할 수 있습니다.
**$HOME 지속성**: Azure Cloud Shell을 처음 시작할 때, 연결된 스토리지 계정이 있거나 없거나 사용할 수 있습니다. 스토리지를 연결하지 않으면 세션이 종료될 때 파일이 삭제되는 일시적인 세션이 생성됩니다. 세션 간 파일을 유지하려면 스토리지 계정을 마운트해야 하며, 이는 자동으로 **$HOME\clouddrive**로 연결되며, **$HOME** 디렉토리는 Azure File Share에 **.img** 파일로 저장됩니다. 그러나 $HOME 외부의 파일과 머신 상태는 유지되지 않습니다. SSH 키와 같은 비밀을 안전하게 저장하려면 Azure Key Vault를 사용하십시오.
**$HOME 지속성**: Azure Cloud Shell을 처음 시작할 때, 저장소 계정을 연결하거나 연결하지 않고 사용할 수 있습니다. 저장소를 연결하지 않으면 세션이 종료될 때 파일이 삭제되는 일시적인 세션이 생성됩니다. 세션 간 파일을 유지하려면 저장소 계정을 마운트해야 하며, 이는 자동으로 **$HOME\clouddrive**로 연결되며, **$HOME** 디렉토리는 Azure File Share에 **.img** 파일로 저장됩니다. 그러나 $HOME 외부의 파일과 머신 상태는 유지되지 않습니다. SSH 키와 같은 비밀을 안전하게 저장하려면 Azure Key Vault를 사용하세요.
**Azure 드라이브 (Azure:)**: Azure Cloud Shell의 PowerShell에는 Azure 리소스(Compute, Network, Storage 등)를 파일 시스템과 유사한 명령을 사용하여 쉽게 탐색할 수 있는 Azure 드라이브(Azure:)가 포함되어 있습니다. cd Azure:로 Azure 드라이브로 전환하고 cd ~로 홈 디렉토리로 돌아갈 수 있습니다. 여전히 Azure PowerShell cmdlet을 사용하여 모든 드라이브에서 리소스를 관리할 수 있습니다.
**사용자 정의 도구 설치**: 스토리지 계정으로 Cloud Shell을 구성한 사용자는 루트 권한이 필요하지 않은 추가 도구를 설치할 수 있습니다. 이 기능은 Cloud Shell 환경을 추가로 사용자 정의할 수 있게 하여 사용자가 특정 요구에 맞게 설정을 조정할 수 있도록 합니다.
**사용자 정의 도구 설치**: 저장소 계정으로 Cloud Shell을 구성한 사용자는 루트 권한이 필요하지 않은 추가 도구를 설치할 수 있습니다. 이 기능은 Cloud Shell 환경을 추가로 사용자 정의할 수 있게 하여 사용자가 특정 요구에 맞게 설정을 조정할 수 있도록 합니다.
## 참조
@@ -43,16 +43,16 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
{% endcontent-ref %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS 해킹 배우기 및 연습하기:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
GCP 해킹 배우기 및 연습하기: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
<summary>HackTricks 지원하기</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**를 팔로우하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
</details>
{% endhint %}

View File

@@ -17,11 +17,11 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).p
## Azure CosmosDB
**Azure Cosmos DB**는 단일 밀리초 응답 시간, 자동 확장성 및 기업 수준의 보안이 보장된 SLA 기반 가용성을 제공하는 완전 관리형 **NoSQL, 관계형 및 벡터 데이터베이스**입니다. 이는 다중 지역 데이터 배, 오픈 소스 API, 인기 있는 언어를 위한 SDK 및 통합 벡터 지원과 원활한 Azure AI 통합과 같은 AI 데이터베이스 기능을 통해 더 빠른 앱 개발을 가능하게 합니다.
**Azure Cosmos DB**는 단일 밀리초 응답 시간, 자동 확장성 및 기업 수준의 보안이 보장된 SLA 기반 가용성을 제공하는 완전 관리형 **NoSQL, 관계형 및 벡터 데이터베이스**입니다. 이는 다중 지역 데이터 배, 오픈 소스 API, 인기 있는 언어를 위한 SDK 및 통합 벡터 지원과 원활한 Azure AI 통합과 같은 AI 데이터베이스 기능을 통해 더 빠른 앱 개발을 가능하게 합니다.
Azure Cosmos DB는 문서, 관계형, 키-값, 그래프 및 열 패밀리 데이터 모델을 사용하여 실제 데이터를 모델링하기 위한 여러 데이터베이스 API를 제공합니다. 이 API는 NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin 및 Table입니다.
CosmosDB의 주요 측면 중 하나는 Azure Cosmos Account입니다. **Azure Cosmos Account**는 데이터베이스에 대한 진입점 역할을 합니다. 계정은 글로벌 배, 일관성 수준 및 사용할 특정 API(예: NoSQL)와 같은 주요 설정을 결정합니다. 계정을 통해 여러 지역에서 데이터에 대한 저지연 액세스를 보장하기 위해 글로벌 복제를 구성할 수 있습니다. 또한 성능과 데이터 정확성 간의 균형을 맞추는 일관성 수준을 선택할 수 있으며, 강력한 일관성에서 최종 일관성까지의 옵션이 있습니다.
CosmosDB의 주요 측면 중 하나는 Azure Cosmos Account입니다. **Azure Cosmos Account**는 데이터베이스에 대한 진입점 역할을 합니다. 계정은 글로벌 배, 일관성 수준 및 사용할 특정 API(예: NoSQL)와 같은 주요 설정을 결정합니다. 계정을 통해 여러 지역에서 데이터에 대한 저지연 액세스를 보장하기 위해 글로벌 복제를 구성할 수 있습니다. 또한 성능과 데이터 정확성 간의 균형을 맞추는 일관성 수준을 선택할 수 있으며, 강력한 일관성에서 최종 일관성까지의 옵션이 제공됩니다.
### NoSQL (sql)
Azure Cosmos DB NoSQL API는 JSON을 데이터 형식으로 사용하는 문서 기반 API입니다. JSON 객체를 쿼리하기 위한 SQL 유사 쿼리 구문을 제공하여 구조화된 데이터 및 반구조화된 데이터 작업에 적합합니다. 서비스의 엔드포인트는 다음과 같습니다:
@@ -36,7 +36,7 @@ https://<Account-Name>.documents.azure.com:443/
계정 내에서 하나 이상의 데이터베이스를 생성할 수 있으며, 이는 컨테이너의 논리적 그룹으로 작용합니다. 데이터베이스는 리소스 관리 및 사용자 권한의 경계 역할을 합니다. 데이터베이스는 컨테이너 간에 프로비저닝된 처리량을 공유하거나 개별 컨테이너에 전용 처리량을 할당할 수 있습니다.
#### 컨테이너
데이터 저장의 핵심 단위는 컨테이너로, JSON 문서를 보유하고 있으며 효율적인 쿼리를 위해 자동으로 인덱싱됩니다. 컨테이너는 탄력적으로 확장 가능하며, 사용자 정의 파티션 키에 의해 결정 파티션에 분산됩니다. 파티션 키는 최적의 성능과 고른 데이터 분포를 보장하는 데 중요합니다. 예를 들어, 컨테이너는 고객 데이터를 저장할 수 있으며, "customerId"가 파티션 키로 사용될 수 있습니다.
데이터 저장의 핵심 단위는 컨테이너로, JSON 문서를 보유하고 있으며 효율적인 쿼리를 위해 자동으로 인덱싱됩니다. 컨테이너는 탄력적으로 확장 가능하며, 사용자 정의 파티션 키에 의해 결정되는 파티션에 분산됩니다. 파티션 키는 최적의 성능과 고른 데이터 분포를 보장하는 데 중요합니다. 예를 들어, 컨테이너는 고객 데이터를 저장할 수 있으며, "customerId"가 파티션 키로 사용될 수 있습니다.
#### 열거
@@ -347,7 +347,7 @@ print(f"Inserted document with ID: {result.inserted_id}")
## ToDo
* 여기 DB의 나머지 부분, 테이블, 카산드라, 그렘린...
* 여기 DB의 나머지, 테이블, 카산드라, 그렘린...
* 포스트 익스플로잇 "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" 및 역할 정의를 살펴보세요. 여기서 권한 상승이 있을 수 있습니다.
* 복원 사항을 살펴보세요.
@@ -363,7 +363,7 @@ GCP 해킹 배우고 연습하기: <img src="../../../.gitbook/assets/image (2)
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**를 팔로우하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 을 공유하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
</details>
{% endhint %}

View File

@@ -4,7 +4,7 @@
## 기본 정보
**Azure Function Apps**는 **서버리스 컴퓨트 서비스**로, 기본 인프라를 관리하지 않고도 **함수**라고 불리는 작은 코드 조각을 실행할 수 있게 해줍니다. 이들은 **HTTP 요청, 타이머 또는 Blob Storage나 Event Hubs와 같은 다른 Azure 서비스의 이벤트**와 같은 다양한 트리거에 응답하여 코드를 실행하도록 설계되었습니다. Function Apps는 C#, Python, JavaScript, Java 여러 프로그래밍 언어를 지원하여 **이벤트 기반 애플리케이션**, 워크플로 자동화 또는 서비스 통합을 구축하는 데 유용합니다. 일반적으로 코드가 실행될 때 사용된 컴퓨트 시간에 대해서만 비용을 지불하므로 비용 효율적입니다.
**Azure Function Apps**는 **서버리스 컴퓨트 서비스**로, 기본 인프라를 관리하지 않고도 **함수**라고 불리는 작은 코드 조각을 실행할 수 있게 해줍니다. 이들은 **HTTP 요청, 타이머 또는 Blob Storage나 Event Hubs와 같은 다른 Azure 서비스의 이벤트**와 같은 다양한 트리거에 응답하여 코드를 실행하도록 설계되었습니다. Function Apps는 C#, Python, JavaScript, Java를 포함한 여러 프로그래밍 언어를 지원하여 **이벤트 기반 애플리케이션**, 워크플로 자동화 또는 서비스 통합을 구축하는 데 유용합니다. 일반적으로 코드가 실행될 때 사용된 컴퓨트 시간에 대해서만 비용을 지불하므로 비용 효율적입니다.
> [!NOTE]
> **Functions는 App Services의 하위 집합**이므로, 여기서 논의된 많은 기능은 Azure Apps(`webapp` in cli)로 생성된 애플리케이션에서도 사용됩니다.
@@ -15,7 +15,7 @@
- **Traditional Consumption Plan**: 기본 서버리스 옵션으로, **함수가 실행될 때만 컴퓨트 리소스에 대해 지불**합니다. 수신 이벤트에 따라 자동으로 스케일링되며 **콜드 스타트 최적화**가 포함되어 있지만, 컨테이너 배포는 지원하지 않습니다. 자동 스케일링이 필요한 **간헐적 작업 부하**에 이상적입니다.
- **Premium Plan**: **일관된 성능**을 위해 설계되었으며, 콜드 스타트를 없애기 위해 **사전 예열된 작업자**를 제공합니다. **연장된 실행 시간, 가상 네트워킹**을 제공하며 **사용자 정의 Linux 이미지**를 지원하여 높은 성능과 고급 기능이 필요한 **미션 크리티컬 애플리케이션**에 적합합니다.
- **Dedicated Plan**: 예측 가능한 청구가 가능한 전용 가상 머신에서 실행되며, 수동 또는 자동 스케일링을 지원합니다. 동일한 요금제에서 여러 앱을 실행할 수 있으며, **컴퓨트 격리**를 제공하고 App Service Environments를 통해 **안전한 네트워크 액세스**를 보장하여 일관된 리소스 할당이 필요한 **장기 실행 애플리케이션**에 이상적입니다.
- **Container Apps**: 관리되는 환경에서 **컨테이너화된 함수 앱**을 배포할 수 있으며, 마이크로서비스 및 API와 함께 사용할 수 있습니다. 사용자 정의 라이브러리, 레거시 앱 마이그레이션 및 **GPU 처리**를 지원하여 Kubernetes 클러스터 관리를 없니다. **이벤트 기반, 확장 가능한 컨테이너화된 애플리케이션**에 적합합니다.
- **Container Apps**: 관리되는 환경에서 **컨테이너화된 함수 앱**을 배포할 수 있으며, 마이크로서비스 및 API와 함께 사용할 수 있습니다. 사용자 정의 라이브러리, 레거시 앱 마이그레이션 및 **GPU 처리**를 지원하여 Kubernetes 클러스터 관리를 없애줍니다. **이벤트 기반, 확장 가능한 컨테이너화된 애플리케이션**에 적합합니다.
### **스토리지 버킷**
@@ -24,9 +24,9 @@
또한, 버킷 내의 코드를 수정하면 (저장될 수 있는 다양한 형식에서) **앱의 코드가 새 코드로 수정되어 다음에 함수가 호출될 때 실행됩니다**.
> [!CAUTION]
> 공격자의 관점에서 매우 흥미로운 점은 **이 버킷에 대한 쓰기 권한**이 공격자가 **코드를 손상시키고 Function App 내의 관리되는 ID에 대한 권한을 상승시킬 수 있게 해준다는 입니다.**
> 공격자의 관점에서 매우 흥미로운 점은 **이 버킷에 대한 쓰기 권한**이 있으면 공격자가 **코드를 손상시키고 Function App 내의 관리되는 ID에 대한 권한을 상승시킬 수 있다는 입니다**.
>
> 이에 대한 자세한 내용은 **권한 상승 섹션**에서 다룹니다.
> 이에 대한 자세한 내용은 **권한 상승 섹션**에서 확인할 수 있습니다.
또한, **`azure-webjobs-secrets`** 컨테이너 내의 스토리지 계정에서 **마스터 및 함수 키**를 찾는 것도 가능합니다. 이 키는 **`<app-name>`** 폴더 내의 JSON 파일에서 찾을 수 있습니다.
@@ -34,29 +34,29 @@ Functions는 또한 코드를 원격 위치에 저장할 수 있으며, 그 URL
### 네트워킹
HTTP 트리거를 사용하여:
HTTP 트리거를 사용할 때:
- **인터넷의 모든 사용자에게 함수에 대한 액세스를 제공**하거나 IAM 기반으로 액세스를 제공할 수 있습니다. 이 액세스를 제한하는 것도 가능합니다.
- **내부 네트워크(VPC)**에서 Function App에 대한 액세스를 **제공하거나 제한**할 수 있습니다.
- **내부 네트워크(VPC)**에서 Function App에 대한 액세스를 **제공하거나 제한**할 수 있습니다.
> [!CAUTION]
> 공격자의 관점에서 매우 흥미로운 점은 취약한 Function이 인터넷에 노출될 경우 **내부 네트워크로 피벗할 수 있는 가능성이 있다는 입니다.**
> 공격자의 관점에서 매우 흥미로운 점은 취약한 Function이 인터넷에 노출될 경우 **내부 네트워크로 피벗할 수 있는 가능성이 있다는 입니다**.
### **Function App 설정 및 환경 변수**
앱 내에서 환경 변수를 구성할 수 있으며, 이 변수는 민감한 정보를 포함할 수 있습니다. 또한 기본적으로 **`AzureWebJobsStorage`** 및 **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`**(기타 포함)과 같은 env 변수가 생성됩니다. 이들은 **애플리케이션 데이터가 포함된 스토리지 계정을 완전 권한으로 제어는 계정 키를 포함**하고 있 특히 흥미롭습니다. 이러한 설정은 스토리지 계정에서 코드를 실행하는 데에도 필요합니다.
앱 내에서 환경 변수를 구성할 수 있으며, 이 변수는 민감한 정보를 포함할 수 있습니다. 또한 기본적으로 **`AzureWebJobsStorage`** 및 **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`**(기타 포함)과 같은 환경 변수가 생성됩니다. 이들은 **애플리케이션 데이터가 포함된 스토리지 계정을 완전 권한으로 제어할 수 있는 계정 키를 포함하고 있기 때문에 특히 흥미롭습니다**. 이러한 설정은 스토리지 계정에서 코드를 실행하는 데에도 필요합니다.
이러한 env 변수 또는 구성 매개변수는 함수가 코드를 실행하는 방식을 제어합니다. 예를 들어 **`WEBSITE_RUN_FROM_PACKAGE`**가 존재하면 애플리케이션 코드가 위치한 URL을 나타냅니다.
이러한 환경 변수 또는 구성 매개변수는 함수가 코드를 실행하는 방식을 제어하며, 예를 들어 **`WEBSITE_RUN_FROM_PACKAGE`**가 존재하면 애플리케이션 코드가 위치한 URL을 나타냅니다.
### **Function Sandbox**
리눅스 샌드박스 내에서 소스 코드는 **`/home/site/wwwroot`**의 **`function_app.py`** 파일에 위치하며(파이썬을 사용하는 경우), 코드를 실행하는 사용자는 **`app`**입니다(권한 없음).
**Windows** 함수에서 NodeJS를 사용하는 경우 코드는 **`C:\home\site\wwwroot\HttpTrigger1\index.js`**에 위치하며, 사용자 이름은 **`mawsFnPlaceholder8_f_v4_node_20_x86`**이고 **그룹**의 일부입니다: `Mandatory Label\High Mandatory Level Label`, `Everyone`, `BUILTIN\Users`, `NT AUTHORITY\INTERACTIVE`, `CONSOLE LOGON`, `NT AUTHORITY\Authenticated Users`, `NT AUTHORITY\This Organization`, `BUILTIN\IIS_IUSRS`, `LOCAL`, `10-30-4-99\Dwas Site Users`.
**Windows** 함수에서 NodeJS를 사용하는 경우 코드는 **`C:\home\site\wwwroot\HttpTrigger1\index.js`**에 위치하며, 사용자 이름은 **`mawsFnPlaceholder8_f_v4_node_20_x86`**이고, **그룹** `Mandatory Label\High Mandatory Level Label`, `Everyone`, `BUILTIN\Users`, `NT AUTHORITY\INTERACTIVE`, `CONSOLE LOGON`, `NT AUTHORITY\Authenticated Users`, `NT AUTHORITY\This Organization`, `BUILTIN\IIS_IUSRS`, `LOCAL`, `10-30-4-99\Dwas Site Users`의 일부입니다.
### **관리되는 ID 및 메타데이터**
[**VMs**](vms/index.html)와 마찬가지로, Functions는 **시스템 할당** 및 **사용자 할당**의 두 가지 유형의 **관리되는 ID**를 가질 수 있습니다.
[**VMs**](vms/index.html)와 마찬가지로, Functions는 **시스템 할당** 및 **사용자 할당**의 두 가지 유형의 **Managed Identities**를 가질 수 있습니다.
**시스템 할당**된 ID는 **해당 함수**만 사용할 수 있는 관리되는 ID이며, **사용자 할당**된 관리되는 ID는 **다른 Azure 서비스가 사용할 수 있는 관리되는 ID**입니다.
@@ -65,16 +65,16 @@ HTTP 트리거를 사용하여:
>
> 시스템 관리 ID가 사용되지 않고 하나 이상의 사용자 관리 ID가 함수에 연결된 경우, 기본적으로 토큰을 얻을 수 없습니다.
[**PEASS 스크립트**](https://github.com/peass-ng/PEASS-ng)를 사용하여 메타데이터 엔드포인트에서 기본 관리되는 ID의 토큰을 얻을 수 있습니다. 또는 다음과 같이 **수동으로** 얻을 수 있습니다:
[**PEASS 스크립트**](https://github.com/peass-ng/PEASS-ng)를 사용하여 메타데이터 엔드포인트에서 기본 관리 ID의 토큰을 얻을 수 있습니다. 또는 다음과 같이 **수동으로** 얻을 수 있습니다:
{% embed url="https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm" %}
함수가 연결된 모든 관리되는 ID를 **확인하는 방법을 찾아야** 하며, 이를 지정하지 않으면 메타데이터 엔드포인트는 **기본 ID만 사용**합니다(자세한 내용은 이전 링크를 참조).
함수가 연결된 모든 관리 ID를 **확인하는 방법을 찾아야 합니다**. 그렇지 않으면 메타데이터 엔드포인트는 **기본 ID만 사용합니다**(자세한 내용은 이전 링크를 확인하세요).
## 액세스 키
> [!NOTE]
> 함수 호출에 대한 액세스를 사용자에게 부여하는 RBAC 권한이 없음을 유의하십시오. **함수 호출은 생성 시 선택된 트리거에 따라 달라지며, HTTP 트리거가 선택된 경우 **액세스 키**를 사용해야 할 수 있습니다.**
> 함수 호출에 대한 사용자 액세스를 부여하는 RBAC 권한이 없음을 유의하세요. **함수 호출은 생성 시 선택된 트리거에 따라 달라지며, HTTP 트리거가 선택된 경우 **액세스 키**를 사용해야 할 수 있습니다**.
HTTP 트리거를 사용하여 함수 내에서 엔드포인트를 생성할 때, 함수 트리거에 필요한 **액세스 키 권한 수준**을 지정할 수 있습니다. 세 가지 옵션이 있습니다:
@@ -84,10 +84,10 @@ HTTP 트리거를 사용하여 함수 내에서 엔드포인트를 생성할 때
**키 유형:**
- **Function Keys:** 함수 키는 기본 또는 사용자 정의일 수 있으며, Function App 내의 **특정 함수 엔드포인트**에만 접근을 허용하도록 설계되었습니다.
- **Host Keys:** 호스트 키는 기본 또는 사용자 정의일 수 있으며, FUNCTION 접근 수준으로 Function App 내의 **모든 함수 엔드포인트**에 접근을 제공합니다.
- **Master Key:** 마스터 키(`_master`)는 모든 함수 엔드포인트에 대한 접근을 포함하여 권한이 상승된 관리 키로,**키는 취소할 수 없습니다.**
- **System Keys:** 시스템 키는 **특정 확장에 의해 관리**되며, 내부 구성 요소에서 사용하는 웹훅 엔드포인트에 접근하는 데 필요합니다. 예를 들어, Event Grid 트리거 및 Durable Functions는 시스템 키를 사용하여 해당 API와 안전하게 상호작용합니다.
- **Function Keys:** 함수 키는 기본 또는 사용자 정의일 수 있으며, Function App 내의 **특정 함수 엔드포인트**에 대한 액세스를 독점적으로 부여하도록 설계되었습니다. 이를 통해 엔드포인트에 대한 보다 세밀한 액세스가 가능합니다.
- **Host Keys:** 호스트 키는 기본 또는 사용자 정의일 수 있으며, **FUNCTION 액세스 수준**으로 Function App 내의 **모든 함수 엔드포인트**에 대한 액세스를 제공합니다.
- **Master Key:** 마스터 키(`_master`)는 모든 함수 엔드포인트에 대한 액세스를 포함하여 권한이 상승된 액세스를 제공하는 관리 키입니다(ADMIN 액세스 수준 포함).**키는 취소할 수 없습니다.**
- **System Keys:** 시스템 키는 **특정 확장에 의해 관리되며**, 내부 구성 요소에서 사용하는 웹훅 엔드포인트에 접근하는 데 필요합니다. 예를 들어, Event Grid 트리거 및 Durable Functions는 시스템 키를 사용하여 해당 API와 안전하게 상호작용합니다.
> [!TIP]
> 키를 사용하여 함수 API 엔드포인트에 접근하는 예:
@@ -96,7 +96,7 @@ HTTP 트리거를 사용하여 함수 내에서 엔드포인트를 생성할 때
### 기본 인증
App Services와 마찬가지로, Functions는 **SCM** 및 **FTP**에 연결하여 코드를 배포하기 위해 Azure에서 제공하는 **사용자 이름과 비밀번호가 포함된 URL** 사용하여 기본 인증을 지원합니다. 이에 대한 자세한 내용은:
App Services와 마찬가지로, Functions는 **SCM** 및 **FTP**에 연결하여 코드를 배포하기 위해 Azure에서 제공하는 **URL의 사용자 이름과 비밀번호** 사용 기본 인증을 지원합니다. 이에 대한 자세한 내용은:
{{#ref}}
az-app-services.md

View File

@@ -11,7 +11,7 @@ Logic Apps는 **광범위한 사전 구축된 커넥터**를 사용하여 워크
### 예시
- **데이터 파이프라인 자동화**: Logic Apps는 Azure Data Factory와 결합하여 **데이터 전송 및 변환 프로세스**를 자동화할 수 있습니다. 이는 Azure SQL Database와 Azure Blob Storage와 같은 다양한 데이터 저장소 간에 데이터를 이동하고 변환하는 확장 가능하고 신뢰할 수 있는 데이터 파이프라인을 생성하는 데 유용하며, 분석 및 비즈니스 인텔리전스 작업에 도움을 줍니다.
- **Azure Functions와 통합**: Logic Apps는 Azure Functions와 함께 작동하여 **필요에 따라 확장되는 정교한 이벤트 기반 애플리케이션을 개발**하고 다른 Azure 서비스와 원활하게 통합할 수 있습니다. 예를 들어, Logic App을 사용하여 Azure Storage 계정의 변경과 같은 특정 이벤트에 응답하여 Azure Function을 트리거하는 사용 사례가 있습니다. 이를 통해 동적 데이터 처리가 가능합니다.
- **Azure Functions와 통합**: Logic Apps는 Azure Functions와 함께 작동하여 **필요에 따라 확장되는 정교한 이벤트 기반 애플리케이션을 개발**하고 다른 Azure 서비스와 원활하게 통합할 수 있습니다. 사용 사례의 예로는 Logic App을 사용하여 Azure Storage 계정의 변경과 같은 특정 이벤트에 응답하여 Azure Function을 트리거하는 것입니다. 이를 통해 동적 데이터 처리가 가능합니다.
### LogicAPP 시각화
@@ -39,7 +39,7 @@ curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e9741
* **표준**
- **워크플로우 서비스 계획**: 네트워킹을 위한 VNET 통합이 있는 전용 컴퓨팅 리소스와 워크플로우 서비스 계획 인스턴스당 요금을 부과합니다. 이는 더 많은 제어가 필요한 요구가 많은 작업에 적합합니다.
- **앱 서비스 환경 V3**: 완전한 격리 및 확장성을 갖춘 전용 컴퓨팅 리소스입니다. 또한 네트워킹을 위해 VNET과 통합되며, 환경 내의 앱 서비스 인스턴스를 기반으로 한 요금 모델을 사용합니다. 이는 높은 격리가 필요한 기업 규모의 애플리케이션에 이상적입니다.
- **하이브리드**: 로컬 처리 및 다중 클라우드 지원을 위해 설계되었습니다. 고객 관리형 컴퓨팅 리소스를 로컬 네트워크 액세스와 함께 사용할 수 있으며, Kubernetes 이벤트 기반 자동 확장(KEDA)을 활용합니다.
- **하이브리드**: 로컬 처리 및 다중 클라우드 지원을 위해 설계되었습니다. 고객 관리형 컴퓨팅 리소스를 로컬 네트워크 접근과 함께 허용하며, Kubernetes 이벤트 기반 자동 확장(KEDA)을 활용합니다.
### 열거
@@ -144,7 +144,7 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
### 통합 계정
**통합 계정**은 Azure Logic Apps의 기능입니다. 통합 계정은 EDI, AS2 및 XML 스키마 관리와 같은 고급 B2B 기능을 활성화하여 기업 수준의 통합을 용이하게 합니다. 통합 계정은 Logic Apps에 사용되는 다음 아티팩트를 저장하는 Azure의 컨테이너입니다:
**통합 계정**은 Azure Logic Apps의 기능입니다. 통합 계정은 EDI, AS2 및 XML 스키마 관리를 포함한 고급 B2B 기능을 활성화하여 기업 수준의 통합을 용이하게 합니다. 통합 계정은 Logic Apps에 사용되는 다음 아티팩트를 저장하는 Azure의 컨테이너입니다:
* 스키마: 통합 계정에서 메시지를 검증하고 처리하기 위한 XML 스키마를 관리합니다.
* 맵: 통합 워크플로 내에서 데이터 형식을 변환하기 위해 XSLT 기반 변환을 구성합니다.
@@ -153,7 +153,7 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
* 파트너: B2B 거래를 위한 거래 파트너 정보를 관리하여 원활한 통합을 가능하게 합니다.
* 계약: 거래 파트너와 데이터 교환을 위한 규칙 및 설정을 구성합니다 (예: EDI, AS2).
* 배치 구성: 메시지를 효율적으로 그룹화하고 처리하기 위한 배치 처리 구성을 관리합니다.
* RosettaNet PIP: B2B 통신을 표준화하기 위해 RosettaNet 파트너 인터페이스 프로세스(PIPs)를 구성합니다.
* RosettaNet PIP: B2B 통신을 표준화하기 위해 RosettaNet 파트너 인터페이스 프로세스(PIP)를 구성합니다.
#### 열거

View File

@@ -9,10 +9,10 @@ Azure Service Bus는 **애플리케이션의 다양한 부분 또는 별도의
### Key Concepts
1. **Queues:** 그 목적은 수신자가 준비될 때까지 메시지를 저장하는 것입니다.
- 메시지는 순서가 있으며, 타임스탬프가 고, 내구성이 있게 저장됩니다.
- 메시지는 순서가 있으며, 타임스탬프가 찍히고, 내구성이 있게 저장됩니다.
- 풀 모드(요청 시 검색)로 전달됩니다.
- 포인트 투 포인트 통신을 지원합니다.
2. **Topics:** 방송을 위한 게시-구독 메시징입니다.
2. **Topics:** 방송을 위한 게시-구독 메시징.
- 여러 독립적인 구독이 메시지의 복사본을 수신합니다.
- 구독은 전달을 제어하거나 메타데이터를 추가하기 위한 규칙/필터를 가질 수 있습니다.
- 다대다 통신을 지원합니다.
@@ -23,13 +23,13 @@ Azure Service Bus는 **애플리케이션의 다양한 부분 또는 별도의
일부 고급 기능은 다음과 같습니다:
- **Message Sessions**: FIFO 처리를 보장하고 요청-응답 패턴을 지원합니다.
- **Auto-Forwarding**: 동일한 네임스페이스 내에서 큐 또는 주간 메시지를 전송합니다.
- **Dead-Lettering**: 달할 수 없는 메시지를 검토를 위해 캡처합니다.
- **Auto-Forwarding**: 동일한 네임스페이스 내에서 큐 또는 주간 메시지를 전송합니다.
- **Dead-Lettering**: 달할 수 없는 메시지를 검토를 위해 캡처합니다.
- **Scheduled Delivery**: 미래 작업을 위해 메시지 처리를 지연시킵니다.
- **Message Deferral**: 준비될 때까지 메시지 검색을 연기합니다.
- **Transactions**: 작업을 원자적 실행으로 그룹화합니다.
- **Filters & Actions**: 메시지를 필터링하거나 주석을 추가하기 위한 규칙을 적용합니다.
- **Auto-Delete on Idle**: 비활성 상태에서 큐를 삭제합니다(최소: 5분).
- **Auto-Delete on Idle**: 비활성 상태 큐를 삭제합니다(최소: 5분).
- **Duplicate Detection**: 재전송 중 중복 메시지를 제거합니다.
- **Batch Deletion**: 만료되거나 불필요한 메시지를 대량으로 삭제합니다.
@@ -37,7 +37,7 @@ Azure Service Bus는 **애플리케이션의 다양한 부분 또는 별도의
SAS 정책은 Azure Service Bus 엔터티 네임스페이스(가장 중요한 것), 큐 및 주제에 대한 접근 권한을 정의합니다. 각 정책은 다음 구성 요소를 가집니다:
- **Permissions**: 접근 수준을 지정하 체크박스:
- **Permissions**: 접근 수준을 지정하기 위한 체크박스:
- Manage: 엔터티에 대한 전체 제어를 부여하며, 구성 및 권한 관리를 포함합니다.
- Send: 엔터티에 메시지를 전송할 수 있습니다.
- Listen: 엔터티로부터 메시지를 수신할 수 있습니다.

View File

@@ -11,15 +11,15 @@ Azure Static Web Apps는 **GitHub와 같은 리포지토리에서 자동 CI/CD
> [!TIP]
> Static App이 생성될 때 **배포 인증 정책**으로 **배포 토큰**과 **GitHub Actions 워크플로우** 중에서 선택할 수 있습니다.
- **배포 토큰**: 토큰이 생성되어 배포 프로세스를 인증하는 데 사용됩니다. **이 토큰만 있으면 앱의 새 버전을 배포할 수 있습니다**. 리포지토리가 업데이트될 때마다 앱의 새 버전을 배포하기 위해 비밀에 토큰이 포함된 **Github Action이 자동으로 리포지토리에 배포됩니다**.
- **GitHub Actions 워크플로우**: 이 경우 매우 유사한 Github Action이 리포지토리에 배포되며 **토큰도 비밀에 저장됩니다**. 그러나 이 Github Action은 차이가 있으며, **`actions/github-script@v6`** 액션을 사용하여 리포지토리의 IDToken을 가져오고 이를 사용하여 앱을 배포니다.
- 두 경우 모두 **`Azure/static-web-apps-deploy@v1`** 액션이 `azure_static_web_apps_api_token` 매개변수에 있는 토큰과 함께 사용되지만, 두 번째 경우에는 `github_id_token` 매개변수의 IDToken으로 인증이 이루어지므로 `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345`와 같은 유효한 형식의 임의 토큰만으로도 앱을 배포할 수 있습니다.
- **배포 토큰**: 토큰이 생성되어 배포 프로세스를 인증하는 데 사용됩니다. **이 토큰만 있으면 앱의 새 버전을 배포할 수 있습니다**. 리포지토리가 업데이트될 때마다 앱의 새 버전을 배포하기 위해 비밀에 토큰이 포함된 **Github Action이 자동으로 리포에 배포됩니다**.
- **GitHub Actions 워크플로우**: 이 경우 매우 유사한 Github Action이 리포에 배포되며 **토큰도 비밀에 저장됩니다**. 그러나 이 Github Action은 **`actions/github-script@v6`** 액션을 사용하여 리포지토리의 IDToken을 가져오고 이를 사용하여 앱을 배포하는 차이점이 있습니다.
- 두 경우 모두 **`Azure/static-web-apps-deploy@v1`** 액션이 `azure_static_web_apps_api_token` 매개변수에 있는 토큰과 함께 사용되지만, 두 번째 경우에는 `github_id_token` 매개변수의 IDToken으로 인증이 이루어지므로 `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345`와 같은 유효한 형식의 임의 토큰만으로도 앱을 배포할 수 있습니다.
### Web App Basic Authentication
웹 앱에 접근하기 위해 **비밀번호를 구성**할 수 있습니다. 웹 콘솔을 통해 스테이징 환경 또는 스테이징 프로덕션 환경 모두를 보호하도록 구성할 수 있습니다.
웹 앱에 접근하기 위해 **비밀번호를 구성**할 수 있습니다. 웹 콘솔을 통해 스테이징 환경만 보호하거나 스테이징 프로덕션 환경 모두를 보호하도록 구성할 수 있습니다.
작성 시점에 비밀번호로 보호된 웹 앱은 다음과 같습니다:
작성 시점에 비밀번호로 보호된 웹 앱은 다음과 같습니다:
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
@@ -65,15 +65,15 @@ az rest --method GET \
노트: **역할로 경로를 보호하는 것이 가능**하다는 점에 유의하세요. 그러면 사용자는 앱에 인증하고 해당 역할을 부여받아야 경로에 접근할 수 있습니다. 또한, **초대장을 생성하여 특정 사용자에게 특정 역할을 부여**하는 것도 가능하며, 이는 EntraID, Facebook, GitHub, Google, Twitter를 통해 로그인하는 사용자에게 유용할 수 있습니다. 이를 통해 앱 내에서 권한을 상승시킬 수 있습니다.
> [!TIP]
> 앱을 구성하여 **`staticwebapp.config.json`** 파일에 대한 변경 사항이 수용되지 않도록 설정할 수 있다는 점에 유의하세요. 이 경우, 단순히 Github에서 파일을 변경하는 것만으로는 충분하지 않을 수 있으며, **앱의 설정을 변경해야 할 수도 있습니다**.
> 앱을 구성하여 **`staticwebapp.config.json`** 파일에 대한 변경 사항이 수용되지 않도록 설정할 수 있다는 점에 유의하세요. 이 경우, 단순히 Github에서 파일을 변경하는 것만으로는 충분하지 않을 수 있으며, **앱의 설정을 변경해야** 할 수도 있습니다.
스테이징 URL은 다음 형식을 가집니다: `https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>` 예: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net`
스테이징 URL의 형식은 다음과 같습니다: `https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>` 예: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net`
### 관리형 ID
Azure Static Web Apps는 **관리형 ID**를 사용하도록 구성할 수 있지만, [이 FAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-)에서 언급했듯이, 인증 목적으로 Azure Key Vault에서 비밀을 **추출하는 것만 지원**되며, 다른 Azure 리소스에 접근하는 것은 지원되지 않습니다.
자세한 내용은 https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets에서 Azure 가이드를 참조하여 정적 앱에서 금고 비밀을 사용하는 방법을 확인할 수 있습니다.
자세한 내용은 Azure 가이드를 참조하여 정적 앱에서 금고 비밀을 사용하는 방법을 확인할 수 있습니다: https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets.
## 열거
@@ -164,17 +164,17 @@ Get-AzStaticWebAppUserProvidedFunctionApp -ResourceGroupName <ResourceGroupName>
{% endtabs %}
## 웹 앱 생성 예
## 웹 앱 생성 예
다음 링크에서 웹 앱을 생성하는 좋은 예를 찾을 수 있습니다: [https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github](https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github)
다음 링크에서 웹 앱을 생성하는 좋은 예를 찾을 수 있습니다: [https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github](https://learn.microsoft.com/en-us/azure/static-web-apps/get-started-portal?tabs=react&pivots=github)
1. https://github.com/staticwebdev/react-basic/generate 리포지토리를 포크하여 GitHub 계정에 `my-first-static-web-app`이라는 이름으로 저장합니다.
2. Azure 포털에서 GitHub 접근을 구성하고 이전에 포크한 새 리포지토리를 선택하여 Static Web App을 생성합니다.
3. 생성한 후 몇 분 기다리고, 새 페이지를 확인하세요!
3. 생성한 후 몇 분 기다리고 새 페이지를 확인하세요!
## 권한 상승 및 포스트 익스플로잇
## 권한 상승 및 후속 활용
Azure Static Web Apps에서 권한 상승 및 포스트 익스플로잇에 대한 모든 정보는 다음 링크에서 찾을 수 있습니다:
Azure Static Web Apps에서 권한 상승 및 후속 활용에 대한 모든 정보는 다음 링크에서 찾을 수 있습니다:
{{#ref}}
../az-privilege-escalation/az-static-web-apps-privesc.md

View File

@@ -4,21 +4,21 @@
## 기본 정보
**Azure Table Storage**는 대량의 구조화된 비관계형 데이터를 저장하기 위해 설계된 NoSQL 키-값 저장소입니다. 높은 가용성, 낮은 대기 시간 및 대규모 데이터 세트를 효율적으로 처리할 수 있는 확장성을 제공합니다. 데이터는 테이블로 구성되며, 각 엔터티는 파티션 키와 행 키로 식별되어 빠른 조회를 가능하게 합니다. 데이터는 안전하고 관리되는 저장소를 위해 암호화, 역할 기반 액세스 제어 및 공유 액세스 서명과 같은 기능을 지원하여 다양한 애플리케이션에 적합합니다.
**Azure Table Storage**는 대량의 구조화된 비관계형 데이터를 저장하기 위해 설계된 NoSQL 키-값 저장소입니다. 높은 가용성, 낮은 대기 시간 및 대규모 데이터 세트를 효율적으로 처리할 수 있는 확장성을 제공합니다. 데이터는 테이블로 구성되며, 각 엔터티는 파티션 키와 행 키로 식별되어 빠른 조회를 가능하게 합니다. 데이터는 안전하고 관리되는 저장소에 적합한 다양한 애플리케이션을 위해 휴지 상태에서의 암호화, 역할 기반 액세스 제어 및 공유 액세스 서명과 같은 기능을 지원합니다.
테이블 저장소에 **내장 백업 메커니즘 없습니다**.
테이블 저장소에 대한 **내장 백업 메커니즘 없습니다**.
### 키
#### **PartitionKey**
- **PartitionKey는 엔터티를 논리적 파티션으로 그룹화합니다**. 동일한 PartitionKey를 가진 엔터티는 함께 저장되어 쿼리 성능과 확장성을 향상시킵니다.
- 예: 직원 데이터를 저장하는 테이블에서 `PartitionKey`는 부서를 나타낼 수 있습니다, 예를 들어, `"HR"` 또는 `"IT"`.
- 예: 직원 데이터를 저장하는 테이블에서 `PartitionKey`는 부서를 나타낼 수 있습니다, 예: `"HR"` 또는 `"IT"`.
#### **RowKey**
- **RowKey는 파티션 내에서 엔터티의 고유 식별자입니다**. PartitionKey와 결합될 때, 테이블의 각 엔터티가 전 세계적으로 고유한 식별자를 갖도록 보장합니다.
- 예: `"HR"` 파티션의 경우, `RowKey`는 직원 ID일 수 있습니다, 예를 들어, `"12345"`.
- 예: `"HR"` 파티션의 경우, `RowKey`는 직원 ID일 수 있습니다, 예: `"12345"`.
#### **기타 속성 (사용자 정의 속성)**
@@ -84,7 +84,7 @@ Get-AzStorageTableStoredAccessPolicy -Table <Table> -Context (Get-AzStorageAccou
## Privilege Escalation
저장소 privesc와 동일합니다:
저장소 권한 상승과 동일합니다:
{{#ref}}
../az-privilege-escalation/az-storage-privesc.md