بیشتر در مورد آسیب پذیری shellshock بدانید


کمی در مورد Bash بدانیم!

Bash یک Shell برای سیستم‌ عامل های مبتنی بر Unix هست، به عبارت دیگر Bash یک مفسر است که دستورات کاربر را مدیریت می‌کند. همچنین Bash می‌تواند به عنوان یک مفسر برای CGI Script ها در وب سرور به کار گرفته شود. از اواخر دهه‌ی ۸۰ میلادی، Bash یکی از پرطرفدار ترین‌ها بوده و به صورت پیش‌فرض همراه هر سیستم‌عامل مبتنی بر Linux و البته سیستم‌عامل OS X ارایه می‌شود.

چه سرویس‌هایی می‌تواند آسیب‌پذیر باشد؟

طبق بررسی اولیه، هر سیستم‌عامل مبتنی بر Unix دارای Bash به روز نشده، دستگاه‌های توکار دارای Bash مانند روتر‌ها، دوربین‌های آنلاین و … می‌توانند آسیب‌پذیر باشند.

ریشه‌ی این آسیب‌پذیری چیست؟

Bash به کاربر این قابلیت را می‌دهد که متغیر و یا توابعی (Environment Variable) را تعریف کند که در بین چند Instance از Bash به اشتراک گذاشته شود. ریشه‌ی این باگ در زمان تجزیه (Parse) تعریف تابع می‌باشد. هنگامی که یک تابع به صورت زیر تعریف شود:

VAR='() { :; }; /bin/pwd' bash -c ""

مفسر Bash در تشخیص اتمام تعریف تابع دچار خطا می‌شود. در زمان اجرا شدن Bash این متغیر بارگزاری می‌شود و رشته‌ی بعد از کارکتر ; را اجرا می‌کند. در مثال بالا اجرای /bin/pwd مسیر جاری نمایش داده می‌شود.

بهره‌برداری از این آسیب‌پذیری چگونه امکان‌پذیر است؟

در اینجا منظور از بهره‌برداری، بهره برداری از راه دور می‌باشد؛ یعنی حالتی که نفوذگر دسترسی به سیستم قربانی نداشته باشد. در این حالت باید از طریقی نفوذگر بتواند یک Environment Variable (متغیر محیطی) دستکاری شده را در سیستم قربانی تنظیم کند. با این شرایط بیشترین احتمال برای بهره‌برداری از این آسیب‌پذیری از راه دور از طریق یک CGI Script آسیب‌پذیر خواهد بود. در این شرایط نفوذگر با ارسال یک درخواست دستکاری شده که حاوی دستوراتی خطرناک است می‌تواند کنترل کامل سیستم قربانی را در دست بگیرد. برای مثال بدون دسترسی به سیستم‌ قربانی، از راه دور با ارسال یک درخواست می‌توان هر دستوری را در سیستم قربانی اجرا کرد. مثلاً در یک CGI Script آسیب‌پذیر مانند مثال زیر:

#!/bin/bash
echo "Content-type: text/html"

echo ""
echo '<html>'
echo '<head>'
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'
echo '<title>Test</title>'
echo '</head>'
echo '<body>'
/usr/bin/env
echo '</body>'
echo '</html>'
exit 0

با ارسال یک درخواست که مقدار User-Agent در آن تغییر یافته است می‌توان محتوای فایل /etc/passwd را خواند.

curl -A "() { foo;};echo;/bin/cat /etc/passwd" http://example/vulnerable.cgi

آیا من آسیب‌پذیر هستم؟

اگر سیستم‌عامل شما از خانواده Linux و یا OS X است دستور زیر را در خط فرمان وارد کنید. اگر متن You are vulnerable!! را مشاهده کردید یعنی نسخه‌ی آسیب‌پذیر Bash بروی سیستم‌عامل شما نصب شده است.

VAR='() { :; }; echo "You are vulnerable!!"' bash -c ""

همچنین اگر با اجرای دستور زیر یک فایل خالی به اسم echo در سیستم شما ایجاد شود یعنی وصله‌ی ناقص Bash را نصب کرده‌اید و باید دوباره بروز رسانی را انجام دهید.

env X='() { (a)=>\' sh -c "echo date";

چگونه باید آسیب‌پذیری را رفع کنم؟

برای رفع آسیب‌پذیری باید نرم‌افزار Bash را آپدیت کنید. با توجه به نرم‌افزار مدیریت بسته‌ها (Package Manager) نصب شده روی سیستم‌تان باید این کار را انجام دهید. مثلاً در Ubuntu:

apt-get update; apt-get upgrade;

اگر آپدیت توسط نرم‌افزار مدیریت بسته‌ها شناسایی نشد از دستور زیر استفاده کنید:

wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
tar zxvf bash-4.3.tar.gz
cd bash-4.3
./configure
make
make install

در سیستم‌عامل OS X :

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
brew install bash
sudo sh -c 'echo "/usr/local/bin/bash" >> /etc/shells'
chsh -s /usr/local/bin/bash
  • 0 کاربر این مقاله را مفید می دانند
آیا این پاسخ مفید بود؟

مقالات مرتبط

آموزش نصب و کانفیگ Maldet – آنتی شل رایگان Linux Malware Detect

آنتی شل Maldet یک ابزار رایگان و بسیار قدرتمند جهت شناسایی شل ها است ، شل در واقع همان اسکریپت...

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

چطور فایل با یک پسوند خاص را در لینوکس پیدا کنم ؟چطور می توان فایل با پسوند .cig , یا .pl را پیدا...

پیداکردن کاربرانی که بیش از حد از منابع MySQL استفاده می‌کنند در cPanel

به کمک دستور زیر میتوان از میزان مصرف برنامه‌های  third-party مطمئن شد و آنها را بررسی کرد:   #...

پیکربندی اولیه سی پنل

برای تکمیل مرحله Initial Setup Wizard بصورت زیر عمل کنید.1- مرحله اول Agreement     - بر روی I...

اموزش نصب Anti DDos (جلوگیری از DDos )

دوستان عزیز جلوی حملات DoS رو هم نمیشه با CSF یا Anti DoS گرفت چه برسه به حملات DDos. وقتی حمله...