2024年最全逻辑漏洞小总结(3),2024年最新GitHub标星50k的网络安全全栈技术知识

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
测试方法如下,抓包后输入对的验证码后,反复发送查看回包可以看到,没有出现验证码错误,出现的是用户名不存在,那么这里还出现一个点,用户名爆破,只要输入账号错误和密码错误回显不一样,就可以算成用户名可爆破漏洞。

而且只要验证码正确一次后,他的验证码貌似就不会修改了。这个时候我们把数据包丢给intruder就行了,在intruder中开始爆破账号密码,不用在意验证码了。

三、图形验证码-验证码绕过

验证码绕过,即验证码可以通过逻辑漏洞被绕过,通常分为以下情况:

案列一:验证码验证返回状态值

原理:验证码传到后端后,后端实际上只是负责进行验证码的匹配。决定用户是否能够成功登录的是前端,而前端是通过后端发送的报文中是false还是true来判断用户能否成功登录的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
我们拦截请求后可以修改数据包:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
但是最好的办法是先拿到一个成功登录的报文,查看登录成功后url会跳转到那里——我们在修改一个报文的时候不仅仅是要把status的值由n改成y,还需要把url也给填充了。

案列二:点击获取验证码时,直接在返回包中返回验证码,通过抓包的来观察reponse包(还不懂)

解释:这种情况就是,你在请求验证码的时候抓一个包,点击burp中的Do intercept 然后再forward 放包,验证码有可能会出现在返回包中。

四、图形验证码-客户端验证

验证码的客户端验证**:验证码的生成验证码的校验**都在客户端进行(有客户端的js代码实现的),只要验证码没有输入正确,数据包就不会被发送。只有验证码输入正确后,数据包才会发送。而后端是完全没有验证码检查的机制的。

通过查看源代码发现验证码是前端验证码,可以通过直接抓包的方式在bp里边爆破,参考pikachu-bf_client.php

验证有无客户端验证漏洞的方式:开启BP,然后在登录网页中点击更换验证码,看BP中有没有抓到登陆页面的前端发送的POST请求来向后端索要新的验证码。

绕过方式1:

只要验证码输入正确,通过前端校验后,我们用BP抓到包后,一直发送数据包都不会有任何问题;就算把验证码修改掉了也依旧能够正常发送数据包。

绕过方式2:

直接把验证的代码给删除掉:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
删掉以后就相当于那两个框框的js代码就不会被前端引用了。

五、图形验证码-验证码(旧密码)前端验证漏洞

如下,某网站存在一个链接http://1XX.XX.XX.XX:9080/setup访问这个重置链接,点击修改管理员密码,可以重置密码,但是我们不知道旧密码是多少,只能输入新密码.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
我们就随便输旧密码,然后输入一个自己定的新密码。然后服务器回包的时候,数据包里面就会有一个false的字段,我们把这个字段改成true后我们再放行,此时会显示修改密码成功。

六、短信验证码-无效验证

有验证码模块,但验证模块与业务功能没有关联性,此为无效验证(也就是我们随便输入一串数字都能通过验证,这个验证码就是假的),一般在新上线的系统中比较常见。

最好在做测试的时候先试一下,有很小的概率可以成功。

下面用一个案例进行举例说明:获取短信验证码后,随意输入验证码,直接输入两次密码,可成功更改用户密码,没有对短信验证码进行验证

七、短信验证码-短信轰炸

短信轰炸是手机验证码漏洞中最常见的一种漏洞类型。在测试的过程中,对短信验证码接口进行重放,导致大量发送恶意短信有两种情况,一种是完全没限制发短信的频率,另外一种是每60秒发一条短信。

情况一:没有限制时,任意下发短信时,直接放到Intruder中,一直发送就可以了。

情况二:发送验证码有一定时间间隔。

在测试过程中,可通过编写Python脚本来计算短信下发时间间隔,实现短信轰炸。我们只要能找到60个这样的网站,然后每个网站都使用py脚本进行调用,这样就能达到1s给别人发送一条短信(短信轰炸)

python脚本的编写可以参考上文

第三部分:登录前端验证漏洞

一、忘记密码-给邮箱/手机发验证码

当在**“忘记密码”页面**,输入邮箱或者手机号后,网站会给手机或者邮箱发送验证码。用户输入验证码后,服务器会将其与正确的验证码进行对比,若相同则验证成功并进行下一步操作。网站还贴心的考虑到了:万一用户手抖输错怎么办?有两个选择:

第一个:客户重新填验证码。网站本来想着用户这次能输对了吧,没想到用户不停的手抖输错,短信不断的发到手机上**(这是短信炸弹漏洞)**。一条短信一毛钱啊,网站掏不起啊,那就试试方法2吧。

第二个验证码再输一遍。在这种情况下,极易产生验证码爆破漏洞

你可能会觉得输入一万条数据简直太漫长了,但是要知道我们发到网站服务器的都是数据包,验证码就在数据包中。我们只要不断的修改数据包中验证码的参数即可完整验证尝试攻击方法,如果是4位,没有多余的防御措施,直接爆破即可

可能的防御措施:只允许验证码输入3-5次。

二、忘记密码-前端验证绕过

客户端验证是不安全的,可能导致任意账号注册、登录及重置任意用户密码等一系列问题。除了之前讲到过的把服务器的返回报文中的n改成y这一种绕过方式,还有以下几种奇奇怪怪的返回报文:

1.返回报文种直接返回明文验证码

案例:输入手机号后,点击获取验证码。按F12调出开发者工具,然后在网络中,监听到两条json数据,发现本应该发送给用户的手机短信验证码就藏在返回数据表的ticket字段里面。用这个字段值尝试登录,发现能够登陆成功。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
2.返回加密后的验证码。加密报文在应答数据包中,返回客户端,用户解密后即可获取验证码。

三、忘记密码-设置新密码时改他人密码

在修改自己的密码时,看看可否把自己的账号换成别人的(用户名/邮箱/手机),达到修改其他用户密码的目的。

首先在一个网站注册一个用户,然后修改这个用户的密码,通过抓取数据包中的参数判断哪里是校验用户,通过修改关键参数,达到任意修改其他用户密码的目的。

下面对一个网站进行模拟攻击,以便于在攻击中讲解能够更深刻的理解。

  1. 先注册一个网站的账号,然后在登录界面点击忘记密码。然后填写相应的信息,这里 填写了刚才注册的用户名和密码。然后开启浏览器的代理和 Burp 的截断,如下图所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
2. 点击下一步后,分析报文,看到请求的报文中传递了用户名和邮箱,因此判断此数据包 是用来判断是否存在此用户、用户名和邮箱是否匹配的。点击 Forward 放过这次数据包。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
3、攻击者收到网站给的验证码(到这里都是正常的网站找回的逻辑)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iJmhNOsl-1681261858891)(typora_photo_逻辑漏洞/image-20230410235604468.png)]

4、继续填写验证码,发现还是没有什么可以利用的数据,放包过去

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
5、 到了修改密码的界面,填好密码后点击下一步。抓包后,观察发现这里写入了用户名和密码。

可以先右键报文,然后 Send to Intruder 之后可以爆破用户名,并将其修改为同 一个密码。 不过这里只是测试一个叫 zhagnwei 用户名,这是我们之前爆破出的一个其他的用户,如下图所示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
6、发送之后,发现修改成功(这里漏洞点:原因是没有对校正的账号和修改的账号进行匹配,导致可以先通过用户验证后,去修改别人的密码)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四、忘记密码-某网站密码找回功能

在用户更改密码和找回密码时,会发送一个验证码到手机。填写正确验证码后,后台会在返回的报文中通过状态码来进行正确的判断。

这个时候可以通过修改返回报文中的参数(修改url和false),使页面跳转到写一部认证的页面。

(这个方式和思路就和之前讲过的一样)

  1. 在找回密码的界面,发现是通过填写手机号和返回的验证码进行身份认证。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
2. 先填写一个想要修改的手机号,验证码随意填写一个。再打开浏览器代理和 Burp 的截断,这时候点击提交后,会抓取一个

请求的数据包。再右键点击报文内容,选择如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mUMOziey-1681261858891)(typora_photo_逻辑漏洞/image-20230411001633016.png)]

  1. 这个时候可以拦截到回包, 观察图数据包中的 status 字段,这里的 0 可能是验证 码错误的返回代码,因此我们尝试把他改为“1”,试试:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
如果不知道要改成1还是改成什么,我们可以先弄一个返回成功的数据包,这样我们就知道接下来要填写什么了。

  1. 结果直接发发现已经可以输入新密码,填写密码后点击“确认修改”发现能够登陆, 说明任意用户密码修改成功

五、忘记密码-链接的形式-链接token参数可逆

通过邮箱找回密码时,邮件中将出现一个含有==token的重置URL,该token即为重置凭证==。

从经验来看,开发人员习惯以时间戳、递增序号、关键字段(如邮箱地址)等三类信息之一作为因子,采用某种加密算法或编码生成token攻击者可以基于能收集到的关键字段,用常见加密算法计算一遍,以判断是否可以预测出token

下面举两个案例加以说明。

实验一:基于时间戳生成的token,这是一个靶场:

http://lab1.xseclab.com/password1_dc178aa12e73cfc184676a4100e07dac/

抓包,发现一坨好像乱码的东西,感觉就是token;然后根据感觉和经验判断这个是根据md5加密的,于是我们用md5进行解密:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mz2j5KzP-1681261858892)(typora_photo_逻辑漏洞/image-20230411002557226.png)]

发送2次数据包得到2次解码后的token后发现他们相似度很大。

然后会发现这个token值就是按照Linux的时间戳来变化的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
而且发现输入admin输入后没有返回token,那么我们根据上面的规律就可以自行创造一个admin的token。

操作流程:

发送一个aaaa,然后发送一个admin,然后发送一个bbbb。那么虽然admin的返回包里面不显示token,但是我们可以通过aaaa和bbbb的返回包推断出admin的返回包中的token的范围,然后就爆破就行。

案例二:基于关键字段生成的token某网站密码找回功能

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cw7MasOe-1681261858893)(typora_photo_逻辑漏洞/image-20230411003638851.png)]

六、忘记密码-服务端验证逻辑缺陷

登陆状态下修改自己的密码时,通过修改截获的数据包,将部分参数替换,从而偷龙换凤的将他人的密码修改为自己指定的密码。下面通过实例讲解。

案列如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TTPxZePJ-1681261858894)(typora_photo_逻辑漏洞/image-20230411004003567.png)]

七、忘记密码-参数带用户名等多阶段验证

密码找回流程一般包括获取短信验证码、校验短信验证码是否有效、设置新密码等三个步骤

在第二步,校验短信验证码是否有效的结果应保存在服务端某些网站未在服务端保存而是错误地将结果状态值下发客户端,后续又依靠前端js判断是否可以进入第三步(有漏洞了)

那么,更改应答包中的状态值,可重置其他用户的密码。下面用两个案例分析说明。

案例一:在密码找回页面http://www.xx.cn/yy/action/forgot用攻击者手机号13908081024进入密码找回流程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w19GLhcY-1681261858894)(typora_photo_逻辑漏洞/image-20230411004426046.png)]

案例二:在密码找回页面http://www.xx.cn/yy/forgot用攻击者手机号13908081024进入密码找回流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6twZZe5l-1681261858895)(typora_photo_逻辑漏洞/image-20230411004820693.png)]

八、重置密码-重置后的默认密码

在一些大型公司或者学校的的网站上,会有介绍用户注册的指导手册,里面会介绍用户的用户名和默认密码。这时可以先用默认密码尝试爆破默认密码;或者寻找重置密码的选项,重置密码后,用默认口令尝试登陆,因为可能会未授权修改网站用户的密码。

第四部分:任意账号注册

1.未验证邮箱/手机号

未验证邮箱/手机号,目前很多应用为了方便用户记录自己的用户名与密码,都可以使用邮箱跟手机号作为录用户名,因此很多应用在注册的时候就要求用户填写,一般情况下该应用都会发送激活信息,用户在收到激活信息后才能登录; 然而有时候开发人员并不去审核邮箱/手机号是否有效(也就是不往手机号和qq发信息和邮件来验证有效性),所以可以利用该缺陷,任意注册账号填写邮箱后,并没有在邮箱发现任何激活信息,且直接把邮箱当作用户登录名使用

2.批量注册

脚本批量注册造成服务器dos应用层攻击,影响网站的正常使用,通常由于上边无验证码或者验证码不安全(验证码不安全就是说是很简单的图片验证码;或者验证码只在前端校验,后端完全没有校验功能。这样的话我们可以通过pkav工具进行图片验证码的验证,使用BP绕过验证码的校验),导致可以写脚本来批量注册,只要我们注册的量很大,他的数据库和服务器就会受不了。

3.个人信息伪造

若出现身份证信息注册,且**网页没有身份证的验证、真实姓名的验证**,那么就相当于网页的这个字段和其他字段没啥区别,可任意构造填写于身份证与姓名字段。

4.前端验证审核绕过

任意填写注册信息,服务端对注册信息进行审核,例如是否存在恶意标签等恶意信息,但是通过返回状态值给前端判断,一旦篡改该值就有可能绕过!!(之前也讲过很多这样的)

第一步,使用正常账号修改密码,获取验证码并通过后,服务器返回数据,保存该数据包中的信息(后面在错误包中我们需要使用)

第二步,使用burpsuite或fiddle,之后点击确定,服务器会返回验证码错误之类的信息,使用正确的信息例如{“MessageHeader”:{“MessageID”:“RSP036”,“Description”:“成功!”}}进行替换后再执行,注册成功。

具体测试方法和验证码的前端验证同理,这里不再赘述

5.邮箱/手机号注册激活验证绕过

为防止恶意用户任意注册账户,大多数网站会在用户注册中输入邮箱/手机号后对其真实性进行验证

但是有时候==返回的验证信息会直接隐藏在返回包中,只是不在前端显示出来,或者是可以通过抓包改包手机号/邮箱,伪造该信息,劫持到验证信息==。

以某验证信息返回为例,该漏洞是在发送验证信息时会将验证信息同时发送到返回包中并将其在前端用hidden属性隐藏其值,所以**直接前端源代码查看**即可。

6.用户名覆盖

渗透测试中,某些不严谨的开发人员,对于注册时,当输入用户名时不会对之前数据库中存在的用户名进行检查,判断是否已经存在

情况一:登录查看时却获取到数据库中同名用户的其他用户信息,导致其他用户信息泄露。

情况二:由于验证用户名存在时,从前端获取到的数据与从数据库获取到的数据不同,但是往数据库中写入的时候却写了相同的部分造成了用户的覆盖

情况三:登陆时,当检测到是管理员用户名admin就给与管理权限

第五部分:权限类漏洞

一、越权

越权漏洞又分为平行越权,垂直越权和交叉越权(交叉越权先不用管)。

  • 平行越权:权限类型不变,权限ID改变
  • 垂直越权:权限ID不变,权限类型改变
  • 交叉越权:即改变ID,也改变权限

system用户是Windows中专门用来管理软件的用户;而admin用户是管理用户的最高权限者。所以这两个实际上是平级的,实际中这两个可以相互转化,这就是平行越权。

二、平行权限跨越

水平越权指的是攻击者尝试访问与他拥有相同权限的用户的资源,怎么理解呢?

比如某系统中有“个人资料”这个功能,A账号和B账号都可以访问这个功能,但是A账号的个人信息和B账号的个人信息不同。可以理解为A账号和B账号个人资料这个功能上具备水平权限的划分。此时,A账号通过攻击手段访问了B账号的个人资料,这就是水平越权漏洞。

系统中所有具备水平权限划分的功能,都存在水平越权的风险,以下是常出现的水平越权的功能的几种场景:

案列1:基于用户身份ID

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VzUm8EqO-1681261858896)(typora_photo_逻辑漏洞/image-20230411101015338.png)]

案例2:基于对象ID

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
案例3:基于文件名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xnna8jaK-1681261858896)(typora_photo_逻辑漏洞/image-20230411101806172.png)]

三、垂直权限跨越

垂直越权指的是一个低级别攻击者尝试访问高级别用户的资源。比如说某个系统分为普通用户和管理员,管理员有系统管理功能,而普通用户没有,那我们就可以理解管理功能具备垂直权限划分,如果普通用户能利用某种攻击手段访问到管理功能,那我们就称之为垂直越权。

案例1:

如果是通过前端js来进行验证的,而前端的js代码又是保存在我们电脑本地的,那么我们就可以通过删除前端的js代码来达到绕过检测。

比如下面示例中,我们就把alert和location给删除掉就行(这里面的location就是非法操作后会把我们跳转到的网页的地址)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第六类部分:其他类型

1、数据包重放漏洞

漏洞介绍:通过数据包重放,可以造成短信轰炸、邮件轰炸、重复提交订单等

漏洞原理:后台未进行相关操作的技术导致数据包重放漏洞点:短信验证码、邮件校验、提交订单等功能。

修复方案:修复思路(针对短信、邮件)

  • 构造一个Hashmap<String,short>,存放邮箱或电话号码及对应次数
  • 只要某个邮箱或者电话号码次数够了,就不能继续发送了或者计算两次发送的时间间隔,时间过短就不继续发送了

通用修复方案:需要建立token机制或验证码机制,一次有效

就是之前讲过的那些,会导致短信轰炸、邮件轰炸、重复提交订单的所有漏洞都可以说是存在“数据包重放漏洞”,所有不用懵逼。

2、条件竞争漏洞

漏洞介绍:条件竞争是指一个系统的运行结果依赖于不受控制的事件的先后顺序。当这些不受控制的事件并没有按照开发者想要的方式运行时,就可能会出现bug(漏洞)。尤其在当前我们的系统中大量对资源进行共享,如果处理不当的话,就会产生条件竞争漏洞。说的通俗一点,条件竞争涉及到的就是操作系统中所提到的进程或者线程同步的问题,当一个程序的运行的结果依赖于线程的顺序,处理不当就会发生条件竞争。

漏洞修复-修复思路:限制同一时间内访问方法的只有单一线程

案列与实操如下:

如果网站检查到我们上传的不是.gif\jpg的文件,就会把我们的文件删除。所以梳理一下,网站的删除流程是先判断是不是白名单允许的文件格式,如果不是就删除;

我们的攻击思路:因为网站是先判断再删除,所以我们只要在网站把我们写好的“一句话木马的php文件”(用于生成木马,只要这个文件被访问一次就会生成木马)删除之前执行一次我们的php文件,那么我们就可以getshell了。所以我们就一直用BP进行数据发送,然后写一个py脚本来不断发起访问,只要发的够快让网站删除速度来不及,那就我们就有机会访问我们的php文件。

py访问脚本:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8XoeAzcb-1681261858897)(typora_photo_逻辑漏洞/image-20230411105058217.png)]

BP不断发送数据包:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
如下图,py脚本显示成功访问页面:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3、订单金额任意修改

很多中小型的购物网站都存在【订单金额任意修改】漏洞。在提交订单的时候抓取数据包或者直接修改前端代码,然后对订单的金额任意修改,就可以实现0.1元支付,甚至还可以把货物的数量进行修改。还可以尝试把货物数量和价钱改成负数

经常见到的参数大多为:rmb、value、amount、cash、fee、money

关于支付的逻辑漏洞这一块还有很多种思路,比如相同价格增加订单数量,相同订单数量减少产品价格,订单价格设定为负数,无限叠加优惠券等等

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4、接口无限制枚举

有些关键性的接口因为没有做验证或者其它预防机制,容易遭到爆破攻击。常见账号爆破,密码爆破,验证码爆破,上文都已经提及,还有其他的:

快递公司的优惠券枚举:因为都是数字,所以直接BP枚举爆破,分为4段payload来爆破就行。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
某电商会员卡卡号用BP枚举爆破——4位卡号

5、支付漏洞

支付漏洞是高风险漏洞也属于逻辑漏洞,通常是通过篡改价格、数量、状态、接口、用户名等传参,从而造成小钱够买大物,甚至可能造成0元购买商品等等,凡是涉及购买、资金等方面的功能处就有可能存在支付漏洞

商户网站接入支付结果,有两种方式,一种是通过浏览器进行跳转通知,一种是服务器端异步通知

1.浏览器跳转通知

基于用户访问的浏览器,如果用户在银行页面支付成功后,直接关闭了页面,并未等待银行跳转到支付结果页面,那么商户网站就收不到支付结果的通知,导致支付结果难以处理。而且浏览器端数据很容易被篡改而降低安全性(这种方式数据经过了客户端浏览器,极大的可能性被第三方恶意修改)

2.服务器端异步通知

该方式是支付公司服务器后台直接向用户指定的异步通知URl发送参数,采用POST或者GET的方式。商户网站接受异部参数的URL对应的程序中,要对支付公司返回的支付结果进行签名验证,成功后进行支付逻辑处理,如验证金额、订单信息是否与发起支付时一致,验证正常则对订单进行状态处理或为用户进行网站内入账等。

上面的描述看不太懂。简单来说就是我们支付的时候向银行发起数据包,然后银行不会回报给我们用户前端,而是发送个数据包给商铺告诉他支付成功还是失败,这样就避免经过前端了,危险减少了。

下面的案例都是基于第一种支付方式产生的漏洞:

案例1、支付三步曲——订购、订单、付款

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9FLmQJyf-1681261858898)(typora_photo_逻辑漏洞/image-20230411112857815.png)]

案例2、 重放交易

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oFA0FkFk-1681261858898)(typora_photo_逻辑漏洞/image-20230411112921929.png)]

案例3、修改商品数量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ezpJqWz7-1681261858899)(typora_photo_逻辑漏洞/image-20230411112956321.png)]

案例4、修改支付状态

没有对支付状态的值跟实际订单支付状态进行校验,导致点击支付时抓包修改决定支付或未支付的参数为支付状态的值从而达到支付成功

案列:同程旅交汇低价支付高价订单订单随意修改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IROp9N2H-1681261858900)(typora_photo_逻辑漏洞/image-20230411113119973.png)]

6、越权支付

通过修改一些**特殊传参(如:id,username,openid)**来达到用他人的资金来干购买自己的商品。

案列如下:

案列:小程序越权积分兑换

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eoSzJgOT-1681261858900)(typora_photo_逻辑漏洞/image-20230411113719077.png)]

7、无限制试用

通过修改特殊传参(如:id,pay,test)来达到无限制试用。

案列:艺龙旅行网严重支付漏洞——因为支付的时候只校验信用卡的有效期限

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

支付漏洞总结

1、找到关键的数据包

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

2、分析数据包

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

3、不按套路出牌

多去想想开发者没有想到的地方。

4、pc端尝试过,手机端wap也看看,app也试试

防御方法

1、在后端检查订单的每一个值,包括支付状态;

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

3、与第三方支付平台检查,实际支付的金额是否与订单金额一致,避免在银行只支付了1块钱,却拿着跳转报文到前端;

4、如果给用户退款,要使用原路、原订单退回,反制黑客对数据包进行处理让原本应该退给A的钱退给了B。比如:退押金,按用户原支付订单原路退回;

5、MD5加密、解密、数字签名及验证、加盐值、加混淆,这个可以有效的避免数据修改,重放攻击中的各种问题;

6、检测金额是否超过指定值(比如网站没有1块的东西,如果有订单是1块钱,就直接不允许),

7、进行人工审核等

第七部分:SRC中逻辑漏洞的检查check

把下面的内容逐个检测,这样网站中的所有逻辑漏洞也就被我们检查完了。

1.注册:

  • 短信轰炸(找到有这个功能的网站就行)
  • 验证码安全问题 (前端校验甚至没有验证码)
  • 密码爆破(弱口令)
  • 邮箱轰炸
  • 用户任意注册、批量注册(没有任何手机号邮件的验证,或者校验这个手机号和邮件的方式有问题)
  • 用户名枚举(如果账号错误和密码错误的提示信息不一样,就可以分别进行枚举;我们拿着枚举出来的用户名再去爆破弱口令,这个成功率就会高很多)
  • XSS(有框的地方就可以尝试插XSS(有些没框的也存在XSS)——》一切网站前后端交互的地方都可能存在xss

2.登录(是需要和数据库连动的):

  • 短信轰炸、验证码安全问题、密码爆破、邮箱轰炸
  • SQL注入(一切与数据库联动的地方都有可能存在注入)
  • 撞库(看看能不能爆破出数据库名和密码)
  • 抓包把password字段修改为空值发送、修改返回包中的状态值
  • 认证凭证替换:比如返回的数据包中包含账号,那我们修改数据包中的账号就能操作到其他账号
  • Cookie仿冒
  • 修改返回包的相关数据,可能会登陆到其他的用户

找回密码:

  • 短信邮箱轰炸、短信邮箱劫持
  • 重置任意用户账户密码、验证码时手机用户未统一验证
  • 直接跳过验证步骤
  • 购买支付、充值(要利用抓包去仔细查看每一个可用的参数)
  • 交易金额、数量修改、更换支付模块(比如更换支付的模块金额)
  • 交易信息订单编码/导致信息泄露(平行越权)
  • 整数溢出,int最大值为2147483647,超过最大值,有可能报错泄露敏感信息
  • 修改充值账户
  • 支付绕过
  • 抽奖活动——看看有没有返回概率值什么的
  • 刷奖品、积分(改参数)
  • 优惠卷、代金卷(改参数)
  • 并发逻辑漏洞(burp批量获取优惠券)
  • 修改优惠券金额、数量(改参数)
  • 订单信息(改参数)
  • 订单信息遍历、泄露(平行越权)
  • 订单信息泄露导致用户信息泄露 删出他人订单(平行越权)

会员系统:

  • 修改个人信息上传文件,上传带弹窗的html
  • 遇上上传xlsx、docx,可能存在XXE,上传恶意的文档盲测
  • 图片上传也可能遇到imagereagick命令执行,上传恶意图片
  • 视频上传如果使用ffmpeg<3.2.4(视频按帧分割成图片),上传恶意avi盲测ssrf
  • 用户横向越权访问、遍历、导致用户信息泄露
  • 和数据库相关的测一下SQL注入、个人简历处测试存储XSS个,人信息注册的名称也可以插入XSS

传输过程

  • 明文传输账户密码(低危)
  • 修改信息处无session/token导致csrf
  • POST/COOKIE注入——看看有没有和mysq交互,这些信息会不会被保存到mysql中

评论

  • POST注入
  • 存储型XSS
  • 无session/token导致CSRF

验证码问题

  • 万能验证码
  • 返回包中存在验证码
  • 删除验证码或者cookie中的值可以爆破账号密码

短信轰炸

  • 一直重放
  • 删除修改cookie,重放数据包
  • 遍历参数发送数据包
  • 手机号后面加空格或者前面加其他的比如+86或者逗号分号等,然后重发数据包
  • 请求参数修改大小写,或者添加请求参数比如&id=1
  • 一个站的登录处可能做了防护,但是再找回密码处可能没有安全防护,或者在注册流程中没有安全防护,所以说多测试接口
  • 如果对手机号一天的次数进行了限制,有可能是前端校验,也有可能是后端其实发送了数据包,但是由数据包中从参数决定这个手机号注册是否成功,这个时候我们就去改返回包。
  • 主要登陆后还是多修改参数,主要是找到多个接口不断测试
  • 关注网页源代码,有时候会有表单,但被hidden(隐藏标签)给隐藏起来了,可以修改返回包然后尝试获取数据检测。就像网站中有password类型,也就是赋值给这个字段的值会变为***,被隐藏起来。我们只要把type=passwd改成type=txt就能看到明纹密码了。
  • 多个账号,主要分析请求参数

数据泄露

  • 再找回密码处,填写数据后抓包查看返回信息,有可能存在敏感数据返回

任意用户密码重置

  • 目前大部分都是在修改密码处参数修改
  • 有些是前端验证

支付逻辑漏洞

  • 金额直接传输导致篡改:直接对下单的金额进行修改值,这里可以使用fd或者burp抓包
  • 确定支付之后还可以加入购物车:把商品放入购物车点击下单支付,会跳转到微信,支付宝等第三方支付平台。
  • 请求重放:购买成功之后,继续重放请求,可以让购买的商品一直增加。
  • 请求参数干扰:金钱做了签名认证之后,修改后不通过,但是在里面仍然会有一个参数对金额产生影响导致问题产生(大概就是对每个参数都要尝试、参数的功能不确定的时候可以去网上搜搜)。
  • 订单替换:订单替换发生在支付之后的事件处理,同时向服务器发起二次支付请求一个多一个少,支付金额少的,然后支付之后进行替换,告知服务器订单支付完成,并且过程可以反复的进行。
  • 用户替换:在支付过程中发生用户替换现象,首先登陆自己的账户,然后取得另外一个人的账户名等有效信息,在业务流程中用对方的
  • 用户名替换自己的用户名,用对方的余额购买完成后,再替换自己的账户名,这样就形成别人的钱买自己的东西(也就是前面讲到的那个用别人的积分帮我们换礼品的案例)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以点击这里获取

付金额少的,然后支付之后进行替换,告知服务器订单支付完成,并且过程可以反复的进行。

  • 用户替换:在支付过程中发生用户替换现象,首先登陆自己的账户,然后取得另外一个人的账户名等有效信息,在业务流程中用对方的
  • 用户名替换自己的用户名,用对方的余额购买完成后,再替换自己的账户名,这样就形成别人的钱买自己的东西(也就是前面讲到的那个用别人的积分帮我们换礼品的案例)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-WaSnuoUm-1715387275057)]
[外链图片转存中…(img-9xQzTyeZ-1715387275057)]
[外链图片转存中…(img-yxmWh5yp-1715387275057)]
[外链图片转存中…(img-CYtC2GDP-1715387275058)]
[外链图片转存中…(img-VMO7IeTV-1715387275058)]
[外链图片转存中…(img-f5p4X1yL-1715387275059)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以点击这里获取

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值