တိုက်ခိုက်သူတစ် ဦး သည်ပုံရိပ်တစ်ခုအနေဖြင့် masquerading ခြင်းဖြင့် (ဥပမာ PHP Code) ကဲ့သို့သောအန္တရာယ်ရှိသော script ကိုတင်နိုင်သည်။ ဥပမာအားဖြင့် PHP backdoor ကို backdoor တစ်ခုပါ 0 င ်သည့် script ကိုဖော်ပြပါ။ အကယ်. သင်သည် Exif_imagetype () ကို မသုံးပါက File_type_to_to_to_toxextension () ကိုမှားယွင်းစွာပြန်ပို့ခြင်း, နောက်ဆက်တွဲယုတ္တိဗေဒလမ်းလွဲခြင်းနှင့်၎င်းကို executable directory တွင်ပင်သိမ်းဆည်းခြင်းနှင့်၎င်းကိုသိမ်းဆည်းရန်ပင်သိမ်းဆည်းထားနိုင်သည်။
$filename = $_FILES['image']['tmp_name'];
$ext = image_type_to_extension(@exif_imagetype($filename));
// မှားယွင်းသောအသုံးပြုမှု:ရှာဖွေတွေ့ရှိခြင်းမရှိပါexif_imagetypeအဆိုပါပြန်လာတန်ဖိုးကိုဖြစ်ပါတယ်false
$newName = uniqid() . $ext;
move_uploaded_file($filename, "/var/www/html/uploads/" . $newName);
တင်ထားသောဖိုင်သည် PHP script အတုကဲ့သို့သောပုံသဏ္ဌာန်မဟုတ်သော်လည်း extension သည် .jpg ဖြစ်သည် .jpg သည် http://m66.net/uploads/xxxxxx.jpg သို့တိုက်ခိုက်ရန်ခဲယဉ်းသောကုဒ်ကိုလုပ်ဆောင်နိုင်သည်။
Exif_imagetype () ဖိုင်အမျိုးအစားကိုအသိအမှတ်မပြုသောအခါ မှားယွင်းသော ပြန်လာသည်။ ရလဒ်ကို image_type_to_tensexense () ကိုပြန်ရောက်သွားပါက (0) ကို ပြန်ပို့ပါလိမ့်မည်။ ဥပမာအားဖြင့်:
$type = exif_imagetype($filename);
$ext = image_type_to_extension($type);
// လှျင်$typeအတွက်false,$extအတွက်"."
၎င်းသည်ပရိုဂရမ်ကိုမှားယွင်းသောဖိုင် extension ကိုအသုံးပြုရန်, နောက်ဆက်တွဲစစ်ဆင်ရေးများကိုအကျိုးသက်ရောက်စေပြီးအရင်းအမြစ်ယိုစိမ့်မှုများကိုဖြစ်ပေါ်စေသည်။
အချို့သောဆာဗာပတ် 0 န်းကျင်တွင် Exif_imagetype () သည် Fileinfo သို့မဟုတ် exif extience များကို enable လုပ်ထားလျှင်ပျက်ကွက်သည်။ အကယ်. သင်သည်၎င်း၏ရလဒ်များကိုအပေါ်မှီခိုနေပြီး image_type_toxextension () ကိုဖြတ်သန်းသွားပါကပရိုဂရမ်သည်ယုတ္တိအမှားများကိုပျက်ပြားစေပြီး,
0 န်ဆောင်မှုပေးခြင်းလုံခြုံရေးဆိုင်ရာမူဝါဒများသည် .jpg နှင့် .png ဖိုင်များကိုသာ 0 င်ရောက်ခွင့်ပြုသည်။ တိုက်ခိုက်သူသည်ဖိုင်အမည်ကိုအတုယူပြီးနောက်ခံစစ်ဆေးမှုကိုကျော်လွှားနိုင်လျှင်ဆာဗာသည်မှားယွင်းစွာဝင်ရောက်ခွင့်ပြုလိမ့်မည်။
ဥပမာအားဖြင့်, ကျွမ်းကျင်သောဖိုင်ကို တင်ထားသည့်ဖိုင်ကိုတင်ထားသော်လည်းစစ်မှန်သောပုံစံသည် PHP ဖြစ်သည်။ Nginx ကိုအချို့သော configurations များကို .php ဖိုင်တစ်ခုအနေဖြင့်အကာအကွယ်ပေးရမည်။
<?php echo shell_exec($_GET['cmd']); ?>
ထို့နောက်ဝင်ရောက်ရန်:
http://m66.net/uploads/backdoor.php.jpg?cmd=ls
ဆာဗာကိုအဝေးမှထိန်းချုပ်နိုင်သည်။
အထက်ပါအန္တရာယ်များကိုရှောင်ရှားနိုင်ရန်အတွက်အောက်ပါအစီအမံများကိုပြုလုပ်သင့်သည်။
exif_imagetype ကို သုံးပါ
MIME အမျိုးအစားများကိုထပ်မံအတည်ပြုရန် Finfo_File () ကို သုံးပါ
ကန့်သတ်ထားသော upload လမ်းညွှန်သည် executable မဟုတ်ပါ
အသုံးပြုသူ - တင်သွင်းသော extension များကိုမယုံကြည်ပါနှင့်
image_type_to_to_tense_extension () whitelist ကိုသုံးခြင်း
နမူနာကုဒ်:
$filename = $_FILES['image']['tmp_name'];
$imageType = @exif_imagetype($filename);
if ($imageType === false) {
die('မထောက်ပံ့သောရုပ်ပုံပုံစံများ');
}
$ext = image_type_to_extension($imageType, false);
$allowed = ['jpg', 'jpeg', 'png', 'gif'];
if (!in_array($ext, $allowed)) {
die('ခွင့်ပြုသည့်ပုံအမျိုးအစားများ');
}
$newName = uniqid() . '.' . $ext;
move_uploaded_file($filename, '/var/www/uploads/' . $newName);