coolspot
20.03.2013, 11:12
Привет!
Есть форум с IPB 3.3.0 , всё у этого форма прекрасно, даже CVE-2012-2226 (http://www.exploit-db.com/exploits/18736/) не пропатчена, PHP версии 5.2.17 , который позволяет null-byte poisoning, и даже в корне сайта лежит волшебный файл /phpinfo.php
Уязвимость позволяет сделать require_once произольного .php файла в системе, и эта часть работает.
Но в описании уязвимости основной акцент делается на то, что её можно использовать совместно с null-byte poisoning для того чтобы сделать инклюд не .php файла, а файла с любым расширением, например закачанный в uploads джипег. И эта часть у меня не получается.
Более того, мне кажется автор эксплоита чего-то напутал и она в принципе не должна получаться.
В эксплоите даны куски кода, где анализируется как работает баг. Параметр key распаковывают base64:
Code:
$key = trim( IPSText::base64_decode_urlSafe( $this->request['key'] ) );
Потом его разпиливают на кусочки:
Code:
list( $app, $area, $relId, $likeMemberId, $memberId, $email ) = explode( ';', $key );
Потом один из кусочков ($area) без проверок и очисток принимает участие в формировании пути к файлу:
Code:
$_file = IPSLib::getAppDir( $app ) . '/extensions/like/' . $area . '.php';
Чтобы заюзать null-byte poisoning надо чтобы $area было равно target_file_name.txt , но $key, из которого получается $area проходит через trim() (http://php.net/manual/en/function.trim.php) который NULL оттуда вырезает.
Таким образом, в $area ну никак не может оказаться NULL.
Вопросы:
1. Что имел ввиду автор эксплоита?
2. Как раскрутить LFI во что-то полезное, когда он инклудит только .php ?
Есть форум с IPB 3.3.0 , всё у этого форма прекрасно, даже CVE-2012-2226 (http://www.exploit-db.com/exploits/18736/) не пропатчена, PHP версии 5.2.17 , который позволяет null-byte poisoning, и даже в корне сайта лежит волшебный файл /phpinfo.php
Уязвимость позволяет сделать require_once произольного .php файла в системе, и эта часть работает.
Но в описании уязвимости основной акцент делается на то, что её можно использовать совместно с null-byte poisoning для того чтобы сделать инклюд не .php файла, а файла с любым расширением, например закачанный в uploads джипег. И эта часть у меня не получается.
Более того, мне кажется автор эксплоита чего-то напутал и она в принципе не должна получаться.
В эксплоите даны куски кода, где анализируется как работает баг. Параметр key распаковывают base64:
Code:
$key = trim( IPSText::base64_decode_urlSafe( $this->request['key'] ) );
Потом его разпиливают на кусочки:
Code:
list( $app, $area, $relId, $likeMemberId, $memberId, $email ) = explode( ';', $key );
Потом один из кусочков ($area) без проверок и очисток принимает участие в формировании пути к файлу:
Code:
$_file = IPSLib::getAppDir( $app ) . '/extensions/like/' . $area . '.php';
Чтобы заюзать null-byte poisoning надо чтобы $area было равно target_file_name.txt , но $key, из которого получается $area проходит через trim() (http://php.net/manual/en/function.trim.php) который NULL оттуда вырезает.
Таким образом, в $area ну никак не может оказаться NULL.
Вопросы:
1. Что имел ввиду автор эксплоита?
2. Как раскрутить LFI во что-то полезное, когда он инклудит только .php ?