前言:前段时间挖的cms,发现存在诸多逻辑漏洞,,就发出来让新手学习一波吧,,重在审计手法~
IdeaCMS微商城v2.0是我们在1.0用户需求及反馈的基础上通过近八个月全新研发的集PC+手机+微信于一体的商城系统。整个商城依旧以“小而美”为特色,整个程序打包仅3.5M。这也是我们继IdeaCMS网站管理系统后第二款核心产品。 IdeaCMS微商城v2.0以商城为核心,包含分销、促销、优惠券、快递、积分商城、文章系统、会员系统、数据报表等重要模块。您可以在任意浏览器中打开我们程序,且提供绑定微信公众号功能,绑定后可实现微信支付、自定义微信菜单、自定义关键词回复等功能。并可扩展支持PC商城,您只要熟悉了我们的标签规则,可以任意制作符合自己的模板,让您的微商城更好看。 经过测试,发现存在订单遍历和0元购等逻辑漏洞!
下载测试的cms为IdeaCMS开源微商城 v2.1.1 UTF 8
官方url:http://www.ideacms.net/
demo url:http://ideacms.net/Products/shop/
一、订单遍历漏洞
为了方便安全测试,这里我注册了两个账号,分别为test001、test002,然后进行购物
“>
可以看到这里的订单id为1,该订单所属用户为test001
“>
然后我们在test001账户下,修改订单号,修改为id=2,可以看到这里出现了test002的订单,因此验证了订单遍历漏洞的存在!
下面来到源码处找找存在漏洞的代码/plug/user/index.asp第433行开始
“>
可以看到这里的id直接进行了代入,而没有判断订单所属用户,因此产生了漏洞!
二、购物逻辑漏洞
这里漏洞的表现则是常见的0元购!
这里我们选择任意一件商品
“>
可以看到这里可以加入购物车,可以立即购买,这里厂商其实是做了限制的,那就是加入购物车会判断商品数量,只有当商品数量大于0时才准许购买,但是直接购买的话并没有限制!
“>
这里点击直接购买,GET参数,数量对应的num参数直接可以在修改,这里修改为-1
“>
但是在后续的确认订单原本是-1,但是我发现num这个参数直接在GET参数里,因此这里继续做测试,将其改为-5
“>
可以看到这里的数量也因此修改为-5,最终也可以提交订单!
“>
最后可以看到订单显示为-9000元,由于这个账户上没有余额,因此也就实现了真正的0元购!
下面来根据参数回溯问题代码pluguserindex.asp第107行开始
这里只针对num这个参数进行问题说明!
dim b_num : b_num = getForm(“num”, “get”)
m_tc=m_tc+rsObj2(“PTc”)*b_num ‘提成 m_jf=m_jf+rsObj2(“PJf”)*b_num ‘积分
m_list=m_list&” 数量:”&b_num &” 件”
m_num=b_num ‘商品数量
可以看到这里对num这个参数一直没有进行验证,因此也就出现了上面的0元购漏洞!
3、注入漏洞
这个注入是偶然看到的,pluguserindex.asp第214行
sqlStr = “select * from {pre}Product where ID=”&id
这里参数id直接带进了sql语句,下面用sqlmap进行验证
“>
总结:漏洞都不是很复杂,,没什么技术含量。。
主要看ppt,参考的论文是NDSS会议上的一篇论文(https://www.ndss-symposium.org/wp-content/uploads/sites/25/2018/02/ndss2018_07A-4_Melicher_paper.pdf),如果…
请登录后发表评论
注册