掌控安全Web安全微专业笔记 (27)

修改支付状态(https://www.uedbox.com/post/24090/)
订单完成——未完成(傻傻分不清)
A订单-0001完成——B订单-0002未完成
付款时尝试把订单B的单号给成订单A
其实也不局限于付钱:?wybug_id=wooyun-2015-0156253

修改订单数量(https://www.uedbox.com/post/23143/)
一支笔1块,买0支,或者买-1支(不久等于免费了么?

修改附属值
优惠劵
优惠劵其基本都是优惠,一般用优惠劵进行消费一般出现在第二个步骤当中:确认购买信息,在这个步骤页面当中,你可以选择相关优惠劵,然后直接修改金额大于或等于商品的价格就可以,或者直接修改其为负值进行尝试,最后进行支付,如果对这点没有加以验证,那么问题就会产生,直接支付成功
例外就是x大佬,买商品,优惠券x27张(可怕。。。)

越权支付
这个大家比较了解吧
存在user=id(123),这种传参时,尝试改改id,尝试用别人的钱包买自己的包包。

无限制试用
比如试用的参数为2,正常购买的参数为1
那么我们购买参数2(试用),会发生什么呢?
疯掉的逻辑(https://www.uedbox.com/post/12258/)
https://www.uedbox.com/web-security/wooyunbugs/

三、支付漏洞如何挖掘

找到关键的数据包
可能一个支付操作有三四个数据包,我们要对数据包进行挑选。

分析数据包
支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠),要尝试对数据包中的各个参数进行分析。

不按套路出牌
多去想想开发者没有想到的地方

pc端尝试过,wap端也看看,app也试试。

分享一下前天我们SRC活动挖到的支付漏洞

四、防御方法

后端检查每一项值,包括支付状态。

校验价格、数量参数,比如产品数量只能为正整数,并限制购买数量

与第三方支付平台检查,实际支付的金额是否与订单金额一致。

支付参数进行MD5 加密、解密、数字签名及验证,这个可以有效的避免数据修改,重放攻击中的各种问题

金额超过阈(yu)值,进行人工审核

五、靶场

注册登录,购买大负数量,在在线充值里就有flag

image-20201031202707671

image-20201031202950229

image-20201031203052573

8-5 XXE - 实体注入 一、什么是XXE?

XXE = XML External Entity 即外部实体,从安全角度理解成XML External Entity attack XML外部实体注入攻击

典型的攻击如下:

image-20201031232211040

定义实体必须写在DTD部分

二、什么是XML?

什么是 XML?

XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准

特点:
XML仅仅是纯文本,他不会做任何事情。
XML可以自己发明标签(允许定义自己的标签和文档结构)

XML 无所不在。XML 是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。

这玩意就是个储存数据的

三、XXE原理

有了XML实体,关键字’SYSTEM’会令XML解析器从URI中读取内容,并允许它在XML文档中被替换。因此,攻击者可以通过实体将他自定义的值发送给应用程序,然后让应用程序去呈现。 简单来说,攻击者强制XML解析器去访问攻击者指定的资源内容(可能是系统上本地文件亦或是远程系统上的文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Rohit [ <!ENTITY entityex SYSTEM "file://foler/file"> ]> <abc>&entityex;</abc>

外部文档声明
假如DTD位于XML源文件的外部,那么它应通过下面的语法被封装在一个DOCTYPE定义中:

<!DOCTYPE 根元素 SYSTEM "文件名">

php中存在一个叫做simplexml_load_string的函数

这个函数是将XML转化为对象

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpdzz.html