JavaWeb项目&JWT身份攻击&组件安全&访问控制

发布于 2024-04-14  174 次阅读


  • JavaWeb常见安全及代码逻辑
    • 通过URL信息来对应源码文件,没有代码的情况下很难渗透。
    • 目录遍历、身份验证、逻辑和JWT是常见的安全问题。
  • 目录遍历攻击
    • 解决问题:当前目录不能执行,上传至别的目录进行执行脚本。
    • 上传上去的地址和目标地址需要仔细考虑。
  • JWT身份攻击
    • JWT(Json Web Token)遵循JSON格式,将用户信息加密到token里,服务端不保存用户信息,只保存密钥信息。
    • 对比cookie解密平台:JWT.io
  • 访问控制和安全组件
    • 固定接受的数据:s0、s1判断你的数据正常。
    • 不固定:s2、s3不在数据库或者变量内,攻击者就能测试。
    • URL触发连接,访问地址:auth-bypass/verify-account。
  • 第三方组件安全
    • Log4j2漏洞。

JWT原理及常见攻击方式

JWT的全称是Json Web Token。它遵循JSON格式,将用户信息加密到token里,服务器不保存任何用户信息,只保存密钥信息,通过使用特定加密算法验证token,通过token验证用户身份。基于token的身份验证可以替代传统的cookie+session身份验证方法。

JSON Web Tokens 由三部分组成,用点(.)分隔,它们是:

  • Header 
  • Payload 
  • Signature 

因此,JWT 通常如下所示。

生成规则如下:

1、Header:
通常包含令牌类型(JWT)和所使用的签名算法(例如HMAC SHA256或RSA)。

例如:

{
  "alg": "HS256",
  "typ": "JWT"
}

然后,将此 JSON 进行 Base64Url 编码,形成 JWT 的第一部分。

2Payload:
包含声明(claims)。声明是关于实体(通常是用户)和其他数据的陈述。有三种类型的声明:注册声明、公共声明和私有声明。

  • Registered claims(注册声明):这些是一组预定义的声明,虽然不是强制性的,但建议使用,以提供一组有用且可互操作的声明。其中一些包括:iss(发行者)、exp(过期时间)、sub(主题)、aud(受众)等。请注意,声明名称仅为三个字符,因为JWT旨在紧凑。
  • Public claims(公共声明):这些可以由使用JWT的人自行定义。为避免冲突,它们应在IANA JSON Web Token Registry中定义,或者定义为包含抗冲突命名空间的URI。
  • Private claims(私有声明):这些是自定义的声明,用于特定应用场景,不会与其他人冲突

例如:

{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

然后对Payload进行 Base64Url 编码,形成 JSON Web 令牌的第二部分。

3、Signature :
把前两段的base密文通过.拼接起来,然后对其进行HS256加密,再然后对hs256密文进行base64url加密,最终得到token的第三段。

例如,如果您想要使用 HMAC SHA256 算法,签名将按以下方式创建:

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret(密钥))

最后将三段字符串通过 .拼接起来就生成了jwt的token

以下显示了一个 JWT,其中包含先前 header和payload的编码,并使用秘钥进行签名。

官网:JSON Web Tokens - jwt.io

JWT的攻击方式:

JWT原理及常见攻击方式 - yokan - 博客园 (cnblogs.com):JavaWeb项目&JWT身份攻击&组件安全&访问控制

JavaWeb靶场

WebGoat基于JAVA开发,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、WEB服务、Open Authentication失效、危险的HTML注释等等。

WebGoat提供了一系列WEB安全学习的教程,某些课程也给出了视频演示,指导用户利用这些漏洞进行攻击。

环境下载地址GitHub - WebGoat/WebGoat: WebGoat is a deliberately insecure application

後悔しない
最后更新于 2024-04-14