• 对酒店房间自助售货机的支付漏洞挖掘


    前言

    住某酒店,一看就是个“正规”酒店。刚刷卡进门,就看到门缝里的小卡片了,床头上还贴这一个,个人微信的一个二维码美其名曰SPA。还贴心的提供了自助售货机购买TT。好奇扫码看了下。是个微信小程序,看界面,感觉可以测试下。发现里面东西的销量真不错哦。

    正好在等外卖,掏出测试机,开启神器BURP。开始测试。

    测试环境

    小程序抓包的时候要注意下安卓系统版本,在安卓7.0之后默认不信任用户安装的系统证书。所以手机在安装burp证书的时候,需要将证书安装为系统信任的证书。方法如下

    手机需要先进行 ROOT

    1. 证书格式转换
    # 1. 证书转换,已经是pem格式的证书不需要执行这一步
    openssl x509 -inform DER -in cacert.cer -out cacert.pem 
    
    # 2. 进行MD5的hash显示
    # openssl版本在1.0以上的版本的执行这一句
    openssl x509 -inform PEM -subject_hash_old -in cacert.pem
    
    # openssl版本在1.0以下的版本的执行这一句
    openssl x509 -inform PEM -subject_hash -in cacert.pem
    
    1. 证书重命名,数字为上面计算出的hash
    mv cacert.pem 347bacb5.0
    1. 将新证书放到系统目录下
    /system/etc/security/cacerts
    chmod 644 /system/etc/security/cacerts/<hash>.0
    chgrp root <hash>.0

    过程

    简单抓包看下过程中的包,点击物品的时候,会发包获取物品信息。post中的id参数还是可以遍历的,可以获取到每个房间里的物品信息。

    看到这个ID能遍历,感觉有机会的样子,看上图可以发现包中是不存在 cookie 的,只有一个 token,所有包中的 token 都是不会变化的。

    尝试修改返回包中的 price 相关的所有字段,看看能否修改支付价格。前端显示的价格确实是改变了,但支付的时候,还是按原价支付。

    重新回顾整个购买流程,购买可以分为两个操作。一个是点击物品,进入物品详情页面,可以看到物品的售价等信息。然后是点击支付按钮后,进入支付操作。目前只测试了点击物品之后的数据包,经过测试是无法修改价格的。

    接下来开启burp的包拦截,拦住点击支付按钮时发出的包,发现POST中存在一个 discount 参数默认为0,这个单词是折扣的意思。

    哦吼,那是不是只要改动这个参数就可以获得购买折扣了?尝试下,先将0改为1试试,支付的时候,金额成功减少了 1。

    尝试性的用此方法购买一个TT,看看是否可以以此来打开这个柜子的门,当我支付完一毛钱,哐当一声,柜子的门打开了,一个TT出现在我面前。惊Σ(っ °Д °;)っ。

    作为新时代好青年,(主要是我也用不到,哭/(ㄒoㄒ)/),将TT放回了格子中,默默关上了门。

    总结

    对于逻辑漏洞的挖掘,重点是需要关注流程中每一个包每一个参数的含义和作用。上文的支付逻辑漏洞比较简单,参数也都是以英文单词命名,比较容易猜测参数的具体作用。有些开发的参数设置很奇怪,会以拼音首字母开头,这时候往往就比较难猜测参数的实际含义了,需要不断的改包测试,修改一个参数后会影响什么。

  • 相关阅读:
    STL"源码"剖析
    Excel如何进行SVN
    BootstrapTable+KnockoutJS
    WebApi 集成 Swagger
    Java Core和HeapDump
    深入分析 Java 中的中文编码问题(1)
    Java编码浅析(注意区分三个概念)(转)
    理解并解决GBK转UTF-8奇数中文乱码(转)
    Java实现敏感词过滤(转)
    Android MediaPlayer状态机
  • 原文地址:https://www.cnblogs.com/0daybug/p/13836663.html
Copyright © 2020-2023  润新知