小迪安全笔记-21
小迪安全笔记-21
Kn1ght第21天:WEB攻防-JavaWeb项目&JWT身份攻击&组件安全&访问控制
知识点:
1.JavaWeb常见安全及代码逻辑
通过URL信息来对应源码文件。没有代码的情况下很难渗透。
2.目录遍历&身份验证&逻辑&JWT
3.访问控制&安全组件&越权&三方组件
JavaWeb-WebGoat8靶场搭建使用
• 下载地址:https://github.com/WebGoat/WebGoat/releases,下载webgoat-server-8.2.2.jar
• 压缩到jar包里面。
• 如何启动:安装jdk,运行 java -jar webgoat-server-8.1.0.jar –server.port=8091
• 访问127.0.0.1:9091/WebGoat/login,注册账号登录就可以了。
安全问题-目录遍历
第二关
关键代码:
1 | publicAttackResultuploadFileHandler(@RequestParam("uploadedFile")MultipartFilefile,@RequestParam(value="fullName",required=false)StringfullName){ |
修改上传数据包:
第三关:
../ 被过滤,之前讲过,可以双写绕过
关键代码:
把fullname修改为:…/./test
安全问题 - 身份认证
键名—键值,从多个问题中随机选出2个问题来验证:
问题s0:你的名字?—刘迪
问题s1:你的出生地?—湖北
给服务器发送数据 s0=xiaodi&s1=湖北 则验证通过
绕过:
不固定的接收数据:数据库存在s0和s1的键名,数据库不存在s3和s4,攻击者通过s3=null&s4=null发送数据,因为s3 s4本来就为空,相当于NULL,那么就能进行绕过。
固定的接收数据:如果服务器只接收固定键名,s1和s1,再判断s0和s1的值,就没法绕过
安全问题 - JWT
使用JSON Web令牌(JWT)进行身份验证(java和python运用较多)
https://www.cnblogs.com/yokan/p/14468030.html
JWT 令牌由三个部分组成,分别是 标头(Header)、有效载荷(Payload)、签名(Signature),并且由 “.” 分割.
类似于 xxxx.yyyy.zzzzz ,也就是 Header.Payload.Signature
jwt解密平台:
JWT的攻击方式:
1.空加密算法
2.爆破
3.KID
空加密算法
空加密算法的设计初衷是用于调试的,但是如果某天开发人员脑阔瓦特了,在生产环境中开启了空加密算法,缺少签名算法,jwt保证信息不被篡改的功能就失效了。
空加密算法,可以在header中指定alg为None,把签名设置为空(即不添加signature字段),这需要服务器(后端代码)支持不要秘钥签名(空模式加密)
密钥爆破
直接找工具
https://github.com/ticarpi/jwt_tool
修改KID参数
安全问题-访问控制&安全组件-第三方组件
在百度查找相关漏洞,进行测试
访问控制
隐藏属性:前端页面选择性的展示某些信息(隐藏某些重要的信息)
水平越权:同一级别用户权限的查看