MM
Size: a a a
MM
АП
{{''.__class__.mro()[1].__subclasses__()[46]('touch /tmp/rce',shell=True)}}Этот пейлоад достает класс
Popen
по индексу из наследников object
и исполняет команду. Он не очень-то удобен: индекс Popen
(который в примере равен 46) различается от сетапа к сетапу, поэтому его нужно подбирать.{{lipsum.__globals__["__builtins__"].eval("<python code>")}}Здесь мы используем встроенную в Jinja функцию
lipsum
(она возвращает текст "Lorem ipsum dolor..."), но вместо того чтобы вызывать её, мы через __globals__
достаем её глобальные переменные — а в них нас ждет модуль __builtins__
с функцией eval
.__globals__
у всех питоновских функций (кроме встроенных). Если в вашем окружении нет функций, а только объекты — не беда, найдите у него любой метод и возьмите свойство __func__
. Вы получите unbound функцию, у которой уже будет __globals__
.MM
T
{{''.__class__.mro()[1].__subclasses__()[46]('touch /tmp/rce',shell=True)}}Этот пейлоад достает класс
Popen
по индексу из наследников object
и исполняет команду. Он не очень-то удобен: индекс Popen
(который в примере равен 46) различается от сетапа к сетапу, поэтому его нужно подбирать.{{lipsum.__globals__["__builtins__"].eval("<python code>")}}Здесь мы используем встроенную в Jinja функцию
lipsum
(она возвращает текст "Lorem ipsum dolor..."), но вместо того чтобы вызывать её, мы через __globals__
достаем её глобальные переменные — а в них нас ждет модуль __builtins__
с функцией eval
.__globals__
у всех питоновских функций (кроме встроенных). Если в вашем окружении нет функций, а только объекты — не беда, найдите у него любой метод и возьмите свойство __func__
. Вы получите unbound функцию, у которой уже будет __globals__
.АП
A
T
T
V
T
T
V
V
V
T
V
T
АП
The “pre ping” feature will normally emit SQL equivalent to “SELECT 1” each time a connection is checked out from the pool;
АП
The “pre ping” feature will normally emit SQL equivalent to “SELECT 1” each time a connection is checked out from the pool; if an error is raised that is detected as a “disconnect” situation, the connection will be immediately recycled, and all other pooled connections older than the current time are invalidated, so that the next time they are checked out, they will also be recycled before use.
АП