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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Песочница (https://forum.antichat.xyz/forumdisplay.php?f=189)
-   -   PHP injection в имени статического метода (https://forum.antichat.xyz/showthread.php?t=486674)

Gasc0igne 01.03.2022 02:00

Всем ку! Прошу помощи знатоков PHP.

На исследуемом сайте реализована интересная система формирования отчетов, в POST параметр передается полный namespace до модели и происходит вызов статического метода. По коду приблизительно выглядит это вот так (самого кода нет):

Код:

Code:
 $model::find(),
    'sort' => [
        'defaultOrder' => [
            'id' => SORT_DESC
        ]
    ]
]);

Передаю постом model = \common\models\Product получаю xlsx файл. Сайт работает на Yii2 (PHP7).

Вопрос: Можно ли каким-то образом сделать RCE?

P.S. Пробовал передавать другие модели, но в методе подставляется условие ограничивающие выборку и ломает выполнение скрипта

crlf 01.03.2022 23:56

Цитата:

Сообщение от Gasc0igne
Gasc0igne said:

Вопрос: Можно ли каким-то образом сделать RCE?

Это не Code Injection, а Arbitrary Class Instantiation или в какой-то мере Arbitrary Object Injection. Что тоже неплохо, но не в текущем кейсе, так как метод жёстко прописан. Минимальные шансы есть в случае вайт-бокса, и то, с надеждой на какой нибудь походящий класс с похожим методом или __callStatic(). А дальше смотреть по коду, на что можно повлиять. Если есть другая поверхность атаки, то я предпочёл бы не тратить время здесь, так как шанс на успех очень мал.

Gasc0igne 03.03.2022 16:30

Спасибо большое, не знал как это точно называется, обязательно погуглю. Да случай не простой, еще усложняет то, что весь код лежит выше DOCUMENT_ROOT и не получается даже по ответу сервера перебрать существующие модели. Сам по себе Yii2 из коробки очень секьюрный) куки шифруются, входные данные валидируются, все спрятано. Разраб должен быть прям очень безруким, чтобы совершить ошибку.


Время: 12:06