در حال بارگذاری...
بررسی آسیبپذیری ربودن نشست (Session Hijacking) که در آن مهاجم Session ID کاربر را سرقت میکند.
اهداف این درس
ربودن نشست (Session Hijacking) حملهای است که در آن مهاجم Session ID کاربر را سرقت میکند و با آن به حساب کاربر دسترسی پیدا میکند. این حمله یکی از خطرناکترین حملات مدیریت نشست است.
حملهای که در آن مهاجم Session ID کاربر را سرقت میکند و با آن به حساب کاربر دسترسی پیدا میکند.
| روش | توضیح | پیشگیری |
|---|---|---|
| XSS | سرقت از طریق JavaScript | HttpOnly |
| شبکه ناامن | سرقت از ترافیک HTTP | HTTPS |
| Sniffing | رهگیری ترافیک شبکه | HTTPS |
| حدس زدن | حدس زدن Session ID | Session ID تصادفی |
| Malware | سرقت از طریق بدافزار | آنتیویروس |
| Log Files | سرقت از لاگها | عدم ذخیره Session ID |
1# بررسی HTTPS2curl -v https://target.com 2>&1 | grep -i 'strict-transport'34# بررسی Secure flag5curl -v https://target.com 2>&1 | grep -i 'set-cookie.*secure'67# بررسی HttpOnly flag8curl -v https://target.com 2>&1 | grep -i 'set-cookie.*httponly'910# بررسی انتقال از HTTP به HTTPS11curl -v http://target.com 2>&1 | grep -i 'location'تست کنید آیا XSS ممکن است (که میتواند Session ID را سرقت کند):
1// اگر این کد اجرا شود، Session ID قابل سرقت است2console.log(document.cookie);34// اگر Session ID نمایش داده شود، HttpOnly تنظیم نشده5// اگر خطا بخورد یا خالی باشد، HttpOnly تنظیم شدهSession ID را از نظر قابل حدس بودن بررسی کنید:
Session Hijacking میتواند منجر به تصاحب حساب کاربری، دسترسی غیرمجاز به اطلاعات حساس، سرقت هویت و انجام عملیات غیرمجاز شود.
1const session = require('express-session');23app.use(session({4 secret: crypto.randomBytes(64).toString('hex'),5 name: 'sessionId',6 resave: false,7 saveUninitialized: false,8 cookie: {9 secure: true, // فقط HTTPS10 httpOnly: true, // غیرقابل دسترسی از JavaScript11 sameSite: 'strict', // جلوگیری از CSRF12 maxAge: 30 * 60 * 1000 // 30 دقیقه13 }14}));1516// تغییر Session ID بعد از ورود17app.post('/login', (req, res) => {18 req.session.regenerate((err) => {19 req.session.userId = user.id;20 res.redirect('/dashboard');21 });22});2324// تغییر Session ID بعد از عملیات حساس25app.post('/change-password', (req, res) => {26 // تغییر رمز عبور27 req.session.regenerate((err) => {28 res.redirect('/dashboard');29 });30});هشدار
هرگز از شبکههای عمومی WiFi برای دسترسی به حسابهای حساس استفاده نکنید. ترافیک HTTP در این شبکهها قابل رهگیری است.
از HTTPS برای تمام ارتباطات استفاده کنید.
از Cookie با HttpOnly و Secure استفاده کنید.
Session ID را منظم تغییر دهید.
از شبکههای عمومی WiFi استفاده نکنید.
کدام روش برای سرقت Session ID استفاده نمیشود؟
Session Hijacking چیست و چگونه رخ میدهد؟
Session Hijacking حملهای است که در آن مهاجم Session ID کاربر را سرقت میکند و با آن به حساب کاربر دسترسی پیدا میکند. روشهای سرقت شامل XSS، شبکه ناامن، حدس زدن و sniffing است.
چگونه از Session Hijacking جلوگیری کنیم؟
راههای جلوگیری شامل: استفاده از HTTPS، تنظیم HttpOnly و Secure روی Cookie، تغییر منظم Session ID، جلوگیری از XSS، و استفاده از شبکههای امن.
تفاوت Session Hijacking و Session Fixation چیست؟
در Session Hijacking، مهاجم Session ID را بعد از ورود قربانی سرقت میکند. در Session Fixation، مهاجم Session ID را قبل از ورود قربانی تحمیل میکند.