در معرض! مجوز نقطه کور!

مقدمه
تصور کنید که در حال مرور سایت تجارت الکترونیکی مورد علاقه خود هستید و سفارشات گذشته خود را مشاهده می کنید. شما URL را فقط کمی تغییر می دهید – ممکن است یک شماره را از آن تغییر دهید 123
به 124
بشر ناگهان ، شما به فاکتور شخص دیگری خیره شده اید. بدون ابزار هک کردن ، بدون نیروی بی رحمانه – فقط یک تغییر ساده ، و شما در آن قرار دارید. که در اصل ، سادگی وحشتناک یک است خشک حمله
در دنیای دیجیتال HyperConnected امروز ، جایی که داده ها ارز است ، شکاف های امنیتی مانند مرجع شیء مستقیم ناامن (IDOR) می توانند رابط های بی ضرر را به دروازه هایی برای نقض داده تبدیل کنند. این وبلاگ به یکی از فریبنده ترین و در عین حال خطرناک ترین نظارت های توسعه دهندگان تبدیل می شود – فراموش کردن بررسی اینکه آیا کاربر اجازه دسترسی به یک منبع را داردبشر
ما مشخص خواهیم کرد که چگونه یک خط از کد گمشده می تواند منجر به عواقب فاجعه بار شود ، مطالعات موردی در دنیای واقعی را کشف کند ، از طریق نحوه سوء استفاده مهاجمان از این آسیب پذیری ها استفاده کند و امروزه توسعه دهندگان راه حل های گام به گام را ارائه می دهند.
idor چیست و چرا باید اهمیت دهید؟
چک گمشده
IDOR هنگامی اتفاق می افتد که یک برنامه ورودی با کاربر را قبول کند (مانند user_id=123
) و مستقیماً از آن برای واکشی اطلاعات حساس استفاده می کند – بدون تأیید اینکه کاربر مجاز به دسترسی به آن است. به این فکر کنید مانند تحویل یک کلید اتاق برای هر کسی که سعادت، نه فقط مهمان که اتاق را رزرو کرده است.
چرا الان مهم است
-
OWASP برتر 10 IDOR را تحت “کنترل دسترسی شکسته” طبقه بندی می کند – خطرناک ترین کلاس آسیب پذیری ها.
-
نقص های idor به طور فزاینده ای در طبیعت مورد سوء استفاده قرار می گیرند – نه توسط هکرهای نخبه ، بلکه توسط کاربران کنجکاو که مسلح به ابزارهای مرورگر و مجموعه Burp هستند.
-
با استفاده از API و میکروسروس ها در محبوبیت منفجر می شوند ، همچنین سطوح حمله ای را انجام دهید که Idor در آن غافل باشد.
پایان نامه
این وبلاگ استدلال می کند که idor یک اشکال پیچیده نیست – این یک اشتباه قابل پیشگیری استبشر رفع آن کمتر در مورد نوشتن کد پیچیده و بیشتر در مورد عمدی بودن است هر دسترسی شیبشر بیایید چگونگی شناخت و دفاع در برابر این تهدید ساکت اما کشنده را طی کنیم.
idor under the Hood: چگونه آسیب پذیری کار می کند
مثال آسیب پذیر: پایتون (فلاسک)
@app.route('/api/user_data')
def get_user_data():
requested_user_id = request.args.get('user_id')
user_data = db_get_user_data(requested_user_id)
return jsonify(user_data)
چرا کار:
- من داده ها را به درستی واگذار می کند از پایگاه داده با استفاده از
user_id
از URL - اگر
user_id
در سیستم وجود دارد ، داده های مربوطه را با فرمت JSON برمی گرداند. - برای دسترسی به یک کاربر مشروع شناسه خودشان، همه چیز همانطور که انتظار می رفت رفتار می کند. به این گفته می شود “مسیر مبارک”– استفاده مورد انتظار ، مورد انتظار.
⚠ چرا خطرناک است:
- برنامه چک نمی کند آیا کاربر درخواست کننده در واقع مجاز به دسترسی به آن است
user_id
آنها ارائه دادند - مهاجمی که وارد سیستم می شود کاربر می تواند به سادگی تماس بگیرد
/api/user_data?user_id=2
(برای کاربر ب) و به طور بالقوه به داده های خصوصی B دسترسی پیدا می کند. - بدون احراز هویت ≠ مشکلی نیست– اما هیچ اعتبار = مشکل بزرگ.
مثال آسیب پذیر: node.js (اکسپرس)
app.get('/download', (req, res) => {
const filename = req.query.file;
const filePath = path.join(UPLOAD_DIR, filename);
res.sendFile(filePath); // No auth check!
});
چرا کار:
- این مسیر پرونده را با استفاده از
filename
از طریق رشته پرس و جو عبور کرد. - اگر پرونده وجود داشته باشد ، آن را به کاربر ارسال می کند.
- برای یک کاربر که سعی در بارگیری دارد پرونده بارگذاری شده خودشان، خیلی خوب کار می کند.
چرا خطرناک است:
- این را انجام می دهد مالکیت را تأیید نکنیدبشر هرکسی می تواند درخواست کند:
/download?file=invoice_bob.pdf
و آن پرونده را دریافت کنید – تا زمانی که آنها نام را به درستی حدس بزنند.
- هم وجود دارد بدون محدودیت در مورد چه نوع پرونده هایی می توان درخواست کرد. این درها را برای حملات باز می کند مانند:
- دسترسی اسناد حساس سایر کاربران
- اجرا حملات مسیر مسیر اگر به درستی ضد عفونی نشود
مکان های مشترک idor پنهان است
-
پارامترهای URL:
/profile?user_id=201
-
بدنهای پست:
{"orderId": "558"}
- زمینه های شکل پنهان
- کوکی یا هدر
-
مسیرهای بارگیری:
/download?file=invoice_231.pdf
مطالعات موردی در دنیای واقعی: idor اشتباه کرد
⚠ MTN Business Nigeria (2022)
نقص: به روزرسانی Endpoint اجازه ویرایش پروفایل کاربر را از طریق شناسه حساب های فاش شده.
تأثیر: مهاجم می تواند اصلاح کند هیچ مشخصات کاربر
⚠ بازوهای اولیه (2022)
نقص: دستکاری تاریخ سفارش منجر به دسترسی به PII سایر مشتریان شد.
تأثیر: نام ، شماره تلفن ، آدرس های خانه درز شده است.
⚠ IssueTrak CVE-2025-2271
نقص: کاربران کم ارزش به گزارشهای حسابرسی سایر کاربران دسترسی پیدا کردند.
تأثیر: داده های حسابرسی داخلی حساس داخلی.
⚠ سکوی انتشارات دانشگاهی (2024)
نقص: شناسه های دستنوشته متوالی مجاز به خراش داده ها.
تأثیر: اسناد دانشگاهی ، پرداخت ها و نامه های پذیرش به بیرون درز شدند.
چگونه هکرها این کار را انجام می دهند: 5 مرحله بهره برداری واقعی (با کد)
⚠ فقط اهداف آموزشی – هرگز دسترسی غیرمجاز را امتحان نکنید.
1. URL دستکاری
# Original
GET /view_invoice?invoice_id=7001
# Tampered
GET /view_invoice?invoice_id=7002
2. دستکاری درست در زمینه Form Form (Suite Burp)
POST /api/updateProfile
{
"user_id": "victim123",
"email": "attacker@evil.com"
}
3. فایل بارگیری بهره برداری
/download?file=other_user_docs.pdf
4. تزریق بدن API
PATCH /api/user/settings
{
"id": "admin",
"notifications": "off"
}
5. مسیر مسیر + idor
GET /download?file=../../admin/creds.txt
چگونه می توان از idor جلوگیری کرد
همیشه کنترل دسترسی را اجرا کنید
قانون طلایی: هر دسترسی = بررسی مجوز صریحبشر
به شناسه کاربران اعتماد نکنید
استفاده:
از منابع غیرمستقیم استفاده کنید
- به جای
/invoice?id=123
، استفاده کنید/my/invoice/3
→ نقشه برداری در جلسه.
از شناسه های غیرقابل پیش بینی استفاده کنید
import uuid
invoice_id = str(uuid.uuid4()) # Not guessable
تمام ورودی ها را ضد آب کنید
به خصوص نام های پرونده یا مسیرهایی برای جلوگیری از گذر مسیر زنجیر شده idor + مسیر.
نتیجه گیری: اشتباه کوچک ، پیامد بزرگ
idor اشکالی است که برنامه شما را خراب نمی کند ، خطا نمی کند و چیزی را نمی شکند – تا آن زمان همه چیز را نشت می کندبشر این مربوط به کد بد نیست. این در مورد است مفقود کد یک بررسی مجوز – این همان است.
کاری که امروز می توانید انجام دهید
-
حسابرسی هر مکانی را که می توانید یک منبع را با شناسه بدست آورید.
-
استفاده مستقیم شناسه را با نگاشتهای جلسه سمت سرور جایگزین کنید.
-
برنامه خود را هم به عنوان یک کاربر معمولی و هم یک مهاجم آزمایش کنید.
زیرا اگر شما بررسی نکنید که چه کسی می پرسد ، شخص دیگری ارادهبشر
خواندن بیشتر
-
برگه تقلب پیشگیری OWASP idor
-
راهنمای تست کنترل دسترسی OWASP
-
آزمایشگاه Portswigger idor
-
برای مشاهده راهنمای بهره برداری IDOR
-
بهره برداری پیشرفته IDOR Intigriti