python 库劫持:原理、利用与防御
Python 库劫持Library Hijacking是一种常见的权限提升或持久化攻击手段。其核心逻辑在于利用 Python 解析器加载模块时的搜索路径优先级诱使程序加载攻击者伪造的恶意模块而非合法的标准库或第三方库。一、 Python 模块搜索机制了解劫持的前提是掌握 Python 的sys.path加载顺序。当执行import语句时Python 会按以下优先级依次查找当前脚本目录执行脚本如python test.py所在的文件夹优先级最高。PYTHONPATH 环境变量用户手动设置的附加搜索路径。标准库路径Python 安装时的内置库目录如/usr/lib/python3.x。第三方库路径通过 pip 安装的模块所在目录site-packages。二、 库劫持的实现方式如果攻击者拥有目标系统的高优先级路径写入权限即可实施劫持。1. 目录种植Path Planting这是最简单的方式。若目标脚本admin.py中引用了import os攻击者只需在admin.py同级目录下创建一个名为os.py的文件。由于当前目录优先级最高Python 会忽略系统标准库直接运行攻击者的os.py。2. 环境变量污染通过修改PYTHONPATH环境变量攻击者可以强制 Python 优先从其控制的目录如/tmp中搜索模块。示例设置PYTHONPATH/tmp并将恶意模块放入/tmp中。三、 恶意代码构造劫持成功后攻击者通常会编写后门代码。为了不让程序崩溃暴露攻击恶意脚本通常会在执行攻击逻辑后再通过绝对路径加载真正的原始库。常规劫持示例importos# 提权逻辑复制 bash 并赋予 SUID 权限os.system(cp /bin/sh /tmp/sh; chmod us /tmp/sh)若劫持目标正是 os 库为避免递归导入错误可使用subprocess替代importsubprocess# 为系统 bash 增加 SUID 权限subprocess.run([chmod,s,/bin/bash])四、 防御与安全建议权限控制严格限制生产环境和敏感脚本所在目录的写入权限防止被植入非法.py文件。清理环境变量在运行关键脚本前重置或清理PYTHONPATH避免被外部注入。使用绝对路径在极其敏感的场景下检查sys.path的合法性。运行参数使用python3 -I(Isolated mode) 运行脚本。该模式会忽略环境变量和当前工作目录强制使用隔离的标准搜索路径能有效防御此类劫持攻击。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2574095.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!