WEB漏洞-逻辑越权之登录脆弱及支付篡改

http数据密文传输
- 在网页表单发送到服务器的之前,有些网站会对特定信息进行加密发送,比如登录框的密码

采用抓包工具爆破密码
- 如果密码在传输过程中加密,那么在进行字典爆破的时候也需要加密传输

- 载入字典

- 贫经验,分析密码为MD5加密

- 返回302,说明有跳转,爆破成功

Cookie 脆弱点验证修改测试
尝试登录

输入正确密码后跳转页面,参数为index

抓包分析(这里post提交的数据没有加密)

源代码分析
这里index传参r,判断传递的参数file是为空还是为index,如果是index,就执行file文件下的传递参数的文件。这里只有等于index路径才能跳转

如果
r=index,在跳转管理员执行/files/index.php文件,文件开头包含了验证,防止用户直接登录URL路径进入管理员后台

查看登录验证,判断用户的cookie,如果为空,就跳转到登录界面。(漏洞产生:只要cookie有数据,就可以访问)

cookie修改user不为空(要访http://192.168.102.143:8456/admin/?r=index)

发现登录成功,而且用户这里没有显示admin,而是为空

实战条件下,如何去分析漏洞
- 没有源码,去找cookie脆弱点十分困难的
- 如果有特殊值,如
user=admin,可以尝试修改,看是不是可以登录到其它用户,如user=text - 可以根据这个漏洞,去搜索采用熊海CMS的网站是否存在cookie脆弱的漏洞

数据篡改安全问题
- 修改支付价格
- 修改支付状态
- 修改购买数量
- 修改附属值
- 修改支付接口
- 多重替换支付
- 重复支付
- 最小额支付
- 值为最大值支付问题
- 越权支付
- 无限制适用
- 修改优惠价格
- 之所以列出这些漏洞,其实不是存在一个,而是网站的设计者很难从这么多方面去考虑支付问题,从而可以发现漏洞
- 商品购买流程:选择商品和数量-选择支付及配送方式-生成订单编号-订单支付选择-完成支付
- 常见篡改参数:商品编号 ID,购买价格,购买数量,支付方式,订单号,支付状态等
- 常见修改方法:替换支付,重复支付,最小额支付,负数支付,溢出支付,优惠券支付等
购买产品,并且抓包分析(数量问题造成金额减少)

抓包分析
sku_id=2(多半为商品的编号id),num=2为要购买商品的数量

将数量改为
-1

发现支付价格变为了0元

更改订单编号(以b的价格来买a),假如购买商品a一件,在提交订单的时候抓取数据包

抓取到数据包(获取到了订单编号)

提交后页面回显

购买另外一件产品

抓包,修改为之前商品的订单编号

发现原来998元变成了9999999,这里可以反向操作,将贵的订单变成便宜的订单,漏洞的产生,要看它有没有订单编号的检测

修改价格/商品

购买2个抓取数据包
qty数量,price价格/index.php?m=Member&a=gobuy&iscart=0&id=70&name=%E5%A4%A7%E7%B1%B3%E6%89%8B%E6%9C%BACMS&qty=2&price=5400>ype=%E7%81%B0%E8%89%B2&pic=/Public/Uploads/thumb/thumb_1393218295.jpg

修改价格为1元

发现订单总价改变

购买另外一件商品

抓取数据包
/index.php?m=Member&a=gobuy&iscart=0&id=127&name=%E5%A4%A7%E7%B1%B3%E6%B5%8B%E8%AF%95%E4%BA%A7%E5%93%81&qty=1&price=6000>ype=%E7%81%B0%E8%89%B2&pic=/Public/Uploads/thumb/thumb_1393218295.jpg

对比分析数据包变量含义
pic商品图像gtype商品类型(在同一个分类里面,一样)- 不同之处(
id,name)
将6000元的商品的
id和name改为5400产品的

这里变成了以6000元购买5400的产品(反过来可以以低价商品购买高价的商品(将id和name改为高价的商品的))

替换支付(修改支付接口)

抓包分析,提交的路径传递参数s为支付的借接口(这里提交了接口和订单编号)

index.php?s=/wap/pay/wchatQrcodePayindex.php?s=/wap/pay/alipay- 总结:
$pay_name=$_GET['s'],存在传递参数的才能修改支付接口,如果是固定的话也不行。在这里将参数s变为其它接口就可以修改支付端 - 如链接到一个外部网站:
index.php?s=http://www.xiaodi8.com/alipay调用其他的支付接口(支付的钱支付到别人的地方)
支付状态
- 与支付接口类似,确认支付成功是返回什么(1),失败返回什么(2),根据返回值伪造已经支付成功
漏洞产生的原理
- 没有去检测数量和价格的唯一性,如6000价格是存储到数据库里,但是这里的价格是直接以post提交的(可以修改),这里应该在接受传参的时候,和数据库的价格比对进行过滤,或者直接用数据库的值(具体操作我也不清楚)
- 安全的做法:以数据库的数据值为准
- 数据包的唯一性判断(token):第一个数据包购买成功,如果没有检测数据包的唯一性,那么从这个成功的数据包还能再次购买成功
- 漏洞的产生方面:业务逻辑层面
Alipay
Wechat
0 条评论