mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
77 lines
5.6 KiB
Markdown
77 lines
5.6 KiB
Markdown
|
# UUID 보안 취약점
|
||
|
|
||
|
<details>
|
||
|
|
||
|
<summary><strong>htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요</strong></a><strong>!</strong></summary>
|
||
|
|
||
|
HackTricks를 지원하는 다른 방법:
|
||
|
|
||
|
* **회사가 HackTricks에 광고되길 원하거나** **PDF 형식의 HackTricks를 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
|
||
|
* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
|
||
|
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
|
||
|
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나** **트위터** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
|
||
|
* **해킹 트릭을 공유하고 PR을 제출하여** [**HackTricks**](https://github.com/carlospolop/hacktricks) **및** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **깃허브 저장소를 팔로우하세요.**
|
||
|
|
||
|
</details>
|
||
|
|
||
|
## 기본 정보
|
||
|
|
||
|
범용 고유 식별자(UUID)는 컴퓨터 시스템에서 정보를 고유하게 식별하는 데 사용되는 **128비트 숫자**입니다. UUID는 중앙 조정 없이 고유 식별자가 필요한 응용 프로그램에서 필수적입니다. 데이터베이스 키로 자주 사용되며 문서 및 세션과 같은 다양한 요소를 가리킬 수 있습니다.
|
||
|
|
||
|
UUID는 고유하고 **추측하기 어렵도록 설계**되었습니다. 특정 형식으로 구조화되어 있으며 32개의 16진수 숫자로 표시된 다섯 그룹으로 나뉩니다. UUID에는 각각 다른 목적을 가지는 다양한 버전이 있습니다:
|
||
|
|
||
|
* **UUID v1**은 시간 기반으로 타임스탬프, 클록 시퀀스 및 노드 ID(MAC 주소)를 통합하지만 시스템 정보 노출 가능성이 있습니다.
|
||
|
* **UUID v2**는 v1과 유사하지만 로컬 도메인을 위한 수정 사항이 포함되어 있습니다(거의 사용되지 않음).
|
||
|
* **UUID v3 및 v5**는 네임스페이스 및 이름의 해시 값에서 UUID를 생성하며, v3은 MD5를 사용하고 v5는 SHA-1을 사용합니다.
|
||
|
* **UUID v4**는 거의 완전히 무작위로 생성되어 높은 익명성을 제공하지만 약간의 중복 위험이 있습니다.
|
||
|
|
||
|
{% hint style="success" %}
|
||
|
UUID의 버전 및 하위 버전은 일반적으로 UUID 내에서 동일한 위치에 나타납니다. 예를 들어:\
|
||
|
12345678 - abcd - 1a56 - a539 - 103755193864\
|
||
|
xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx
|
||
|
|
||
|
* **M의 위치**는 UUID **버전**을 나타냅니다. 위의 예에서는 UUID v**1**입니다.
|
||
|
* **N의 위치**는 UUID 변형을 나타냅니다.
|
||
|
{% endhint %}
|
||
|
|
||
|
## 샌드위치 공격
|
||
|
|
||
|
"샌드위치 공격"은 특정 유형의 공격으로, 특히 비밀번호 재설정과 같은 기능에서 UUID v1 생성의 예측 가능성을 **악용**합니다. UUID v1은 시간, 클록 시퀀스 및 노드의 MAC 주소를 기반으로 생성되므로, 공격자가 이러한 UUID 중 일부를 시간적으로 가까이 생성할 수 있다면 다소 예측 가능할 수 있습니다.
|
||
|
|
||
|
### 예시
|
||
|
|
||
|
UUID v1을 비밀번호 재설정 링크 생성에 사용하는 웹 애플리케이션을 상상해보세요. 공격자가 이를 악용하여 무단 액세스를 얻을 수 있습니다:
|
||
|
|
||
|
1. **초기 설정**:
|
||
|
|
||
|
* 공격자는 두 개의 이메일 계정을 제어합니다: \`attacker1@acme.com\` 및 \`attacker2@acme.com\`.
|
||
|
* 대상의 이메일 계정은 \`victim@acme.com\`입니다.
|
||
|
|
||
|
2. **실행**:
|
||
|
|
||
|
* 공격자는 첫 번째 계정(\`attacker1@acme.com\`)에 대한 비밀번호 재설정을 트리거하고 UUID가 포함된 비밀번호 재설정 링크를 받습니다. 예를 들어 \`99874128-7592-11e9-8201-bb2f15014a14\`.
|
||
|
* 즉시 이후에, 공격자는 피해자의 계정(\`victim@acme.com\`) 및 두 번째 공격자가 제어하는 계정(\`attacker2@acme.com\`)에 대한 비밀번호 재설정을 트리거합니다.
|
||
|
* 공격자는 두 번째 계정에 대한 재설정 링크를 받습니다. 예를 들어 \`998796b4-7592-11e9-8201-bb2f15014a14\`.
|
||
|
|
||
|
3. **분석**:
|
||
|
|
||
|
* 공격자는 시간적으로 가까이 생성된 두 개의 UUID(\`99874128\` 및 \`998796b4\`)를 가지고 있습니다. 시간 기반 UUID의 순차적 특성으로 인해 피해자의 계정을 위한 UUID는 이 두 값 사이에 있을 가능성이 높습니다.
|
||
|
|
||
|
4. **무차별 대입 공격**:
|
||
|
|
||
|
* 공격자는 이 두 값 사이의 UUID를 생성하는 도구를 사용하고 각 생성된 UUID를 테스트하여 비밀번호 재설정 링크에 액세스를 시도합니다(예: \`https://www.acme.com/reset/\<생성된-UUID>\`).
|
||
|
* 웹 애플리케이션이 이러한 시도를 충분히 제한하거나 차단하지 않는 경우, 공격자는 범위 내의 모든 가능한 UUID를 빠르게 테스트할 수 있습니다.
|
||
|
|
||
|
5. **액세스 획득**:
|
||
|
|
||
|
* 피해자의 비밀번호 재설정 링크에 대한 올바른 UUID를 발견하면, 공격자는 피해자의 계정으로 비밀번호를 재설정하고 무단 액세스를 얻을 수 있습니다.
|
||
|
|
||
|
### 도구
|
||
|
|
||
|
* 샌드위치 공격을 자동으로 수행할 수 있는 도구: [**https://github.com/Lupin-Holmes/sandwich**](https://github.com/Lupin-Holmes/sandwich)
|
||
|
* Burp Suite에서 이 유형의 UUID를 감지할 수 있는 확장 프로그램 [**UUID Detector**](https://portswigger.net/bappstore/65f32f209a72480ea5f1a0dac4f38248).
|
||
|
|
||
|
## 참고 자료
|
||
|
|
||
|
* [https://versprite.com/blog/universally-unique-identifiers/](https://versprite.com/blog/universally-unique-identifiers/)
|