前言
作者简介:不知名白帽,网络安全学习者。
博客主页:不知名白帽_网络安全,CTF,内网渗透-CSDN博客
网络安全交流社区:https://bbs.csdn.net/forums/angluoanquan
目录
逻辑漏洞基础
概述
分类
URL跳转漏洞
概述
危害
漏洞寻找
Bypass
短信轰炸漏洞
概述
Bypass
任意密码修改漏洞
概述
场景
任意用户登录漏洞
概述
场景
越权漏洞
概述
平行越权
垂直越权
支付逻辑漏洞
概述
场景
条件竞争漏洞
概述
场景
实战
大米cms支付逻辑漏洞
熊海CMS越权后台登录
逻辑漏洞基础
概述
逻辑漏洞,是因为程序员在编写程序的时候,跟随着人的思维逻辑产生的不足,与传统漏洞的不同在于,逻辑漏洞是用过合法的方式来达到破坏的,比如密码找回,用户登录验证等功能由于程序设计的不足会产生很多问题,这一类漏洞一般的防护手段或者设备无法阻止,漏洞扫描器也难以发现。
程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误,一般出现在任意密码修改(没有旧密码验证)、越权访问、密码找回、交易支付金额、身份证认证、实名认证......等。
分类
url跳转漏洞
短信轰炸
任意密码修改漏洞
任意用户登录漏洞
越权漏洞
支付逻辑漏洞
条件竞争漏洞
URL跳转漏洞
概述
URL跳转漏洞也叫开放重定向漏洞,就是可以把用户重定向刀攻击者自己构造的页面去,简单的说就是可以跳转到指定的URL。
服务端未对传入的URL变量进行检查和控制,可能导致可恶意构造任意一个恶意地址,诱导用户跳转恶意网站。
危害
钓鱼
配合xss漏洞
配合csrf漏洞
配合浏览器漏洞(CVE-2018-8174)
漏洞寻找
1.登陆跳转我认为是最常见的跳转类型,认证完后会跳转,所以在登陆的时候建议多观察url参数。
2.用户分享、收藏内容过后,会跳转
3.跨站点认证、授权后,会跳转
4.站内点击其它网址链接时,会跳转
5.在一些用户交互页面也会出现跳转,如请填写对客服评价,评价成功跳转主页,填写问卷,等等业务,注意观察url。
6.业务完成后跳转这可以归结为一类跳转,比如修改密码,修改完成后跳转登陆页面,绑定银行卡,绑定成功后返回银行卡充值等页面,或者说给定一个链接办理VIP,但是你需要认证身份才能访问这个业务,这个时候通常会给定一个链接,认证之后跳转到刚刚要办理VIP的页面。
Bypass
1.利用问号绕过限制
url=https://www.baidu.com?www.xxxx.me
2.利用@绕过限制
url=https://www.baidu.com@www.xxxx.me
3.利用斜杠反斜杠绕过限制
https://www.landgrey.me/redirect.php?url=http://www.evil.com/www.landgrey.me
4.利用#绕过限制
https://www.baidu.com#www.xxxx.me
5.利用子域名绕过
https://www.baidu.com.xxx.com
6.利用畸形url绕过
https://landgrey.me/redirect.php?url=http://www.evil.com\.landgrey.me
7.利用跳转ip绕过
https:// www.ipaddressguide.com/ ip修改ip
8.利用xip.io绕过
http://www.qq.com.127.0.0.1.xip.io/
短信轰炸漏洞
概述
厂商在对信息发送的次数、时间没有做限制,或者只在前端做了限制,导致可以无限制发送信息,简单的说就是发送短信/邮件的包可以无限制的发送。
登录、注册、找回密码、绑定手机/邮箱、修改账号,一切需要验证的位置都可能存在短信轰炸。
Bypass
1.尝试在mobile参数后面加20%,即空格
2.尝试在mobile后面加字母
3.尝试对参数进行多次叠加
4.利用调用接口绕过短信&邮箱轰炸限制
5.修改cookie值绕过短信&邮箱轰炸限制
6.修改IP绕过短信&邮箱轰炸限制
7.利用大小写绕过邮箱轰炸限制
8.修改返回值绕过短信&邮箱轰炸限制
任意密码修改漏洞
参考:
https://www.freebuf.com/articles/web/176211.html
https://www.cnblogs.com/-qing-/p/10849028.html
概述
厂商在对密码修改的时候,卫队修改密码的凭证做严格的限制,导致可以被绕过进行任意的密码修改。
场景
1.验证码可爆破
验证码四位,服务端未对验证时间次数进行限制
验证码六位,但是不过期,并且没有对验证的次数进行限制
验证码可以发送多次,而且每次都不会过期
2.验证码回传
重置密码时,凭证为发送到手机上的验证码,但是通过拦截发送验证码请求对应的Response包时,发现验证码在Response包中。
注意凭证,有时候返回包里面凭证可能在cookie里面或者在其他地方。
3.验证码未绑定用户
输入手机号和验证码进行重置密码的时候,仅对验证码是否正确进行了判断,未对该验证码是否与手机号匹配做验证。
任意账号都能够接收到验证码并能够使用A手机的验证码,B也可以拿来使用。
4.本地验证绕过
客户端在本地进行验证码是否正确的哦按段,而该判断结果也可以在本地修改,最终导致欺骗客户端,误以为我们已经输入了正确的验证码场景:
验证码返回在前台进行对比
验证码在js里面直接进行对比
直接修改返回包
5.跳过验证步骤
对修改密码的步骤,没有做校验,导致可以输入最终修改密码的网址,直接跳转到该页面,然后输入新密码达到重置密码的目的。
首选用自己的账号走一次流程,获取每个步骤的页面链接,然后记录输入新密码的对应链接。重置他人用户时,获取验证码后,直接进入输入新密码对应链接刀新密码的页面,输入密码重置成功。
6.token可预测
使用邮件接收重置密码的链接时,一般都会带有一个token用户判断链接是否被修改过。如果token可预测,那么攻击者可以通过构造链接来重置任意的用户密码
表现:
基于时间戳生成的token
基于递增序号生成的token
基于关键字段生成的token
Token有规律
7.同时向多个用户发送凭证
将发送验证码的包截获,修改字段,添加多个账户,再发包。发现所写的有效字段均发送了凭证。
8.接收端可篡改
重置密码时,凭证会发送到手机上,通过替换手机后,可以使用自己的手机号接受验证码。
9.万能验证码
可遇不可求的奇葩场景,某些开发在未上线钱为了方便测试加了888888、000000这样的万能验证码,但是上线后没去删除测试的内容导致被恶意利用。
任意用户登录漏洞
参考:
https://blog.csdn.net/zhangge3663/article/details/104827700
概述
逻辑错误导致可以登陆任意账户。撞库获取用户名(手机号或邮箱),通过验证码登录,若抓包修改接受验证码的手机号/邮箱,然后使用该类验证码能使撞库的用户登录,即产生漏洞。
场景
1.验证码回显
在手机验证码登录的时候,有一个验证码回显,直接用验证码登录即可。
2修改返回包登录
首先在重置或登录的时候抓登录包,然后再修改返回包,把错误的变成正确的,服务器被欺骗,登陆成功。
3.通过遍历id可以登录/修改
通过修改对应的userid号,利用修改其他的userid。
首先注册一个账号,访问带有uid的地址,修改uid登录任意用户。
4.sql注入万能密码
原理:select id from users where username = ‘admin’ or 1=1 #’ and password = “
利用sql注入语句 admin ‘ or 1=1 #组合语句。
5.系统默认弱口令
系统在搭建的时候,设置了默认口令,例如123456等这种密码,或者时默认的强口令,qwerasdf1231这种,但是密码是通用的就可以利用这个密码进行登录任意账户。
6.撞库
不同的系统有可能会用一个相同的数据库,例如4A的统一认证,拿到了一个系统的数据库用户即可通用·,或者旧密码未改动,可以通过社工库查到旧密码,进行撞库。
7.cookie混淆
在登录的时候是根据cookie中的某一个字段来进行判断登录的角色,这个cookie的字段可以自己任意修改,最常见的就是userid字段。
越权漏洞
概述
越权访问漏洞,又可以分为横向越权访问漏洞与纵向访问漏洞两类。一般是指一个正常用户A可以操作另外一个用B才能做的事。
越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查时对客户端请求的数据过分相信而遗漏了权限的判定。
平行越权
在发送请求时观察请求参数,尝试修改用户id或者其他参数验证是否能查看不属于自己的数据,进行增删改查,若成功则存在平行越权的漏洞。
垂直越权
查看请求中是否有身份标识,比如userid,角色id之类的,有的话尝试修改,重新请求更高权限的操作。
支付逻辑漏洞
概述
开发人员往往为了方便,直接在支付的关键步骤数据包中直接传递需要支付的金额。而这种金额后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额提交。只需要抓包看到有金额的参数修改成任意即可。
场景
1.修改购买数量
在进行支付订单的时候,可以修改物品的数量来进行操作,可以通过支付一件的价格购买多件,或者改成负数进行增加资金。
2.修改支付价格
抓包修改价格参数的内容,在支付当中,购买商品一般分为三个步骤:订购、确认信息、付款,在这三个步骤中都有可能存在漏洞,进而可以尝试修改小额度或者修改负。
3.修改支付对应的商品
通过修改商品对应的id号,可以用低价购买高价格的商品
4.修改支付状态
没有对支付状态的值跟实际订单支付状态进行校验,导致点击支付时,抓包修改决定支付或未支付的参数为支付状态的值,从而达到成功。
5.修改附属优惠/状态
修改优惠券金额
修改积分金额
无限制试用
修改优惠价
6.测试数据包未删除
开发在测试的时候有一些测试数据未删除,导致用户可以购买测试数据,或者领取测试的优惠券
条件竞争漏洞
概述
竞争条件发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操作的场景中,开发者在进行代码开发时常常倾向于代码会以线性的方式执行,而且他们忽视了并行服务器会并发执行多个线程,这就会导致意想不到的结果
场景
1.文件上传
2.领取优惠券
3.抽奖
4.转账
实战
大米cms支付逻辑漏洞
进入首页
注册用户
网站首页
购买手机
提交订单
BP抓包
发现价格price=5400之前有一个参数qyt=1,改为qyt=-1
下单成功
熊海CMS越权后台登录
登录后台
http://localhost//iseaCMS_V1/admin/index.php?r=login
没有密码,无法登录
代码审计
查看inc文件夹下的checklogin.php文件
不难发现, 接收cookie中user的内容,如果user字段为空,则跳到登录页面
如果cookie含有user就会欺骗从而登录成功。
使用cookie editor修改cookie
重新访问后台页面
http://localhost//iseaCMS_V1/admin/