آسیبپذیری دستکاری قیمت (Price Tampering) در فروشگاههای آنلاین
یکی از آسیبپذیریهای رایج و در عین حال خطرناک در فروشگاههای آنلاین، آسیبپذیری کاهش یا دستکاری قیمت است. این مشکل زمانی رخ میدهد که اطلاعات مربوط به مبلغ پرداختی در قالب درخواستهای سمت کاربر (Client-Side) منتقل شده و توسعهدهنده، اعتبارسنجی لازم را در سمت سرور (Server-Side) انجام نداده باشد. در این حالت، یک مهاجم میتواند با رهگیری و تغییر این پارامترها، مبلغ نهایی پرداخت را به نفع خود دستکاری کند.
Price Tampering چیست؟
در یک فروشگاه اینترنتی، وقتی مشتری قصد خرید دارد، اطلاعات مربوط به خرید (مثل شناسه محصول، تعداد، قیمت و غیره) بین مرورگر کاربر و سرور فروشگاه رد و بدل میشود.
اگر قیمت محصول از سمت کاربر به سرور ارسال شود (چه از طریق POST، GET یا حتی کوکیها) و فروشگاه این مقدار را به درستی بررسی و اعتبارسنجی نکند، یک مهاجم میتواند با تغییر این مقدار، مبلغ واقعی را کاهش دهد و خرید را با قیمت جعلی انجام دهد.
مثال عملی از آسیبپذیری دستکاری قیمت
فرض کنید در مرحله پرداخت یک فروشگاه اینترنتی، یکی از حالتهای زیر اتفاق میافتد:
حالت POST
POST /checkout HTTP/1.1
Host: example.com
Content-Type: application/json
{
"product_id": "123",
"quantity": 1,
"price": 100000
}
حالت GET
GET /checkout?product_id=123&quantity=1&price=100000 HTTP/1.1
Host: example.com
هدف چالش (Goal)
هدف شما در این چالش این است که با دستکاری درخواست ارسالی به سرور (چه از نوع POST و چه GET)، محصول مورد نظر را با قیمتی کمتر از قیمت اصلی آن خریداری کرده و فرآیند خرید را با موفقیت به پایان برسانید.
ابزارهای مورد نیاز (Tools Needed)
- یک مرورگر وب (مانند Chrome یا Firefox)
- نرمافزار Burp Suite برای رهگیری و تغییر درخواستها
- ابزارهای توسعهدهنده مرورگر (Developer Tools) برای بررسی درخواستهای شبکه
- افزونههایی مانند Tamper Data یا ModHeader (اختیاری)
مراحل انجام چالش (Walkthrough)
برای بررسی و بهرهبرداری از این آسیبپذیری، مراحل زیر را دنبال کنید:
- محصولی را به سبد خرید اضافه کرده و وارد فرآیند پرداخت شوید
- ابزار توسعهدهنده مرورگر را باز کرده و به تب Network بروید
- فرآیند پرداخت را ادامه دهید و درخواستهای ارسالی را بررسی کنید
- مشخص کنید آیا پارامترهای قیمت در:
- بدنه POST
- پارامترهای GET
- هدرها
- یا کوکیها
- با استفاده از Burp Suite یا ابزارهای مشابه، درخواست را رهگیری و پارامتر قیمت را تغییر دهید
- بررسی کنید آیا سیستم تغییرات را میپذیرد یا خیر
راهکار و روش جلوگیری (Prevention)
راه حل اصلی و قطعی برای جلوگیری از این حمله، پیادهسازی اعتبارسنجی دقیق و کامل در سمت سرور است. یک سیستم امن باید:
اصول کلی پیادهسازی امن
- هرگز به دادههای ارسالی کاربر اعتماد نکند (چه از طریق GET، POST، هدرها یا کوکیها)
- قیمت نهایی باید همیشه از پایگاه داده سرور خوانده شود
- از توکنهای امنیتی یکبارمصرف برای تراکنشها استفاده کند
- تمام تراکنشهای مالی را با دقت لاگ کند
- پیادهسازی مکانیزمهای بررسی یکپارچگی دادهها
بهترین روشهای پیادهسازی
- محاسبه قیمت نهایی فقط در سمت سرور
- استفاده از شناسههای یکتا برای هر تراکنش
- اعتبارسنجی تمام پارامترهای ورودی
- پیادهسازی سیستم بررسی یکپارچگی قیمتها
- استفاده از امضای دیجیتال برای دادههای حساس
سلب مسئولیت: این چالش صرفاً با اهداف آموزشی و پژوهشی در محیط کنترل شده آزمایشگاه hackmelocal.com طراحی شده است. هرگونه سوءاستفاده از این اطلاعات در سیستمهای واقعی غیرقانونی و غیراخلاقی است.