沙箱逃逸
沙箱逃逸
概述
沙箱逃逸就是在在一个严格限制的python环境中,通过绕过限制和过滤达到执行更高权限,甚至getshell的过程。
在此之前我有点搞混flask框架的SSTI注入绕过和沙箱逃逸这俩东西了
-
沙箱指的的限制代码执行的环境,以获取越权访问或执行危险操作的能力。沙箱逃逸是一种与沙箱环境相关的问题,攻击者通过利用沙箱中的缺陷或漏洞来绕过限制,从而实现未授权操作。
-
SSTI绕过则是由于不正确地处理用户提供的模版输入,导致恶意代码被执行
-
沙箱逃逸更关注于绕过整个python环境的限制;而SSTI则是特定于Web应用程序的问题
-
言而总之,总而言之,两者都涉及执行恶意代码,但沙箱逃逸玩的更花???
执行命令的模块
常用的文件读取模块
函数导入限制和绕过
花式import
直接进制导入敏感的包,比如
这种简单的限制不能导入包,可以中间添加空格来绕过,或者使用其他方式导入包,比如
- 利用
__import__
函数
- 使用
importlib
库
import的本质就是执行一遍导入的库,这个过程实际上可以用execfile来代替:
execfile
,前提是得知道对应的路径(2.x才能用)
一般情况下库都是默认路径,如果sysy没被干掉,还可以确认一下:
__builtin__
模块:可以通过reload(__builtin__)
得到完整的模块(3.x是builtins),reload被删:
- os从
sys.modules
中删掉之后
- sys,os,reload全部被删,
execfile
,前提是得知道对应的路径(2.x才能用)
除此之外还有一些编码
花式处理字符串
- 拼接
- 翻转
- 通过getattr拿到对象的方法、属性:
通过继承关系逃逸
理解一下,通过继承关系逃逸就是,想要执行os,有一个site库里有,我们可以通过调用这个库来调用os
mro方法就是这个类型所继承的父类的列表
- site库里的os
- 利用reload,变相加载os
__subclasses__
子类
- warnings.catch_warnings中_module属性:
小结:总的来说都是先通过属性/方法,如__class__
、__mro__
、__subclasses__
、__bases__
来获取object,再通过__global__
找引入的__builtins__
或者eval等能够直接被利用的库
文件读写
- file(2.x内建)
- open(2.x 与 3.x 通用)
- codecs模块
-
还有一些库,例如:
types.FileType
(rw)、platform.popen
(rw)、linecache.getlines
(r)。如果能写,可以将类似的文件保存为
math.py
,然后 import 进来:
需要注意的是,py文件命名尽量选用常用的标准库
其他
- 过滤
[]
,将[]
的功能用pop
、__getitem__
代替(实际上a[0]
就是在内部调用了a.__getitem__(0)
) - 新特性:PEP 498 引入了
f-string
,在 3.6 开始出现,船新版本:
f'{__import__("os").system("whoami")}'
- 字符串格式化:
%操作符
string.Template
format
python2.6后引用的格式化字符串的函数
上面提到的f-String也算一种字符串格式化
-
dir
与__dict__
:列出一个模组/类/对象 下面 所有的属性和函数 -
exec command in _global
:由于exec
运行在自定义的全局命名空间里,会处于受限执行模式,exec
加上定制的globals
会使得沙箱安全很多,一些常规的payload是没法使用的 -
但由于
exec
运行在特定的命名空间里,可以通过其他命名空间里的__builtins__
,比如types
库,来执行任意命令:
__EOF__

本文链接:https://www.cnblogs.com/solitude0-c/p/17619777.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!