Программа: 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/