逻辑越权之登录脆弱及支付篡改

业务功能点逻辑安全问题

这里说的功能点指很多东西,比如登录,购买,优惠卷,这里其实就对应涉及到相应的认证安全,业务数据安全等,这里大多出现的安全问题都是开发者逻辑混乱错误导致的,也是目前web问题较为严重的安全业务问题。

前端单向加密数据传输导致的暴力破解

这里说的单向加密就是类似与base64或者md5等前端加密方式,这种加密方式一旦被攻击者发现,就非常容易构造相同的加密方式进行暴力破解,从而拿下目标后台。

Z-blog系统案例

我们搭建好系统环境,进入后台登录页面,此时我是攻击者,我并不知道后台的登录密码,而账户猜为大部分常用的admin

图片[1]-逻辑越权之登录脆弱及支付篡改-Drton1博客

我们先随便输入 admin admin 进行登录,抓取数据包查看:

我们此时关注的有两个点,第一个是password加密后的密文值,以及返回包的长度。

图片[2]-逻辑越权之登录脆弱及支付篡改-Drton1博客

如果此时我们直接对password进行爆破,那么爆破的密码都是加密前的明文,传输到后端对方还要进行一次解密或者对比,自然是行不通的,所以我们要先搞清这个加密方式是什么,再尝试base64,md5加密方式后发现,该加密方式为md5加密。

图片[3]-逻辑越权之登录脆弱及支付篡改-Drton1博客

知道加密方式就可以进行把我们的字典进行该方式加密再进行暴力破解。

第二个关注点就是返回包的数据长度,因为我们输入的密码是admin 是一个错误的密码,所以这个返回包的长度相当于一个密码错误的特征,我们进行爆破时候只用关注长度跟此长度不一致的长度返回包即可,极有可能是正确的密码的返回包。

知道流程那么开始动手实操,把该数据包发送intrude模块:

把密码设为一个变量:

图片[4]-逻辑越权之登录脆弱及支付篡改-Drton1博客

设置好字典,并对payload进行处理 md5加密:

图片[5]-逻辑越权之登录脆弱及支付篡改-Drton1博客

开始攻击:

图片[6]-逻辑越权之登录脆弱及支付篡改-Drton1博客

我们可以看到一个明显的返回值不一样的数据包,这个就是密码正确的数据包。

在字典的27位,我们进行查看:

图片[7]-逻辑越权之登录脆弱及支付篡改-Drton1博客

密码为:admin123

尝试进行后台登录:

图片[8]-逻辑越权之登录脆弱及支付篡改-Drton1博客

成功登录后台。

修复建议

网站整体采用https传输

增加验证码,人机验证机制

前端对密码采用复杂的加密方式

脆弱的Cookie认证

很对后台认证会对Cookie进行捕捉,以免除再次输入账号密码的麻烦,那么如果此认证方式不恰当或者逻辑上存在问题,就很容易被攻击者利用,从而绕过认证进入后台。

熊海CMS系统案例

这个系统的后台认证可谓是奇葩,天才程序员写出来的东西

我们进入后台页面:

图片[9]-逻辑越权之登录脆弱及支付篡改-Drton1博客

观察路径,拿到该套程序的源码进行审计:

图片[10]-逻辑越权之登录脆弱及支付篡改-Drton1博客

发现他是通过接受r变量的内容进行文件包含,这里还有一个文件包含漏洞。。。通过控制r的参数实现包含任意文件。这个不是我们说的重点,我们看到他是包含files目录下的文件、

我们找到了后台登录的代码:

图片[11]-逻辑越权之登录脆弱及支付篡改-Drton1博客

可以看到登录成功后会跳转到index这个页面。

我们再来到index的页面发现会进行检查登录状态,checklogin.php文件

图片[12]-逻辑越权之登录脆弱及支付篡改-Drton1博客

再看checklogin.php文件检查方式:

图片[13]-逻辑越权之登录脆弱及支付篡改-Drton1博客

这里就看出问题了,笑死了,他检查cookie中的user字段为不为空,不为空就放你进去了,天才写的认证。

理一下怎么利用:我们直接访问后台首页index.php 然后构造一个cookie中的user字段,随便填东西,只要不为空就进去了。

开始利用:

图片[14]-逻辑越权之登录脆弱及支付篡改-Drton1博客

添加伪造cookie 直接放包,进入后台了= =

图片[15]-逻辑越权之登录脆弱及支付篡改-Drton1博客

修复建议

换个程序员。

业务数据参数篡改的业务安全问题

这种安全问题出现在支付 购买这种业务逻辑较多,其实本质都是后端相信前端的传输参数,这种涉及到钱的问题的逻辑问题肯定是影响巨大的。

niushop开源商城案例

搭建好环境,随便上架一个商品。

图片[16]-逻辑越权之登录脆弱及支付篡改-Drton1博客

我们进行购买然后抓取数据包:

图片[17]-逻辑越权之登录脆弱及支付篡改-Drton1博客

我们可以看到购买数量,是前端可以控制的参数,我们对其进行修改,把数量修改为-1

图片[18]-逻辑越权之登录脆弱及支付篡改-Drton1博客

支付价格就变成了0元,0元购。

我们还可以修改商品的编号,从而实现买A商品的钱下单了B商品的效果。

这都是逻辑上出现的问题。

damicms开源商城案例

打开环境发现存在商品销售:

图片[19]-逻辑越权之登录脆弱及支付篡改-Drton1博客

随便先点一个商品进行下单 购买,然后抓包查看:

图片[20]-逻辑越权之登录脆弱及支付篡改-Drton1博客

数据包:

图片[21]-逻辑越权之登录脆弱及支付篡改-Drton1博客

可以看到很多参数都是前端可以控制的,甚至价格都是前端控制的

我们尝试修改价格:把price修改为400就变成了支付400

图片[22]-逻辑越权之登录脆弱及支付篡改-Drton1博客

延申:通过上面漏洞案例可以联想到,只要是前端可以控制的参数,我们都可以进行修改伪造,

比如我们得到A商品的编号为1,B商品的编号为2,下单时通过更改编号信息,是不是可以达到购买商品A付商品B的钱? 也就是说只要后端相信前端数据不做校验,这种逻辑漏洞就消灭不了。

修复建议

以数据库的数据值为准,不要绝对相信前端数据,可以再做一次校验。

相关资料

Z-blog博客系统下载:zblogphp,Z-BlogPHP,小巧而强大的PHP博客程序与建站系统 (zblogcn.com)

https://pan.baidu.com/s/1fJaW23UdcXcSFigX0-Duwg 密码:xiao

支付漏洞总结大全:

https://www.secpulse.com/archives/67080.html

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论