深圳品牌网站开发,ccie网络培训,兰州网站的优化,杭州网站建设网目录
Java安全-Druid监控-未授权访问信息泄漏
黑盒发现
白盒发现
攻击点
Java安全-Swagger接口-导入联动批量测试
黑盒发现
白盒发现
自动化发包测试
自动化漏洞测试
Java安全-JWT令牌-空算法未签名密匙提取
识别 JWT
方式一#xff1a;人工识…目录
Java安全-Druid监控-未授权访问信息泄漏
黑盒发现
白盒发现
攻击点
Java安全-Swagger接口-导入联动批量测试
黑盒发现
白盒发现
自动化发包测试
自动化漏洞测试
Java安全-JWT令牌-空算法未签名密匙提取
识别 JWT
方式一人工识别
方式二Burp插件识别
解析JWT数据
JWT安全
空加密算法攻击头部不使用加密
未校验签名攻击签名不使用签名认证
暴力破解密钥攻击签名知道密钥实现重组
其他安全参考源码泄漏密匙Kid注入等
CTF-JWT
Web345(None空加密算法)
Web346(None算法绕过签名)
Web347(弱口令密钥获取)
Web348(爆破密钥上题一样)
Web349(公钥私钥泄露)
Web350(密钥混淆攻击RS256HS256)
黑盒JWT测试 知识点 1、Java安全-Druid监控-未授权访问信息泄漏 2、Java安全-Swagger接口-文档导入联动批量测试 2、Java安全-JWT令牌攻防-空算法未签名密匙提取 Java安全-Druid监控-未授权访问信息泄漏
Druid是阿里巴巴数据库事业部出品为监控而生的数据库连接池。Druid提供的监控功能监控SQL的执行时间、监控Web URI的请求、Session监控。当开发者配置不当时就可能造成未授权访问漏洞。
参考https://developer.aliyun.com/article/1260382
攻击点
直接拼接URL路径尝试能否直接未授权访问系统功能点。结合泄露URL路径和Session信息利用BurpSuite进行尝试登录。利用Cookie编辑器替换Session再次访问后台路径尝试进入后台。 黑盒发现 白盒发现
在项目源码配置文件中搜索druid关键字 攻击点
直接拼接URL路径尝试能否直接未授权访问系统功能点。 结合泄露URL路径和Session信息利用BurpSuite进行尝试登录 利用Cookie编辑器替换Session再次访问后台路径尝试进入后台。 Java安全-Swagger接口-导入联动批量测试
Swagger是一个用于生成、描述和调用RESTful接口的Web服务。就是将项目中所有想要暴露的接口展现在页面上并可以进行接口调用和测试的服务。所以可以对这个接口进行漏洞测试看是否存在未授权访问、sql注入、文件上传等漏洞。由于接口太多一个个接口测试的话太费时间所以一般会采用自动化接口漏洞安全测试。
自动化发包测试Postman
自动化漏洞测试联动BurpSuite Xray等 黑盒发现 白盒发现 自动化发包测试 如果postman上有出现200的响应那么就有可能是一个未授权接口 自动化漏洞测试
联动BurpSuite Xray等 也可以在BP上看有没有200响应的数据包也有可能会是一个未授权接口
bp联动xray Java安全-JWT令牌-空算法未签名密匙提取
JSON Web Token(JWT)。它遵循JSON格式将用户信息加密到token里服务器不保存任何用户信息只保存密钥信息通过使用特定加密算法验证token通过token验证用户身份。基于token的身份验证可以替代传统的cookiesession身份验证方法。这使得JWT成为高度分布式网站的热门选择在这些网站中用户需要与多个后端服务器无缝交互。 JWT攻击 识别 JWT
JWT由三部分组成表头有效载荷签名 标头Header Header是JWT的第一个部分是一个JSON对象主要声明了JWT的签名算法如HS256”、RS256等以及其他可选参数如kid、jku、x5u等 alg字段通常用于表示加密采用的算法。如HS256、RS256等 typ字段通常用于表示类型 还有一些其他可选参数如kid、jku、x5u等 有效载荷Payload Payload是JWT的第二个部分这是一个JSON对象主要承载了各种声明并传递明文数据用于存储用户的信息如id、用户名、角色、令牌生成时间和其他自定义声明。 iss该字段表示jwt的签发者。 sub该jwt面向的用户。 audjwt的接收方。 expjwt的过期时间,通常来说是一个时间戳。 iatjwt的签发时间,常来说是一个时间戳。 jti此jwt的唯一标识。通常用于解决请求中的重放攻击。该字段在大多数地方没有被提及或使用。因为使用此字段就意味着必须要在服务器维护一张jti表 当客户端携带jwt访问的时候需要在jti表中查找这个唯一标识是否被使用过。使用这种方式防止重放攻击似乎让jwt有点怪怪的感觉, 毕竟jwt所宣称的优点就是无状态访问 签名Signature Signature是对Header和Payload进行签名具体是用什么加密方式写在Header的alg 中。同时拥有该部分的JWT被称为JWS也就是签了名的JWT。 对Header和Payload进行签名具体是用什么加密方式写在Header的alg中。 同时拥有该部分的JWT被称为JWS也就是签了名的JWT。 第一部分对 JSON 的头部做 base64 编码处理得到 第二部分对 JSON 类型的 payload 做 base64 编码处理得到 第三部分分别对头部和载荷做base64编码并使用.拼接起来 使用头部声明的加密方式对base64编码前两部分合并的结果加盐加密处理作为JWT
在线解析https://jwt.io/ BURP插件Hae 或 JSON Web Tokens 方式一人工识别 方式二Burp插件识别
Hae(需要自己下载项目) JSON Web Tokens(BP商店有支持识别解析) 解析JWT数据
JWT在线解析https://jwt.io/ BP官方插件-JSON Web Tokens上面已有介绍 JWT安全
空加密算法攻击头部不使用加密
签名算法可被修改为noneJWT支持将算法设定为None。如果alg字段设为None那么签名会被置空这样任何token都是有效的。 未校验签名攻击签名不使用签名认证
某些服务端并未校验JWT签名可以尝试修改payload后然后直接请求token或者直接删除signature再次请求查看其是否还有效。 暴力破解密钥攻击签名知道密钥实现重组
针对是对称加密算法非对称没有用 非对称要使用方法从源码获取公钥私钥文件
某些签名算法例如HS256HMACSHA-256会像密码一样使用一个任意的、独立的字符串作为秘密密钥。这个秘钥如被轻易猜到或暴力破解则攻击者能以任意的头部和载荷值来创建JWT然后用密钥重新给令牌签名。 其他安全参考源码泄漏密匙Kid注入等
参考文章https://blog.csdn.net/weixin_44288604/article/details/128562796 CTF-JWT
JWT利用项目https://github.com/ticarpi/jwt_tool
项目命令帮助
# 使用None算法
python3 jwt_tool.py JWT_HERE -X a# 自定义修改生成
python3 jwt_tool.py JWT_HERE -T# 使用字典破解
python3 jwt_tool.py JWT_HERE -C -d dictionary.txt# 指定密码测试
python3 jwt_tool.py JWT_HERE -C -p password_hereWeb345(None空加密算法) 签名算法可被修改为noneJWT支持将算法设定为 None 。如果 alg 字段设为 None 那么签名会被置空这样任何token都是有效的。 Web346(None算法绕过签名) 某些服务端并未校验JWT签名可以尝试修改payload后然后直接请求token或者直接删除signature再次请求查看其是否还有效。 解题思路alg强制设置为none绕过签名 JWT利用项目-jwt_tool Web347(弱口令密钥获取) 针对是对称加密算法非对称没有用 非对称要使用方法获取源码或者公钥私钥文件 某些签名算法例如HS256HMACSHA-256会像密码一样使用一个任意的、独立的字符串作为秘密密钥。这个秘钥如被轻易猜到或暴力破解则攻击者能以任意的头部和载荷值来创建JWT然后用密钥重新给令牌签名。 JWT利用项目-jwt_tool 知道密匙之后肯定要重新生成JWT呀如何重新生成 使用 JWT在线解析https://jwt.io/来重新生成 Web348(爆破密钥上题一样)
同上 Web349(公钥私钥泄露)
下载JS源码后用Webstorm打开 公钥私钥泄露访问/private.key、/public.key得到公钥密钥 源码中私钥生成jwt利用公钥解密jwt只要有私钥就可以重新生成JWT test.py
import jwt
public open(private.key, r).read()
payload{user:admin}
print(jwt.encode(payload, keypublic, algorithmRS256))注意源码中公匙解密的条件 Web350(密钥混淆攻击RS256HS256)
下载源码后使用Webstorm打开 将RS256算法改为HS256非对称密码算法对称密码算法HS256算法使用密钥为所有消息进行签名和验证。 而RS256算法则使用私钥对消息进行签名并使用公钥进行身份验证。 test.js
var jwt require(jsonwebtoken);
var fs require(fs);
var privateKey fs.readFileSync(./public.key);
var token jwt.sign({ user: admin }, privateKey, { algorithm: HS256 });
console.log(token)黑盒JWT测试
首先找到需要JWT鉴权后才能访问的页面如个人资料页面将该请求包重放测试
未授权访问删除Token后仍然可以正常响应对应页面敏感信息泄露通过JWt.io解密出Payload后查看其中是否包含敏感信息如弱加密的密码等破解密钥越权访问通过JWT.io解密出Payload部分内容通过空加密算法或密钥爆破等方式实现重新签发Token并修改Payload部分内容重放请求包观察响应包是否能够越权查看其他用户资料检查Token时效性解密查看payload中是否有exp字段键值对Token过期时间等待过期时间后再次使用该Token发送请求若正常响应则存在Token不过期通过页面回显进行探测如修改Payload中键值对后页面报错信息是否存在注入payload中kid字段的目录遍历问题与sql注入问题