Flask 中的 session 通过 cookie 进行传递,类似于 jwt 通过加密算法防止内容被篡改,
它在生成 session 时会使用 app.config['SECRET_KEY']
中的值作为 salt 对 session 进
行一个简单处理
只要想办法得到 secret_key 就可以伪造任意 session 值,相关工具:https://github.com/noraj/flask-session-cookie-manager
获取 secret_key 一般有两种思路:
- 通过信息泄露漏洞直接获取 key
- 存在任意文件读取时,可以读取 /proc/self/mem 文件来获取程序的变量 (app.config[‘SECRET_KEY’]),但由于 mem 文件比较大而且有不可打印字符,直接读 取会 500, 所以一般先读取 /proc/self/maps 获取程序的堆栈分布(文件读取点会接收 start, end 参数来截取文件内容)