漏洞名称

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的密钥,要确保该密钥的安全性,千万不要使用公开的密钥。

参考文章

最新文章

  1. O365(世纪互联)SharePoint 之文档库使用小记
  2. Android RecyclerView 使用完全解析 体验艺术般的控件
  3. nginx配置负载
  4. django - settings
  5. (转载)python多行注释
  6. 一个cocos2d-x的项目
  7. hdr(host), hdr_beg(host) , path_beg
  8. 【问题备注】VS2012不能输入代码,文字&hellip;
  9. 初探async await 实现多线程处理
  10. Use Wireshark to capture loopback traffic without a loopback adapter (转)
  11. Qt Quick编程(1)——QML的核心部分ECMAScript
  12. WebApi实现原理解析笔记
  13. window上安装zabbix agent使用案例
  14. C/S模式与B/S
  15. awk的常用内置函数的使用【转】
  16. 5 个非常有用的 Laravel Blade 指令,你用过哪些?
  17. java读取url中json文件中的json数据
  18. 如何让两个div并排显示
  19. Zookeeper选举算法原理
  20. 【题解】51nod 1203JZPLCM问题

热门文章

  1. List接口中的常用方法
  2. go channel原理及使用场景
  3. SpringCloud整合分布式事务Seata 1.4.1 支持微服务全局异常拦截
  4. NLP之Bi-LSTM(在长句中预测下一个单词)
  5. 教你如何解决T+0的问题
  6. 三、redis环境安装
  7. 云原生之旅 - 8)云原生时代的网关 Ingress Nginx
  8. Codeforces Round #802 (Div. 2)C. Helping the Nature(差分)
  9. day12-Servlet02
  10. Linux系统安装python