年前学习审计的时候找到的一个CMS的小漏洞,漏洞的发现过程没有什么值得特别介绍的,不过flash的swf文件利用方法之前没有了解过,借此机会学习一下。
CVE列表戳这里:
CVE-2017-5494
B2evolution是一个功能丰富的blog管理系统,可以建立多权限的社区管理平台。事实上,它的官网就是用自己的系统搭建的。而在它的6.8.4版本中,允许普通用户在设置头像或者评论博客时上传Swf文件,这就使得我们至少可以使用Swf文件来实现跨站脚本。
上图是它在更新版本中的漏洞修复,将swf文件的上传权限设为admin。
原理性的东西可以参考这一篇文章
https://www.secpulse.com/archives/44299.html
B2evolution使用flowplayer来加载swf文件。
当然这和传统的flash SWF漏洞不太一样,传统的SWF漏洞是通过阅读服务器上的SWF源码,通过SWF执行时的一些输入参数来实现漏洞利用,而在这里,我们是可以任意上传一个SWF文件,也就是说,漏洞点什么的完全可以由我们构造,这样理解的话,我觉得CVE-2017-5494其实不单单是XSS这一种玩法,这其实更像是一个命令执行点。
通过查阅资料,大致的payload可以有这两种构造方式:
一种是将SWF文件反编译后,直接在其中增加恶意代码
一种是反编译后,通过flash动画制作软件以动作-帧的方式添加脚本,没错,就是古老的网上一搜一大把的flash马的入门玩法。
作为漏洞发掘,我使用第二种方式来快速构造执行文件。
首先从网上下载一段正常的swf视频,反编译导出为fla格式,反编译工具有很多,《Web前端黑客技术揭秘》里提到过SWFScan和swfdump,当然其实不追求HACK仪式感的话,闪客精灵也能很好的完成这部分需求。
反编译后,可以使用Macromedia Flash来制作,如图,可以直接使用软件带的函数快速插入功能,与浏览器及网络有关的函数主要说这两个:
在打开的fla文件中添加如下动作,
getURL("javascript:alert(1)");
然后重新导出当前文件为swf影片,即可上传使用。
下载B2evolution的6.8.4版,按照提示安装完成后,注册任意普通用户,并在数据库中强制完成邮箱认证
任意点击一篇文章,使用评论中的上传功能,上传构造好的swf文件,然后预览相应的文件。
即可成功执行相应命令。