包含知识点:爆破jwt-key、模板注入
首先爆破jwt-token
需要工具:JohnTheRipper/jwtcrack
登录页面存在一个弱口令,test/test
首先是一个jwt token的爆破,token分为三个段,由三个.分隔,每段是base64编码,可以分别进行解码,第一段是编码的格式、加密采用的算法,中间的部分是需要机密的数据,最后是签名的值,目标服务器会存在一个secret key,当token提交后,将签名和key进行验证,如果验证通过,身份就是合法的
token和cookie是不一样的,token只会在本机存储,当提交token后,服务器之存了一个secret key,
前两段解密,第三部分不用解码
{"alg":"HS256","typ":"JWT"}.{"username":"test"}.80ohpphZmbBgvim4l1wJwDj5bynPlBfshTtHsrcELx0
如果直接把test换成admin,再转回base64也是不可以的,因为签名不一样,签名是由secret key生成的,token是服务器下发的,我们也不会有这个key,
然后利用jwtcrack对签名进行解密,
获得密钥后可以伪造一个JWT token ,前提是需要有一个secret key
https://jwt.io,访问太慢,放弃了
把之前的token复制过来,会提示签名是不对的,因为没有在右下角那写上key,
把key 6a423输入后,将test改为admin,生成一个新的token
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIn0.IXEkNe82X4vypUsNeRFbhbXU4KE4winxIhrPiWpOP30
然后使用新的toke进行登录
修改cookie后刷新页面就是admin账户了,会多一个留言板
在留言板输入内容后会显示到页面上,一般会想到是不是XSS,但是如果是xss的话是没办法拿flag的,
这部分考点是SSTI 模板注入
先进性一些测试,看一下哪些语句可以用,哪些不可用
将一些非法操作都过滤为None了,可能只能读东西,不能拿到shell
关于 SSTI Bypass
方法一,
盲注