CVE-2016-4437
漏洞名称
Apache shiro 1.2.4反序列化漏洞(CVE-2016-4437)
利用条件
Apache Shiro <= 1.2.4
漏洞原理
Shiro提供了记住我(RememberMe)的功能,比如访问淘宝等网站时,关闭了浏览器下次再打开时还是能够记住上次访问过的用户,下次访问时无需再登录即可访问
Shiro会对cookie中的Remember me字段进行相关处理:序列化-->AES加密-->base64编码
由于Shiro本身含有一个预设的AES密钥Base64.decode("KPHblxk5D2deZilxcaaaA=="),每个人都能够通过源代码拿到该密钥,因此攻击者可以构造一个恶意的对象,对其进行序列化并用该密钥进行加密,base64编码,最后作为cookie中的Remember me字段发送。Shiro得到该Remember me字段后进行解码解密并且反序列化,进而导致任意命令执行
漏洞利用
1.检测
在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段
如果直接发送数据包,返回包不存在特征:Set-Cookie: rememberMe=deleteMe;
可以在请求包中的cookie中添加:rememberMe=deleteMe;
然后查看返回包中是否存在特征:Set-Cookie: rememberMe=deleteMe;
2.利用
shiro_attack-4.5.6-SNAPSHOT-all.jar
修复建议
1.确定自己使用的shiro版本要高于1.2.4
2.在代码中全局搜索 "setCipherKey(Base64.decode(" 关键字,或者"setCipherKey"方法,Base64.decode()中的字符串就是shiro的密钥,要确保该密钥的安全性,千万不要使用公开的密钥。
参考文章
最新文章
- O365(世纪互联)SharePoint 之文档库使用小记
- Android RecyclerView 使用完全解析 体验艺术般的控件
- nginx配置负载
- django - settings
- (转载)python多行注释
- 一个cocos2d-x的项目
- hdr(host), hdr_beg(host) , path_beg
- 【问题备注】VS2012不能输入代码,文字&hellip;
- 初探async await 实现多线程处理
- Use Wireshark to capture loopback traffic without a loopback adapter (转)
- Qt Quick编程(1)——QML的核心部分ECMAScript
- WebApi实现原理解析笔记
- window上安装zabbix agent使用案例
- C/S模式与B/S
- awk的常用内置函数的使用【转】
- 5 个非常有用的 Laravel Blade 指令,你用过哪些?
- java读取url中json文件中的json数据
- 如何让两个div并排显示
- Zookeeper选举算法原理
- 【题解】51nod 1203JZPLCM问题
热门文章
- List接口中的常用方法
- go channel原理及使用场景
- SpringCloud整合分布式事务Seata 1.4.1 支持微服务全局异常拦截
- NLP之Bi-LSTM(在长句中预测下一个单词)
- 教你如何解决T+0的问题
- 三、redis环境安装
- 云原生之旅 - 8)云原生时代的网关 Ingress Nginx
- Codeforces Round #802 (Div. 2)C. Helping the Nature(差分)
- day12-Servlet02
- Linux系统安装python