代码审计之云EC电商系统 v1.2

0x00 cms简介

云EC电商系统是由一套基于PHP+MYSQL开源的、免费的电商系统软件。支付整合了支付宝三端支付(PC、手机、APP),微信三端支付(PC扫码、微信公众号、APP),银联支付。
模块化设计,可方便快捷的接入其它第三方功能。
支持微信与QQ第三方登陆
支持阿里短信、腾讯短信、创蓝短信等多个接口
物流查询,批量打印快递单和发货单,运费计算设置
销售统计、排行榜、会员统计等
拥有限时抢购(秒杀)、分销、优惠券和拼团等丰富的营销工具

Cms官网地址:https://www.yunec.cn/

Demo地址:http://demo.yunec.cn/

代码下载地址:http://down.chinaz.com/soft/38561.htm

0x01 代码审计

①前台无限制sql注入漏洞

漏洞代码位于inc/module/news.php第42行

图片[1]-代码审计之云EC电商系统 v1.2-安全小百科

这里存在漏洞的参数为pageid

这里13行有一处sql语句,但是这里的sql语句会经过转义,因此这里不存在漏洞

41行cids参数是由pageid参数加上child_ids参数拼接而成,然后cids参数进入到42行的get_news_count函数

图片[2]-代码审计之云EC电商系统 v1.2-安全小百科

这里可以看到cids参数在in语句里面,没有任何的单引号包裹,因此这里存在注入漏洞

这里where参数也是直接拼接,因此判定这里的cids参数为直接拼接

这里直接拿官网demo验证

图片[3]-代码审计之云EC电商系统 v1.2-安全小百科

可以看到数据库用户名为yec_demo

②前台用户收藏商品处sql注入漏洞

这里共有两处sql注入,不过是同一个参数,先来分析第一个漏洞

漏洞代码位于inc/module/user.php第473行开始

图片[4]-代码审计之云EC电商系统 v1.2-安全小百科

这里可以看到gid参数我们可控,并且没有做intval处理,然后进行foreach循环查询

其中的值传给$v这个参数,在第495行中带入进get_fav参数,跟进!

图片[5]-代码审计之云EC电商系统 v1.2-安全小百科

这里$v参数对应的为$goods_id参数,但是我们看到在584行这里的goods_id参数为直接拼接,也就造成了最终的sql注入漏洞

$where语句在590行里也是直接拼接,并没有做任何处理,因此这里存在sql注入漏洞

第二处漏洞代码位于inc/module/cart.php第180行

图片[6]-代码审计之云EC电商系统 v1.2-安全小百科

这里同样是gid参数传值给gid_list,然后最终利用foreach遍历取值到$v当中

在208行可以看到$v参数也是直接进行了拼接,导致了最终的sql注入漏洞!

这里直接拿官网demo验证

第一处漏洞

图片[7]-代码审计之云EC电商系统 v1.2-安全小百科

可以看到数据库用户名为yec_demo

③订单处存储型xss漏洞

漏洞代码位于inc/module/order.php第137行

图片[8]-代码审计之云EC电商系统 v1.2-安全小百科

这里发票的参数为invoice_title和invoice_con

这里前面是发票抬头,后一个是发票内容

这里没有进行实体化操作,然后我们跟进这两个参数的传递过程

图片[9]-代码审计之云EC电商系统 v1.2-安全小百科

这里可以看到直接赋值给了data里参数

图片[10]-代码审计之云EC电商系统 v1.2-安全小百科

然后可以看到这里的data直接insert进了数据库,从头到尾发票的两个参数都没有进行实体化处理,因此判定存在存储型xss漏洞

这里直接拿官网demo验证

这里模拟购物流程,然后抓包修改发票参数

图片[11]-代码审计之云EC电商系统 v1.2-安全小百科

这里的发票参数出现了问题

图片[12]-代码审计之云EC电商系统 v1.2-安全小百科

这里的invoice_title和invoice_con参数存在xss漏洞

然后我们使用管理员账号查看订单信息

图片[13]-代码审计之云EC电商系统 v1.2-安全小百科

可以看到这里的确存在存储型xss漏洞

④订单评论处sql注入漏洞

这里漏洞代码位于inc/module/comment.php第7行开始

图片[14]-代码审计之云EC电商系统 v1.2-安全小百科

这里itemid参数可以看到没有任何过滤,然后跟踪这个参数

图片[15]-代码审计之云EC电商系统 v1.2-安全小百科

这里重要研究item_id参数,46行利用foreach循环遍历

这里看54行有一个sql语句,这里$item_id[$k],$k为键值,因此这个$item_id[$k]即为$item_id的值

图片[16]-代码审计之云EC电商系统 v1.2-安全小百科

可以看到这里的sql语句是双引号进行包裹,因此存在sql注入漏洞

这里可以看到sql语句为直接拼接,因此也就验证了此处存在sql注入漏洞

⑤用户订单评论处sql注入漏洞

漏洞代码位于inc/module/user.php第118行

图片[17]-代码审计之云EC电商系统 v1.2-安全小百科

这里是用户评论的功能,首先我们需要输入pid和content参数,即为对应的订单id和评价内容,这里由于没有先对订单进行查询,因此这里随便输入订单id即可

接下来检查用户是否登录,这个前台是开放注册的,因此没有任何限制

接下里进入到118行的漏洞代码,这里功能是检查用户是否评论过于频繁,我们跟进这个check_comment_reply函数

图片[18]-代码审计之云EC电商系统 v1.2-安全小百科

这里重点关注ip参数,在807行这里ip参数是由单引号包裹,并且这个cms是有全局过滤的

图片[19]-代码审计之云EC电商系统 v1.2-安全小百科

但是全局过滤是针对GET、POST、COOKIE类型,但是跟进我们的getip参数

图片[20]-代码审计之云EC电商系统 v1.2-安全小百科

可以看到可以由X-Forwarded-For获取,也就是说不受全局过滤的影响,可以直接引入单引号,并且没有数字类型的限制,因此可以插入任意sql语句

这里直接拿官网demo验证

图片[21]-代码审计之云EC电商系统 v1.2-安全小百科

可以看到数据库用户名为yec_demo

0x02 总结

后台getshell方法是用文件包含的形式,做法就是先上传一个jpg文件,jpg文件里写进php的webshell,然后在后台寻找require或者include的功能,然后包含进文件即可,这里当时怎么找都没找到,,具体方法在水泡泡师傅的博客里(https://www.cnblogs.com/r00tuser/p/9014869.html)

这个cms整体使用了360webscan,但是不知怎么,,这个过滤脚本没有起到一丁点作用。。实在是迷。。

在没有360webscan的保护下,寻找漏洞还是非常轻松的。。sql注入的话就是直接拼接,或者像order by后面的参数或者in语句里面的参数,往往这里在除去常见的漏洞点之后也会出现非常多的问题~

至于其他漏洞,这个就看功能函数具体怎么写的,需要再根据可控的条件数和函数提供的功能来组合判断!

总的来说,,这套cms比较适合一些已经入门的人来审计,,漏洞也不是那么显而易见,,但是又不会很难。。

上述如有不当之处,敬请指正~

相关推荐: Ethernaut学习智能合约系列(一)

最近稍微有点空闲,就想去好好研究下智能合约的安全问题,因为是新兴产业,所以没有现成的教程或者是材料,所以只能找一些较为基础但是能够帮助我们学习智能合约的平台,这里的Ethernaut就是一个基于web3和solidity的智能合约审计平台。 平台地址:http…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论