业务逻辑漏洞利用与防护
【实验目的】
??phpok是一款PHP开发的开源企业网站系统。而支付漏洞一直以来就是是高风险,对企业来说危害很大,对用户来说同样危害也大。本实验通过一个典型的利用支付漏洞进行免单购物的过程,使大家体验逻辑漏洞带来的风险,加深此类安全风险的防范意识。
【实验环境】
渗透主机:Logic-Terminal
工具:Burpsuite
用户名:college,密码360College
目标靶机:Logic-Target
目标网站PHPOK:http://IP:8083
用户名:college,密码360College
【实验原理】
??支付问题的渗透思路一般是在购买商品的三个步骤:订购、确认信息、付款中进行的。
??交易支付逻辑漏洞的主要呈现形式有:(1)修改金额;(2)修改商品数量;(3)修改优惠金额;(4)修改数量、单价,优惠价格参数为负数、小数,无限大;(5)商品价格更改;(6)支付key泄露等。
??本实验实现的是支付成功后,实际价格与支付价格不相等。常见场景如下:
??充值的时候,程序只判断订单有没有充值成功,但没有判断金额,例如:生成订单跳至支付宝页面,在原网站上点支付失败,这时可以修改订单,改成更大的金额(订单号没变),回到支付宝支付页面,支付成功。程序并没有重新核对支付宝实际的金额,只是把订单改为已支付。
??使用余额支付,把数量改为负数,总金额也为负数,扣除余额时,负负得正,这时余额增加。
实验步骤
第一步 目标靶机启动phpok网站
(1)登录目标靶机系统
用户名密码为college/360College
(2)将用户权限切换到root权限,所使用命令为sudo su ,然后输入密码360College
(3)启动Docker
所使用命令为docker start 709163987d0e
如果启动成功,此时使用命令docker ps -a,可查看到PHPOK4.4网站服务已经开启
第二步 渗透主机访问PHPOK网站
注意:此时访问网站,需要关闭浏览器代理功能。或者打开burpsuit后,再进行访问。浏览器建议采用火狐或谷歌浏览器,因为IE浏览器兼容性不好,很多新特性不支持。
(1)启动burpsuite
首先在桌面tools文件夹下双击启动burpsuite:
下一步:
然后在启动界面下将intercept is on 单击变为 intercept is off
(2)访问目的IP的8083端口,登录网站。 所访问url为http://【靶机IP】:8083
第三步 渗透主机访问PHPOK网站进行购物并支付操作
(1)以账户test1/test1登录系统
(2)在产品展示界面选择商品并加入购物车结算
(3)点击提交订单后,在确认支付之前,将intercept is off 单击变为 intercept is on
然后点击确认支付,此时burpsuit抓取数据包如下所示:
与支付金额相关的数据细节如图所示:
(4)可见金额参数明文显示在URL中,将此参数更改为0.01,然后点击Forward按钮进行提交
(5)跳转至支付宝支付界面,由于支付设置需要上传营业执照,这里观察一下支付宝的URL,传给支付宝的金额已经变成了0.01
【思考与总结】
??支付问题一直以来就是很严重的问题,不管对厂商来说还是用户来说,让支付过程中更安全,是每一个从事安全方面人的责任,因为交易无时无刻的都在进行。
??软件开发者必须加强代码安全意识,建立代码安全开发规范,同时结合第三方渗透测试和代码审计的方式对即将上线的系统仅测试,提高平台的安全性。