1、JavaWeb常见安全及代码逻辑
通过URL信息来对应源码文件。没有代码的情况下很难渗透。
2、目录遍历&身份验证&逻辑&JWT
3、访问控制&安全组件&越权&三方组件
JWT认证
json_web_token
1 2 3 4 5 6 7 8
| JWT: https://www.cnblogs.com/vege/p/14468030.html 三部分构成,以.分隔,出现在cookie上。 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c 对比cookie 解密平台:https://jwt.io/ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|


1 2 3
| cookie:eyJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE2NDMxOTk5MzYsImFkbWluIjoiZmFsc2UiLCJ1c2VyIjoiVG9tIn0.C_2nlYK5_bhv5RHnRbPW7sxIkZsaPN-AYX3xBwo3n5PeIzdK7G1-sjJjo8qIaH_JHZVaR7amGQTdNiEjYAkAMg 解密后:
|

1 2 3 4 5
| 攻击:1.空加密算法 2.爆破 3.KID 1.空加密算法: 生成字符串:算法模式+秘钥(缺一不可) 忽略秘钥生成,需要服务器支持不要秘钥签名(空模式加密) 抓到数据包
|

1 2 3 4 5
| 找到相对应的代码段发现可以空加密然后用python脚本去写空加密jwt eyJhbGciOiJub25lIn0.eyJpYXQiOjE1NzM0NzAwMjUsImFkbWluIjoidHJ1ZSIsInVzZXIiOiJKZXJyeSJ9. 2.爆破:
|
1 2 3 4 5 6
| • https://blog.csdn.net/Petrichoryi/article/details/105930751 • 压缩到jar包里面。 • 如何启动:安装jdk,运行java.exe -jar webgoat --server.port= 9091 • • java -jar webgoat-server-8.1.0.jar --server.port=8091 访问ip+WebGoat/login.html,注册账号登录就可以了。
|

1 2 3
| 目录遍历: 解决问题:当前目录不能执行,上传至别的目录进行执行脚本 上传上去的地址:
|




1 2 3 4 5 6 7
| 关键代码: publicAttackResultuploadFileHandler(@RequestParam("uploadedFile")MultipartFilefile,@RequestParam(value="fullName",required=false)StringfullName){ returnsuper.execute(file,fullName); } 接受uploadedfile 对应抓包:
|



1 2
| 成功过关。 第三关,用同样的方式没有用了,打开相对应的代码,发现关键的过滤:
|

1 2
| 但是这个过滤知识一次性的,并不是很严格。 双写绕过:
|

1 2 3 4 5 6 7 8 9 10 11 12 13
| 身份认证: 认证问题答案,很多选项: 你叫什么名字等等.....只有两个问题 接受键名和键值 s0=xiaodi&s1=湖北 正确 s3=null&s4=null发送数据 s3 s4为空,相当于NULL,那么就能进行绕过。 安全验证: 固定接受的数据:s0 s1判断你的数据 正常 不固定:s0 s1 正常 不固定:s2 s3不在数据库或者变量内,攻击者就能测试。 URL触发连接,访问地址:auth-bypass/verify-account
|

