Oracle 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.



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