cgi

 

                                        

                                                         

صفحه اصلي

کاربران

! یاهو

آموزش

دانلود

تماس با ما

 

 
 
 
 
 
 
 
 
 

  

       آموزش CGI 

 

در طي اين بخش بحث اول مربوط به امنيت و اسكريپت نويسي در CGI مورد بررسي قرار مي گيرد.
CGI كه برگرفته شده از سر نامهاي Common Gateway Interface مي باشد از طريق اسكريپ هايي امكان برقراري ارتباط و بكارگيري و كنترل برنامه هاي موجود بر روي يك سرور را فراهم مي سازد.يعني با اجراي هر اسكريپت CGI عملياتي مشخص بر روي سرور صورت گرفته و با اتمام اسكريپت اين عملات نيز به اتمام مي رسد. معمولا اطلاعات از طريق كدهاي HTML و يا تصاوير ما بين كاربر و سرور منتقل مي شود. بسياري از اسكريپت هاي CGI در زبان برنامه نويسي از قبيل PERL نوشته مي شوند ولي هر زبان برنامه نويسي كه كه از ورودي و خروجي هاي استاندارد استفاده مي كند مي تواند به عنوان زبان برنامه نويسي اسكريپت بكار برده شود. ولي چون سيستم غالب زبان PERL مي باشد بهتر است قبل از ادامه مطلب بريد و الفباي اين زبان را ياد بگيريد ( يكي نيست بگه نه اينكه خودت خداشي!! ) . CGI معمولا براي كارهايي كه بك ورق وب بطور نرمال قادر به انجام آن نمي باشد از آن جمله مي توان به مديريت اطلاعات مربوط به اكانتهاي كاربران , محاسبه سرعت مبادله اطلاعات و بروز سازي آمار كاربران اشاره كرد كه ميليونها اسكريپت مختلف براي اجراي برنامه هاي مختلف نوشته شده است.
آسيب پذيريهاي CGI :
بزرگترين نقطه ضعف در كل ساختار CGI ورودي كاربر آن مي باشد. كاربران مي توانند به سادگي اطلاعات و داده ها را از طريق اسكريپت هاي CGI براي اجراي منظور خود وارو نمايند كه از آنجمله مي توان به در خواست خواندن فايل مورد نظر و يا دسترسي به قابليت هاي اجرايي خاص بر روي سرور را نام برد. و اين نشات گرفته از ساختار ورودي در نظر گرفته شده براي كاربر و قابليت هاي متعدد آن مي باشد. بطور مثال اگر فرض كنيم كه كاربر درخواستي همانند دستور “ echo “ را در ورودي وارد نمايد در اينصورت شكل كلي درخواست به فرم زير خواهد بود :
echo "matne delkhahe shoma" >> testfile
اما اگر فردي ديگر با انديشه هاي متفاوت و برتر از سايرين همانند شما دستور بالا را به فرم زير وارد نمايد :
echo " matne delkhahe shoma " ; cat /etc/passwd
اين دستور مستقيما مسير نوشته شده را به سيستم ارائه داده و در نتيجه فايل پسووردها را دريافت مي كند. بسياري از برنامه هاي CGI هنوز هم براي جلوگيري از چنين دسترسي هاي غير مجازي برنامه ريزي و به اصطلاح patched نشده و در نتيجه آسيب پذير مي باشند. در ادامه من سعي مي كنم كه فقط بر روي اسكريپت هاي نوشته شده در Perl كه آسيب پذيريهاي زيادي دارند تمركز كنم.
يكي از اسكريپت هاي ساده جهت اجراي دستورات دلخواه بر روي يك سرور در زير آمده است:
#!/usr/bin/perl
# some cheap cgi-script
$some_variable = "U have been hacked!";
# program and data manipulation would come in this part here
print < Content-Type: text/html
# start html document

Let's hack the planet.


$some_variable

# end html document
EOF
حال بررسي برنامه بالا. اسكريپت بالا هيچ ورودي كاربري ندارد ولي داراي يك خروجي مي باشد. هنگامي كه اين اسكريپت بصورت قابل اجرا در دايركتوري cgi – bin در آيد و از طريق مرورگر اينترنتي از قبيل اينترنت اكسپلورر اجرا شود جملات Let’s hack the planet و U have been hacked! در روي ورق وب ديده خواهند شد. در واقع هر عبارتي ما بين print <حال به بررسي برنامه ديگري كه امكان خواندن هر فايلي را در روي سرور به شما مي دهد, مي پردازيم.
#!/usr/bin/perl
# this will let you view any file on the system

$some_variable = $ENV{QUERY_STRING};

# $some_variable =~ s/ \///g; # ignore this for now

#
open(FILE, $some_variable); # This part does nothing more
while() { # than read the file specified by
push(@somefile,$_); # $some_variable into the array
} # @somefile, which is later
close(FILE); # placed in the html code.
#

print <
@somefile
EOF

توسط اين برنامه فايل $some_variable باز مي شود.اين فايل در خط چهارم برنامه تعريف و مشخص شده است و متغغير $ENV{QUERY_STRING} به عنوان ورودي بكار گرفته مي شود. حال بالفرض اگر بخواهيم توسط اين برنامه فايل پسوورد ها را داشته باشيم قبل از هر كاري بايد برنامه مذكور را بصورت قابل اجرا در بياوريم. بدين منظور بصورت زير عمل مي كنيم :
chmod 755 cgi-script.pl
حال اسكريپت مذكور را از طريق اشاره دادن مرورگر اينترنتي خود( از قبيل اينترنت اكسپلورر) به مسير زي صدا زده يا به اصطلاح علماي اين رشته فراخواني مي كنيم.
http://www.foobar.com/cgi-bin/cgi-script.pl?/etc/passwd
از اين طريق براحتي مي توان فايل پسوورد ها را بر روي صفحه مرورگر مشاهده كرد. بخشي كه بعد از ? در آدرس قرار گرفته در واقع ممسيري است كه به اسكريپت داده شده كه همان $ENV{QUERY_STRING} و يا $some_variable وحتما مي دانيد كه بجاي etc هم مسير دقيق را قرار مي دهيد.

 

<<< Back

   

 
 
 
 
 
 
 
 
 
 

 

 

 

 

 

 

 

 

 

 

كليه حقوق , مربوط به سايت وحيد آنلاين مي باشد. و در هنگام استفاده از مقاله , عكس , برنامه و.. از اين سايت ذكر منبع الزامي است