Be တုိ႔ image ေတြကုိ uploadလွ်င္ shell ေတြပါလာႏုိင္ပါတယ္။
ထုိshell မ်ားကုိအလုပ္မလုပ္ေစဘဲ ခ်ဳပ္ထားတဲ့နည္းကုိ ေျပာျပပါမယ္။
ဘီတစ္ခါ ဆုိဒ္တစ္ဆုိဒ္ကုိ ကလိရင္းနဲ႔ ဒီmethod အေျခခံေလးကုိေတြ႕
တာပါ။ Hacker အေတာ္မ်ားမ်ားက သူဆုိဒ္ကုိ လက္တည့္စမ္းသြားၾက
တယ္။ ဒါေပမယ့္ သူဆုိဒ္မွာ shell ကုိျပန္ေခၚလုိ႔မရေအာင္ခ်ဳပ္ထား
တာကုိ ေတြ႕ရပါတယ္။ ဘီတုိ႔ upload code ေတြကုိေရးလွ်င္ broswer
ကေနျပီး temp file မွတစ္ဆင့္ folder ထဲသုိ႔ဆြဲထည္႔တဲ့နည္းနဲ႔ေရးတာပါ။
ဒီတစ္ခါနည္းလမ္းသစ္ကေတာ့ sql ထဲမွာေရးထားပါတယ္။
ဓာတ္ပုံဖုိင္ေတြရဲ့ကုဒ္ေတြကုိ php နဲ႔ဖတ္လုိက္တယ္ ျပီးေတာ့ database ထဲ
ကုိထည့္သိမ္းထားတယ္။ ျပီးေနာက္ url နဲ႔ျပန္ထုတ္ေပးတယ္။
ဒီလုပ္ငန္းစဥ္ကအႏၱရာယ္အရမ္းရွိပါတယ္ database ထဲမွာသိမ္းထားတာဆုိ
ေတာ့ sql injection ရွိနုိင္ပါတယ္။
ဒါဆုိရင္ sql injection ကုိ ဘယ္လုိကာကြယ္မလဲ။
အေရွ႕မွာ bro ေတြေျပာတာကုန္သေလာက္နီးပါးရွိေနပါျပီ
ထပ္ျဖည့္ေျပာရလွ်င္
Get method ကုိမသုံးပါႏွင့္ Post method ကုိပဲသုံးပါ
mysql_real_escape_string ကုိလည္းအသုံးျပဳႏုိင္ပါတယ္။
true stage ေရးျပီးလွ်င္ ဒီတုိင္းပဲမထားပဲ false stage အတြက္ပါစဥ္းစားပါ။
ဆုိဒ္ေတာ္ေတာ္မ်ားမ်ားမွာ ေအာက္ကပုံစံမ်ိဳးလုပ္လုိက္လွ်င္ erorr တတ္လာျပီ
http://localhost/web/sw.php?id=8' http://localhost/web/sw.php?id=8"ဒီလုိမ်ဳိး error တတ္ရတဲ႔အေၾကာင္းအရင္းက ေသခ်ာမစစ္လုိ႔ပါ
php programmer ရဲ့ဆုိဒ္ hackခံထံေသာအခါ CMS ဘက္ကုိ
ကူးေျပာင္းသြားေလ့ရွိပါတယ္။ CMS ေတြက ကုဒ္ေတြshareထားေသာေၾကာင့္
သင့္ရဲ့ ၀က္ဆုိဒ္ကမလုံျခဳံနုိင္ပါ။ သင့္ရဲ့ ဆုိဒ္version နိမ္႔သြားတာနဲ႔အမွ်
expolit ေတြထြက္လာပါလိမ့္မယ္။ အဓိကေတာ့ ကုိယ့္ကုဒ္ေတြကုိ ထိန္းသိမ္းပါ။
ခုနက error ကုိျပန္ဆက္ရေအာင္
http://localhost/web/sw.php?id=8' http://localhost/web/sw.php?id=8"ဒီလုိအေျခအေနမ်ဳိးမွာ programmer ေတြက
if ($row['id'] === $id){
$content = $row['images'];
header('Content-type: image/jpg');
echo $content;}
else { header('location:add.php'); }
ဒီurlက id ကီးနဲ႔ sql က ကီးနဲ႔တုိက္စစ္လုိက္တာပါ။
တစ္ကယ္လုိ႔ ကီးေတြေလွ်ာက္ထဲလုိ႔မတူခဲ႔လွ်င္ redirect လုပ္သြားပါလိမ့္မယ္။
ဒီထက္ျမင့္လာလွ်င္ random ကီးနဲ႔ url ကုိ encode လုပ္လုိ႔ရပါတယ္။
image ကုိ sql ထဲမွာထားတာက ပုိျပီးစိတ္ခ်ရပါတယ္။
တစ္ကယ္လုိ႔uploader က upload အဆင့္ေက်ာ္သြားရင္ေတာင္
shell ကအလုပ္လုပ္နုိင္မည္မပာုတ္ပါ။
<img src="$ss" > ဒီသေဘာတရားပါ။
header('Content-type: image/jpg');
လုိမ်ဳိးနဲ႔ ဓာတ္ပုံေတြကုိ ဖန္တီးလုိက္လွ်င္ shell code ေတြေပ်ာက္သြားပါလိမ့္မယ္။
copy from HF
credit to beyondcode