چگونه به ضرب و شتم فایل ها محدودیت در برنامه های تحت وب به یک پوسته


یکی از مهمترین راه های حمله در یک برنامه وب است که فایل ها. با نتایج اعم از XSS به مقاصدشان کد اجرای فایل ارسال یک هدف جذاب برای هکرها وجود دارد اما معمولا محدودیت در محل است که می توانید آن را به چالش کشیدن برای اجرای یک حمله. با این وجود تکنیک های مختلف یک هکر می تواند با استفاده از به ضرب و شتم فایل ها محدودیت به یک پوسته.

روش 1: دور زدن Blacklists

روش اول ما کشف این است که چگونه به دور زدن لیست سیاه. فهرست سیاه یک نوع از حفاظت که در آن رشته های خاص از داده ها در این مورد خاص پسوند هستند به صراحت از ممنوع بودن به سرور فرستاده می شود. در نگاه اول ممکن است به نظر می رسد مثل یک راه حل بهینه برای جلوگیری از بد پسوند اغلب اجرایی از آپلود اما آن را بی اهمیت است برای دور زدن.

در علاوه بر این به طور منظم پسوند جایگزین وجود دارد که با پسوند استفاده می شود به اطراف blacklist فیلتر. در اینجا برخی از پسوند برای فایل های پی اچ پی:

.pht, .phtml, .php3, .php4 .php5 .php6, .inc

یکی دیگر از محبوب extension برای web پوسته است JSP و در اینجا برخی از گزینه های:

.jspx, .jspf, .jsw, .jsv

در برخی از مواقع یک تغییر ساده در مورد از این فرمت می توانید فیلتر به پذیرش این فایل مانند:

.پی اچ پی .پی اچ پی .phP

روش 2: عبور از لیست های سفید

نوع دیگری از پیشگیری مواجه می شوند که معمولا بر روی وب است whitelisting. Whitelisting دقیقا مخالف از فهرست سیاه که در آن سرور را می پذیرد و تنها پسوند خاص. برای مثال یک برنامه کاربردی است که اجازه می دهد تا به شما برای آپلود تصویر پروفایل ممکن است تنها به JPG, JPEG و یا فایل های PNG. در حالی که این نوع از پیشگیری بهتر از فهرست سیاه آن را هنوز هم می تواند به راحتی کنار.

برخی از وب سرور مانند Apache اجازه می دهد تا فایل های با پسوند. این بدان معناست که ما می توانید سرور را به پذیرش یک فایل پی اچ پی است که همچنین دارای یک فرمت JPG یش در پایان:

shell.php.jpg

ما همچنین می توانید با استفاده از یک null byte تزریق لیست سفید برای دور زدن فیلتر. هر چیزی پس از تهی شخصیت نادیده گرفته می شود زمانی که فایل ذخیره شده است بنابراین تزریق بین فرمت ممنوع و مجاز فرمت می تواند منجر به دور زدن:

shell.php%00.jpg

و یا:

shell.php\x00.jpg

این نیز می تواند با آروغ و اصلاح سحر و جادو درخواست. نام فایل shell.phpD.jpg — ما به جای D شخصیت با شخصیت null در صورت درخواست. هنگام آپلود فایل, رهگیری درخواست رفتن به سحر و جادو تب و پیدا کردن سحر و جادو, نمایندگی D شخصیت:

به سادگی جایگزین 44 با 00 و ارسال درخواست از طریق:

این تکنیک می تواند مورد استفاده قرار گیرد در شرایطی که استاندارد null byte تزریق نخواهد کرد.

یکی دیگر از راه به ضرب و شتم whitelisting است که احمق سرور با نوع فایل هدر. معمولا اگر یک ها تابع می پذیرد و تصاویر آن را قبول فایل های GIF به عنوان به خوبی. ما می توانیم اضافه کردن GIF89a; به آغاز پوسته به ترفند ها:

GIF89a; <?سیستم پی اچ پی($_GET['cmd']); ?>

روش 3: داده های Exif

بعدی روش برای دور زدن فایل ها محدودیت با بهره گیری از داده های Exif در یک تصویر. ما می توانید قرار دهید که حاوی معتبر کد های پی اچ پی است که اجرا خواهد شد توسط سرور زمانی که تصویر پردازش شده است.

ما می توانیم با استفاده از exiftool برای انجام این کار — اگر آن نصب نشده است و در حال حاضر آن را نصب کنید با package manager:

~# apt نصب exiftool

پس از آن ما می توانید با قرار دادن یک دستور ساده پوسته به عنوان یک نظر در عکس:

~# exiftool -Comment="<?سیستم پی اچ پی($_GET['cmd']); ?>" pic.jpg

حال اگر ما با استفاده از فایل فرمان ما pic, ما می توانید ببینید این کد با موفقیت وارد شده:

~# فایل pic.jpg pic.jpg: تصویر JPEG اطلاعات JFIF استاندارد 1.01, نسبت تراکم 1x1 بخش طول 16 نظر: "<?سیستم پی اچ پی(['cmd']); ?>", ابتدا دقت 8, 1920x840 قطعات 3

همه ما باید انجام دهید در حال اضافه کردن یک پسوند PHP پس از آن می تواند اجرا شود:

~# mv pic.jpg pic.php.jpg

این روش می تواند در ترکیب با هر یک از این روش برای دور زدن لیستهای سیاه و یا لیست های سفید.

روش 4: دیگر تکنیک های دور زدن

گاهی اوقات تنها چیزی که مانع فردی از فایل های در حال آپلود است که سمت کلاینت جاوا اسکریپت. اگر این ها تابع هنوز هم کار می کند بدون آن به سادگی خاموش کردن جاوا اسکریپت در مرورگر گاهی اوقات می تواند ضرب و شتم محدودیت. اگر که کار نمی کند متوقف کردن درخواست و تغییر پسوند فایل به راحتی می توانید دور زدن سمت سرویس گیرنده فیلتر.

نوع محتوا را از یک فایل نیز می تواند به عنوان یک راه برای اعتبار آپلود محتوا است. برای مثال یک تصویر ها معمولا بررسی کنید که نوع محتوای فایل است یک تصویر و یک اسکریپت و یا دیگر فایل های مخرب از نوع. این نوع از پیشگیری می تواند به راحتی کنار توسط جاسوسان درخواست و تغییر نوع محتوا.

در برخی از مواقع ظهر محتوا نیز می تواند به عنوان یک راه برای اعتبارسنجی فایل های آپلود شده. از آن خواهد شد بستگی دارد در شرایط خاص اما اغلب همه که مورد نیاز است کوتاه تر حمل بار. برای مثال یک نمونه PHP پوسته فرمان را می توان کوتاه به این:

<?=`$_GET[x]`?>

جلوگیری از ارسال فایل بدون محدودیت

وجود دارد چند اقدامات احتیاطی توسعه دهندگان می تواند به جلوگیری از محدودیت ارسال فایل و کاهش احتمال حمله دور زدن محدودیت. اولین و مهمترین دایرکتوری که در آن فایل ذخیره می شوند باید بدون مجوز اجرا. در نظر ذخیره سازی فایل ها در یک پایگاه داده به جای سیستم فایل در همه.

انواع فایل آپلود شود باید محدود به حداقل لازم برای کسب و کار و عملکرد. همچنین هر گونه کنترل شخصیت یا شخصیت های خاص باید از آپلود فایل با نام و فرمت و تنها یک نقطه باید مجاز است. همچنین اندازه باید محدود به چندین فایل های بزرگ می تواند منجر به محرومیت از خدمات.

پس از آپلود شدن فایل به نام باید تغییر ایده آل برای یک مخلوط است که نمی توان حدس زد. این جلوگیری از حمله از بودن قادر به پیدا کردن فایل های خود را پس از آن ارسال شده است. عاقلانه است که برای جلوگیری از فایل رونویسی و همچنین, بنابراین رشته هش را نمی توان استنباط توسط یک مهاجم.

کاغذ بسته بندی

در این آموزش ما روش های مختلف به اطراف رایج فایل ها محدودیت. ما آموخته است که چگونه به دور زدن blacklist فیلتر لیست سفید فیلتر محتوا و اعتبار ، ارسال فایل, اگر می توان آنها را مورد ضرب و شتم یک یقین راه به پوسته.

می خواهید شروع به ساختن پول به عنوان یک کلاه سفید هکر? پرش شروع خود را-کلاه سفید هک حرفه ای با ما 2020 حق بیمه هک اخلاقی, گواهینامه آموزشی از بسته نرم افزاری جدید Null Byte فروشگاه و دریافت بیش از 60 ساعت آموزش از هک اخلاقی حرفه ای است.

خرید در حال حاضر (90 درصد تخفیف) >

تصویر جلد توسط Maksym Kaharlytskyi/Unsplash; تصاویر توسط drd_/Null Byte

tinyurlis.gdclck.ruulvis.netshrtco.de

Leave a reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>