可利用的Python函数

roo*_*ook 24 python security auditing

此问题类似于可利用的PHP函数.

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

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

nmi*_*els 14

eval并且exec是经典.但是,openfile可能被滥用:

open('/proc/kcore', 'w').write('0' * 1000 * 1000 * 1000)
Run Code Online (Sandbox Code Playgroud)

再就是os,sys,subprocess,和dircache模块.几乎任何触及文件系统或可用于将数据转换为可执行代码(例如os.system)的东西都将出现在列表中.

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

  • 打开'/ proc/kcore'需要大多数进程没有的权限.这是一种不同的漏洞,因为它需要特权,而不仅仅是破旧的编码. (2认同)
  • @ S.Lott:当然,但这只是一个(戏剧性的)例子.也许攻击者希望作为Web服务器用户运行并打开`/ var/www/index.html`.良好的安全性是分层的 我们不能指望我们所有用户的管理员都能确保所有内容始终以最佳权限运行,因此值得多花点时间并寻找这类事情. (2认同)

小智 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.
Run Code Online (Sandbox Code Playgroud)


die*_*dha 9

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

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

也许还有其他我忘了.我也对通过我修改sys.path,sys.modules等功能的用户输入保持警惕.


roo*_*ook 6

模块包含弃用执行命令/过程的这些方式讨厌功能:

os.system
os.spawn*
os.popen*
popen2.*
commands.*
Run Code Online (Sandbox Code Playgroud)

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