Notice: file_put_contents(): Write of 17293 bytes failed with errno=28 No space left on device in /var/www/tgoop/post.php on line 50
Кавычка@webpwn P.244
WEBPWN Telegram 244
Знали ли вы, что второй аргумент fopen (тот самый, который w или, например, r+) умеет исполнять код? Ну почти.

Оказывается, glibc поддерживает синтаксис для указания кодировок, это можно сделать вот так: fopen("file", "w,ccs=<encoding>"). Сами кодировки подгружаются динамически, функции для работы с каждой кодировкой лежат в отдельном .so-файле. Конфиг, содержащий пути к этим библиотекам называется gconv-modules и обычно лежит где-нибудь в /usr/lib/x86_64-linux-gnu/gconv/, но если переопределить переменную окружения GCONV_PATH, то он будет браться из указанной директории. И path traversal, конечно, в нем полностью поддерживается.

В итоге, если вы можете для чужого приложения

1) переопределить переменную окружения GCONV_PATH
2) куда-нибудь записать свою so-шку и файл gconv-modules
3) дописать ,css=payload во второй аргумент fopen

то вы получите выполнение кода.

Конечно, в реальных приложениях такое вряд ли встретится, но это доказывает что даже в самых базовых библиотеках полно интересного.

Кстати, эта же система кодировок-модулей используется и в iconv (и утилите, и библиотеке), поэтому трюк можно использовать для обхода disabled_functions в php. Правда, для того, чтобы задать GCONV_PATH должен быть разрешен putenv, а это уже само по себе небезопасно.

Подробности можно прочитать в посте японца, который это заметил.



tgoop.com/webpwn/244
Create:
Last Update:

Знали ли вы, что второй аргумент fopen (тот самый, который w или, например, r+) умеет исполнять код? Ну почти.

Оказывается, glibc поддерживает синтаксис для указания кодировок, это можно сделать вот так: fopen("file", "w,ccs=<encoding>"). Сами кодировки подгружаются динамически, функции для работы с каждой кодировкой лежат в отдельном .so-файле. Конфиг, содержащий пути к этим библиотекам называется gconv-modules и обычно лежит где-нибудь в /usr/lib/x86_64-linux-gnu/gconv/, но если переопределить переменную окружения GCONV_PATH, то он будет браться из указанной директории. И path traversal, конечно, в нем полностью поддерживается.

В итоге, если вы можете для чужого приложения

1) переопределить переменную окружения GCONV_PATH
2) куда-нибудь записать свою so-шку и файл gconv-modules
3) дописать ,css=payload во второй аргумент fopen

то вы получите выполнение кода.

Конечно, в реальных приложениях такое вряд ли встретится, но это доказывает что даже в самых базовых библиотеках полно интересного.

Кстати, эта же система кодировок-модулей используется и в iconv (и утилите, и библиотеке), поэтому трюк можно использовать для обхода disabled_functions в php. Правда, для того, чтобы задать GCONV_PATH должен быть разрешен putenv, а это уже само по себе небезопасно.

Подробности можно прочитать в посте японца, который это заметил.

BY Кавычка


Share with your friend now:
tgoop.com/webpwn/244

View MORE
Open in Telegram


Telegram News

Date: |

With the “Bear Market Screaming Therapy Group,” we’ve now transcended language. Content is editable within two days of publishing In handing down the sentence yesterday, deputy judge Peter Hui Shiu-keung of the district court said that even if Ng did not post the messages, he cannot shirk responsibility as the owner and administrator of such a big group for allowing these messages that incite illegal behaviors to exist. “Hey degen, are you stressed? Just let it all out,” he wrote, along with a link to join the group. Each account can create up to 10 public channels
from us


Telegram Кавычка
FROM American