Web学习21

  1. 知识点
  2. 案例
    1. JavaWeb-WebGoat8靶场搭建使用
    2. 安全问题-目录遍历&身份认证-JWT攻击
    3. 安全问题-访问控制&安全组件-第三方组件

知识点

1、JavaWeb常见安全及代码逻辑
2、目录遍历&身份验证&逻辑&JWT
3、访问控制&安全组件&越权&三方组件

案例

JavaWeb-WebGoat8靶场搭建使用
安全问题-目录遍历&身份认证-JWT攻击
安全问题-访问控制&安全组件-第三方组件

JavaWeb-WebGoat8靶场搭建使用

第二关

上传一张图片,抓个包显示了图片保存的地址

访问一下地址就可以过关

第三关

存在一个过滤

直接双写绕过,随便输入一个1就可以过关

问题答案:
问题里面有很多选项
s0-你叫什么名字
s1-你的出生地
s2-你的老师叫什么
s3-你父母叫什么
接收键名 键值
s0=刘迪&s1=湖北 正确 s3=1&s4=1 发送数据
数据库没有s3 s4 s3=null ,s4=null

安全验证:
固定接收的数据:s0 s1 判断你的数据
不固定: s0 s1判断你的数据 正常;s2 s3 不在数据库或者变量内 攻击者

搞个不存在的问题,就可以直接绕过了

安全问题-目录遍历&身份认证-JWT攻击

JWT概念介绍

JWT验证原理:https://www.cnblogs.com/yokan/p/14468030.html

第一部分是header部分,第二部分是payload部分,第三部分是signature部分,把前两段的base密文通过.拼接起来,然后对其进行HS256加密,然后对hs256密文进行base64url加密,最终得到token的第三段,前两段都是进行的base64url加密。

这个技术一般会在java和python开发的web应用里进行身份验证,不同的语言用到的技术是不一样的。

①JWT攻击方式:空加密算法,当实行空加密时,签名就直接失效了,但是一般是开发人员脑子瓦特了才会在生产环境里开启空加密算法,实战一般都是会有签名的。

生成字符串:算法模式+密匙 不要密匙去生成,需要服务器支持不要密匙(空加密算法)

使用空加密算法生成的jwt,就没有第三段的签名字符了。

②爆破攻击:拿jwt爆破脚本爆破一下,就可以得到密钥了

修改用户名再输入正确的密钥,就可以伪造jwt了

③修改kid语句可以形成很多通用漏洞

总结:JWT攻击:1、签名没验证空加密 2、爆破密匙 3、KID利用

安全问题-访问控制&安全组件-第三方组件

组件概念:

CVE漏洞,插入这串poc就可以实现rce了,譬如这里的calc.exe就是调用电脑里的计算器,由于靶场环境搭在本地,所以自己电脑的计算器就会被打开,可想而知这个漏洞都可以做点啥。

java本身的函数漏洞很少, 漏洞都是存在于写的包里面,但是php具有很多函数是有漏洞特性的

失效的访问控制

-隐藏属性:前端页面的自慰限制显示、
-水平越权:同一级别用户权限的查看