38_渗透测试报告分析_副本、shiro反序列化漏洞介绍

一.shiro反序列化漏洞介绍

1.漏洞简介

Apache Shiro是一款开源企业常见JAVA安全框架,提供身份验证、授权、密码学和会话管理。java中的权限框架有SpringSecurity和Shiro,由于Spring功能强大但复杂,Shiro的简单强大,扩展性好因此用的还是很多。【CVE-2016-4437】

保存用户信息时,需要将对象序列化为字符串,然后由服务器传输给客户端,并保持到cookie中。

浏览器再次向服务器提交数据时,服务器需要将数据****反序列化为对象进行使用,这时就会执行恶意代码。

数据是由客户端提交的,攻击者可以修改这个数据,增加恶意代码,然后发送给服务器。

2.漏洞原理

Apache Shiro框架提供了记住我的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。cookie的key为RememberMe,cookie的值是经过相关信息进行序列化,然后使用AES加密(对称),最后再使用Base64编码处理。服务端在接收cookie时:

检索RememberMe Cookie的值

Base 64解码

AES解密(加密密钥硬编码)

进行反序列化操作(未过滤处理)

攻击者可以使用Shiro的默认密钥构造恶意序列化对象进行编码来伪造用户的Cookie,服务端反序列化时触发漏洞,从而执行命令。

3.利用过程

shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:

得到rememberMe的cookie值 –> Base64解码 –> AES解密 –> 反序列化

然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。

payload 构造的顺序则就是相对的反着来:

写一个对象,包含恶意命令–>对象序列化为字符串–>AES加密(因为秘钥是写死的被拿到了的)–>base64编码–>将数据通过cookie的方式发送给服务器。

        在整个漏洞利用过程中,比较重要的是AES加密的密钥,该秘钥默认是默认硬编码的,所以如果没有修改默认的密钥,就自己可以生成恶意构造的cookie了。

        base64编码的特征,一定是4的整数倍,如果不满,则后面用=号补齐,百分之75概率后面都是有等号的;base64编码是为了传输的时候不出错而不是为了加密

        步骤1是为了对象能在网络中传输,2是保密,3是传输正确。如果cookie有效期设置10天,那么本地10天内都是不用登录的

4.漏洞防御
  1. 升级Shiro到最新版本
  2. WAF拦截Cookie中长度过大的rememberMe值(加了恶意代码的rememberMe值会很长)
  3. 更改默认密钥

参考链接:

http://www.hackdig.com/07/hack-731688.htm

Shiro反序列化漏洞-CSDN博客

XXX教育集团数据安全项目发现的漏洞

二、ffuf工具的使用

糊测试神器FFUF,我们可以通过FFUF测试API端点,也可以进行目录扫描,同时支持递归扫描;这里比较细节的是,FFUF还支持匹配、过滤两大功能,可以针对响应值、返回的行数、返回的单词数进行匹配或者过滤;除此之外,它还具备了漏洞赏金的必备功能,可以自定义并发数、延迟等;

kali自带

参考链接:

Ffuf爆破神器(超详细)-CSDN博客

三、githack工具的使用

一 git hack

下载地址: GIT:https://github.com/lijiejie/GitHack

git hack介绍:

GitHack是一个.git泄露利用测试脚本,通过泄露的文件,还原重建工程源代码。

参考链接

爬取网站目录工具githack-CSDN博客

如何利用git信息泄露漏洞:

1.使用 ffuf 工具扫描目标网站,如果发现存在git信息泄露,可以使用git hack下载网站源代码,可以本地对网站源码做代码审计,发现网站漏洞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值