برنامه نویسی

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

مقدمه

تصور کنید که در حال مرور سایت تجارت الکترونیکی مورد علاقه خود هستید و سفارشات گذشته خود را مشاهده می کنید. شما URL را فقط کمی تغییر می دهید – ممکن است یک شماره را از آن تغییر دهید 123 به 124بشر ناگهان ، شما به فاکتور شخص دیگری خیره شده اید. بدون ابزار هک کردن ، بدون نیروی بی رحمانه – فقط یک تغییر ساده ، و شما در آن قرار دارید. که در اصل ، سادگی وحشتناک یک است خشک حمله

در دنیای دیجیتال HyperConnected امروز ، جایی که داده ها ارز است ، شکاف های امنیتی مانند مرجع شیء مستقیم ناامن (IDOR) می توانند رابط های بی ضرر را به دروازه هایی برای نقض داده تبدیل کنند. این وبلاگ به یکی از فریبنده ترین و در عین حال خطرناک ترین نظارت های توسعه دهندگان تبدیل می شود – فراموش کردن بررسی اینکه آیا کاربر اجازه دسترسی به یک منبع را داردبشر

ما مشخص خواهیم کرد که چگونه یک خط از کد گمشده می تواند منجر به عواقب فاجعه بار شود ، مطالعات موردی در دنیای واقعی را کشف کند ، از طریق نحوه سوء استفاده مهاجمان از این آسیب پذیری ها استفاده کند و امروزه توسعه دهندگان راه حل های گام به گام را ارائه می دهند.


idor چیست و چرا باید اهمیت دهید؟

چک گمشده

IDOR هنگامی اتفاق می افتد که یک برنامه ورودی با کاربر را قبول کند (مانند user_id=123) و مستقیماً از آن برای واکشی اطلاعات حساس استفاده می کند – بدون تأیید اینکه کاربر مجاز به دسترسی به آن است. به این فکر کنید مانند تحویل یک کلید اتاق برای هر کسی که سعادت، نه فقط مهمان که اتاق را رزرو کرده است.

چرا الان مهم است

  • OWASP برتر 10 IDOR را تحت “کنترل دسترسی شکسته” طبقه بندی می کند – خطرناک ترین کلاس آسیب پذیری ها.

  • نقص های idor به طور فزاینده ای در طبیعت مورد سوء استفاده قرار می گیرند – نه توسط هکرهای نخبه ، بلکه توسط کاربران کنجکاو که مسلح به ابزارهای مرورگر و مجموعه Burp هستند.

  • با استفاده از API و میکروسروس ها در محبوبیت منفجر می شوند ، همچنین سطوح حمله ای را انجام دهید که Idor در آن غافل باشد.

پایان نامه

این وبلاگ استدلال می کند که idor یک اشکال پیچیده نیست – این یک اشتباه قابل پیشگیری استبشر رفع آن کمتر در مورد نوشتن کد پیچیده و بیشتر در مورد عمدی بودن است هر دسترسی شیبشر بیایید چگونگی شناخت و دفاع در برابر این تهدید ساکت اما کشنده را طی کنیم.


idor under the Hood: چگونه آسیب پذیری کار می کند

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 جلوگیری کرد

چگونه می توان از idor جلوگیری کرد

همیشه کنترل دسترسی را اجرا کنید

قانون طلایی: هر دسترسی = بررسی مجوز صریحبشر

به شناسه کاربران اعتماد نکنید

استفاده:

از منابع غیرمستقیم استفاده کنید

  • به جای /invoice?id=123، استفاده کنید /my/invoice/3 → نقشه برداری در جلسه.

از شناسه های غیرقابل پیش بینی استفاده کنید

import uuid
invoice_id = str(uuid.uuid4())  # Not guessable
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تمام ورودی ها را ضد آب کنید

به خصوص نام های پرونده یا مسیرهایی برای جلوگیری از گذر مسیر زنجیر شده idor + مسیر.


نتیجه گیری: اشتباه کوچک ، پیامد بزرگ

idor اشکالی است که برنامه شما را خراب نمی کند ، خطا نمی کند و چیزی را نمی شکند – تا آن زمان همه چیز را نشت می کندبشر این مربوط به کد بد نیست. این در مورد است مفقود کد یک بررسی مجوز – این همان است.

کاری که امروز می توانید انجام دهید

  • حسابرسی هر مکانی را که می توانید یک منبع را با شناسه بدست آورید.

  • استفاده مستقیم شناسه را با نگاشتهای جلسه سمت سرور جایگزین کنید.

  • برنامه خود را هم به عنوان یک کاربر معمولی و هم یک مهاجم آزمایش کنید.

زیرا اگر شما بررسی نکنید که چه کسی می پرسد ، شخص دیگری ارادهبشر


خواندن بیشتر

  1. برگه تقلب پیشگیری OWASP idor

  2. راهنمای تست کنترل دسترسی OWASP

  3. آزمایشگاه Portswigger idor

  4. برای مشاهده راهنمای بهره برداری IDOR

  5. بهره برداری پیشرفته IDOR Intigriti


نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا