Дата публикации: | 18.02.2003 |
Всего просмотров: | 1198 |
Опасность: | |
Наличие исправления: | |
Количество уязвимостей: | 1 |
CVE ID: | Нет данных |
Вектор эксплуатации: | |
Воздействие: | |
CWE ID: | Нет данных |
Наличие эксплоита: | Нет данных |
Уязвимые продукты: | |
Описание: | Oracle's 9i Application Server включает полнофункциональный Web сервер, интегрированный с базой данных ORACLE. Последний выпуск Application Server 9.0.2 поддерживает работу с WebDAV (Web Distributed Authoring and Versioning), который позволяет совместно использовать файлы через Web интерфейс. В функции регистрации в WebDAV обнаружена уязвимость форматной строки. Если атакующий использует метод COPY и представляет URI, который использует схему, отличную от COPY, будет возвращена 502 Bad Gateway ошибка. Эта ошибка будет зарегистрирована, и функция регистрации ошибки содержит уязвимость форматной строки. Moddav для Apache не уязвим, так как в нем не регистрируются Bad Gateway ошибки. Рассмотрим исходный код moddav (mod_dav.c revision 1.157): .. .. lookup = dav_lookup_uri(dest, r); if (lookup.rnew == NULL) { if (lookup.err.status == HTTP_BAD_REQUEST) { ap_log_rerror(APLOG_MARK, APLOG_ERR | APLOG_NOERRNO, r,lookup.err.desc); return HTTP_BAD_REQUEST; } return dav_error_response(r, lookup.err.status, lookup.err.desc); } .. ..Этот код вызывает функцию dav_lookup_uri() в dav_util.c. Рассмотрим dav_util.c revision 1.84: .. dav_lookup_result dav_lookup_uri(const char *uri, request_rec * r) { .. .. if (strcasecmp(comp.scheme, scheme) != 0 || comp.port != port) { result.err.status = HTTP_BAD_GATEWAY; result.err.desc = ap_psprintf(r->pool, "Destination URI refers to different " "scheme or port (%s://hostname:%d)\n" "(want: %s://hostname:%d)", comp.scheme ? comp.scheme : scheme, comp.port ? comp.port : port, scheme, port); return result; .. .. }Когда dav_lookup_uri() возвращается к mod_dav.c, можно представить специально сформированную строку формата: .. lookup = dav_lookup_uri(dest, r); if (lookup.rnew == NULL) { if (lookup.err.status == HTTP_BAD_REQUEST) { // THIS IS THE FIRST FORMAT STRING VULNERABILITY ap_log_rerror(APLOG_MARK, APLOG_ERR | APLOG_NOERRNO, r,lookup.err.desc); .. .. }Представляя специально сформированную строку формата и посылая ее серверу, атакующий перезаписать адрес возврата произвольными значениями, которые позволят атакующему выполнить произвольный код с привилегиями Web сервера. Уязвимость обнаружена в Oracle9i Application Server Release 9.0.2 |