Web攻防第五十一天

WEB攻防-通用漏洞&验证码识别&复用&调用&找回密码重定向&状态值

目录

WEB攻防-通用漏洞&验证码识别&复用&调用&找回密码重定向&状态值

#知识点:

#详细点:

-找回密码流程安全:

-验证码绕过安全:

#安全修复方案:

phpun-res值修改&验证码回显&爆破

1.验证码回显-绑定手机号时验证码前端泄漏被获取

2.res修改-绑定手机号时修改返回状态值判定通过

3.验证码爆破-知道验证码规矩进行无次数限制爆破

某APP-res值修改&验证码接口调用&复用

1.res修改-找回密码修改返回状态值判定验证通过

2.验证码接口调用-抓当前发送验证码数据包后调用

3.验证码复用-抓第一次验证通过的验证码进行复用

seacms-验证码识别&找回机制对应值修改


#知识点:

1、找回密码逻辑机制-回显&验证码&指向

2、验证码验证安全机制-爆破&复用&识别

3、找回密码-客户端回显&Response状态值&修改重定向

4、验证码技术-验证码爆破,验证码复用,验证码识别等

#详细点:

-找回密码流程安全:

1、用回显状态判断-res前端判断不安全

这个就是说在找回密码的时候利用回显状态判断时候可重置密码成功,就比如状态码。只要把返回包的状态码做修改即可重置密码。这个跟我们之前讲那个登录验证类似,就好比把返回包中code的参数值改成1即可绕过验证。

2、用用户名重定向-修改标示绕过验证

这个就是说把前面填写验证码什么的流程正常进行,然后到最后一步的时候抓包修改要进行修改密码的账号。比如我们先把自己的账号进行找回密码的操作,然后到最后一步抓包把东西账号换成想要进行找回密码的账户,即用户名重定向。

3、验证码回显显示-验证码泄漏验证虚设

在修改密码的时候通常会给绑定的手机号或则邮箱发送验证码,如果说这个验证码在数据包中的话,那么我们是不是可以直接抓包就可以看到验证码是多少。这就是验证码泄露验证虚设。

4、验证码简单机制-验证码过于简单爆破

如果说验证码过于简单,比如四位验证码一共一万种,六位验证码为一百万种。并且对方没有对验证码的提交次数做限制的话,就可以通过爆破直接把验证码爆破出来。

-验证码绕过安全:

1、验证码简单机制-验证码过于简单爆破

2、验证码重复使用-验证码验证机制绕过

3、验证码智能识别-验证码图形码被识别

4、验证码接口调用-验证码触发机制枚举

#安全修复方案:

-找回机制要进行每一步验证-防绕过重定向

-找回机制要进行服务端验证-防res数据修改

-找回机制要控制验证码安全-防验证码攻击

-验证码接口需验证后被调用-防接口被乱调用

-验证码引用智能化人工判断-防验证码被识别

-验证码采用时间段生效失效-防验证码被复用

phpun-res值修改&验证码回显&爆破

这个案例由于网站在本地搭建好之后访问不了,小迪也说这个网站不知道为啥访问特别慢,具体流程说一下,图直接用的小迪的。

1.验证码回显-绑定手机号时验证码前端泄漏被获取

我们把账户绑定的手机号更换一个不存在的手机号,开始抓包后点击发送验证码。

先自己写个123456,点击保存,看数据包中验证码已经出现了,我们把自己写的123456改成125241即可绑定成功。这就是验证码泄露。

2.res修改-绑定手机号时修改返回状态值判定通过

我们先发一个随便写一个验证码上去,通过burp抓返回包的功能,把返回包抓到。

这里可以看到当我们输入错误的验证码时,回显时3。然后我们输入正确的验证码回显是1。

于是我们输入个错的验证码,然后抓返回包,把状态码改成1,放包之后就显示手机绑定成功。但是这个不一定真的绑定成功,还要看是以前端为准还是后端为准。这里我们退出这个页面重新进来发现,手机号未绑定。那也就是说这里是以后端为准的,因为验证码在输入到后端的时候已经完成的比对是错误的,返回状态码为3的时候已经绑定失败了。我们修改状态码为1,他只是显示绑定成功,但其实没有成功。就跟我们之前讲文件上传的前端验证后端验证类似。

但如果说这里以前端为准的话,那就是真的绑定成功了,也就是上面说的res前端判定不安全。

3.验证码爆破-知道验证码规矩进行无次数限制爆破

如果说对方没有对验证码的次数做限制,并且没有时间限制,那么这里就可以尝试爆破。而爆破就是说不知道验证码,修改返回值也没用的时候可以尝试一下。

某APP-res值修改&验证码接口调用&复用

1.res修改-找回密码修改返回状态值判定验证通过

这个因为是黑色产业app,名字叫福利期货,是个老演员了。前面用到过这个案例,就是修改返回状态码直接修改密码。由于涉及黑色产业小迪未提供apk。

先用自己手机注册一下,通过burp抓包得知验证码正确的情况下返回是200。不正确就是上面那一个。

接着我们输入想要找回密码的账号,抓返回包,把正确的(就是下面那行)粘贴过去。即可设置新密码。这个案例本来是可以的,现在被修复了。

2.验证码接口调用-抓当前发送验证码数据包后调用
3.验证码复用-抓第一次验证通过的验证码进行复用

(插眼,此处内容因违反规定不能上传,放在评论区了)

后台猜密码就是爆破密码的意思,如果说验证码可以复用的话,那么就相当于没有,如果说不能复用,就要考虑验证码的识别了,如果是数字验证码的话,有的工具或则软件可以识别图片中的数字。但要是图像验证码就不行了。

验证码的智能识别:这里也是推荐了一个burp上面的插件可以去识别验证码。当验证码不能被复用的时候可以尝试这个方法。下面的是链接,资源库中也是有的。

GitHub - smxiazi/NEW_xp_CAPTCHA: xp_CAPTCHA(瞎跑 白嫖版) burp 验证码 识别 burp插件

接下来就是都是干货了,利用插件和burp联动去解决爆破密码的时候验证码不能复用的情况

首先我们先安装这个插件,由于过程比教麻烦,所以我演示一遍。插件名为xp_CAPTCHA.py

安装过程:

注意:python版本要小于3.7

小迪用的3.6.5的python版本,我用的3.1的。

把小迪资源库中文件夹名为xp_CAPTCHA3.2放到python目录下,把文件夹中的server.py的文件拿出来放到根目录下。

首先进行pip更新,首先在python的目录打开cmd,输入以下命令。

python -m pip install --upgrade pip

python -m pip install requests这一行命令我觉的不输也没事

 安装muggle-ocr

因为muggle-ocr被python官方给移除了,无法使用pip install从镜像或者官方网站下载,需要自己下载muggle-ocr文件进行安装。这里我在网上找到了压缩包,下载下来之后放到python目录下。(压缩包找我要)

执行以下命令:pip install muggle-ocr-1.0.3.tar.gz -i https://pypi.douban.com/simple

运行 server.py 

直接在当前目录的cmd执行下列命令:python.exe server.py

执行成功之后就可以在浏览器访问127.0.0.1:8899

接着我们需要在burp里面把插件装好

首先第一步:在extender这个模块中,把下面那个文件放进去,因为这个插件是py写的,而burp是java写的,需要弄个解释器,用来解释py。

第二步:直接点击add,

把python目录下的xp_CAPTCHA.py放进去,点击next。

出现下面的页面就是成功了。至此安装完毕,接下来是如何使用的操作。

接下来我用海洋cms来讲解这个插件,首先在本地把网站搭建起来。

比如这里我们想爆破密码,但是因为验证码一直变,就是不能复用,所以我们没法爆破,于是利用这个插件,但有一点就是现在咱用的是白嫖版也就是社区版的。识别验证码的正确率在百分之七十左右,还有会员版的需要收费,会员版的正确率大概在百分之九十多。

先将验证码的链接记录下来,等会要用。

接着我们点击登录之前先进行抓包,抓到的包发到intruder进行爆破。首先把模式改成pitchfork保证能设置两个payload,然后把密码和验证码两个位置设置成变量。接着在数据包中加入“xiapao”这个参数,它的值为刚才我们记录的验证码的地址。

接着我们这里因为是测试,它的密码是admin,所以我们就弄5个密码看看效果。

第二个payload首先把类型换成extension,然后点击下面的select把刚刚导入的插件选中。现在一切准备就绪直接开始爆破。

这里结果也是出来,但有一点尴尬的是这个网站区分大小写好像,而插件识别的验证码是正确的,只不过是小写的。所以显示验证码不正确。然后看网站可以看到这里验证码可以说都识别对了,但有点时候会出现密码输对了但是验证没有识别正确,所以要多爆破几次。至此讲解完毕。

seacms-验证码识别&找回机制对应值修改

找回机制对应值修改:

注册两个帐号,尝试找回密码,重置连接重定向绕过

代码审计后分析Poc:

member.php?mod=repsw3&repswcode=y&repswname=targetUser

现在对于找回密码我们只剩重定向问题没有讲,就是说前面找回的流程正常进行,然后到最后一步修改数据包的内容来达到找回另一个账户的密码。

由于我在自己搭建的网站上面无法创建用户,就用小迪的截图来讲解:

首先创建两个账户:xiaosedi1和xiaosedi2。然后我们登录xiaosedi1这个账户去找回密码,他会发送一个邮件到绑定的邮箱,然后我们点击这个链接即可重置密码,如果说是黑盒的话,我们直接把xiaosedi1改成xiaosedi2去访问,看看能不能成功。

我们修改之后发现并不可以。如果说黑盒的话这里是做不出来的。

如果是白盒的话可以,我们直接看代码逻辑,会发现它会对repswcode和repsewcode2两个值作比较,而repsewcode2这个是从数据库中取出来的。

所以这里我们仅仅修改一个xiaosedi2是不能成功的,但如果把repsewcode的值改成y跟数据库中的值一样的话,就可以修改密码了。那么在黑盒中就是看数据包中的参数有没有账户之类的id等等去做修改看能不能重定向。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaopeisec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值