XSS ဆိုတာ Cross-site Scripting လုိ႕ေခၚတဲ့ Web Application Vuln တစ္မ်ိဳးျဖစ္ျပီး အစကေတာ့ CSS လို႕ေခၚၾကပါတယ္ ေနာက္ပိုင္း Cascading Style Sheet နဲ ေရာေနတဲ့အတြက္ XSS လို႕ေျပာင္းလဲေခၚေ၀ၚၾကတာျဖစ္ပါတယ္ ။ Web Master ရဲ႕ Filter လုပ္မထားေသာ Input Vulnerability မွတစ္ဆင့္ Html ႏွင့္ Java Script မ်ား Inject လုပ္ကာ User မ်ား၏ Web Browser မ်ားကို အဓိကထားတုိက္ခိုက္ၾကပါသည္ ။ တကယ္ေတာ့ XSS မွာ Attacker ဟာ Browser ကိုတိုက္ခိုက္တာပါ ။ Web Server ကိုမဟုတ္ပါဘူး ။ Vuln ျဖစ္ေနေသာ Web Server မွတစ္ဆင့္ Suffer လုပ္သူ User မ်ား၏ Browser ထဲမွ Data မ်ားကို ရယူရန္ ႏွင့္ Worm မ်ားထည့္သြင္းရန္ Trojan မ်ားကူးစက္ရန္ Phishing လုပ္ရန္ စီစဥ္ျခင္းျဖစ္ပါသည္ ။
XSS ျခိမ္းေျခာက္မႈ ဇယားကို CEH မွ ကူးယူတင္ျပထားျခင္းျဖစ္ပါသည္ ။
Understanding XSS
Code<?php
$name=$_GET['name'];
print $name;
?>
အဲ့ဒီ့မွာ Input ကို Filter လုပ္ထားျခင္းမရွိပါ ။ ဒါေၾကာင့္ User Input လုပ္ခြင့္ရတဲ့တစ္ေနေနရာရာ ဥပမာ Search Box လိုေနရာမ်ိဳးမွာ
“><SCRIPT>alert(‘XSS%20Testing’)</SCRIPT> လို႕ရိုက္လိုက္ရင္ Pop Up Window နဲ႕ XSS လုိ႕ေပၚလာမွာျဖစ္ပါတယ္ ( “><SCRIPT>alert(‘XSS%20Testing’)</SCRIPT> ) လို႕ေရးရတဲ့အေၾကာင္းအရင္းကေတာ့ တခ်ိဳ႕ေသာ Website မ်ားမွာ <script>alert(“XSS”)</script> လို Code မ်ိဳး Inject လုပ္မရေအာင္ Filter လုပ္ထားတာကို ေက်ာ္ဖို႕ပါ ဒါကေတာ့ အၾကမ္းဖ်င္းေပါ့ေနာ္ ေနာက္ပိုင္းေတြမွ ပဲ အေသးစိတ္ေရးေပးပါ့မယ္ )
URL မွာေတာ့ ဒီလိုေပါ့ေနာ္
http://website.com/test.php?name=<script>alert(“XSS”)</script>
ခုနကလို “><SCRIPT>alert(‘XSS%20Testing’)</SCRIPT> လို႕ရိုက္သြင္းလိုက္တဲ့ Script ဟာ Input Filter လုပ္မထားေသာ Web Server ထဲသို႕ Value တစ္ခုအျဖစ္၀င္သြားသည္ကို ေအာက္ပါ အတုိင္း HTML Source ျဖင့္ၾကည့္ႏိုင္သည္ ။
ဒါဆိုရင္ အျခားေသာ Script မ်ားကိုလည္း Inject လုပ္တိုက္ခိုက္ႏိုင္ပါျပီ
Types of Vulnerabilities
1.Persistent XSS2.Non Persistent XSS
3.Dom-Based XSS
1.Persistent XSS
Persistent XSS ေခၚ Stored XSS တြင္မူ Attacker Input လုပ္လုိက္ေသာ Inject Code မ်ားကို Web Server ထဲတြင္ သိမ္းဆည္းထားျပီး User မ်ားယင္း Page သို႕၀င္ေရာက္တုိင္း ယင္း Script သည္ အလိုလို အလုပ္လုပ္ေနမည္ျဖစ္သည္ ။
ဥပမာ - Forum တစ္ခုတြင္ User Feedback ေနရာ၌ XSS Vuln ျဖစ္ေနမည္ဆိုပါစို႕ ။ ထိုအခါ Attacker က ယင္းေနရာတြင္ User စိတ္၀င္စားမႈရွိေသာ ေခါင္းစဥ္ေပး၍ ( Example : Hey , I found a new error CHECK IT!!! ) User အားျမဴစြယ္ကာ ယင္း Page တြင္ Code Inject လုပ္ထားမည္ျဖစ္သည္ ။ ထိုအခါ အျခား User မ်ားယင္း Page သို႕ေရာက္ရွိတုိင္း Inject Code က အလုပ္လုပ္ေနမည္ျဖစ္သည္ )
2.Non Persistent XSS
Reflected XSS လုိ႕လည္း လူသိမ်ားတဲ့ Non Persistent XSS Vulnerability မွာ Attacker Inject လုပ္လိုက္တဲ့ Code ဟာ Web Server ထဲမွာသိမ္းဆည္းထားမွာမဟုတ္ပါဘူး Http Request မွ တစ္ဆင့္သာ Inject လုပ္ေသာ Code မ်ားကို Server သုိ႕ေပးပို႕မည္ျဖစ္သည္ ။
ဥပမာအားျဖင့္ဆိုရေသာ္ Website တစ္ခုရွိ Search Box တြင္ User ရွာေသာ Input မ်ားကို သိမ္းဆည္းထားျခင္းမရွိပဲ Result ျပျပီးလွ်င္ ဖ်က္သိမ္းသြားမည္ျဖစ္သည္ အကယ္၍ ယင္းေနရာတြင္ User Input FILTER လုပ္မထားပါက ႏွစ္သက္ရာ Code မ်ား Inject လုပ္သြားႏုိင္မည္ျဖစ္သည္ သို႕ေသာ္လည္း Web Server ထဲတြင္ သိမ္းဆည္းထားမည္မဟုတ္ေပ သို႕ျဖစ္၍ Attacker က Inject လုပ္ထားေသာ Page သို႕မေရာက္ေရာက္ေအာင္ ျမဴဆြယ္ရမည္ျဖစ္သည္ ။ ဥပမာ Cookies Stealing လုပ္မည္ဆုိပါက ယင္း Cookies Stealer ဆီသို႕မေရာက္ေရာက္ေအာင္ Link ကို နည္းမ်ိဳးစံု ျမဴဆြယ္၍ User Click ေအာင္ေဆာင္ရြက္ရမည္ျဖစ္သည္ ။ အကယ္၍ User ကသာ Click လိုက္ပါက Browser က Inject လုပ္ထားေသာ Code အတုိင္း Server သို႕ေပးပို႕မည္ျဖစ္ျပီး Server မွာ Attacker သို႕ဆက္လက္ေပးပို႕မည္ျဖစ္သည္ ။ ထို႕ေၾကာင့္ Reflected XSS ဟုုေခၚျခင္းျဖစ္သည္ ။ အေတြ႕ရအမ်ားဆံုး XSS Vuln လည္းျဖစ္သည္ ။
3.Dom-Based XSS
Dom ဆိုတာ HTML ႏွင့္ XML Language မ်ားအားကိုယ္စားျပဳသည့္ Object မ်ားကို define လုပ္ေပးသည့္ W3c ၏ စံညႊန္းတစ္ခုျဖစ္ပါတယ္ ။ ( XML Language မွာ SAX နဲ႕ Dom ဆိုျပီး Parser ႏွစ္ခုရွိတဲ့အနက္မွာ SAX ကေတာ့ ျမန္တယ္ ေပါ့ပါးတယ္ သို႕ေသာ္လည္း document node ေတြဘက္ကိုျပန္သြားဖို႕မလြယ္လွတာေၾကာင့္ ယေန႕ Browser ေတြမွာ DOM Parser ကုိအသံုးျပဳၾကပါတယ္ ( ဒါက Dom ဆိုတာ ဘာမွန္းသိေအာင္ေျပာတာပါ )
Local Based XSS လို႕ေခၚတဲ့ Dom Based XSS မွာေတာ့ ေပါက္တာျခင္းက User ဆီကိုတိုက္ခိုက္ဖို႕ script ေတြကို Persistent လို stored လုပ္ထားဖို႕လည္းမလုိသလို non-persistent လိုလည္း webserver မွတစ္ဆင့္ reflected လုပ္ဖို႕မလိုပါဘူး ဒါဆုိ ဘယ္လိုျဖစ္တာလဲဆိုတာနည္းနည္းေျပာပါ့မယ္ ဥပမာ ecommerce site တစ္ခုဆိုပါစို႕ www.store.com ေပါ့ သူ႕မွာ စာအုပ္ေရာင္းတဲ့ Catagory တစ္ခုရွိပါတယ္ www.store.com/books ေပါ့ တကယ္လုိ႕သာ ကၽြန္ေတာ္တို႕က ဆယ္အုပ္ပဲက်န္ေတာ့တဲ့ စာအုပ္ကို ရွာခ်င္တယ္ဆိုပါစို႕ ဒါဆို www.store.com/books?product_id=100&title=Only+10+Left! ဆိုျပီး ရွာခြင့္ရွိပါ့မယ္ ဒီလိုရိုက္လို္က္ရင္ ,if; html Page မွာ Java Script တစ္ခု အလိုအေလ်ာက္သြားေရးသြားပါလိ္မ့္မယ္
<script>
var url = window.location.href;
var pos = url.indexOf(“title=”) + 6;
var len = url.length;
var title_string = url.substring(pos,len);
document.write(unescape(title_string));
</script>
ဒီလိုေပါ့ အဲ့ဒီ့မွာကြိဳင္တာပဲ
တကယ္လို႕ product_id ဆိုတဲ့ Input Method ကိုသာ input Filter လုပ္ထားဘူးဆိုရင္ www.store.com/books??product_id=100&title=Foo#<SCRIPT>alert(‘XSS’) </SCRIPT> လုိ႕ရိုက္လိုက္ရင္ XSS Alert တက္လာပါလိမ့္မယ္ ( သူက non-persistent XSS နဲ႕ပိုတူတာေတြ႕ရပါလိမ့္မယ္ ) ဒီ Dom Based မွာ အျခား မည့္သည့္ Web ေပၚမွာ အရာကို မဆို ခ်ိတ္လုိ႕ရပါတယ္ တကယ္လုိ႕ src နဲ႕ javascript Malware ကိုသာ ခ်ိတ္လိုက္မယ္ဆိုရင္
Dom Based XSS မွာေတာင္
1.Persistent Dom-Based XSS နဲ႕
2.Non-Persistent Dom-Based XSS ဆိုျပီး ႏွစ္မ်ိဳးရွိပါေသးတယ္ ။
Post By Negative Thunder (Ghost Area)
P.s: ဒီပိုစ့္ေလးက တကယ္ေကာင္းလို႕ ျပန္တင္ေပးလိုက္ပါတယ္......။