دسته بندی
Cross-Site Attacks
باگ Server-Side Request Forgery (SSRF) یک نوع باگ امنیتی است که در برنامهها و سیستمها رخ میدهد. در این نوع حمله، حملهکننده با اجازه یا بدون اجازه کاربر، سیستم به سرورها و منابع دیگری دسترسی پیدا میکند که نباید به آنها دسترسی داشته باشد. این کار میتواند منجر به دسترسی به منابع داخلی و محرمانه شبکه، حمله به سیستمهای داخلی، و یا حتی دسترسی به سرویسهای خارجی و ایجاد هزینههای ناخواسته برای صاحب سرویس شود.مثال:
فرض کنید یک برنامه وب دارای ویژگیهایی است که اجازه میدهد که عکسها از یک آدرس
URL را در صفحه نمایش دهد. کد PHP به صورت زیر است:<?phpحملهکننده میتواند یک آدرس
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$url = $_POST['url'];
$image_data = file_get_contents($url);
// proccess and show images
header('Content-Type: image/jpeg');
echo $image_data;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Image</title>
</head>
<body>
<h1>Image</h1>
<form action="" method="post">
<label for="url">Image URL:</label>
<input type="text" name="url" id="url">
<input type="submit" value="View Image">
</form>
</body>
</html>
URL مخرب (مثلاً یک سرور داخلی یا آدرس آیپی دیگری در شبکه داخلی) را وارد کند تا به منابع داخلی سیستم یا شبکه دسترسی پیدا کند. به عنوان مثال:http://localhost/internal/resourceاین باعث میشود که سیستم درخواست به
URL داخلی ارسال کند و احتمالاً دسترسی به منابع داخلی را فراهم کند.روش های جلوگیری:
1- اجازه دسترسی به منابع و سرویسهای خارجی را تنها به دامنهها و آدرسهای معتبر محدود کنید.
2- برنامهها باید درخواستهای خود را با آدرسهای ثابت و معتبر ارسال کنند و نباید آدرسها را از ورودی کاربران استخراج کنند.
3- اطمینان حاصل کنید که ورودیهای کاربران به طور دقیق اعتبارسنجی و فیلترسازی شدهاند و حاوی آدرسهای معتبر هستند.
4- تنها اجازه دسترسی به منابع مجاز را با استفاده از
Whitelist بدهید.5- اطمینان حاصل کنید که کاربران فقط به منابعی دسترسی دارند که نیاز دارند و به منابع داخلی و محرمانه دسترسی ندارند.
.