可利用的Python函数

时间:2010-11-17 17:52:26

标签: python security auditing

此问题与Exploitable PHP Functions类似。

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

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

5 个答案:

答案 0 :(得分:14)

evalexec是经典之作。但是,openfile也可能被滥用:

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

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

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

答案 1 :(得分:14)

直接来自pickle文档:

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.

答案 2 :(得分:9)

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

  • 大多数副作用命令(其他帖子涵盖)
    • 文件操作(opentarfilezipfile,...)
    • 网络电话(urllib2socket,...)
    • 数据序列化/持久性(pickleshelve,...)
    • 流程/线程管理(subprocessos.forkos.kill,...)
  • 内建
    • getattr
    • setattr
    • delattr
    • eval
    • exec
    • execfile
    • __import__

可能还有其他我忘了。我也警惕用户输入通过我正在修改sys.path,sys.modules等的函数。

答案 3 :(得分:6)

subprocess模块包含令人讨厌的功能,它不赞成这些执行命令/进程的方式:

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

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

答案 4 :(得分:3)

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