route('login');
}
// ==========================================
// راهاندازی آزمایشگاه
// ==========================================
public function setupLab()
{
User::firstOrCreate(
['email' => 'victim@webapp.kr-rezvan.ir'],
[
'name' => 'کاربر قربانی',
'password' => Hash::make('12345678')
]
);
if(User::where('email', 'hacker@eitebar.ir')->exists())
{
User::where('email', 'hacker@eitebar.ir')->first()->delete();
}
return "
آزمایشگاه آماده شد! 🧪
کاربر هدف (victim@webapp.kr-rezvan.ir) با رمز عبور (12345678) در دیتابیس ساخته شد.
رفتن به صفحه لاگین
";
}
// ==========================================
// نمایش فرم ورود
// ==========================================
public function showLogin()
{
return view('user.login');
}
// ==========================================
// پردازش ورود کاربر
// ==========================================
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
return redirect()->route('user.profile');
}
return back()->withErrors(['message' => 'اطلاعات ورود صحیح نیست.']);
}
// ==========================================
// خروج کاربر
// ==========================================
public function logout()
{
Auth::logout();
return redirect()->route('login');
}
// ==========================================
// نمایش پروفایل کاربری
// ==========================================
public function profile()
{
return view('user.profile', ['user' => Auth::user()]);
}
// ==========================================
// حذف حساب کاربری (Clickjacking Target)
// ==========================================
public function destroy(Request $request)
{
$user = $request->user();
Auth::logout();
$user->delete();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
// ==========================================
// متد آسیبپذیر تغییر ایمیل (CSRF Target)
// ==========================================
public function updateEmail(Request $request)
{
// بررسی اعتبار کوکی نشست (آیا SameSite اجازه ارسال کوکی را داده است؟)
if (!Auth::check()) {
return response()->json([
'error' => 'شما لاگین نیستید. مرورگر کوکی نشست را بلاک کرده است! (محافظت SameSite عمل کرد)'
], 401);
}
$user = Auth::user();
$oldEmail = $user->email;
// اعمال تغییرات مخرب در دیتابیس
$user->email = $request->input('email');
$user->save();
return response()->json([
'status' => 'success',
'message' => 'حمله موفق! ایمیل کاربر در دیتابیس تغییر یافت.',
'old_email' => $oldEmail,
'new_email' => $user->email
]);
}
public function resetDatabase()
{
try {
Artisan::call('migrate:fresh', ['--force' => true]);
$this->setupLab();
if (Storage::disk('public')->exists('stolen_cookies.log')) {
Storage::disk('public')->delete('stolen_cookies.log');
}
return back();
} catch (\Exception $e) {
return response()->json([
'status' => 'error',
'message' => 'خطا در پاکسازی دیتابیس و لاگها: ' . $e->getMessage()
], 500);
}
}
}