OpenVPN PHP هک: trusted_ip د ifconfig_pool_remote_ip پرتله
دوه پته چې دوې بېلې معناوې لري، هغه پروسه یې لولي چې تاسو نه یې یاست. د هک متغیرونه څه دي او ولې تشه $_ENV هېڅ شي نه ثابتوي.
په هک سکریپټ کې تشه $_ENV ارې د دې ثبوت ښکاري چې OpenVPN هېڅ نه دی لېږلی. معمولاً دا په بشپړ ډول بل څه ثابتوي: PHP داسې تنظیم شوی و چې هغه سوپرګلوبال ډک نه کړي، او ارزښتونه ټول وخت د پروسې په چاپېریال کې وو. دوهم غلط نتیجه ډېره نریزه ده، ځکه چې د نښلونې هک دوه پتې متغیرونه بېلې معناوې لري او یو د بل پر ځای کارول کېږي. که له غلطې پیل وکړئ، دواړه غلطۍ یوه ماسپښین لګوي.
دوه پتې، دوه بېلې ادعاوې
بهرنی ټکی هغه دی چې سرور د کلاینټ د نښلېدو پر مهال ولیده، د IPv4 لپاره trusted_ip او د IPv6 لپاره trusted_ip6 په توګه شته. مجازي پته هغه ده چې پول دې ناستې ته ورکړه، ifconfig_pool_remote_ip په توګه شته.
دوی بېلو پوښتنو ته ځواب ورکوي، او ریکارډ معمولاً د دواړو پر ځای یو ته اړتیا لري. لومړی ښيي چې نښلونه له کومه راغله، کومه چې کېدای شي سلګونو کسانو لخوا کارول شوې شریکه NAT پته وي. دوهم ښيي چې دا ناسته د تونل په منځ کې چېرې ده، او دا کېدای شي وروسته بلې ناستې ته ورکړل شي. د دواړو ګډول باوري ښکارېدونکي خو غلط ریکارډونه جوړوي.
لږترلږه لوستل داسې ښکاري.
$outer4 = getenv('trusted_ip');
$outer6 = getenv('trusted_ip6');
$inner = getenv('ifconfig_pool_remote_ip');
$outer = $outer4 !== false ? $outer4 : $outer6;هېڅ ارزښت یو کس نه پېژني. یو شبکه یز مشاهده ده، بل کرایه ده، او هغه ریکارډ چې هر یو یې د وسیلې ثابته پېژندونکې وګڼي، لومړی ځل به غلط وي چې کلاینټ له بلې شبکې بیا ونښلېږي یا بله پول پته ترلاسه کوي. ساحه د هغې پوښتنې له مخې وټاکئ چې ریکارډ باید ځواب کړي، بیا هغه پوښتنه د ستون څنګ ته ولیکئ.
وګورئ PHP څنګه پیل شو، نه خپل شیل
هک د VPN ډیمون د ماشوم په توګه، په هغه چاپېریال کې چلېږي چې ډیمون جوړوي. ستاسو متقابل شیل بل چاپېریال لري، او سکریپټ په لاس چلول د هک نه، د شیل چاپېریال ازموي.
لومړی تایید کړئ چې هک واقعاً په هغه پړاو کې چې تمه یې لرله وچلېد. ناسم پړاو ته تړل شوی سکریپټ، یا هغه چې هېڅکله ونه چلېد ځکه لارښود بل لوري ته اشاره کوي، سم هغه نښې پیدا کوي لکه ورکه متغیره. د سکریپټ په سر کې په قصد یوه نښه کرښه ورزیاته کړئ او تایید یې کړئ چې مخکې له بل هر څه ښکاري. په لاګ کې د وخت نښه لرونکې یوه کرښه «هېڅکله ونه چلېد» له «پرته له ارزښت وچلېد» بېلوي.
بیا تایید کړئ چې هغه بلنه کوم ژباړونکی او کومه ترتیباتي دوتنه کاروي. د ویب سرور لپاره د PHP ترتیبات بدلول د OpenVPN پیل کړي CLI پروسې ته هېڅ نه بدلوي، او دواړه کولای شي بشپړ بېلې php.ini دوتنې بار کړي.
ولې تشه $_ENV هېڅ شي نه ثابتوي
PHP د getenv حواله د پروسې چاپېریال مستقیم لوستل بیانوي، کوم چې د نوم نه شتون پر مهال false بېرته ورکوي. $_ENV سوپرګلوبال جلا ډکېږي، او variables_order لارښود ټاکي چې کوم سوپرګلوبالونه ډک شي.
که هغه لارښود E پرېږدي، نو چاپېریال هر څه ولري $_ENV تش پاتې کېږي. هغه کوډ چې دې ته شاخص کوي بیا د یوې ورکې متغیرې راپور ورکوي چې واقعاً شته، او پلټنه OpenVPN ته ځي حال دا چې ځواب په php.ini کې دی. لارښود په ځانګړي ډول د CLI ترتیباتو لپاره وګورئ، نه د ویب سرور لپاره.
په getenv سره لوستل دا ټول ګډوډي نه کوي، او هغه پوښ سکریپټ چې ژباړونکي ته له بلنې مخکې چاپېریال پاکوي، هغه په بله بڼه بېرته راولي.
یو تړاو وساتئ، نه د کرښې تازه کول
له لیکلو مخکې پرېکړه وکړئ چې ریکارډ کوم ارزښت ته اړتیا لري. که هدف دا یادول وي چې ناسته له کومه راغله، بهرنۍ پته وساتئ او د مشاهدې په توګه یې ونښه کړئ. که هدف دا وي چې ناسته د نښلونې په موده کې له تونل پتې سره وتړئ، د پول پته وساتئ او ناستې ته یې وتړئ.
د هرې کرښې چې یوه تونل پته شریکوي پر ځای د تصدیق شوې پېژندنې او اوسنۍ ناستې له مخې تازه کړئ، ځکه د پول پتې بیا کارول کېږي او ناوخته نښلونې پېښه کولای شي نوی نښلون ډېټا له منځه یوسي. IPv6 په ښکاره ډول سمبال کړئ، نه چې یوازې د IPv4 ارزښت په خاموشۍ ولیکئ. د NULL بهرنۍ پتې لرونکې کرښه له غلطې پتې لرونکې کرښې غوره ده، ځکه لومړۍ ښکاره نیمګړې ده.
لیکل د OpenVPN ورکړل شوې ناستې پېژندونکې ته وتړئ تر څو بیا نښلون نوی ریکارډ جوړ کړ نه زوړ سم کړي. د پارامیټر شویو بیانونو او هغه حساب څخه کار واخلئ چې یوازې د عملیاتو لپاره اړین اجازې لري. هک د ډیمون واک سره چلېږي، نو بې احتیاطه پوښتنه له غلطې لاګ کرښې لویه ستونزه ده.
پرته له دې چې چاپېریال وغورځوئ تشخیص وکړئ
ولی کئ چې کوم نومونه شته وو، کوم پړاو وچلېد او کوم ژباړونکی وکارول شو. ټول چاپېریال مه چاپ کړئ، ځکه هک پروسه کولای شي نااړوند ارزښتونه په میراث واخلي چې باید په لاګ دوتنه کې نه وي.
یوه نښلونه له سره تر سره تایید کړئ: بهرنۍ پته ولولئ، ورکړل شوې پته ولولئ، او دواړه د سرور د همدې ناستې د خپل لید سره سم کړئ. کله چې یوه کلاینټ لپاره جوړه تایید شوه، تړاو بل ځای هم باوري کېدای شي.