flasksession伪造
基本理论
session是在服务端用来存储用户信息的,类似于来宾登记表,通过http报文中的cookie进行传递.由于flask轻量级的设计,因此session是存储在客户端的,因此也带来了flask session伪造的风险.
flask中的session通过app.secret_key = ...
来设置.
flasksession通常是由三部分组成,中间通过.
来进行分割.第一部分通常是是json形式的数据通过base64加密后的结果(使用-
和_
替换了标准Base64编码中的+
和/
,同时去除结尾的=
),第二部分是使用的签名算法,第三部分则是session的签名.
所谓flask session伪造,其根本就是在已知或爆出secret_key的情况下,篡改第二部分,生成新的第三部分,从而做到任意修改数据.
flask-session-cookie-manager
kali下的小工具,使用方法如下:
安装:
git clone https://github.com/noraj/flask-session-cookie-manager
生成session:
python3 flask_session_cookie_manager3.py encode -s 'hello' -t '{"username":"lbz"}'
已知secret_key破解session:
python3 flask_session_cookie_manager3.py decode -s 'hello' -c 'eyJ1c2VybmFtZSI6ImxieiJ9.ZoO6sQ.1qmeqKQDnxZyPqeCWGtw_50wWss'
由于一些题目的secret是基于时间戳生成的,因此这里还需要一个生成时间戳的工具: https://uutool.cn/timestamp/
flask-unsign
这个工具比上一个多了自动爆破秘钥的功能,而且是添加到pip包管理器中的,可以直接使用(但是似乎没有在已知cookie情况下破解的功能).
安装到了windows下,通过powshell使用.
安装:
pip install flask-unsign[wordlist]
破解秘钥并解密:
flask-unsign --decode --cookie 'eyJ1c2VybmFtZSI6ImxieiJ9.ZoO6sQ.1qmeqKQDnxZyPqeCWGtw_50wWss'
破解秘钥并输出秘钥:
flask-unsign --unsign --cookie 'eyJ1c2VybmFtZSI6ImxieiJ9.ZoO6sQ.1qmeqKQDnxZyPqeCWGtw_50wWss'
生成session:
flask-unsign --sign --cookie '{"username":"lbz","passwd":"123"}' --secret 'hello'
jwt伪造攻击
基础理论
相比session,jwt token是一种升级的状态存储方式.具有更好的扩展性,同时每个用户只需要存储一个jwt.
jwt也是由三部分组成,第一个是jwt声明和签名算法声明,第二部分是json格式存储的数据进行base64后的结果,第三部分是签名.
注意:jwt在传递的使用需要通过Authorization进行传递,同时添加Content-Type
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InByb3BhbmUiLCJncm91cCI6ImFkbWluIiwiZXhwIjoxNzE5OTU4NDI0fQ.3GMW2L_Sm_8mfO5d5F7-ySB3q4n3ZNbVsEvDD2btrMQ
Content-Type: application/json
jwt.io
一个在线工具,能够用于生成和修改jwt.
由于是网页版,可视化,所以用起来非常直观.
需要时间戳的时候可以配合 https://uutool.cn/timestamp/ 进行使用
c-jwt-cracker
一个用于爆破jwt的secret_key的工具,用法如下
./jwtcrack eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImxieiIsInBhc3N3b3JkIjoibGJ6MDQxMTMwIn0.Z1Hba5ZQ4VQ38EmG95JK7HKc0iIHSqK-EskWOBmFH34
由于是基于字典进行爆破,所以爆不出来确实也正常.
标签:flask,jwt,--,secret,session,cookie,flasksession,伪造 From: https://www.cnblogs.com/merak-lbz/p/18280537