小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制

#知识点:

1JavaWeb 常见安全及代码逻辑

2、目录遍历&身份验证&逻辑&JWT

3、访问控制&安全组件&越权&三方组件


Java:大部分都是第三方插件出现漏洞

webgoat的搭建:——java靶场

JDK版本要求:11.0以上

需先启动webgoat-server:java -jar webgoat-server-8.1.0.jar --server.port=8080小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第1张图片

然后访问http://127.0.0.1:8080/WebGoat,进行登录/创建

账号:atwood

Pw:123456

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第2张图片


通过路径注入进行说明

本题只:需上传图片,路径需要再指定的路径下

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第3张图片

通过直接上传,得知,上传的文件位置

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第4张图片

通过bp进行抓包

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第5张图片

通过对应的url中的地址,找到对应的文件

.jar:也是一个封装模式

通过反编译,可以获得从中的文件

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第6张图片

先看文件中的配置文件

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第7张图片

再看包,找到对映的包,点击添加到库,即将包解压开

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第8张图片

找到配置文件,发现与POST中的地址一样,因此可知道此页面为数据文件

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第9张图片

对数据的操作的代码

查看bp,进行对照

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第10张图片

再根据直接上传的文件进行分析得知,我们输入的Fullname会直接为文件名进行上传,若要上传到指定的文件位置的话,可以进行数据更改

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第11张图片

更改成功,因此完成本题要求

需要往前进2个文件../test

还有些对其进行了一定的过滤

可通过双写绕过等


身份验证

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第12张图片

根据POST中的文件路径进行查找

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第13张图片

验证结果(静态)

分析:

验证问题:

Question1:xxx?

Question2:xxx?

以字典的形式进行传送,接收键名 键值

即:question1=xx&question2=xx——先是键名正确,后键值正确——验证成功

固定的接受数据:question1、question2判断验证数据

不固定的:

写入问题本身以外的:

Question3=xxx&Question4=xxx——不存在

数据库会判断他们为question3=null&question4=null

若数据库没有对数据值为null进行异常捕获,则会直接通过

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第14张图片

正常输入

进行参数更改

通过


JWT缺陷

Json web令牌进行身份验证——通常是对JAVA、Python的web应用程序进行运用

https://www.cnblogs.com/yokan/p/14468030.html

jwt由三个部分组成:header.payload.signature

如果判断网站用JWT进行验证

通过bp抓取数据包,看Cookie头,由.连接的三段字符串组成。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.

eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ

.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

以base64加密

解密地址:JSON Web Tokens - jwt.io

若要成为管理员账户,则需对admin的值改为true,并加密将此值放到bp中替换掉以前的参数——这种思路是不对的,要考虑到签名之类的

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第15张图片

攻击方式一:

空密钥算法破解:

将对alg的值改为None,即让此算法失效,只有两段有效字符串(header+'.'+payload,去掉了'.'+signature字段)

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第16张图片

JWT是支持None值的,一般都用来进行调试。

生成字符串:算法模式+密匙

每一个字符串的生成都会伴随着一些密钥、签名等,所以如果我们直接对admin的值进行更改,是改不成的,因为我们没有密钥;那么我们可以不要密钥去生成,需要服务器的支持,这就是空密钥算法加密

如何判断服务器是否支持空密钥呢?

Bp抓包,查后端文件,进行分析

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第17张图片

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第18张图片

最后对alg值设为None,admin值为true,再进行base64加密

2.爆破

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第19张图片

对JWT解析

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第20张图片

得到后,发现密钥是不知道的,只有找到了正确的密钥,字符串生成才是正确的

利用相关工具进行破解(一般是字典爆破):

a.一个脚本

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第21张图片

b.相关工具:c-jwt-cracker

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第22张图片

破解之后,

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第23张图片

查看文件中显示已经设置好的算法密钥

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第24张图片

c.KID攻击

Kid是JWT header中的一个可选参数,用于指定加密算法的密钥

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第25张图片

从而暴漏出了三个漏洞安全:

A.任意文件读取

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第26张图片

B.SQL注入

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第27张图片

C.命令注入

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第28张图片

https://www.cnblogs.com/HAN91/p/14585449.html


安全组件:

组件:java库和JavaScript库等

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第29张图片

通过bp抓包,查找对应的文件位置

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第30张图片

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第31张图片

查看对应的组件:

判断是第三方库还是java自身的库

1.这种就明显为java自身的库了

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第32张图片

2.这种则为第三方库

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第33张图片

查看第三方库,收集信息

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第34张图片

小迪安全21WEB 攻防-JavaWeb 项目&JWT 身份攻击&组件安全&访问控制_第35张图片

查到历史漏洞

CVE 2013-7285 Poc——对其漏洞进行利用:对此服务器进行植入木马



foo



java.lang.Comparable







calc.exe ——启动服务器的计算器





start





如:最近的Log4j2

访问控制:

-隐藏属性:前端页面的自卫限制显示

-水平越权:同一级别用户权限的查看

Java通常都是爆中低危的漏洞

你可能感兴趣的:(安全)