NepCTF-ez_java_checkin

sbhglqy   ·   发表于 2023-08-28 19:00:42   ·   CTF&WP专版

这题算是NepCTF中web赛道最简单的一题了。

相关知识点:

shiro漏洞

简介:

Shiro漏洞(Shiro vulnerability)是指Apache Shiro开源安全框架中的安全漏洞。Shiro是一个用于身份验证、授权、加密和会话管理的Java安全框架,用于保护应用程序免受恶意攻击。
目前已知的Shiro漏洞包括:
    1. Session序列化漏洞:当Shiro使用默认的Java序列化机制对会话对象进行序列化时,攻击者可以通过精心构造的序列化数据来执行远程代码,从而获取应用程序的控制权。
    2. RememberMe Cookie可预测性漏洞:在Shiro RememberMe功能中,如果攻击者能够预测RememberMe Cookie的值,就有可能通过重放攻击获取用户的身份认证信息。

原理

Apache Shiro框架提供了记住我的功能(RemeberMe),用户登录成功后会生成经过加密并编码的cookie。cookie的key为RemeberMe,cookie的值是经过对相关信息进行序列化,然后使用了aes加密,最后在使用base64编码处理形成的。
在服务端接收cookie值时,可以按照base64解码,AES解密(此处需要公钥)的顺序,然后构造恶意反序列化语句触发反序列漏洞,获得远程控制权。
shiro已经有很多版本了。但是在1.2.4版本之前用的都是默认公钥,base64编码后的值为kPH+bIxk5D2deZiIxcaaaA==,可以很容易的构造出反序列化语句。在高版本的shiro框架中为了解决这个问题,采用了随机密钥的方式。

防御

- 及时更新Shiro库版本:Shiro项目的开发团队会不断修复和更新代码中的漏洞,及时更新Shiro库版本可以确保应用程序具有最新的安全修复。
- 禁用不必要的Shiro功能:对于不需要的功能模块,可以禁用或者移除,以减少攻击面。
- 配置适当的安全策略:在Shiro的配置文件中,可以设置合适的安全策略来限制访问,例如密码强度策略、登录尝试次数限制等。
- 验证输入数据和用户身份:对于用户输入的数据和身份认证信息,进行严格的验证和过滤,以防止恶意输入和注入攻击。

现在说回到题目。做题步骤:

  1. 一开始是个登录界面,抓包看看。

    可以看到很明显的特征rememberMe=deleteMe,明显是个shiro漏洞。
  2. 利用shiro反序列化漏洞利用工具,由于没有获得过密钥,所以猜测其是个低版本的shiro框架,使用默认密钥。

    成功,直接rce。
  3. 当去读取flag的时候,发现做了过滤,试过引号、反斜杠等方式去绕过,还是不行。最终通过start.sh获得flag。
用户名金币积分时间理由
Track-魔方 200.00 0 2023-09-07 19:07:16 深度 100 普适 100

打赏我,让我更有动力~

2 条回复   |  直到 2023-9-7 | 448 次浏览

Track-魔方
发表于 2023-8-29

如果是同一场赛事的题目WP,建议放到一篇文章当中,并且金币奖励也将合并打赏结算。

评论列表

  • 加载数据中...

编写评论内容

Track-魔方
发表于 2023-9-7

金币奖励与文章 “NepCTF-独步天下-镜花水月” 放在一起打赏,期待同学能有更多的实战相关文章产出~

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.