Программа: CitrusDB 0.3.6 и более ранние
версии

Уязвимости позволяют удаленному
пользователю обойти авторизацию, получить
доступ к важным данным других
пользователей, произвести SQL-инъекцию,
выполнить произвольный php сценарий.

1. Уязвимость существует в механизме
проверки подлинности пользователя.
Проверка подлинности выполняется на основе
имени пользователя и идентификатора хеша (для
всех пользователей идентификатором
является строка ‘boogaadeeboo’), передаваемых с
помощью файлов cookie. Имя пользователя и
идентификатор хешируются с помощью md5
алгоритма. Зная login администратора (по
умолчанию admin) удаленный пользователь может
изменить свой файл cookie и получить
административный доступ к CitrusDB. 

Пример:

curl -D — —cookie "id_hash=4b3b2c8666298ae9771e9b3d38c3f26e;
user_name=admin" http://TARGETHOST
/citrusdb/tools/index.php

2. Отсутствует проверка подлинности
пользователей в сценариях /citrusdb/tools/importcc.php и
./citrusdb/tools/uploadcc.php. Удаленный авторизованный
пользователь может загрузить произвольный
cvs файл, содержащий некорректные данные
кредитных карт, а также получит доступ к
временным файлам, в которых хранятся данные
о кредитных картах других пользователей.
Также, удаленный пользователь может
произвести SQL-инъекцию из-за отсутствия
должной проверки в сценарии импорта данных
в БД. 

Пример:

Загрузка cvs файла:

curl -D — —cookie "id_hash=2378c7b70e77d9c6737d697a46cbe34b;
user_name=testor" http://target/citrusdb/tools/uploadcc.php —form
userfile=@exploit.cvs —form Import=Import

Примечание: Файл cookie должен
соответствовать файлу существующего
пользователя.

Импорт файла в базу данных кредитных
карт:

curl -D — —cookie "id_hash=2378c7b70e77d9c6737d697a46cbe34b;
user_name=testor"
" http://target/citrusdb/tools/index.php?load=importcc&submit=on"

3. Отсутствует проверка данных, полученных
из cvs файлов перед внесением информации в БД.
Удаленный пользователь может произвести SQL-инъекцию.

4. Для подключения внешних модулей
используется сценарий /citrusdb/tools/index.php.
Удаленный авторизованный пользователь
может в качестве параметра переменной load в
HTTP GET запросе указать произвольный php
сценарий, сохраненный на локальном сервере,
который будет выполнен с привилегиями web-сервера. 

Пример:

http://target/citrusdb/tools/index.php?load=../../../../../../tmp/



Оставить мнение