代码审计| yxcms app 1.4.6 漏洞集合

作者:网友投稿 时间:2018-02-25 21:00

字号

之前有挖了yxcms app的一些漏洞,基本是后台的,打后台的知识也就发现了前台的存储XSS,然后前几天看到先知上有师傅发了前台的存储XSS结合固定会话的利用方式,我的方式不大一样,我是通过数组结合绕过正则的方法,然后使得可以无限制的进行XSS的注入,再结合CSRF进行GetShell,也一并发出来一起学习交流,另外后台的洞比较多,本文就以前发现的洞再次分析整理,还有一些洞主要用来学习的,没有实际利用作用,比如后台SQL注入,因为后台本就有执行SQL的功能。期待和师傅们的各种交流:-)

0×01 存储型XSS 0×00 相关环境

源码信息:YXcmsApp1.4.6

问题文件: \YXcmsApp1.4.6\protected\apps\default\controller\columnController.php

漏洞类型:存储型XSS

站点地址:

0×01 漏洞分析

首先分析下输入过程

在文件\YXcmsApp1.4.6\protected\apps\default\controller\columnController.php中发现如下代码块,通过在该文件的第12行中加入如下代码后,可以判断当进行留言操作的时候调用的是case 6。

case 6.png

跟入extend方法,在\YXcmsApp1.4.6\protected\apps\default\controller\columnController.php文件中的第377-384行中发现如下输入数据的处理过程,把SQL库查询得到guestbook对应的tableinfo的数据作为POST请求接收的参数名,然后把接收到的数据,如果是数组便拆分数组然后进行先后两次的in方法和deletehtml方法的数据处理操作,如果是字符便丢进html_in方法进行处理 。

处理.png

guestbook的tableinfo等数据的获取方式是这样的,首先yxcms会先进行如下请求,获取guestbook对应的extendid等数据信息。

SELECT id,name,ename,path,url,type,deep,method,tplist,keywords,description,extendid FROM yx_sort WHERE ename=’guestbook’ LIMIT 1

M1.png

然后会根据extendid执行SELECT id,tableinfo,name,type,defvalue FROM yx_extend WHERE id=’12′ OR pid=’12′ ORDER BY pid,norder DESC取出表单的tableinfo等信息。

信息.png

这里我的绕过方式是使用数组的操作绕过先是跟入deletehtml方法,在\YXcmsApp1.4.6\protected\include\lib\common.function.php发现该方法,通过分析如下由正则写的替换规则,可以知道会将script标签和完整闭合的<>标签替换为空,然后会将一些实体化的字符替换为原本的字符。因此可以利用类似alert(1)然后经过in方法中的htmlspecialchars进行处理,虽然把字符实体化了,但是保留了整个语句的完整性。

完整性.png

如,进行如下请求,便会将完整的JS代码进行实体化的存储在数据库中,我在\YXcmsApp1.4.6\protected\include\lib\common.function.php文件的deletehtml方法中,在数据处理前打印一次,数据处理后打印一次,方便查看现象。

现象.png

现在分析下输出过程

在\YXcmsApp1.4.6\protected\apps\admin\controller\extendfieldController.php 文件中,看到如下获取留言信息的代码块。

代码块.png

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
关键词 >>yxcms app 专栏
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接