HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 20.03.2013, 11:12
coolspot
Новичок
Регистрация: 20.02.2011
Сообщений: 6
Провел на форуме:
1821

Репутация: 0
По умолчанию

Привет!

Есть форум с IPB 3.3.0 , всё у этого форма прекрасно, даже CVE-2012-2226 не пропатчена, PHP версии 5.2.17 , который позволяет null-byte poisoning, и даже в корне сайта лежит волшебный файл /phpinfo.php

Уязвимость позволяет сделать require_once произольного .php файла в системе, и эта часть работает.

Но в описании уязвимости основной акцент делается на то, что её можно использовать совместно с null-byte poisoning для того чтобы сделать инклюд не .php файла, а файла с любым расширением, например закачанный в uploads джипег. И эта часть у меня не получается.

Более того, мне кажется автор эксплоита чего-то напутал и она в принципе не должна получаться.

В эксплоите даны куски кода, где анализируется как работает баг. Параметр key распаковывают base64:

Код:
$key = trim( IPSText::base64_decode_urlSafe( $this->request['key'] ) );
Потом его разпиливают на кусочки:

Код:
list( $app, $area, $relId, $likeMemberId, $memberId, $email ) = explode( ';', $key );
Потом один из кусочков ($area) без проверок и очисток принимает участие в формировании пути к файлу:

Код:
$_file = IPSLib::getAppDir( $app ) . '/extensions/like/' . $area . '.php';
Чтобы заюзать null-byte poisoning надо чтобы $area было равно target_file_name.txt , но $key, из которого получается $area проходит через trim() который NULL оттуда вырезает.

Таким образом, в $area ну никак не может оказаться NULL.

Вопросы:

1. Что имел ввиду автор эксплоита?

2. Как раскрутить LFI во что-то полезное, когда он инклудит только .php ?
 
Ответить с цитированием

  #2  
Старый 20.03.2013, 11:22
coolspot
Новичок
Регистрация: 20.02.2011
Сообщений: 6
Провел на форуме:
1821

Репутация: 0
По умолчанию

Хм... Хотя trim должен отрезать NULL только вначале и в конце...

Тогда не понятно почему не работает.

Когда я делаю key равным

base64("forums;/../../../../../phpinfo;1;1;mail@mail.ru")

то инклуд срабатывает и подключается файл phpinfo.php (или любой другой .php)

но когда я меняю на вроде бы аналог с NULL:

base64("forums;/../../../../../phpinfo.php\0;1;1;mail@mail.ru")

то не работает.

Может ли php 5.2.17 быть как-то пропатчен\настроен от null-byte poisoning?
 
Ответить с цитированием

  #3  
Старый 20.03.2013, 12:34
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


По умолчанию

Цитата:
Сообщение от coolspot  
Может ли php 5.2.17 быть как-то пропатчен\настроен от null-byte poisoning?
PHP код:
[COLOR="#000000"][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"\0"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);[/COLOR][/COLOR
Как вариант попасть на сервер через соседей/хостинг и через /tmp заинклудится.
 
Ответить с цитированием

  #4  
Старый 20.03.2013, 22:20
coolspot
Новичок
Регистрация: 20.02.2011
Сообщений: 6
Провел на форуме:
1821

Репутация: 0
По умолчанию

Не, ну если бы кто-то туда вставил

Код:
str_replace("\0", '', $value);
То он бы и всё остальное вставил, чтобы не допустить local file inclusion.

Выглядит вроде как обычный php 5.2.17 (без suhosin), IPB 3.3 дырявый, но null-byte poisoning не пашет =(

Подниму сегодня виртуалку с похожим сетапом, посмотрю что там происходит...
 
Ответить с цитированием

  #5  
Старый 22.03.2013, 23:43
coolspot
Новичок
Регистрация: 20.02.2011
Сообщений: 6
Провел на форуме:
1821

Репутация: 0
По умолчанию

Поднял виртуалку с такими же характеристиками и настройками PHP.

Нулл-байт работает отлично, всё-таки у этого товарища какой-то пропатченный PHP, так что NULL вырезается.

Просканировал этим инклюдом директории на наличие всяких шеллов в закрытых снаружи папках (cache, hooks). Ничего.

Дальше не знаю куда копать.
 
Ответить с цитированием

  #6  
Старый 23.03.2013, 06:53
BigBear
Новичок
Регистрация: 04.12.2008
Сообщений: 11
Провел на форуме:
69033

Репутация: 8
По умолчанию

Мб там просто экранируется нулл-байт за счёт MQ ?
 
Ответить с цитированием

  #7  
Старый 23.03.2013, 23:35
coolspot
Новичок
Регистрация: 20.02.2011
Сообщений: 6
Провел на форуме:
1821

Репутация: 0
По умолчанию

Я инклюжу phpinfo.php (который лежит в корне сайта) и вижу что MQ отключены.

Зато дата сборки php 5.2.17 стоит - февраль 2013. Кроме того это хостинг агавы, так что вероятно хостер делает сборку с каким-то патчем (suhosin в phpinfo не замечено).

По пути я проверил MAXPATHLEN-альтернативу null-byte , к сожалению она не работает когда в include указан абсолютный путь, тоесть для:

Код:
include "lib/" . $_GET['x'] . ".php";
оно сработает, а вот для

Код:
include "/var/www/site.ru/lib/" . $_GET['x'] . ".php";
трюк с x = /./././.[~4000]/./. к сожалению не работает.

В уязвимости CVE-2012-2226 в IPB формируется абсолютный путь =(
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.