(最全干货分享)渗透测试全流程归纳总结之五 – 作者:白色的空盒子

获取更多学习资料、想加入社群、深入学习,请扫我的二维码或加Memory20000427。
image
进来先点个赞,评个论,关个注呗~

2.6逻辑漏洞

Cookie

一些网站会利用 Cookie 是否为空、Session 是否为 true 来判断用户是否可以登录,只要构造一个 Cookie 或 Session 为 true 就可以绕过认证登录

通过修改 Cookie 中的某个参数来实现登录其他用户,要抓包具体分析

数据篡改
数量、金额、ID、邮箱等数据:最大超过限制、负数、0、其他用户数据,提交后查看是否进入正常业务流程,是否存在越权

例子:
修改普通用户密码,抓包
将 Referer 和 POST 中的普通用户改成 admin
提交数据后,直接返回了 admin 的密码修改页面,利用逻辑漏洞获取超级权限
抓包修改手机号参数为其他号码进行尝试,例如办查询页面,输入自己的号码然后抓包,修改手机号为他人号码,查看是否可以查询他人业务
手机号 篡改
邮箱或者用户 篡改
订单ID 篡改
商品编号 篡改
用户ID 篡改
金额 篡改
商品数量 篡改

验证码绕过
drop掉页面
返回包里可能就有验证码
一次验证码多用
验证码识别插件,burp

注册界面:
任意用户注册
可爆破用户名
注入
XSS

登录界面:
爆破用户名、密码
注入
万能密码
Xss Xss+Csrf
修改返回包信息,登入他人账户
修改cookie中的参数,如user,admin,id等
干货 | 登录点测试的Tips

忘记密码界面:

任意密码重置概要:
1.重置一个账户,不发送验证码,设置验证码为空发送请求。
2.发送验证码,查看相应包
3.验证码生存期的爆破
4.修改相应包为成功的相应包
5.手工直接跳转到校验成功的界面
6.两个账户,重置别人密码时,替换验证码为自己正确的验证码
7.重置别人密码时,替换为自己的手机号
8.重置自己的成功时,同意浏览器重置别人的,不发验证码
9.替换用户名,ID,cookie,token参数等验证身份的参数
10.通过越权修改他人的找回信息如手机/邮箱来重置

用户凭证暴力破解(验证码)
绕过的话,这里可以考虑一个现状:

例如:
phone=18888888888abc
国内很多情况下都没有过滤字符和限制输出长度,验证很有可能只是简单的处理
只要更换手机号后面的字符,就可以绕过请求过于频繁的限制
但是校验时,手机号后面的字符会被过滤,也就是可以利用暴力破解验证码(不计入次数)
所以只要在暴力破解的同时,改变手机号后面的字符即可达到漏洞效果

根据手机号找回密码,但是验证次数被限制,抓包
可以尝试在手机号后面添加不为数字的字符,查看是否过滤
根据手机号找回密码,随便输个验证码,抓包
暴力破解验证码(假如只有四位),很快就可以破解出来
四位或六位纯数字,验证码次数未限制
例如:
如果验证码次数限制,破解一会就会提示请求过于频繁,这时就需要绕过限制
例如:
通过密保问题找回密码,查看源码,密保问题和答案就在源码中显示

返回凭证(验证码 及 token)、邮箱弱 token、用户凭证有效性、重新绑定
抓包,可以发现返回的数据中有一个加密的字符串(token),先记录下这个加密字符串
继续按照正常流程,登录邮箱获得验证码,返回填写验证码后,进入下一个填写新密码页面,发现 URL 后新增了一个加密验证的字符串
这个字符串就是之前数据包中记录的字符串,所以邮箱验证码这个环节可以绕过,直接用他人邮箱抓包获得加密字符串就可以重置他人密码

根据手机号找回密码,抓包,可以发现验证码直接显示 verifycode=xxxx,或者由 md5 加密后显示,解密即可(同理,有的时候输入用户名,抓包可以看到返回的手机号等其他信息)

根据邮箱找回密码,抓包直接返回,密码找回凭证可能在页面中

例如:
利用两个帐号同时点击找回密码,去邮箱查看找回密码的链接,发现两者的随机 token 只差 1-2,而且可以猜测出为服务器时间
所以可以用一个未知帐号和一个已知帐号同时点击找回密码,稍微遍历一下随机 token,就可以构造出未知帐号的密码找回链接
例如:
通过邮箱找回密码,正常流程去邮箱查看重置密码链接,发现链接处有一串 md5 加密字符串
字符串解密,类似 1491293277(10位),可以判断为 Unix时间戳,(可能md5)
重置他人密码只需要利用他人邮箱发送重置密码邮箱,在短时间内对 Unix时间戳 进行暴力破解,即可获得重置密码的链接
重置密码链接直接使用用户名来区别,改变用户名即可更改他人密码

绕过token
正常流程下,对每个功能模块进行抓包,分别是发送验证码,验证验证码是否正确,获取 token,重置密码
接下来,用他人帐号通过邮箱验证,抓包,将其中 Cookie 内从 JSESSIONID 开始的内容替换至正常流程的发生验证码包内,同时替换自己接受验证码的邮箱,提交
通过邮箱获取验证码后,将验证码、Cookie、他人帐号、自己邮箱替换至验证验证码模块,提交(不用在意返回是否错误)
继续替换内至获取 token 模块,提交获取 token
最后将获取的 token 和上面的内容替换至最后的重置密码模块,提交成功修改密码

例如:
通过邮箱找回密码,访问链接重置密码,输入新密码后提交时抓包,虽然有 token,但是依然可以直接修改 用户ID 进而修改他人密码
例如:
通过他人手机号找回密码,抓包,将他人手机号替换成自己的手机号,获取验证码,提交后修改密码
通过自己手机号找回密码,获取验证码后抓包,将数据包中的 username 改为他人用户名,提交后成功修改他人密码

短信验证码、邮箱 token、重置密码 token

例如:
通过邮箱找回密码,URL 链接中修改 用户ID 为他人,邮箱不变,之后通过链接可以将他人账户绑定为自己的邮箱,之后通过邮箱找回密码
例如:
给已知账户绑定手机,发现绑定手机的 URL 链接中有 uid 参数,修改 uid 参数为他人的,即可实现将他人的账户绑定上自己的手机,之后通过手机来修改密码
修改个人资料处抓包,修改 userId 为他人,修改 mobilePhone 为自己的手机,即可实现将他人的账户绑定上自己的手机,之后通过手机来修改密码

手机绑定、邮箱绑定

例如:
通过密码保护问题找回密码,抓包,将密码保护问题删除,直接修改密码,提交
注:此处密保问题和新密码在同一页面
例如:
正常流程,通过手机号提交验证码找回密码处抓包,记录下这个包的内容
通过已知用户名找回密码,查看源代码可以发现用户其他信息(比如:手机号、邮箱)
通过发现的手机号选择通过手机找回密码,随便输入短信验证码,抓包
修改之前记录下的包的内容,将其中 Session id、用户ID 修改为刚刚从其他用户名抓包获得的内容,提交这个包,即可成功修改他人密码

最终提交步骤

例如:
通过邮箱找回密码,最后通过链接至修改密码页面,修改密码后提交,抓包,获得 Uid 参数,修改为他人,即可修改其他用户密码

服务器验证的验证逻辑为空(绕过认证)

例如:
通过邮箱找回密码,点击请重新发送邮件处抓包,将邮箱改为自己的邮箱,通过链接成功修改密码
例如:
通过手机找回密码,输入验证码和新的密码,F12 审查元素,修改自己的手机为他人手机,提交成功修改他人手机(也可以抓包修改)
例如:
正常流程下,密码找回,查看最后设置新密码页面的 URL,记录下来
继续返回密码找回处,输入其他用户名,提交找回申请,直接访问上面记录下的修改密码页面,成功修改密码
也可以正常流程下,修改密码页面抓包,修改其中的 USERNAME_COOKIE 为其他用户(有可能会经过编码,比如 base64),提交即可修改其他用户密码
如果抓包其中有 step 参数,可以修改这个参数为最后一步(比如:5),提交便可略过之前的步骤
跳过验证步骤、找回方式、直接到设置新密码页面
例如:
通过用户名找回密码,提交后会自动发送验证码到手机中,所以抓包,修改手机为自己的手机(如果其中有 type 之类的参数,也可以尝试修改,有 email之类的参数,可以尝试删除内容)
发送修改后的包,手机成功接收验证码
输入验证码,继续发送,抓包,如果有 type 之类的参数,可以继续尝试修改,发送就可以成功修改密码
例如:
通过手机找回密码,随便输入验证码,抓包,发送,拦截返回包
修改返回包中的返回码,继续发送,说不定就可以绕过验证,直接跳到修改密码的页面

通过手机找回密码,正常流程下到重置密码页面,抓包查看返回数据中有一段加密字符串
利用他人手机找回密码,URL 跳转到验证身份页面,链接中就有一段加密字符串,记录下,随便输入验证码
抓包,修改包中数据为正常流程下的数据,替换加密字符串,Forward 发送,就可以绕过验证码,直接修改密码

输入用户名,加个单引号报错,说明可能存在报错,抓包,保存为 txt 文件,导入 Sqlmap 中跑一遍

找回密码处存在注入漏洞(见框就×)

通过邮箱找回密码,正常流程下,抓包查看提交验证码后返回的数据,发现有加密字符串,这个加密字符串和后面重新设置新密码 URL 链接中的加密字符串一样,所以可以利用这个加密字符串
根据上面提交验证码的抓包,修改其中的 User 为其他用户(User 有可能会使用 md5 加密),发送,就可以返回其他用户的加密字符串
重新返回到找回密码首页,利用其他用户找回,点下一步,到输入验证码处(也有可能需要点击发送验证码),直接修改 URL 链接,加入加密字符串,可以直接绕过验证码,重置密码

session覆盖漏洞
注册重复的用户名,例如 admin,相当于修改了密码

同一浏览器,首先输入自己的账户进行邮箱密码找回,进入邮箱查看链接,接着输入他人账户,进行密码找回,返回刚刚自己的邮箱点击链接,由于 session 覆盖导致了,这个链接成为了修改他人密码的链接,成功修改他人密码

尝试正常密码找回流程
选择不同的找回方式,记录所有数据包
邮箱找回密码
根据密码保护问题找回密码
根据手机号找回密码
分析数据包,找出敏感部分
分析后台找回机制所采用的验证手段
修改数据包进行验证是否存在密码找回漏洞

来源:freebuf.com 2021-04-19 23:35:26 by: 白色的空盒子

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

请登录后发表评论