这个问题类似于Exploitable PHP Functions。
受污染的数据来自用户,或者更具体地说来自攻击者。当受污染的变量到达接收器函数时,您就有了漏洞。例如,执行 sql 查询的函数是接收器,而 GET/POST 变量是污染源。
Python 中的所有 sink 函数是什么?我正在寻找引入漏洞或软件弱点的功能。我对远程代码执行漏洞特别感兴趣。是否存在包含危险功能的整个类/模块?你有任何有趣的 Python 漏洞的例子吗?
这个问题类似于Exploitable PHP Functions。
受污染的数据来自用户,或者更具体地说来自攻击者。当受污染的变量到达接收器函数时,您就有了漏洞。例如,执行 sql 查询的函数是接收器,而 GET/POST 变量是污染源。
Python 中的所有 sink 函数是什么?我正在寻找引入漏洞或软件弱点的功能。我对远程代码执行漏洞特别感兴趣。是否存在包含危险功能的整个类/模块?你有任何有趣的 Python 漏洞的例子吗?
eval
并且exec
是经典。但是,open
也file
可以被滥用:
open('/proc/kcore', 'w').write('0' * 1000 * 1000 * 1000)
然后是os
、sys
、subprocess
和dircache
模块。几乎所有涉及文件系统或可用于将数据转换为可执行代码(如os.system
)的东西都将出现在列表中。
正如 S. Lott 在评论中指出的那样,写入文件系统和执行任意外部程序并不是 Python 特定的。但是,它们值得安全审计人员考虑。这些功能中的大多数都可以安全地使用,而无需过多关注安全性。另一方面,是非常大的危险信号eval
。exec
安全地使用它们需要精心呵护。
直接来自泡菜文档:
Warning
The pickle module is not intended to be secure against erroneous or maliciously constructed data. Never unpickle data received from an untrusted or unauthenticated source.
在寻找这种东西时,我倾向于偏执狂。更是如此,因为我倾向于做很多元编程。
open
, tarfile
, zipfile
, ...)urllib2
, socket
, ...)pickle
, shelve
, ...)subprocess
, os.fork
, os.kill
, ...)getattr
setattr
delattr
eval
exec
execfile
__import__
可能还有其他我忘记了。我也对通过我修改 sys.path、sys.modules 等的函数进行用户输入持谨慎态度。
评估给定字符串并返回结果的input
函数有一些限制,但仍然可以利用。