首页 安全文摘 漏洞分析 正文

由 CSRF 引起的 XSS 漏洞小结

偶然看到关于 ZZZCMS V1.6.6 版本存在后台 getshell 的文章,心想跟着复现一波,顺便练手。文章地址:http://www.iwantacve.cn/index.php/archives/250/这篇文章中有一个操作,就是修改缓存文件,从而达到 getshell 的目的,而其中修改缓存文件的功能是写在 /adminxxx/save.php

偶然看到关于 ZZZCMS V1.6.6 版本存在后台 GETSHELL 的文章,心想跟着复现一波,顺便练手。

文章地址:

http://www.iwantacve.cn/index.php/archives/250/

这篇文章中有一个操作,就是修改缓存文件,从而达到 GetShell 的目的,而其中修改缓存文件的功能是写在 /adminxxx/save.php 中的 editfile() 函数。

在 V1.7.1 版本中,这个问题被修复了,但是很明显的可以观察到,这个地方还存在一个隐患,就是 CSRF。

由 CSRF 引起的 XSS 漏洞小结 WEB安全 漏洞小结 XSS CSRF 漏洞分析  第1张

代码分析

在 V1.7.1 版本中已经修复了后台 Getshell 的问题。在代码的第 808 行处,对文件进行判断,如果是后台文件则不能修改。由于是需要修改后台的缓存文件,因此,此处无法再 getshell

由 CSRF 引起的 XSS 漏洞小结 WEB安全 漏洞小结 XSS CSRF 漏洞分析  第2张

在代码的第 811 行,有一个白名单数组,这些路径里的文件都是可修改的。在观察这几个文件夹的内容,可以发现 template 文件夹里面存放许多 JS 文件。于是有一个大胆的想法,是否能修改这些 JS 文件,只要这些文件在 HTML 页面中被引用即可触发 XSS 呢? 

由 CSRF 引起的 XSS 漏洞小结 WEB安全 漏洞小结 XSS CSRF 漏洞分析  第3张

这里之所以修改 JS 文件而不是 PHP,是因为在代码第 818 处 create_fille()函数对可修改的文件后缀名进行了限制。如下图所示,可以看到 JS 不在后缀黑名单之内。

由 CSRF 引起的 XSS 漏洞小结 WEB安全 漏洞小结 XSS CSRF 漏洞分析  第4张

漏洞利用

根据上文的思路,先要利用 CSRF,于是先构建一个表单发起 POST 请求。表单内容如下:

由 CSRF 引起的 XSS 漏洞小结 WEB安全 漏洞小结 XSS CSRF 漏洞分析  第5张

当管理员在登录后台以后,点击该按钮就会发送一条 POST 请求修改/zzz17/template/pc/cn2016/js/img.js文件。

由 CSRF 引起的 XSS 漏洞小结 WEB安全 漏洞小结 XSS CSRF 漏洞分析  第6张

由 CSRF 引起的 XSS 漏洞小结 WEB安全 漏洞小结 XSS CSRF 漏洞分析  第7张

可以看到,回显显示了保存成功。我们观察一下 /zzz17/template/pc/cn2016/js/img.js 文件, 可以发现代码成功被注入进去了。

我们只要找到引用了这个文件的页面即可触发 XSS:

由 CSRF 引起的 XSS 漏洞小结 WEB安全 漏洞小结 XSS CSRF 漏洞分析  第8张

可以看到此处引用了 /zzz17/template/pc/cn2016/js/img.js 文件:

由 CSRF 引起的 XSS 漏洞小结 WEB安全 漏洞小结 XSS CSRF 漏洞分析  第9张

第一次打开页面加载 JS 文件时会触发弹窗,效果如下:

由 CSRF 引起的 XSS 漏洞小结 WEB安全 漏洞小结 XSS CSRF 漏洞分析  第10张

总结

这个漏洞的起因是由于 CSRF,而达到的效果是存储型 XSS。由于 CSRF 需要和管理员交互,因此可能利用起来的效果会大打折扣。而造成 XSS 的原因是因为对 JS 文件不重视,开发者应该没有想到可以利用修改文件这种方式注入恶意的 JS 代码。

把这个漏洞上报给 CVE 以后,发现最近挖到蛮多 CSRF 的,这种漏洞虽然和反射型 XSS 一样利用难度大,但达到的效果可能比 XSS 好的多得多。

由 CSRF 引起的 XSS 漏洞小结 WEB安全 漏洞小结 XSS CSRF 漏洞分析  第11张

文由微信公众号信安之路

作者zhhhy

海报

本文转载自互联网,如有侵权,联系删除

转载请注明本文地址:https://heibai.org.cn/1393.html

相关推荐

Thinkphp漏洞复现总结

Thinkphp漏洞复现总结

偶然看到关于 ZZZCMS V1.6.6 版本存在后台 getshell 的文章,心想跟着复现一波,顺便练手。文章地...

漏洞分析 1年前 (2021-08-28) 1 19995

发布评论

ainiaobaibaibaibaobaobeishangbishibizuichiguachijingchongjingdahaqiandaliandangaodw_dogedw_erhadw_miaodw_tuzidw_xiongmaodw_zhutouganbeigeiliguiguolaiguzhanghahahahashoushihaixiuhanheixianhenghorse2huaixiaohuatonghuaxinhufenjiayoujiyankeaikeliankouzhaokukuloukunkuxiaolandelinileimuliwulxhainiolxhlikelxhqiuguanzhulxhtouxiaolxhwahahalxhzanningwennonuokpinganqianqiaoqinqinquantouruoshayanshengbingshiwangshuaishuijiaosikaostar0star2star3taikaixintanshoutianpingtouxiaotuwabiweifengweiquweiwuweixiaowenhaowoshouwuxiangjixianhuaxiaoerbuyuxiaokuxiaoxinxinxinxinsuixixixuyeyinxianyinyueyouhenghengyuebingyueliangyunzanzhajizhongguozanzhoumazhuakuangzuohenghengzuoyi
感谢您的支持