PHP တွင် Show_Source () function ( highlight_file (highlight_file) ) ကို Syntax မီးမောင်းထိုးပြခြင်းဖြင့် format ဖြင့်ဖော်ပြရန် (Highlight_File (Highlight_File)) တွင်အသုံးပြုသည်။ ၎င်းကို debug လုပ်ရန်သို့မဟုတ်ပြသရန်အသုံးပြုသည်။ သို့သော် ပြပွဲ approsource () ဟုခေါ်သည့်အခါ input_source () ဟုခေါ်သည့်အခါ Input Path ကိုလုံးဝအတည်မပြုနိုင်ပါက traversal တိုက်ခိုက်မှုသည်အစပျိုးနိုင်ပြီးအထိခိုက်မခံသောဖိုင်များယိုစိမ့်မှုနှင့်ကြီးမားသောလုံခြုံရေးအန္တရာယ်များကိုဖြစ်ပေါ်စေနိုင်သည်။
Path Traversal Attack သည်ဆာဗာပေါ်ရှိဖိုင်များကို အသုံးပြု. ဖိုင်များကို အသုံးပြု. ဖိုင်လမ်းကြောင်းဆိုင်ရာ parameters များကိုကိုင်တွယ်ခြင်းမပြုသင့်ကြောင်းရည်ညွှန်းသည်။ တိုက်ခိုက်သူများသည်များသောအားဖြင့်လက်လှမ်းမီမှုန့်ကန့်သတ်ချက်များကိုကျော်လွှားရန်နှင့်စနစ်နှင့် ဆင်တူ သည့် directory jump သင်္ကေတများကိုအသုံးပြုသည် ။
နမူနာကုဒ်:
<?php
if (isset($_GET['file'])) {
show_source($_GET['file']);
}
?>
$ _GET ['file' ကိုထည့်သွင်းခြင်း] ကို filter မလုပ်ပါကတိုက်ခိုက်သူသည်အောက်ပါတို့ကိုတောင်းဆိုခြင်းဖြင့်မည်သည့်ဖိုင်ကိုမဆိုဝင်ရောက်နိုင်သည်။
http://gitbox.net/script.php?file=../../../../etc/passwd
၎င်းသည်ဆာဗာကို / etc / passwd ဖိုင်၏အကြောင်းအရာများကိုတိုက်ရိုက်ထုတ်လွှင့်ရန်,
ကန့်သတ်ထားသော Access Directory <br> Preset directory ထဲတွင်ဖိုင်များလက်လှမ်းမီမှုကိုသာခွင့်ပြုသည်။ ဥပမာ, / var / www / html / suesces ကို ရယူရန်ခွင့်ပြုထားသောဖိုင်၏လမ်းညွှန်ကိုသတ်မှတ်ပါ။
<?php
$baseDir = '/var/www/html/sources/';
if (isset($_GET['file'])) {
$file = basename($_GET['file']); // ဖိုင်အမည်များကိုသာထိန်းသိမ်းထားသည်,လမ်းညွှန်ကူးခြင်းကိုရှောင်ကြဉ်ပါ
$path = realpath($baseDir . $file);
if ($path !== false && strpos($path, $baseDir) === 0 && is_file($path)) {
show_source($path);
} else {
echo "တရားမဝင်ဖိုင်လမ်းကြောင်း!";
}
}
?>
သွင်းအားစု filter ကိုနှင့်အတည်ပြု
လမ်းကြောင်းအတွက်လမ်းညွှန်အချက်အလက်များကိုဖယ်ရှားရန် Basename () function ကိုသုံးပါ။
ဖိုင်၏မှန်ကန်သောလမ်းကြောင်းကိုသေချာစေရန်ဖိုင်၏တကယ့်လမ်းကြောင်းကိုအတည်ပြုရန် RealPath () နှင့်ပေါင်းစပ်ထားသည်။
ဖိုင်တည်ရှိပြီးပုံမှန်ဖိုင်တစ်ခုရှိသည်ကိုစစ်ဆေးပါ။
အသုံးပြုသူရဲ့တိုက်ရိုက် 0 င်လာတဲ့လမ်းကြောင်းကိုပိတ်ထားပါ ဖိုင်လမ်းကြောင်းကိုဖိုင်လမ်းကြောင်းကိုတိုက်ရိုက်ဖြတ်သန်းမည့်အစားကြိုတင်သတ်မှတ်ထားသောဖိုင်စာရင်းသို့မဟုတ် ID Map Table မှတဆင့်ပြသမည့်ဖိုင်ကိုဆုံးဖြတ်ရန်အကောင်းဆုံးဖြစ်သည်။
အန္တရာယ် function ကို display ကိုပိတ်ပါ ထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်အရင်းအမြစ်ကုဒ် display function ကိုဖော်ထုတ်ခြင်းကိုရှောင်ရှားရန်သို့မဟုတ်ခွင့်ပြုချက်မရှိဘဲဝင်ရောက်ခွင့်ကိုတားဆီးရန်ခွင့်ပြုချက်ကန့်သတ်ချက်များကိုသတ်မှတ်ပါ။
Show_Source () function ကို () function) တွင်လုံခြုံရေးအားနည်းချက်များမရှိပါ။ သို့သော် input path ကိုဂရုတစိုက်ကိုင်တွယ်ခြင်းမရှိသေးပါက, ကာကွယ်ရန်သော့ချက်မှာအသုံးပြုသူမှထည့်သွင်းထားသောလမ်းကြောင်းကိုတင်းကြပ်စွာအတည်ပြုရန်ဖြစ်သည်။ အထက်ပါအစီအမံများမှတဆင့်လမ်းကြောင်း traversal တိုက်ခိုက်မှုများကိုထိရောက်စွာကာကွယ်နိုင်ပြီးစနစ်လုံခြုံရေးကိုသေချာစေနိုင်သည်။