hacktricks/pentesting-web/uuid-insecurities.md

6.8 KiB

UUID Insecurities

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Basic Information

Universally Unique Identifiers (UUIDs)는 컴퓨터 시스템에서 정보를 고유하게 식별하는 데 사용되는 128비트 숫자입니다. UUID는 중앙 조정 없이 고유 식별자가 필요한 애플리케이션에서 필수적입니다. 일반적으로 데이터베이스 키로 사용되며 문서 및 세션과 같은 다양한 요소를 참조할 수 있습니다.

UUID는 고유하고 예측하기 어렵도록 설계되었습니다. 특정 형식으로 구조화되어 있으며, 32개의 16진수 숫자로 구성된 5개의 그룹으로 나뉩니다. 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 v1입니다.
  • N의 위치는 UUID 변형을 나타냅니다. {% endhint %}

Sandwich attack

"샌드위치 공격"은 웹 애플리케이션에서 UUID v1 생성의 예측 가능성을 악용하는 특정 유형의 공격입니다. 특히 비밀번호 재설정과 같은 기능에서 UUID v1은 시간, 클록 시퀀스 및 노드의 MAC 주소를 기반으로 생성되므로 공격자가 이러한 UUID 중 일부를 시간에 가까운 시점에서 얻을 수 있다면 다소 예측 가능할 수 있습니다.

Example

UUID v1을 사용하여 비밀번호 재설정 링크를 생성하는 웹 애플리케이션을 상상해 보십시오. 공격자가 이를 악용하여 무단 액세스를 얻는 방법은 다음과 같습니다:

  1. 초기 설정:
  • 공격자는 두 개의 이메일 계정을 제어합니다: `attacker1@acme.com` 및 `attacker2@acme.com`.
  • 대상의 이메일 계정은 `victim@acme.com`입니다.
  1. 실행:
  • 공격자는 첫 번째 계정(`attacker1@acme.com`)에 대한 비밀번호 재설정을 트리거하고 UUID가 포함된 비밀번호 재설정 링크를 받습니다. 예를 들어 `99874128-7592-11e9-8201-bb2f15014a14`입니다.
  • 즉시 후에 공격자는 피해자의 계정(`victim@acme.com`)에 대한 비밀번호 재설정을 트리거하고, 그 다음 두 번째 공격자 제어 계정(`attacker2@acme.com`)에 대해 신속하게 트리거합니다.
  • 공격자는 두 번째 계정에 대한 재설정 링크를 UUID와 함께 받습니다. 예를 들어 `998796b4-7592-11e9-8201-bb2f15014a14`입니다.
  1. 분석:
  • 공격자는 이제 시간에 가까운 두 개의 UUID(`99874128` 및 `998796b4`)를 가지고 있습니다. 시간 기반 UUID의 순차적 특성을 고려할 때, 피해자의 계정에 대한 UUID는 이 두 값 사이에 있을 가능성이 높습니다.
  1. 무차별 대입 공격:
  • 공격자는 이 두 값 사이의 UUID를 생성하는 도구를 사용하고, 각 생성된 UUID를 테스트하여 비밀번호 재설정 링크에 접근을 시도합니다(예: `https://www.acme.com/reset/<generated-UUID>`).
  • 웹 애플리케이션이 이러한 시도를 적절히 속도 제한하거나 차단하지 않으면, 공격자는 범위 내의 모든 가능한 UUID를 신속하게 테스트할 수 있습니다.
  1. 액세스 획득:
  • 피해자의 비밀번호 재설정 링크에 대한 올바른 UUID가 발견되면, 공격자는 피해자의 비밀번호를 재설정하고 무단으로 계정에 접근할 수 있습니다.

Tools

References

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}