26

这个问题类似于Exploitable PHP Functions

受污染的数据来自用户,或者更具体地说来自攻击者。当受污染的变量到达接收器函数时,您就有了漏洞。例如,执行 sql 查询的函数是接收器,而 GET/POST 变量是污染源。

Python 中的所有 sink 函数是什么?我正在寻找引入漏洞或软件弱点的功能。我对远程代码执行漏洞特别感兴趣。是否存在包含危险功能的整个类/模块?你有任何有趣的 Python 漏洞的例子吗?

4

5 回答 5

14

eval并且exec是经典。但是,openfile可以被滥用:

open('/proc/kcore', 'w').write('0' * 1000 * 1000 * 1000)

然后是ossyssubprocessdircache模块。几乎所有涉及文件系统或可用于将数据转换为可执行代码(如os.system)的东西都将出现在列表中。

正如 S. Lott 在评论中指出的那样,写入文件系统和执行任意外部程序并不是 Python 特定的。但是,它们值得安全审计人员考虑。这些功能中的大多数都可以安全地使用,而无需过多关注安全性。另一方面,是非常大的危险信号evalexec安全地使用它们需要精心呵护。

于 2010-11-17T17:58:06.173 回答
14

直接来自泡菜文档:

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.
于 2010-11-17T18:44:40.523 回答
10

在寻找这种东西时,我倾向于偏执狂。更是如此,因为我倾向于做很多元编程。

  • 大多数副作用命令(其他帖子涵盖)
    • 文件操作 ( open, tarfile, zipfile, ...)
    • 网络调用 ( urllib2, socket, ...)
    • 数据序列化/持久性 ( pickle, shelve, ...)
    • 进程/线程管理 ( subprocess, os.fork, os.kill, ...)
  • 内置
    • getattr
    • setattr
    • delattr
    • eval
    • exec
    • execfile
    • __import__

可能还有其他我忘记了。我也对通过我修改 sys.path、sys.modules 等的函数进行用户输入持谨慎态度。

于 2010-11-24T22:50:14.130 回答
6

subprocess模块包含讨厌的功能,它不推荐使用这些执行命令/进程的方式:

os.system
os.spawn*
os.popen*
popen2.*
commands.*

还有exec将执行 python 代码和eval将“评估”表达式并可用于操作变量。

于 2010-11-17T17:52:40.707 回答
3

评估给定字符串并返回结果的input函数有一些限制,但仍然可以利用。

于 2010-11-24T19:58:07.000 回答