Blog Wallpaper
A
ALI ALAKABRالسبت، 28 يونيو 2025

SSTImap

هي أداة مخصصة لاكتشاف واستغلال ثغرات Server-Side Template Injection (SSTI) في تطبيقات الويب.

منذ شهرين تقريبا

Area Iconالأمن السيبراني - صيد الثغرات1.2 النسخة

ماهي SSTImap؟

هي أداة مفتوحة المصدر بلغة Python، مصممة لفحص المواقع الي تستخدم محركات القوالب (Templating Engines) من جانب السيرفر، مثل:

  • Jinja2
  • Twig
  • Smarty
  • Django Templates
  • Tornado
  • وغيرها...

الأداة ترسل payloads مختلفة تشبه حقنات SSTI وتنتظر الرد من السيرفر حتى تعرف إذا كان قابل للحقن لو لا.


طريقة التثبيت:

أول شي، تحتاج تثبّت الأدوات الأساسية:

sudo apt update
sudo apt install git python3 python3-pip -y

بعدين، كل الي تحتاجه هو:

git clone https://github.com/vladko312/SSTImap.git
cd SSTImap
pip3 install -r requirements.txt
تشغيل الأداة
تشغيل الأداة

طريقة الاستخدام:

python3 sstimap.py -u "https://cyberr.iq/core?name=FUZZ"

بهذا المثال، الأداة راح تجرّب مجموعة من الـ payloads بمكان كلمة FUZZ وتشوف إذا الموقع يستجيب بطريقة تدل على وجود ثغرة.


استخدام مع POST request:

python3 sstimap.py -u "https://cyberr.iq/auth" -X POST -d "username=FUZZ&password=123"

تريد تفحص إذا حقل الـ username يقبل حقن SSTI؟ خليه مكان FUZZ، والأداة راح تتكفّل بالباقي.


استخدام مع Header:

python3 SSTImap.py -u "https://cyberr.iq" --headers "X-User-Agent: FUZZ"

الأداة تكدر تجرب حتى بالهيدرز، مو بس بالـ URL أو الـ body، وهي فائدة جبيرة للمواقع الي تتعامل ويه الـ headers بشكل داخلي.


أهم الخصائص والمميزات:

  1. دعم شامل لمحركات القوالب
    يكتشف محركات مثل Jinja2, Twig, Django، وغيرها من خلال ردود السيرفر.
  2. ذكاء بالتعامل مع الردود
    الأداة ما تعتمد فقط على كلمات ثابتة، تكدر تكتشف الاختلافات بالتنفيذ وتستنتج وجود الحقن.
  3. سهولة تخصيص الطلبات
    تدعم GET, POST, تخصيص Headers، Cookies، وحتى الـ data بشكل كامل.
  4. سريع وخفيف
    مكتوب بلغة Python وفعّال حتى مع التطبيقات الثقيلة.
  5. نتائج مرتبة
    تعرضلك إذا كان المكان مصاب، وشنو نوع المحرك الي تشتغل عليه.

إذا اكتشفت SSTI، شنو أسوي؟

  1. استخرج نوع محرك القالب.
  2. جرب تنفذ أوامر مثل: {{7*7}}, {{config.items()}}, أو {{self}}.
  3. إذا حصلت تنفيذ أوامر، استخدم Python payloads متقدمة مثل:
    {{''.__class__.__mro__[1].__subclasses__()}}