JavaWeb-WebGoat8靶场搭建使用
java运行jar包成功搭建靶场
访问成功
文件上传中的路径遍历
第一关:将头像上传到上一级目录
根据代码审计得知上传路径由fullname的值控制
抓包修改fullname的值
成功上传
第二关:代码审计发现对fullname的值进行了过滤,但是只过滤了一次
抓包直接双写绕过,成功上传
有什么用呢?
比如:网站的上传头像的目录设置了不允许执行程序文件,只允许查看头像,我们上传的脚本文件就执行不了。
我们就可以利用路径遍历将脚本文件上传到上级允许执行程序的目录。
webgoat(A2)——Authentication Bypasses
因为网站是根据键值对在数据库对用户的输入进行验证的,所以我们可以修改一个数据库不存在的键值对编号让值为null来绕过登录。
修改secQuestion0=11&secQuestion1=11为:secQuestion01=&secQuestion11=即可绕过
JWT攻击方式
用户登录成功后,服务端通过jwt生成一个随机token给用户(服务端无需保留token),以后用户再来访问时需携带token,服务端接收到token之后,通过jwt对token进行校验是否超时、是否合法。
jwt由三个部分组成:header.payload.signature
示例:由 . 连接的三段字符串组成
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
webgoat(A2)——JWT tokens
jwt——签名没验证空加密
提示:尝试更改您收到的令牌并通过更改令牌成为管理员用户。
抓包,发现使用了jwt
解密jwt生成的token
根据提示修改token成为管理员用户,我们就可以使用空加密算法
加密算法格式:(header+'.'+payload,去掉了'.'+signature字段)
我们就可以使用jwt的token生成脚本重新生成token,
在header中指定alg为None,把signature设置为空,把admin:false更改为admin:ture篡改身份信息。
运行脚本成功生成jwt的token
将token复制,替换数据包中的token,成功通关
Jwt——爆破密钥
在爆破脚本中写入要爆破的token,运行爆破脚本,成功爆破出密匙:shipping
密匙正确
将用户更改为webgoat
填入token通关
第十二关:组件漏洞
打开源码,进行代码审计,发现使用了XStream组件
浏览器搜索组件漏洞,成功获取的漏洞poc
poc意思:服务器打开计算器
靶场输入漏洞poc,成功执行
原文始发于微信公众号(小黑子安全):javaweb-webgoat8靶场+漏洞产生
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论